参数化流水线

    您的查询搜索没有结果。

    参数化您的配置

    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不会让您保存无效的配置)。