1
我有以下Jenkinsfile腳本塊。作業執行時,最終用戶勾選多個複選框(擴展選項參數),所選值將轉至ReposToUpdate
和npmDependencies
。如何在Jenkinsfile中正確使用for循環中的變量
然後,在執行Jenkinsfile,我得到以下錯誤:
java.lang.NullPointerException: Cannot get property '$repoName' on null object
大多數Jenkinsfile的可以忽略不計(它涉及到的目標,而不是上面提到的問題)。
def repoList = ReposToUpdate.tokenize(",");
def moduleList = npmDependencies.tokenize(",");
pipeline {
agent {
label '****'
}
stages {
stage ("Update package.json") {
steps {
script {
for (String repoName : repoList) {
sshagent (credentials: ['****']) {
sh '''
git clone -b master [email protected]****.com:****/${repoName}.git
cd ${repoName}
stat -t . > folderStat1.txt
'''
for (String moduleName : moduleList) {
sh '''
cd ${repoName}
ncu -u -f "${moduleName}"
stat -t . > folderStat2.txt
'''
}
def folderStat1 = readFile('folderStat1.txt').trim()
def folderStat2 = readFile('folderStat2.txt').trim()
if (folderStat1 == folderStat2) {
slackSend (
color: '#199515',
message: "$JOB_NAME: <$BUILD_URL|Build #$BUILD_NUMBER> ${repoName}: Common code dependencies match the latest package versions."
)
}
else {
sh '''
cd ${repoName}
git config --global user.name "****"
git config --global user.email ****
git commit -am 'Bump common packages version number [ci skip]'
git push origin master
cd ..
rm -rf ${repoName}
'''
slackSend (
color: '#199515',
message: "$JOB_NAME: <$BUILD_URL|Build #$BUILD_NUMBER> ${repoName}: Common code dependencies successfully updated to the latest package versions."
)
}
}
}
}
}
}
}
post {
failure {
slackSend (
color: '#F01717',
message: "$JOB_NAME: <$BUILD_URL|Build #$BUILD_NUMBER>, Update failed. Review the build logs."
)
}
}
}
是的,我有那些原本但去除。 for循環的另一個問題。我最終改變了這一點,並放回雙引號。謝謝! –