Jenkins构建多配置项目
本文参考自Jenkins相关资料,结合本人实际使用情况编写。
相关文档:
- 《Jenkins:The Definitive Guide》 ——10.4 Multiconfiguration Build Jobs
- 《Building a matrixproject》
可以解决的问题:
有时,我们希望项目能够根据不同参数、或不同环境来编译,若使用多个项目来实现,则有些浪费资源,那么最好是可以实现:在一个项目中,就能根据给出的不同参数来编译不同版本。
我这里以自定义参数为例。
思路
比如当前项目的参数有四种(非完整参数,简单举例而已)
python -Purpose test -version 1.0
python -Purpose release -version 1.0
python -Purpose test -version 1.1
python -Purpose release -version 1.1
可以看到 Purpose 和 version 参数是可变的,那我们可以利用两个变量将以上参数简化为一条:
python -Purpose %purp% -version 1.%ver%
其中的 purp 可取值为 test
或 release
,ver 可取值为 0
或 1
.
有了目标,接下来就是在Jenkins中的应用实践。
步骤
1、需要新建一个任务,类型为:构建一个多配置项目(Build multi-configuration project)
2、其他设置与一般任务相同,只是多了一个模块 Configuration Matrix
a)在Add axis
中,选择User-defined Axis
,本例需要两个变量,所以需要再增加一个User-defined Axis
b)这里定义变量和对应的值,Name
中是变量名,Values
中是变量可取的值,中间以空格或回车隔开(注意:当可取值比较复杂的时候,建议每个值用英文双引号隔离,值之间仍以空格、回车隔开),如图,填入前面提过的变量和值,此时 purp
和 ver
就是可以在构建参数中直接使用的变量了
c)这个模块的下方有两个可选项需要注意:
- Combination Filter
这个是过滤器,目前我们定义了两个变量,也就是说最后会得到 2*2=4 个版本,而有时我们并不想拿到所有组合的版本,那么这个过滤器就可以起作用了,比如我们不想编译python -Purpose test -version 1.1
这个版本,过滤方法如图。
BTW,当有多个版本要过滤时,可以使用括号和 || 分隔,如:
(purp == "test" && ver != "1") || (purp == "test" && ver != "0")
- Run each configuration sequentially
这个是指定所有版本要按顺序编译,建议勾选
3、构建参数
以上我们已经得到所需变量,那就可以在构建中写入完整的参数配置,这里选择的是Windows 批处理命令(注意:使用变量的方式因命令而异,比如windows下的变量使用%,所以这里用的是 %purp%
和 %ver%
)
python -Purpose %purp% -version 1.%ver%
4、保存后,查看项目,有一个参数矩阵,通过圆球可以对每个版本的构建结果一目了然(注意这里的0和1是我们刚刚定义的变量值,不是序号)