去掉pipeline中shell命令的除錯資訊

滕瑞發表於2019-07-04

在Jenkins的Console Output中有時會看到‘+’開頭的shell命令除錯資訊,看起來比較混亂。原因是Jenkins預設用‘-xe’的選項去執行‘sh’命令。例如如下pipeline會產生後續的輸出。

pipeline {
    agent none
    stages {
        stage('Example') {
            steps {
                node('master') {
                    sh 'dmesg | grep raspberrypi | grep soc' 
                }
            }
        }
    }
}

輸出:

[Pipeline] sh
+ dmesg
+ grep raspberrypi
+ grep soc

解決方法是自定義一個執行shell指令碼的函式,並在每個命令列前加入‘#!/bin/sh -e\n’選項。

def mysh(cmd, returnStatus) {
    return sh (script: '#!/bin/sh -e\n'+ cmd, returnStatus: returnStatus)
}

pipeline {
    agent none
    stages {
        stage('Example') {
            steps {
                node('master') {
                    mysh ('dmesg | grep raspberrypi | grep soc', true)
                }
            }
        }
    }
}

參考連結:

https://stackoverflow.com/questions/39891926/how-to-disable-command-output-in-jenkins-pipeline-build-logs

相關文章