我有一个名为 ABC 的下游作业,它是通过管道中的构建作业触发的。我想提取作业 ABC 的 BUILD_URL 和 BUILD_NUMBER。
def INT_JOB=构建作业:'ABC',传播:假,等待:真
我的环境:1)我使用脚本化管道语法,而不是声明性语法,因此希望有脚本化管道语法的解决方案。2)代码在Groovy沙箱中编写和执行。3)由于常规沙箱限制,currentBuild.rawBuild对我不起作用。
我遇到了许多类似的问题和一个未回答的重复问题,但没有运气,有人可以在这里帮助我吗?
面临同样的问题。目前我有以下解决方案:
for (job in Hudson.instance.getAllItems(hudson.model.Job)) {
for (run in job.getBuilds()) {
cause = run.getCause(Cause.UpstreamCause)
if ((cause) && (cause.pointsTo(mainBuild))) {
println "Downstream for " + mainBuild.getFullDisplayName() + " is " + run.getFullDisplayName()
}
}
}
Run Code Online (Sandbox Code Playgroud)
就其由所有作业和所有运行组成的 2 个循环而言,运行需要时间。所以我正在寻找一种方法来减少这种搜索。会让你知道。
更新:
最后,我没有找到任何有效的方法来从父运行对象获取下游运行,但设法使用开始时间条件减少搜索迭代:
int i=0;
for (job in Hudson.instance.getAllItems(hudson.model.Job)) {
laterRuns = job.getBuilds().byTimestamp(mainBuild.getStartTimeInMillis(),System.currentTimeMillis());
for (run in laterRuns) {
i++;
cause = run.getCause(Cause.UpstreamCause)
if ((cause) && (cause.pointsTo(mainBuild))) {
println "Downstream for " + mainBuild.getFullDisplayName() + " is " + run.getFullDisplayName()
}
}
}
println "Iterations - $i"
Run Code Online (Sandbox Code Playgroud)
这将总迭代次数从 12960 减少到 57(当然数字仅相对于我的 Jenkins)。
| 归档时间: |
|
| 查看次数: |
4753 次 |
| 最近记录: |