仅当构建成功时,作业 dsl 中是否有方法为 Maven 作业配置 postBuildSteps。我看到有 postSuccessfulBuildSteps 仅适用于发布工作。
问问题
4524 次
3 回答
4
您必须使用“配置”块将“自定义”<runPostStepsIfResult>
设置附加到 config.xml
这对我有用:
job(type: Maven) {
name('MyMavenJob')
goals('install')
preBuildSteps {
shell('#!/bin/bash\n' +
'echo "PRE BUILD SCRIPT"\n' +
'env | sort\n' +
'echo "PRE BUILD END"\n')
}
postBuildSteps {
shell('#!/bin/bash\n' +
'echo "POST BUILD SCRIPT"\n' +
'env | sort\n' +
'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 中手动配置作业来找出您需要的内容,然后在config.xml
Jenkins-master 磁盘上查看该作业的结果。这通常位于${JENKINS_HOME}/jobs/job-name/config.xml
http://job-dsl.herokuapp.com/上的 job-dsl 操场是测试更改的有用地方,直到您获得与 Jenkins 在设置时在 job/job-name/config.xml 文件中所做的内容相匹配的内容手动。
2022 更新
现在有一些方法可以处理这种情况,而不需要configure
块的复杂性:
由于其他 API 更改,上面的代码似乎不再在job-dsl 操场上编译。但是,通过以下修改,它确实可以编译:
mavenJob("example") {
description('MyMavenJob')
goals('install')
preBuildSteps {
shell('#!/bin/bash\n' +
'echo "PRE BUILD SCRIPT"\n' +
'env | sort\n' +
'echo "PRE BUILD END"\n')
}
postBuildSteps {
shell('#!/bin/bash\n' +
'echo "POST BUILD SCRIPT"\n' +
'env | sort\n' +
'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')
}
}
}
于 2015-02-25T13:32:41.527 回答
1
这有效:
postBuildSteps("SUCCESS") {
...
}
于 2017-07-19T09:23:16.880 回答
0
于 2014-11-15T15:05:11.990 回答