簡體   English   中英

如何在 Jenkins 管道腳本中使用 shell 腳本變量作為 groovy 變量

[英]How to use shell script variable as groovy variable in Jenkins pipeline script

我正在嘗試在 groovy 步驟中再次使用來自 sh"""""" 的 shell 腳本中設置的 VAR_NAME 值,但出現以下錯誤。 我只看到有關如何在 shell 中使用 groovy 變量的問題,但沒有看到其他方式。 提前致謝。

groovy.lang.MissingPropertyException:沒有這樣的屬性:class 的 VAR_NAME:groovy.lang.Binding

pipeline {

    environment {
        VAR_NAME=""
    }



    stages {
        stage('Compute') {
            steps {

                sh """
#!/bin/bash
set -e
set +x

VAR_NAME=10

                """
sh "echo VAR_NAME = $VAR_NAME"
                }
                }
            }
}

當您發出sh指令時,會創建一個新的 shell 實例(很可能是bash )。 像往常一樣 Unix 進程,它繼承父的環境變量。 然后您的bash實例正在運行您的腳本。 當您的腳本設置環境變量時,將更新bash的環境。 一旦您的腳本結束,運行該腳本的bash進程將被銷毀,其所有環境也將隨之銷毀。

如果您想使用該 shell 實例設置的任何內容,則需要將其納入,例如:

    def script_output = sh(returnStdout: true, script: """
         #!/bin/bash
        set -e
        set +x
        VAR_NAME=10
        echo \$VAR_NAME
    """)
    script_output = script_output.trim()
    VAR_NAME = script_output
    echo "VAR_NAME is ${VAR_NAME}"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM