我正在学习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/'
}
}
)
}
}
目前,它确实令人困惑,因为有太多教程使用不同的(旧)语法。他们中的大多数都没有使用实际的插件。
所以一般来说问题是:
答案 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”阶段将并行进行。