Jenkins管道Groovy脚本tcsh别名扩展

ljo96ir5  于 2022-10-06  发布在  Jenkins
关注(0)|答案(1)|浏览(190)

我在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中,这应该由来源来处理。

我遗漏了什么?

hs1ihplo

hs1ihplo1#

找到了解决方案:

sh  '#!/bin/tcsh n' +
    'source ./mysettings.sh n' +
    'echo "Calling my alias" n' +
    'my_alias n'

以sh开头的每一行都会启动一个新的外壳,因此它必须在包含换行符的一行中。

更令人困惑的是,Jenkins的文档显示它开始了“bash”,但它启动了/bin/sh,在我的例子中,它指向了其他内容

相关问题