我在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;"'
}
}
在步骤中调用别名正确地列出了所有设置的别名,因此我可以看到它们,但不能使用它们。
我知道在bash中必须设置别名扩展
# enable shell option for alias_expansion
shopt -s expand_aliases
但在csh/tcsh中,这应该由来源来处理。
我遗漏了什么?
1条答案
按热度按时间hs1ihplo1#
找到了解决方案:
以sh开头的每一行都会启动一个新的外壳,因此它必须在包含换行符的一行中。
更令人困惑的是,Jenkins的文档显示它开始了“bash”,但它启动了/bin/sh,在我的例子中,它指向了其他内容