6

尝试从 go 模板中引用环境变量,但我认为这不可能?在文档和我通过大量使用参数但从未使用环境变量的示例中看不到任何内容。我想要的是类似的东西

<templates>
<pipeline name="TestEcho">
  <stage name="Echo">
    <jobs>
      <job name="Echo">
        <tasks>
          <exec command="echo ${SOME_ENVIRONMENT_VARIABLE}">
          </exec>
        </tasks>
      </job>
    </jobs>
  </stage>
</pipeline>
<templates>

提前致谢!

蒂姆

4

3 回答 3

6

是的你可以 !

您应该使用%SOME_ENVIRONMENT_VARIABLE%而不是 ${SOME_ENVIRONMENT_VARIABLE} (在Windows代理上)。

我猜你正在使用 Windows 代理。Thoughtworks 的文档以 Linux 为重点,这就是为什么他们的示例不适合您的原因。

您可以在任务中使用所有Go Standard 环境变量

您可以在以下位置设置环境变量:

  • 环境等级
  • 管道级别(覆盖环境级别)
  • 阶段级别(覆盖管道级别)

您可以在任务中使用所有这些环境变量:

<pipeline name="TestEcho">
  <stage name="Echo">
    <jobs>
      <job name="Echo">
        <tasks>
          <exec command="echo %SOME_ENVIRONMENT_VARIABLE%">
          </exec>
        </tasks>
      </job>
    </jobs>
  </stage>
</pipeline>

您可以在环境级别设置环境变量:

<environments>
  <environment name="SomeEnvironment">
    <environmentvariables>
      <variable name="SomeVariable">
        <value>SomeValue</value>
      </variable>
    </environmentvariables>
    <pipelines>
      <pipeline name="TestEcho" />
    </pipelines>
  </environment>
</environments>

您可以在管道级别设置环境变量:

<pipeline name="TestEcho">
  <environmentvariables>
    <variable name="SomeVariable">
      <value>SomeValue</value>
    </variable>
  </environmentvariables>
  <stage name="Echo">
    <jobs>
      <job name="Echo">
        <tasks>
          <exec command="echo %SomeVariable%">
          </exec>
        </tasks>
      </job>
    </jobs>
  </stage>
</pipeline>

您可以在阶段级别设置环境变量:

<pipeline name="TestEcho">
  <stage name="Echo">
    <jobs>
      <job name="Echo">
        <environmentvariables>
          <variable name="SomeVariable">
            <value>SomeValue</value>
          </variable>
        </environmentvariables>
        <tasks>
          <exec command="echo %SomeVariable%">
          </exec>
        </tasks>
      </job>
    </jobs>
  </stage>
</pipeline>

您可以覆盖环境变量:

<pipeline name="TestEcho">
  <environmentvariables>
    <variable name="SomeVariable">
      <value>Value1</value>
    </variable>
  </environmentvariables>
  <stage name="Echo">
    <jobs>
      <job name="Echo">
        <environmentvariables>
          <variable name="SomeVariable">
            <value>Value2</value>
          </variable>
        </environmentvariables>
        <tasks>
          <exec command="echo %SomeVariable%"><!-- Write Value2 -->
          </exec>
        </tasks>
      </job>
      <job name="Echo2">
        <tasks>
          <exec command="echo %SomeVariable%"><!-- Write Value1 -->
          </exec>
        </tasks>
      </job>
    </jobs>
  </stage>
</pipeline>

帮助我的来源

于 2014-06-10T10:10:51.010 回答
2

目前,这是不可能的,只能引用参数,使用#{parameter_name}语法

于 2014-04-24T16:36:35.657 回答
1

是的,这是可能的。您只需要将其作为自定义命令任务运行,作为命令使用/bin/bash,并-c作为第一个参数告诉 bash 扩展参数。

因此,您的管道配置将如下所示:

<templates>
<pipeline name="TestEcho">
  <stage name="Echo">
    <jobs>
      <job name="Echo">
        <tasks>
          <exec command="/bin/bash">
            <arg>-c</arg>
            <arg>echo ${SOME_ENVIRONMENT_VARIABLE}</arg>
          </exec>
        </tasks>
      </job>
    </jobs>
  </stage>
</pipeline>
<templates>

请参阅此处以获取类似信息:http: //support.thoughtworks.com/entries/22628904-Custom-environment-variables-referencing-other-variables

于 2015-02-19T11:37:08.157 回答