Как разрешить переменные окружения в команде задачи 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/'

Я не смог разрешить vars в команде задачи bash.

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

Просто выводит

${GO_SERVER_URL}

Я пробовал...

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

ничего не работает...

2 ответа

В Thoughtworks Go есть страница поддержки об этой точной проблеме, в которой говорится:

Обратите внимание, что это простой exec, а не exec, поэтому [$ FOO] не будет иметь желаемого эффекта

Самое простое решение:

command: /bin/bash
args:
-c
echo
$GO_SERVER_URL

Альтернативой является просто подбросить ваш script в файл.

Почему я знаю это? Потому что я столкнулся с этим тоже.


Для команды с несколькими опциями Go довольно утончен. tedder42 ответ был правильным для простого случая эха, но не работал у меня по моей реальной проблеме, используя завиток с несколькими параметрами. Srinivas Upadhya на Перейти в группу Google помог мне. Я хочу документировать его здесь для других, так что его легко найти. Это выглядит очевидно, но небольшие отклонения не сработали.

Введите команду точно так:

XML должен выглядеть следующим образом:

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

licensed under cc by-sa 3.0 with attribution.