jenkins - 如何检查触发 Jenkins Job 的原因?
问题描述
我正在尝试将作业参数化,但我想检查触发当前作业的上一步。如何检查?
解决方案
在 Pipeline 脚本中,您可以执行以下操作:
@NonCPS
def getAllCauses() {
currentBuild.rawBuild.getCauses().toString()
}
stage('print causes') {
echo getAllCauses()
}
这将打印出如下内容:
[hudson.model.Cause$UserIdCause@a05b0080]
如果您想要更详细的信息,您将不得不从hudson.model.Cause
实例中删除它。例如,这是一个返回对构建“负责”的用户列表的片段,如果用户对构建贡献了提交或如果他们导致构建(即通过登录到 Web UI),则认为用户是“负责”的并单击“立即构建”按钮):
@NonCPS
def getResponsibleUsers() {
def build = currentBuild.rawBuild
def users = build.getCauses().collect() { cause->
def causeType = cause.getClass()
if (causeType == jenkins.branch.BranchIndexingCause) {
return build.changeSets.collect() { set->
set.collect { entry->
entry.getAuthor()
}
}
} else if (causeType == hudson.model.Cause$UserIdCause) {
return User.get(cause.getUserName())
} else {
return []
}
}
return users.flatten().unique()
}
stage('print responsible users') {
echo getResponsibleUsers()
}
推荐阅读
- kubernetes - 云提供商未正确初始化
- maven - maven-surefire-plugin 在 SpringBoot 2.2.2.RELEASE 及更高版本中不起作用
- c++ - 如何将 cv::Mat 转换为 void*
- javascript - 阿拉伯语 JavaScript 中的日期时间
- mpi - 程序完成后 mpirun 挂起
- angular - 带有 Angular 和 Spring 的 Websocket
- c# - 'System.String[]' 不能映射到原始类型
- r - 如何在 nls 的 poly 方法中包含参数“a”?
- javascript - 如何在react.js中处理请求标头接受application / ld + json获取请求
- java - 如何使用保存方法更新 Spring Boot 中的元素?