将命令输出放入变量GoCD中

时间:2019-05-02 14:31:41

标签: maven continuous-integration go-cd

我尝试用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 个答案:

答案 0 :(得分:1)

GoCD不会为整个作业维护单个shell会话。因此,即使您使用sh export MY_VERSION=...并尝试在同一作业的下一个任务中使用它,也无法按预期工作。

要解决此问题,最好的方法是将要执行的整套命令包装在Shell脚本中,然后将该Shell脚本作为任务执行。给定整个shell脚本将在单个shell实例中执行,则可以使用您定义的任何变量。