jenkins - 如何从执行重建的位置获取内部版本号?
问题描述
当我从构建页面单击“重建”时,詹金斯会重建并运行一个新作业 - 一个具有新詹金斯内部版本号的新作业。
如何获取执行重建的作业的内部版本号?
我不是在谈论以前的内部版本号。
说我在构建 10。我去构建 5 并单击重建。我如何像我一样从管道内部获取内部版本号(5)env.BUILD_NUMBER
?
解决方案
我假设您正在使用 Groovy Pipeline 并且已经知道全局变量(请参阅全局变量参考)。
- 该
currentBuild
变量有一个rawBuild
返回hudson.model.Run对象的字段 - 调用
rawBuildObject#getCauses()
orrawBuildObject#getCauses()
并返回一些 Cause 对象。
下面的脚本:
node {
stage('test advance script') {
echo "current build number: ${currentBuild.number}"
echo "previous build number: ${currentBuild.previousBuild.getNumber()}"
def causes = currentBuild.rawBuild.getCauses()
echo "causes: ${causes}"
def rebuildCause0 = currentBuild.rawBuild.getCause(com.sonyericsson.rebuild.RebuildCause)
echo "rebuildCause0: ${rebuildCause0}"
echo "rebuild up number: ${rebuildCause0.getUpstreamBuild()}"
}
}
但正如我们在聊天中讨论的那样,Rebuilder 插件的使用CauseAction
方式错误。如果它被固定为this,控制台输出应该是:
current build number: 72
previous build number: 71
causes: [hudson.model.Cause$UserIdCause@679c1066, job/DMP/job/test-pipeline/63[hudson.model.Cause$UserIdCause@679c1066]]
rebuildCause0: job/DMP/job/test-pipeline/63[hudson.model.Cause$UserIdCause@679c1066]
rebuild up number: 63
scriptApproval
当您看到这样的错误时,请记住:
Scripts not permitted to use method hudson.model.Run getCauses. Administrators can decide whether to approve or reject this signature.
推荐阅读
- java - 数据删除并从警报对话框返回时如何刷新片段
- python - 如何在python中动态删除所有特殊字符代码和表情符号?
- python - 日志记录模块是否具有日期时间/从程序调用的内置函数作为日志文件名的一部分?
- powershell - 使用 Measure-Object 查找目录的大小时,PowerShell 未返回正确的值
- r - 在 R 中的 Mutate 中按组分组的情况
- python - 在我将索引附加到列表的循环期间,所述索引列表从列表更改为 numpy 数组
- java - Java Scanner 没有在一个 string() 中初始化,即使它在另一个中初始化
- reactjs - 如何在不创建新侦听器的情况下更新钩子?
- bash - 为什么 awk 会覆盖先前打印的列?
- api - 如何正确设置 Web api 的路由