def changes = "Changes:\n"
build = currentBuild
while(build != null && build.result != 'SUCCESS') {
changes += "In ${build.id}:\n"
for (changeLog in build.changeSets) {
for(entry in changeLog.items) {
for(file in entry.affectedFiles) {
changes += "* ${file.path}\n"
}
}
}
build = build.previousBuild
}
echo changes
这在stage->when->expression部件中非常有用,只有当某些文件被更改时才运行stage。虽然我还没有到达那个部件,但我很想从中创建一个共享库,并使它能够传递一些全局匹配模式来检查。 编辑:Check the docs顺便说一句,如果你想深入研究一下的话。你应该能够将所有的object.getSomeProperty()调用转换成entry.someProperty。
6条答案
按热度按时间pqwbnv8z1#
我设法拼凑了一些东西,我很肯定你可以更好地迭代数组,但现在我得到的是:
eaf3rand2#
根据CaptRespect的回答,我编写了以下脚本,用于声明性管道:
这在
stage->when->expression
部件中非常有用,只有当某些文件被更改时才运行stage。虽然我还没有到达那个部件,但我很想从中创建一个共享库,并使它能够传递一些全局匹配模式来检查。编辑:Check the docs顺便说一句,如果你想深入研究一下的话。你应该能够将所有的
object.getSomeProperty()
调用转换成entry.someProperty
。4dc9hkyq3#
这是我用过的
lb3vh1jj4#
Changes Since Last Success Plugin可以帮助您实现这一目标。
oipij1gg5#
对于任何使用Accurev的人,这里是andsens答案的改编版。andsens答案不能使用,因为Accurev插件不实现getAffectedFiles。可以在这里找到扩展ChangeLogSet.Entry类的AccurevTransaction的文档。
0ve6wy6x6#
为了以字符串列表的形式返回更改,而不仅仅是打印它们,您可以使用以下函数(基于@andsens答案):