[英]Jenkins Pipeline Groovy script tcsh alias expansion
我在 Jenkins 中有一个遗留项目,必须进行流水线处理(以便以后并行化),因此从简单的 tcsh 脚本转移到流水线
运行脚本作为
#!/bin/tcsh
source ./mysetting.sh
update
有效,但由于缺少别名扩展,相同的管道步骤失败
stage ('update') {
steps {
//should be working but alias expansion fails
sh 'tcsh -c "source ./mysettings.sh; alias; update"'
//manually expanding the alias works fine
sh 'tcsh -c "source ./mysettings.sh; alias; python update.py;"'
}
}
在步骤中调用 alias 正确列出了所有设置的别名,因此我可以看到它们,但不能使用它们。
我知道必须设置 bash 别名扩展
#enable shell option for alias_expansion
shopt -s expand_aliases
但在 csh/tcsh 中,应该由源代码处理。
我错过了什么?
找到了解决方案:
sh '#!/bin/tcsh \n' +
'source ./mysettings.sh \n' +
'echo "Calling my alias" \n' +
'my_alias \n'
以 sh 开头的每一行都会启动一个新的 shell,因此它必须在一行中,包括换行符。
更令人困惑的是 jenkins 的文档说它启动了“a bash”,但它启动了 /bin/sh,在我的例子中它指向了其他东西
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.