2017-08-08 2598 views
1

我有以下Jenkinsfile腳本塊。作業執行時,最終用戶勾選多個複選框(擴展選項參數),所選值將轉至ReposToUpdatenpmDependencies如何在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." 
     ) 
     } 
    } 
} 

回答