繁体   English   中英

Jenkins 管道 Groovy 脚本 tcsh 别名扩展

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM