参数化您的配置
GoCD允许您参数化您的流水线和流水线模板。此强大功能可以帮助减少配置中的重复,并且还可以通过结合使用参数和流水线模板来实现复杂的设置。
使用Web界面
编辑参数选项卡以定义pipeline .
定义和使用参数
参数值在<params>
标签内定义,并可以在该流水线的任何位置使用#{param_name}。以下示例定义了一个名为“myParam”的新参数并在作业中使用它。
<pipeline name="my_pipeline">
<params>
<param name="myParam">hello world</param>
</params>
<stage name="my_stage">
<jobs>
<job name="my_job">
<tasks>
<exec command="echo" args="#{myParam}"/>
</tasks>
</job>
</jobs>
</stage>
</pipeline>
注意:如果您想使用#字面量,可以使用另一个#字面量来转义它。例如,如果参数“foo”的值为“one”,那么:
字符串 | 计算结果为 |
---|---|
#{foo} | one |
##{foo} | #{foo} |
###{foo} | #one |
在流水线模板中使用参数
参数在模板内的使用与在流水线中的使用类似。唯一的区别是您不能在模板中定义参数。
<pipeline name="trunk" template="my_template">
<params>
<param name="WORKING_DIR">trunk</param>
</params>
...
</pipeline>
<pipeline name="branch" template="my_template">
<params>
<param name="WORKING_DIR">branch</param>
</params>
...
</pipeline>
上面定义的参数用于下面的模板。
<pipeline name="my_template">
<stage name="my_stage">
<jobs>
<job name="my_job">
<tasks>
<exec command="echo" args="Updating code from svn repository svn://codebase/#{WORKING_DIR}"/>
</tasks>
</job>
</jobs>
</stage>
</pipeline>
关于参数使用的规则
虽然参数通常非常灵活,但有一些限制。
您不能使用参数来定义:
- 流水线名称
- 阶段名称
- 作业名称
- 作业的属性名称
- The
<runif>
作业任务的 - 另一个参数(即不能使用另一个参数来定义参数)
- 流水线模板名称
- 材料名称
- 材料密码(但是,对于Git和Mercurial,密码不会作为单独的属性被捕获,因此可以参数化)
- 阶段的触发类型
其他限制:
- 参数目前只能在一个流水线内定义。
- 参数不能与其他参数组合,即#{foo#{bar}}不会递归计算。
- 如果引用了未定义的参数,则配置无效(Go不会让您保存无效的配置)。