参数化配置

GoCD允许您参数化您的管道和管道模板。这个强大的特性可以帮助减少您的配置中的重复,并且还允许使用参数和管道模板的组合来进行复杂的设置。

使用Web界面

在定义管道时,编辑参数选项卡

定义和使用参数

参数值是在管道内的<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”具有值“1”,则:

String Evaluates to
#{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>

关于参数使用的规则

虽然参数通常非常灵活,但也有一些限制

您不能使用参数来定义:

  • 管道的名字
  • 阶段名字
  • 工作名字
  • 工作的属性名
  • 工作任务的<runif>配置
  • 另一个参数(即不能使用另一个参数定义参数)
  • 管道模板名称
  • 材料名称
  • 材料密码(但是,对于Git和Mercurial,密码不作为单独的属性捕获,因此可以参数化)
  • 阶段的触发类型

其他限制:

  • 目前,参数只能在管道中定义
  • 一个参数不能与另一个参数组合,即#{foo#{bar}}不会被递归地计算。
  • 如果引用了一个参数,但是没有定义,那么配置是无效的(Go不会让您保存一个无效的配置)。

results matching ""

    No results matching ""