最近需要实现Jenkins自动打包构建apk,摸索两天后总结一下整个过程。
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。作为领先的开源自动化服务器,Jenkins提供数百个插件来支持构建,部署和自动化任何项目。
Jenkins有两种安装方式:
(1)直接下载安装包,如mac上的pkg,傻瓜式操作。
(2)Tomcat+war包的形式。
我这里使用的是第一种安装方式,一开始我是使用第二种方式的,结果问题一个接一个的冒出来,索性直接使用第一种方式了,有空我再试试第一种方式。
https://jenkins.io/download/,根据自己需要下载对应版本的安装包。安装Jenkins前先确保已安装Java 1.8。
使用mac的,也可以直接用brew下载,没安装过brew的按下步骤操作
1、安装brew
终端中输入命令
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2、将brew添加到环境中
将brew配置到profile中,相当于Windows的添加环境变量
(1)终端输入open .bash_profile,打开profile文件
(2)将/usr/local/bin添加进PATH
BREW = /usr/local/bin
export BREW
(3)终端输入source .bash_profile刷新profile文件
(4)终端输入brew -v 查看brew是否安装成功
3、使用brew安装Jenkins
终端输入brew install jenkins安装Jenkins
4、将Jenkins添加到环境中
安装完成后再次打开profile,将/usr/local/Cellar/jenkins/2.152/bin/jenkins 添加到profile
BREW=/usr/local/bin
JENKINS=/usr/local/Cellar/jenkins/2.152/bin/jenkins
export PATH=${PATH}:${BREW}:${JENKINS}
到此,Jenkins的安装配置就完成了,以后要再启动Jenkins直接在终端输入jenkins就可以启动了
1、打开浏览器在地址栏输入localhost:8080
第一次会弹出这个界面,打开红色地址就能看到admin登录密码了
2、安装Jenkins插件,有两种选择,选择推荐安装就行了,如果有特殊需要安装的插件,可以后面自己再在Jenkins的插件管理里下载安装
3、安装过程。如果安装过程中有安装失败的,稍后再在插件管理里手动安装就行。
4、安装完成后,创建用户。因为默认额admin登录密码太难记,可以在这创建新用户,也可以跳过。
5、进去Jenkins首页后去系统管理下的插件管理下载两个插件
这个供我们自定义每次构建任务的名称
这个供构建日期参数使用
6、配置Jenkins全局工具地址,添加Java和、Gradle路径
添加Java路径
添加Gradle路径,可以使用AS目录下的Gradle地址
1、首先在项目的gradle.properties配置你想Jenkins动态修改的参数
//apk名称
APP_NAME = testJenkins
//apk版本号
APP_VERSION = 1.0
//是否通过Jenkins打包
IS_JENKINS = true
//打包类型
BUILD_TYPE = debug
//打包时间
BUILD_TIME = 19700101
2、在module的build.gradle添加配置,gradle3.0以后,修改apk名称的方式不一样,这里注意一下。
def getDate(){
def date = new Date()
def formatDate = date.format("yyyyMMddHHmm")
return formatDate
}
android{
......
applicationVariants.all{variant->
variant.outputs.all {output->
//apk名称
def apkName
//打包时间
def timeNow
if ("true".equals(IS_JENKINS)){
timeNow = BUILD_TIME
}else {
timeNow = getDate()
}
//app-v1.0-release-201811231730.apk
apkName = APP_NAME+"-v"+APP_VERSION+"-"+variant.buildType.name+"-"+timeNow+".apk"
variant.getPackageApplication().outputDirectory = new File(project.rootDir.absolutePath+File.separator+"apk")
outputFileName = apkName
}
}
}
前面准备了那么多,接下来就是将我们的任务和项目关联起来了
1、新建任务
Jenkins首页新建任务,输入任务名称,选择构建一个自由风格的软件项目,点击ok
2、添加参数
进入任务配置页后再General模块下勾选参数化构建,添加参数
添加的参数就是之前在AS项目gradle中编写的参数
这个参数使用的就是上面安装的DATE Parameter插件
3、关联项目
点击General下的advanced高级选项添加AS项目工作空间,不然运行任务的时候Jenkins找不到项目
4、关联Gradle环境
在Build模块下选则Invoke Gradle script,添加gradle脚本版本
Gradle Version选择之前添加的gradle即可
这个添加不添加都行
到这里基本就配置完了,点击保存去首页运行一下任务试试
进入刚刚创建的项目,点击Build with Parameters
输入选择构建的参数,点击运行
向下面这样就构建成功啦,会在设置的目录里生成apk
不过这样的14、15提示太难看了,看不出具体的构建信息,还记得之前安装的build_setter插件吗?用它就能定义这些提示内容了
进入项目的配置中,在Build Environment设置
保存后再次构建任务试试
ok,到此配置Jenkins自动化打包就完成啦,本次实现的功能很简单,等有时间在研究研究生成apk二维码,供手机扫码下载。