Поместите вывод команды в переменную GoCD - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь создать переменную с версией проекта в задании GoCD.

Мой проект построен с использованием Maven.Версия проекта указана в файле pom.xml (присутствует в репозитории git).

Maven позволяет получить версию проекта с помощью команды:

mvn help:evaluate -Dexpression=project.version

Итак, япопытался поместить вывод этой команды в переменную linux:

my_version=${mvn help:evaluate -Dexpression=project.version}

, а затем использовать ее для отправки проекта в хранилище Docker:

docker push my_project:$my_version

Проблема в том, что GoCD кажетсяиметь собственный интерпретатор (см. https://docs.gocd.org/current/faq/dev_use_current_revision_in_build.html). Чтобы использовать переменную, я должен сделать что-то вроде этого:

sh -c docker push my_project:$my_version

Но я не могу найти способ установить переменную linux.

Это нормально для GoCD?Как правильно это сделать?

1 Ответ

1 голос
/ 09 мая 2019

GoCD не поддерживает ни одного сеанса оболочки для всей работы. Таким образом, даже если вы используете sh export MY_VERSION=... и попытаетесь использовать это в следующей задаче в рамках той же работы, она не будет работать, как ожидалось.

Чтобы решить эту проблему, лучше всего обернуть весь набор команд, которые вы хотите выполнить, в сценарий оболочки и выполнить этот сценарий оболочки как задачу. Поскольку весь сценарий оболочки будет выполняться в пределах одного экземпляра оболочки, можно использовать любую переменную, которую вы определяете.

...