作业dsl中是否有方法仅在构建成功时为maven作业配置postBuildSteps。我看到有一个postSuccessfulBuildSteps,它只适用于发布作业。
您必须使用;配置";块以追加";自定义";配置.xml 中的<runPostStepsIfResult>
设置
这对我有效:
job(type: Maven) {
name('MyMavenJob')
goals('install')
preBuildSteps {
shell('#!/bin/bashn' +
'echo "PRE BUILD SCRIPT"n' +
'env | sortn' +
'echo "PRE BUILD END"n')
}
postBuildSteps {
shell('#!/bin/bashn' +
'echo "POST BUILD SCRIPT"n' +
'env | sortn' +
'echo "POST BUILD END"n')
}
// Append <runPostStepsIfResult> at the end of the xml
// (which will be just after the closing </postbuilders> tag)
// "it" is a groovy.util.Node representing the
// root <project> element of config.xml.
configure { it <<
'runPostStepsIfResult' {
name('SUCCESS')
}
}
}
通常,如果您需要添加Job DSL不支持的XML,您可以通过在Jenkins中手动配置作业,然后在Jenkins母盘上查看该作业的结果config.xml
来找到您需要的内容。这通常位于${JENKINS_HOME}/jobs/job-name/config.xml
工作dsl游乐场http://job-dsl.herokuapp.com/是一个有用的地方,可以测试更改,直到您得到与Jenkins在job/job-name/config.xml文件中手动设置时所做的内容相匹配的内容。
2022更新
现在有一些方法可以在没有configure
块复杂性的情况下处理这种情况:
- postSuccessfulBuildSteps
- 发布失败的构建步骤
由于API的其他更改,上面的代码似乎不再在job-dsl游乐场中编译。经过以下修改后,它确实编译了:
mavenJob("example") {
description('MyMavenJob')
goals('install')
preBuildSteps {
shell('#!/bin/bashn' +
'echo "PRE BUILD SCRIPT"n' +
'env | sortn' +
'echo "PRE BUILD END"n')
}
postBuildSteps {
shell('#!/bin/bashn' +
'echo "POST BUILD SCRIPT"n' +
'env | sortn' +
'echo "POST BUILD END"n')
}
// Append <runPostStepsIfResult> at the end of the xml
// (which will be just after the closing </postbuilders> tag)
// "it" is a groovy.util.Node representing the
// root <project> element of config.xml.
configure { it <<
'runPostStepsIfResult' {
name('SUCCESS')
}
}
}
这是有效的:
postBuildSteps("SUCCESS") {
...
}
你不能使用条件步骤插件吗(https://wiki.jenkins-ci.org/display/JENKINS/Conditional+BuildStep+插件)?