如何在Thoughtworks Go任务命令中解决环境变量

时间:2014-08-05 19:26:50

标签: bash thoughtworks-go

Thoughtworks Go提供了一系列传递给每项任务的特定于工作的环境变量。 例如,我的作业输出的值与API doc指定的值相同。

[go] setting environment variable 'GO_ENVIRONMENT_NAME' to value 'rmp'
[go] setting environment variable 'a' to value 'b'
[go] setting environment variable 'GO_SERVER_URL' to value 'https://10.8.249.57:8154/go/'

我无法在bash任务命令中解析变种。

[go] Start to execute task: <exec command="echo" >
<arg>${GO_SERVER_URL}</arg>

只输出

${GO_SERVER_URL}

我试过......

${GO_SERVER_URL}
${env.GO_SERVER_URL}
${go.GO_SERVER_URL}
$[GO_SERVER_URL]
$GO_SERVER_URL
"${GO_SERVER_URL}"

没有用......

2 个答案:

答案 0 :(得分:4)

Thoughtworks Go has a support page about this exact problem,说明:

  

请注意,这是一个普通的exec,而不是shell exec,因此[$ FOO]将没有所需的效果

最简单的解决方案:

command: /bin/bash

args:
-c
echo
$GO_SERVER_URL

另一种方法是简单地将脚本放入文件中。

为什么我知道这个?因为我也碰到了它。

答案 1 :(得分:1)

对于具有多个选项的命令,Go非常挑剔。 tedder42的回答对于简单的回声情况是正确的,但对于我使用带有多个参数的curl的真实问题不起作用。 Go Google group的Srinivas Upadhya帮助了我。我想在这里为其他人记录,所以很容易找到。它看起来很明显,但是小的偏差不起作用。

输入您的命令,如下所示: enter image description here

XML应如下所示:

<tasks>
  <exec command="/bin/bash">
    <arg>-c</arg>
    <arg>curl -o test.file $GO_VAR</arg>
    <runif status="passed" />
  </exec>
  ....
</tasks>