如果从 Jenkins 管道调用时条件不起作用,则 Bash 脚本

yes*_*nth 4 bash scripts jenkins

下面是我的 Jenkins Pipeline 阶段

stage ('Import') {

            steps {
                sshagent([sshCredentials]) {
                    sh '''
                        #!/bin/bash
                        sh -x ETL_AUTOMATION/Scripts/export.sh
                    '''
Run Code Online (Sandbox Code Playgroud)

构建输出:-

[[ RMO_TST12 ==  ]]

ETL_AUTOMATION/Scripts/export.sh: 17: ETL_AUTOMATION/Scripts/export.sh: [[: not found
Run Code Online (Sandbox Code Playgroud)

if 脚本中的条件:-

if [[ "$SOURCE_FOLDER" == "" ]]; then

    echo "SOURCE_FOLDER not specified... exiting"
    exit 1
fi
Run Code Online (Sandbox Code Playgroud)

#!/bin/bash在我的脚本中也提到过。

请帮助我,我真的被困在这里。

ter*_*don 10

你在跑步sh -x ETL_AUTOMATION/Scripts/export.sh。这意味着export.sh正在运行sh而不是bash。在 Ubuntu 上,sh是一个简单的 POSIX shell dash,它不支持[[构造,这是bash一回事。因此,只需更改您的脚本,使其使用bash而不是sh. 我根本不知道 Jenkins 语法,但我怀疑您想要以下之一:

sshagent([sshCredentials]) {
    sh '''
        ETL_AUTOMATION/Scripts/export.sh
        '''
Run Code Online (Sandbox Code Playgroud)

或者,如果您export.sh不能执行:

sshagent([sshCredentials]) {
    sh '''
        bash ETL_AUTOMATION/Scripts/export.sh
        '''
Run Code Online (Sandbox Code Playgroud)

或者,也许只是:

sshagent([sshCredentials]) {
    bash '''
        ETL_AUTOMATION/Scripts/export.sh
        '''
Run Code Online (Sandbox Code Playgroud)

或者,您可以进行更改export.sh,使其不使用仅限 bash 的功能:

if [ -z $SOURCE_FOLDER ]; then
    echo "SOURCE_FOLDER not specified... exiting"
    exit 1
fi
Run Code Online (Sandbox Code Playgroud)