Как разрешить переменные среды в команде задачи 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>
Другие вопросы по тегам