3

Thoughtworks Go 提供了一组传递给每个任务的特定于作业的环境变量。例如,我的工作输出API 文档指定的相同值。

[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 任务命令中解析 var。

[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}"

没有任何工作...

4

2 回答 2

5

Thoughtworks Go 有一个关于这个确切问题的支持页面,说明:

请注意,这是一个普通的 exec,而不是 shell exec,因此 [$FOO] 不会产生预期的效果

最简单的解决方案:

command: /bin/bash

args:
-c
echo
$GO_SERVER_URL

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

为什么我会知道这个?因为我也遇到过。

于 2014-08-05T23:19:28.437 回答
1

对于具有多个选项的命令,Go 相当挑剔。tedder42 的回答对于简单的回声情况是正确的,但在我使用带有多个参数的 curl 的实际问题上对我不起作用。Go Google 小组的 Srinivas Upadhya帮助了我。我想在这里记录它以供其他人使用,以便于查找。看起来很明显,但小的偏差不起作用。

完全像这样输入您的命令: 在此处输入图像描述

XML 应如下所示:

<tasks>
  <exec command="/bin/bash">
    <arg>-c</arg>
    <arg>curl -o test.file $GO_VAR</arg>
    <runif status="passed" />
  </exec>
  ....
</tasks>
于 2014-08-06T15:14:31.250 回答