【问题标题】:GoCD stage to run a script if it existsGoCD 阶段运行脚本(如果存在)
【发布时间】:2019-09-27 02:34:55
【问题描述】:
我有一个所有管道都在使用的模板。
id 喜欢添加阶段以运行 contract-tests.sh 文件。
不是我所有的项目都会有这个文件,所以管道会中断。
我不想创建新模板
我尝试了以下自定义命令作为测试,但它实际上并没有将该行回显到控制台。
test -f contract-tests.sh && echo "contract tests file is present"
【问题讨论】:
标签:
shell
continuous-integration
go-cd
【解决方案1】:
GoCD 的命令默认不通过 shell 运行,因此您必须使用参数 -c 和 test -f contract-tests.sh && echo "contract tests file is present" 显式调用可执行文件 /bin/sh
您还需要确保在脚本实际所在的目录中运行命令(例如,如果您有多个材料,则该目录肯定不是项目的根目录)。
在某些情况下只运行命令而不在其他情况下运行命令的另一个可能技巧是将命令名称放在模板的param 中。这样,您可以提供contract-tests.sh 作为具有它的管道的参数,并为没有它的管道提供像/bin/true 或echo 这样的虚拟参数。