我正在嘗試撰寫一個呼叫 Python 腳本的 Jenkins 管道。我想在呼叫管道腳本時使用 Jenkins 用戶的 userId 作為引數。目前這看起來像:
wrap([$class: 'BuildUser']) {
String user = env.BUILD_USER_ID
}
sh "sshpass -p ${password} ssh -o StrictHostKeyChecking=no ${user}@${NODE} python3 git_handler.py ${user} ${password} ${remoteRepository} ${localDirectory} ${branch}"
但是,我收到一條訊息:“java.lang.ClassCastException:org.jenkinsci.plugins.workflow.steps.ErrorStep.message 需要類 java.lang.String 但收到類 groovy.lang.MissingPropertyException”。
當我列印變數 $(user) 時,我會收到正確的 userId。為什么我不能將它作為引數傳遞?
(在構建管道之前我將其他四個引數作為用戶輸入,它們都可以正常作業)。
uj5u.com熱心網友回復:
String user = '' 在管道語法開始之前定義。
并分配類似的值user = env.BUILD_USER_ID并在腳本中的任何位置使用該用戶 env 。
例如。
String user = ''
pipeline {
agent any
stages {
}
}
uj5u.com熱心網友回復:
我已經解決了這個問題。
在 wrap([$class: 'BuildUser']) { } 中宣告的任何變數只能在那里使用。
我將代碼修改為:
wrap([$class: 'BuildUser']) {
String user = env.BUILD_USER_ID
sh "sshpass -p ${password} ssh -o StrictHostKeyChecking=no ${user}@${NODE} python3 git_handler.py ${user} ${password} ${remoteRepository} ${localDirectory} ${branch}"
}
現在它可以按預期作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/331482.html
標籤:詹金斯
