安装插件
首先需要安装
Git Parameter Plug-in
插件,用来配置Git
相关构建参数。
打开
首页 -> 系统管理 -> 管理插件
,进入插件管理页面。切换到可选插件
页,搜索git parameter
即可找到插件,点击直接安装
:
安装完成后需要重启
Jenkins
,在浏览器中访问:http://xxx.xxx.xxx.xxx:8080/restart,确认重启即可。添加构建参数
进入到我们的Android项目,选择
配置
进入设置页面,在General
设置区勾选参数化构建过程
,即可添加构建参数:
可以看到有以下几种参数:
参数类型 | 描述 |
---|---|
Boolean Value | 布尔型参数 |
Choice | 选择型参数 |
Credentials Parameter | 认证参数 |
File Parameter | 文件参数 |
Git Parameter | Git参数 |
Multi-line String Parameter | 多行字符串参数 |
Password Parameter | 密码参数 |
Run Parameter | 运行参数 |
String Parameter | 字符串参数 |
其中
Git参数
是需要安装了Git Parameter Plug-in
才能设置的参数。布尔参数
布尔参数最简单,
name
为参数名称,Default Value
设置是否默认选中(true),Description
添加描述信息:
构建时显示效果如下:
选择型参数
选择型参数在列出的多个选项中选择一个,
Choices
中列出多个选项,每行一个选项,其中第一行为默认选项
构建时显示效果为:
认证参数
认证参数用来设置认证信息,
Credential type
用来选择认证的类型,包括ssh认证
、用户名/密码认证
等多种认证类型;Default Value
设置默认认证信息,通过后面的Add
按钮还可以新增认证信息。
构建时显示效果:
文件参数
文件参数用来上传文件到工作空间,
File location
用来设置上传的文件保存的位置,这里需要使用相对于工作空间根目录的相对路径。
构建时显示效果:
Git参数
Git参数用来配置构建目标。
Parameter Type
用来选择参数类型:类型 | 说明 |
---|---|
Tag | 列出所有tag |
Branch | 列出所有分支 |
Branch or Tag | 列出所有分支和tag |
Revision | 可以让用户选择构建的revision |
Branch
用来设置分支,这个设置只有在Parameter Type
设置为Revision
时,才有效,用户可以选择指定分支的revision。Branch Filter
使用正则表达式来过滤分支的显示,为空时过滤器默认为".*"。Tag Filter
用来过滤tag,为空时默认为"*"。Sort Mode
用来设置排序方式,分为:none(不过滤)
、descending(降序)
、ascending(升序)
、acending smart(智能升序)
、descending smart(智能降序)
。Default Value
用来设置默认值,如果分支或tag等的列表获取为空,则采用设置的默认值。Selected Value
设置选中的值,分为:NONE(不选中)
、TOP(选中最上项)
、DEFAULT(选中默认项)
;如果选择了 DEFAULT
且上面一项Default Value
没有设置,则默认不会选中任一项。Use repository
用正则表达式指定使用哪个代码仓库。Quick Filter
勾选时,会在构建页面显示一个用来过滤的文本框,用户可输入文本在列表中显示的分支、tag等列表中过滤。
设置图及构建效果图如下:
多行字符串参数
这个也比较简单,用来输入多行字符串,可以设置默认值:
密码参数
比较简单,可用来输入密码,可以设置默认密码:
运行参数
指定其他构建任务的某一构建历史,具体作用还没搞清楚。TODO
字符串参数
这个类似与多行文本参数,不同的是这里只能输入单行文本
使用构建参数
使用Git参数构建指定版本
我们可以在构建时使用指定的分支、tag、revision来构建当前项目:
在项目设置里,切换到
源码管理
区,设置Branch Specifier
属性为添加的git参数:${git_params}
我们新建
branch_jenkins
分支用来测试:$ git checkout -b branch_jenkins
在新分支中
app/build.gradle
构建脚本中增加如下打印信息:android {
...
println "this is jenkins test!!!"
}
在
参数化构建
页面,选择分支为branch_jenkins
:
查看构建输出:
[Gradle] - Launching build.
[android] $ /var/lib/jenkins/workspace/android/gradlew -Pmulti_params=这里用来输入多行文本。
默认文本可修改。
over。 -Pgit_params=origin/branch_jenkins "-Ptest_string_p=this is a default value" -Pchoice_type_color=red ******** -Pbool_type=true -Pupload/data.zip= ******** clean assemble
this is jenkins test!!!
可以看到打印输出了我们的测试信息,说明构建的是我们选择的branch_jenkins
分支
指定Gradle任务
增加
字符串参数
:gradle_tasks
,设置默认值clean assemble
:
在
构建
设置区中,指定Tasks
属性为:${gradle_tasks}
在参数化构建页面,修改
gradle_tasks
参数值为tasks
:
点击开始构建,查看构建输出:
[Gradle] - Launching build.
[android] $ /var/lib/jenkins/workspace/android/gradlew -Pmulti_params=这里用来输入多行文本。
默认文本可修改。
over。 -Pgit_params=origin/develop "-Ptest_string_p=this is a default value" -Pchoice_type_color=red -Pgradle_tasks=tasks ******** -Pbool_type=true -Pupload/data.zip= ******** tasks
Incremental java compilation is an incubating feature.
:tasks
------------------------------------------------------------
All tasks runnable from root project
------------------------------------------------------------
Android tasks
-------------
androidDependencies - Displays the Android dependencies of the project.
signingReport - Displays the signing info for each variant.
sourceSets - Prints out all the source sets defined in this project.
......
环境变量
在参数化构建过程中,设置的参数,除了
文件参数
及运行参数
,其他几种类型参数都会被设置为同名环境变量;文件参数
用来上传文件到工作空间已供构建过程使用;运行参数
会设置多个环境变量,譬如参数名称PARAMETER_NAME
的运行参数会设置以下环境变量:PARAMETER_NAME=<jenkins_url>/job/<job_name>/<run_number>/
PARAMETER_NAME_JOBNAME=<job_name>
PARAMETER_NAME_NUMBER=<run_number>
PARAMETER_NAME_NAME=<display_name>
PARAMETER_NAME_RESULT=<run_result>
在Android项目中打开设置页面,找到
构建
区,添加构建步骤执行脚本
,添加脚本命令env
,打印环境变量:
打开
参数化构建
,修改参数值,选择开始构建:
查看构建过程命令行输出:
[android] $ /bin/sh -xe /tmp/hudson9052812477166736119.sh
+ env
......
bool_type=false
credentials_type=ed7068da-a15e-415e-8060-846952c2f503
pwd_params=88888888
git_params=origin/master
test_string_p=单行文本参数
choice_type_color=green
multi_params=这里用来输入多行文本
默认文本可修改
结束
run_params=http://xxx.xxx.xxx.xxx:8080/job/android/18/
run_params_JOBNAME=android
run_params_NUMBER=18
run_params_NAME=#18
run_params_RESULT=SUCCESS
......
Archiving artifacts
Finished: SUCCESS
构建脚本即可通过环境变量来访问这些设置参数。
Gradle构建参数
Java系统属性
执行Gradle构建任务时,部分设置的参数会添加到Gradle构建命令中,作为
Java系统属性
,使用-D
标识:[Gradle] - Launching build.
[android] $ /var/lib/jenkins/workspace/android/gradlew -Dmulti_params=这里用来输入多行文本~~
默认文本可修改~~~ -Dgit_params=origin/master "-Dtest_string_p=单行文本参数" -Dchoice_type_color=green ******** -Dbool_type=false -Dupload/data.zip=usercmd ******** clean assemble
Gradle属性
在Android任务设置页面,切换到
构建
设置区:
添加
Invoke Gradle script
构建步骤时,如果勾选了Pass job parameters as Gradle properties
选项,则设置的参数会以Gradle属性
的方式添加到构建命令中,使用-P
标识:[Gradle] - Launching build.
[android] $ /var/lib/jenkins/workspace/android/gradlew -Pmulti_params=这里用来输入多行文本~~
默认文本可修改~~~ -Pgit_params=origin/master "-Ptest_string_p=单行文本参数" -Pchoice_type_color=green ******** -Pbool_type=false -Pupload/data.zip=usercmd ******** clean assemble