并行Jenkins管道

时间:2017-06-16 09:25:23

标签: jenkins jenkins-pipeline

我正在学习Jenkins管道脚本。 我现在正处于我想要并行做事的那一步。我尝试了一些语法,但每次都得到

Nothing to execute within stage "Static Checks"

这是我的最后一次尝试:

stage('Static Checks'){
            steps{
                parallel ("cpp_check":{
                        node('cppcheck'){
                            bat '%CPP_CHECK%\\cppcheck.exe -j 4 --quiet --enable=warning,performance,portability --inline-suppr --xml --xml-version=2 src\\Cables src\\PD src\\DataAccess 2> cppcheck-result.xml'
                            checkstyle canComputeNew: false, defaultEncoding: '', healthy: '', pattern: 'cppcheck-result.xml', unHealthy: ''
                        }
                    }, "clock"{
                        node('clock'){
                            bat '%CLOCK%\\cloc-1.72.exe --by-file --xml --exclude-ext=pro,pri,ts --out=cloc.xml src/'
                        }
                    }
                )
            }
        }

目前,它确实令人困惑,因为有太多教程使用不同的(旧)语法。他们中的大多数都没有使用实际的插件。

所以一般来说问题是:

  • 如何执行并行阶段?
  • 如何执行并行步骤?

2 个答案:

答案 0 :(得分:3)

你在"clock"之后错过了冒号。你真的很亲密。 :)这里是完整的验证Jenkins文件:

pipeline {
  agent { label 'docker' }
  stages {
    stage('Static Checks') {
      steps {
        parallel (
          "cpp_check": {
            node('cppcheck') {
              bat '%CPP_CHECK%\\cppcheck.exe -j 4 --quiet --enable=warning,performance,portability --inline-suppr --xml --xml-version=2 src\\Cables src\\PD src\\DataAccess 2> cppcheck-result.xml'
              checkstyle canComputeNew: false, defaultEncoding: '', healthy: '', pattern: 'cppcheck-result.xml', unHealthy: ''
            }
          },
          "clock": {
            node('clock') {
              bat '%CLOCK%\\cloc-1.72.exe --by-file --xml --exclude-ext=pro,pri,ts --out=cloc.xml src/'
            }
          }
        )
      }
    }
  }
}

据我所知,您必须将并行任务作为一个步骤包含在一个阶段内;你不能并行运行阶段。享受管道。 :)

答案 1 :(得分:0)

@burnettk 如今,您可以并行放置各个阶段,但只能在顶层进行。修改您的Jenkinsfile,看起来像这样:

if action.menu() == self.menuTool2: ...

“ cpp-check”和“ clock”阶段将并行进行。