项目示例
在Jenkins首页,点击“新建Item”
avatar
进入到创建页面
avatar
点击“确定”后进入到基本模板配置页面。
avatar
General
General 选项卡可以配置项目描述,以及基本的配置。这里需要着重注意的checkbox项是"This project is parameterzed"。
选中后可以定义变量,这些变量在编译过程中,jenkins会将这些变量值侵入到项目的gradle中,作为项目的全局属性被访问——需要注意的是要在项目的gradle.properties中定义对应的变量——将变量的值替换gradle.properties中相应变量的默认值。
avatar
avatar
在参数配置中定义了BUILD_TYPE,APK_NAME,VERSION_NAME,BUILD_TIME,IS_JENKINS。
在项目发起编译时,可以看到这些定义的变量及其描述。
avatar
发起编译前,还需要确保在项目的gradle.properties中同样定义了对应需要使用的变量,这样在jenkins进行编译时,这些定义的变量值才能起作用。
IS_JENKINS = false
BUILD_TIME = ''
APK_NAME = ''
VERSION_NAME = 1.0.0
这里定义了项目中需要使用的变量,在jenkins编译时,这些变量值会被jenkins中定义的同名变量值替换。gradle.properties中定 义的变量也会在项目的gradle文件中被引用。
// 定义的versionName
versionName VERSION_NAME
// 定义编译生成的apk名格式
applicationVariants.all { variant ->
variant.outputs.each { output ->
def newName
if ('true' == IS_JENKINS) {
println("jenkins build ==> $BUILD_TIME")
newName = "$APK_NAME-v$VERSION_NAME-$BUILD_TIME-${variant.buildType.name}-unsigned.apk"
} else {
if ('debug' == variant.buildType.name) {
newName = "$APK_NAME-v${rootProject.android.versionName}-${rootProject.android.versionCode}-debug.apk"
} else {
newName = "$APK_NAME-v${rootProject.android.versionName}-${rootProject.android.versionCode}-${variant.buildType.name}.apk"
}
}
output.outputFileName newName
}
}
这样在发起编译后,最终jenkins编译生成的apk文件名即是IS_JENKINS分支的输出名。
源码管理
源码管理 项选择源码配置工具。
因为我们的源码管理工具是git,因此选择git,并且在对应的配置填写源码url等信息。
avatar
选择Git方式后,填写“Repository URL”gitlab上project的http地址,“Credentials”初始需要点击有责“添加”增加凭据。在“Branch to build”中填写需要编译的分支。
构建触发器
构建触发器 中可以设置触发编译的条件。
avatar
这里设置了每隔30分钟拉取一次代码并且编译。也可以根据需要,根据对应的格式填写需要触发的条件。
构建
构建 配置需要执行的操作等。在构建配置中,主要选择编译使用的gradle版本及执行的任务命令,选择签名,已经可能需要签名后执行的命令(配置块的顺序不可更改,一定是gradle编译,后签名,再针对签名后的文件进行操作,否则会造成奇怪的问题。)
Invoke Gradle script 块中选择编译的Gradle版本,以及在tasks填写执行的任务。
avatar
在选择编译gradle版本中,有一点特别需要注意,点击“高级”,在展开的配置项中,勾选 ”
Pass all job parameters as Project properties”项,让在 “General”项中配置的参数可以在编译时准确将值替换到项目gradle.properties文件中的对应变量的值。否则在编译时你会发现,即使编译成功了,但是产生的APK文件名不是想要的输出。