2017-08-08 2602 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." 
     ) 
     } 
    } 
} 

回答