loops - 如何在 Jenkinsfile 的 for 循环中正确使用变量

标签 loops jenkins groovy jenkins-pipeline

我有以下 Jenkinsfile 脚本 block 。执行作业时,最终用户会勾选多个复选框(扩展选择参数),所选值将转到 ReposToUpdatenpmDependency

然后,在执行 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 git@****.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."
         )
      }
   }
}

最佳答案

关于loops - 如何在 Jenkinsfile 的 for 循环中正确使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45560917/

相关文章:

python - 使用 header 中的 "location"信息检索通过 API 启动的 Jenkins 构建的 ID(jenkins 1.529 的新功能)

maven - ged 从 maven 命令行将测试用例作为参数传递

java - 运行时从Jar文件加载资源

python - 我的 Python 老虎机中的循环问题和奇怪的代码

PHP数据库连接实践

java - 如何从 Jenkins Maven2/3 作业中删除过时的 Maven Artifact ?

java - DeepEquals.deepEquals(refObject, ref)

c++ - 一个循环语句完成后如何循环?

java数字和 "*"循环模式

docker - Jenkins与make和docker