使用jenkins构建android项目

自侃两句

作为一个运维来说,想必大家都有这样的想法,能自动的操作就绝不手动,能一步完成的事情绝不分多步执行。想着法的偷懒,才是我们进步的源泉啊

这不我们的 Android 开发,来和我抱怨说,测试人员最近总是要找他要 apk 包,有时候一忙,中间一停顿,那种写代码的感觉就没了,大概开发写代码也是要灵感的 

在运维的眼中,程序员是万能的,在程序员眼中,运维也是万能的。既然都这么说了,咱就要万能一把,把这个问题给解决了

在 Jenkins 上,我们把编译构建的权限给到了测试,然后测试就可以想怎么打包就怎么打包了

搞起搞起

在正式开搞之前我还是要抱怨两句的, 虽然说 我百度一下 (Jenkins 构建 android 项目) 能跳出一大片来,但是我真的想说 what fuck 了,真没有只看一篇,就能完成这个的。到时候你们可以百度一波试试

还好,凭着我坚持不懈的努力,终于实现了,一起来看看吧

环境准备

安装和配置 编译 Android 所需的 gradle 和 android_sdk

配置 gradle

先去官网下载我们需要的 gradle ,版本最好是和 目前开发所使用的的版本一样

官方下载地址:http://services.gradle.org/distributions/

目前我们用是的 Gradle 4.6,我就用这个版本来做示例了

wget http://downloads.gradle.org/distributions/gradle-4.6-all.zip
unzip gradle-4.6-all.zip 
mv  gradle-4.6-all  /usr/local/gradle
 
vim  /etc/profile
#在最后添加下面这两句
export GRADLE_HOME=/usr/local/gradle  
export PATH=$PATH:$GRADLE_HOME/bin
 
source /etc/profile
gradle -v

Gradle 已经安装完成了

配置 android_sdk

靠谱的下载地址 http://tools.android-studio.org/index.php/sdk

看我在服务器操作

wget https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
tar -xvzf  android-sdk_r24.4.1-linux.tgz
mv android-sdk-linux /usr/local/android-sdk
 
vim  /etc/profile
#在最后添加下面这两句
export ANDROID_HOME=/usr/local/android-sdk
export PATH=$PATH:$ANDROID_HOME/tools
 
source /etc/profile

Jenkins 配置

接下来去 Jenkins 上搞一波,先来安装一波插件

系统管理—-> 插件管理

安装如下插件

 图片可能看不太清楚,具体如下

Build Name and Description Setter

description setter plugin

Project Description Setter

最好再安装一个 AnsiColor 插件

插件安装完毕之后,再去 Jenkins 里配置一下服务器安装的 Gradle

系统管理—-> 全部工具配置

引用系统安装的 gradle 就可以了,配置好,保存退出

 然后设置一下 android_sdk 的环境变量

系统管理—-> 系统设置

新建一个项目

然后各项配置如图

配置参数

配置源码地址

配置构建

 

调试配置

保存退出后,然后就开始项目构建了,选择适当的参数构建

很不幸的是,编译打包报错了,我们可以打开控制台输出查看报错信息

 看报错,说是缺少了一些 sdk 的版本 (关于需要哪些版本,可以事先问好开发(可以把这个截图给开发看,他们就知道了),安装好,就可以避免这个报错了)

下面我们就来安装这些缺少的 sdk 版本

看我服务器操作

#列出所有的 sdk 版本及其 tag
android list sdk --all   
#我们缺少的是   android-28  和 build-tools;28.0.2 ,选择其对应的  tag 进行安装
android update sdk -u --all --filter 8,6      #都选择 y 

看到结果这样就是安装完成了

 下面我们重新来构建,后续可能还会有报错,但是我们的策略就是看报错,缺少补啥就好了

我的后续还有报错,还缺了 android-26 android-27 ,重复上面的命令,补上就好了

等待编译完成,没有报错之后,我们去 工作空间 里查看编译出来的 APK 包(不知道路径的可以问下开发)

 

二维码制作

接下来就要考虑为这个 apk 包可以用链接下载,并为其生成可下载的二维码

这边 我们就用 nginx 来实现可用连接下载,只要把 apk 包移动到 nginx 配置好的对应的目录

修改 nginx 的配置文件,添加如下两个 server,

server {
        listen       60080;
        server_name download.apk.com;    #没有使用域名,只是为了好看区分,懂 nginx 的应该知道
        charset utf-8;
        location / {
                root   /opt/android_apk/apk;
                autoindex       on;
                autoindex_exact_size    off;
                autoindex_localtime     on;
        }
    }
 
    server {
        listen      60081;
        server_name download.img.com;
        charset utf-8;
        location / {
                root   /opt/android_apk/img_er;
                autoindex       on;
                autoindex_exact_size    off;
                autoindex_localtime     on;
        }
    }

为 apk 生成二维码

网上看到的资料基本都是借用第三方完成的,就想着能不能自己搞个小工具来完成这个操作,这是我就想到了万能的 python,说干就干吧,一起来试试

系统自带的是 python2.7,我就用了 python2.7 来做

先 pip install 两个我们需要的库

pip install pillow
pip install qrcode
vim get_img.py
#!/usr/bin/python
# encoding=utf8
 
import qrcode
import sys
 
def main(url,imgpath):
    qr = qrcode.QRCode(
        version=5,                
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        box_size=10,
        border=4
    )
   #参数 version 表示生成二维码的尺寸大小,取值范围是 1 至 40,最小尺寸 1 会生成 21 * 21 的二维码,version 每增加 1,生成的二维码就会添加 4 尺寸,例如 version 是 2,则生成 25 * 25 的二维码,这里我们需要适当的调整大小
    qr.add_data(url)
    try:
        qr.make(fit=True)
        img = qr.make_image()
        img.save(imgpath)
    except:
        print "输入的保存二维码的路径有问题,情检查"
 
 
if __name__ == '__main__':
    if len(sys.argv) == 3:
        main(sys.argv[1],sys.argv[2])
    else:
        print "输入的参数个数不对,请输入正确的 url 链接 和 二维码保存的地址"

制作二维码的 python 脚本就完成

继续配置 Jenkins 构建

新加一个构建的 shell 脚本(你们要用,应该需要做一些适当的修改),如图

最后再加个 构建后操作,如图

是这里我们可以适当的调整 图片的大小

<img width='300px' height='300px' src="http://ip:800/customer_${BUILD_NUMBER}.jpg"

然后保存退出,进行新一轮的项目构建,当我满心欢喜的以为已经没有问题的时候,又打脸了,图中这块地方并没有出现我们想象中的二维码,尴尬的很

此处还是耗费了一点时间的,不过最后还是找到了解决方案,原来是有一个小配置需要改一改

系统管理—>全局安全配置

但是这里一改之后,又出现了一个小问题,把全局的描述都改了,如图,描述不再是 分行显示了

不过对于知道一点 html 的同学来说,就是小 case ,看操作

最后我们再来看最后的项目构建完成的效果图,完美!!!!

过程中有遇到问题的大佬,可以及时联系博主

猜你喜欢

转载自blog.csdn.net/qq_30029665/article/details/130624393