Как разрешить переменные среды в команде задачи Thoughtworks Go
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.
[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 ответа
Thoughtworks Go имеет страницу поддержки об этой проблеме, заявляя:
Обратите внимание, что это обычный exec, а не exec-shell, поэтому [$FOO] не даст желаемого эффекта
Самое простое решение:
command: /bin/bash
args:
-c
echo
$GO_SERVER_URL
Альтернатива - просто выбросить ваш скрипт в файл.
Почему я это знаю? Потому что я тоже столкнулся с этим.
Для команды с несколькими опциями Go довольно привередлив. Ответ tedder42 был верным для простого случая эха, но у меня не получилось решить мою реальную проблему с использованием curl с несколькими параметрами. Сринивас Упадхья из группы Go Google помог мне. Я хочу документировать это здесь для других, чтобы его легко было найти. Это выглядит очевидным, но небольшие отклонения не сработали.
Введите вашу команду в точности так:
XML должен выглядеть так:
<tasks>
<exec command="/bin/bash">
<arg>-c</arg>
<arg>curl -o test.file $GO_VAR</arg>
<runif status="passed" />
</exec>
....
</tasks>