2017年5月29日星期一

使用Jenkins构建Android 工程(四)参数化构建

安装插件

首先需要安装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 ParameterGit参数
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

参看

没有评论:

发表评论

Android logcat

Log等级 Android log 等级在 android/log.h 中定义如下: typedef   enum   android_LogPriority {    /** For internal use only. */ ANDROID_LOG_UNKNOWN =...