早些年Eclipse时代Android打包采用的ant,现在AndroidStudio时代采用的Gradle,目前的开发模式都是采用敏捷开发,如果仍采用手动打包给QA提测未免太耽误事了,目前众多公司采用的是自动化打包策略+自动化测试,本文是Jenkins自动化构建的第一篇,玩转Android项目的自动化打包,来自早些时候个人整理的有道云笔记,不对之处请指出。前方高能,巨图众多!

jenkins工作流程

jenkins工作流程

jenkins安装

一般公司自动化构建都会将jenkins配置到Tomcat下,无论是jenkins还是tomcat都需要jdk。

准备工作

1.Java jdk下载

java jdk下载、安装、配置环境变量,安装过程忽略。

2.Tomcat下载

tomcat下载,安装,配置环境变量,安装过程忽略。

需要注意,tomcat默认端口8080,此端口很容易被其他服务占用,可根据自己需求修改tomcat端口号。

3.jenkins下载

jenkins下载有多种类型,主要看当前的系统环境。一般我们选war包形式下载,后续结合tomcat进行安装。

jenkins下载

jenkins安装

这里还是以war包结合tomcat来说,安装过程很简单,直接放到tomcat根目录webapps下,tomcat启动时会自动解压出一个jenkins文件夹。

jenkins home位置修改

jenkins安装后默认在C盘User下会生成个工作区(.jenkins),将来的插件、配置,以及创建的jobo都在此文件夹下,默认是不需要环境变量的,但是有些时候我们需要将此文件夹放到一个安全的位置,防止系统损坏或者重装系统这些配置丢失。这个时候就要修改工作区的环境变量了。

jenkins-home环境变量

jenkins启动

启动tomcat, 输入jenkins的服务器地址http://xxx.xxx.xxx.xxx:8080/jenkins/,一路下来按照提示进行操作,设置root用户信息,安装相关插件(刚开始不建议完全安装推荐的插件,可以选择跳过,你也可以看一下推荐的插件有哪些,选择性安装),然后就回到主页了:

jenkins启动主页

安装插件

汉化: Localization: Chinese (Simplified)

问题:jenkins无法安装插件

找到插件管理最后一项:

jenkins插件http代理设置
滑到最下边找到Upload Site,将默认的https改为http,保存修改:http://updates.jenkins-ci.org/update-center.json

jenkens插件下载修改Upload-Site

如果一直下载失败,可全局开启vpn(个人建议),当然也可以将上边的地址切换为国内镜像:
http://mirror.xmission.com/jenkins/updates/current/update-center.json

jenkins角色配置

1. 添加用户

路径:Manage Jenkins->Manage Users

添加用户
默认是你自己的超级用户root,你可以在此处添加第二个,第三个用户。

2. 设置用户权限

2.1 安装插件

Role-based Authorization Strategy

2.2 授权策略

路径:Manage Jenkins->Configure Global Security

Configure-Global-Security

保存。

2.3 角色管理和分配角色

路径:Manage Jenkins->Manage and Assign Roles

Manage-and-Assign-Roles

  • 管理角色:就是把角色分一下类,例如超级管理员有哪些、QA有哪些、普通用户有哪些。
  • 分配角色:就是把上边的角色分配到个人。

2.3.1 管理角色

管理角色
这里配置三种权限角色:管理员模式、普通模式和匿名模式(Anonymous),配置项如上,将来普通模式可以分配给QA供打包测试,匿名模式可以分配给不登录模式下查看项目,当然如果有别的角色需要我们还可以再进行添加。

2.3.2 分配角色

分配角色
这一步就是将权限分配到个人,Anonymous分配匿名模式下的权限。

以上只是基本的,我们还可以实现某人可以看到某些项目,或者针对某个项目有固定的权限等,这里就不说了。

简单了解系统设置

使用Html展示消息

1.安装插件

OWASP Markup Formatter Plugin

2.标记格式器

路径:Manage Jenkins->Configure Global Security

标记格式器
3.添加Html通知体

添加Html通知体

创建项目

安装插件:

  1. Git,因为我们的代码是git管理的。
  2. Gradle

配置构建环境

配置JDK、Git、Gradle相关变量,路径:Manage Jenkins->Global Tool Configuration

配置构建相关环境变量

准备创建项目

1.创建项目

创建项目
2.设置源码源

设置代码源

这里的凭据,如果项目地址在域里面,并且登录人是域用户,可以不用设置凭据了。

3.设置Gradle构建

设置Gradle构建
主要关注两点:

  1. gradle版本:建议和项目gradle版本保持一致。
  2. 设置gradle打包命令,图上给的只是简单的。
clean:每次构建前clean一下项目;
assembleDebug:构建debug包
-stacktrace-debug:输出日志栈,打印日志信息。

更多gradle打包命令,可以进行百度,这里就不多说了。

4.构建后操作

构建后操作
构建后主要用于打包产物的输出、存档。

  1. 选择Archive the artifacts,匹配构建后的输出产物。
  2. 打包后我们会在项目首页看到最后一次构建成功后产物的归档。

5.项目构建

回到项目首页,点击Build Now,即可看到构建过程:

项目构建过程
点击构建条,进到项目中可以查看日志输出:

项目构建控制台输出

6.自动清除历史构建

自动清除历史构建

参数化构建

下载插件:

  1. Build With Parameters
  2. Persistent Parameter

说明:安装Build With Parameters Plugin为了实现参数化构建,安装Persistent Parameter Plugin为了实现构建时默认参数值取自上次构建的参数(当然如果要实现该功能,应该需要添加该插件对应的参数)

参数化构建

1. 设置构建类型

选择Choice Parameter

Choice-Parameter
在gradle构建类型地方进行替换

指定构建类型

2. 设置构建分支

选择Git Parameter

Git-Parameter
在源码管理的地方进行替换

指定git分支

当然你也可以选择Choice Parameter,类似设置构建类型一样,自己发挥咯。我自己就是用这种方式实现的。

放一张主页的截图:

主页构建模型

展示二维码

为了展示二维码,需要知道二维码存放的具体路径,然后二维码的扫描出来的结果必须是apk的具体路径,所以需要经过以下几步:

  1. 将构建后的apk重命名,方便生成二维码(明确将来的apk存放地址)
  2. 将构建生成的apk,拷贝到服务器具体路径下,我这里的服务器就是我本机。
  3. 根据apk的服务器路径生成二维码,并存放在服务器某个位置。

生成二维码需要用到二维码生成库包,我这里分享一个:

QRCode.jar

生成二维码的命令:

java -jar [存放生成jar包的路径/QRCode.jar] url=[二维码扫描结果字符串] image=[二维码的名字.jpg] save=[二维码存放的位置]

window脚本

1.我们按照上边的过程将其写成window脚本命令,打开window batch command窗口

window脚本构建参数
2.输入脚本内容:

set buildApk=app\build\outputs\apk\%BuildFlavor%\%BuildType%\*.apk
set apkName=ehistore_%BuildBranch%_%BuildFlavor%_%BuildType%_%BUILD_ID%
set jenkinsBuildDir=F:\Workspaces\project_other\tomcat-8.5.39\webapps\jenkins_build
set jenkinsBuildResDir=%jenkinsBuildDir%\res
set jenkinsBuildApkDir=%jenkinsBuildDir%\apks
set apkDownLoadUrl=http://192.xxx.x.xxx:8080/jenkins_build/apks/%apkName%.apk

ren %buildApk% %apkName%.apk
copy %buildApk% %jenkinsBuildApkDir%
java -jar %jenkinsBuildResDir%\QRCode.jar url=%apkDownLoadUrl% image=%apkName%.jpg save=%jenkinsBuildApkDir%

3.下载插件:Build Name and Description Setter

该插件主要用于修改构建名字和构建描述展示,利用描述内容我们来展示二维码。

添加插件部件:

添加修改描述和名字的插件
Changes build description添加描述内容:

<img src="http://192.xxx.x.xxx:8080/jenkins_build/apks/ehistore_${BuildBranch}_${BuildFlavor}_${BuildType}_${BUILD_ID}.jpg" height="180" width="180"/>

4.具体设置如下

修改构建产物的描述和名字

生成效果如下:

最终二维码展示

最后

本文主要带你玩转Jenkins中实现Android项目自动化打包,这是第一篇,后续还有二、三篇,如果喜欢顺便点赞+关注哦

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐