我尝试用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可以吗?正确的方法是什么?
答案 0 :(得分:1)
GoCD不会为整个作业维护单个shell会话。因此,即使您使用sh export MY_VERSION=...
并尝试在同一作业的下一个任务中使用它,也无法按预期工作。
要解决此问题,最好的方法是将要执行的整套命令包装在Shell脚本中,然后将该Shell脚本作为任务执行。给定整个shell脚本将在单个shell实例中执行,则可以使用您定义的任何变量。