api - 列出过去一年的 Jenkins 工作构建详细信息以及触发构建的用户
问题描述
是否有任何简单的方法可以使用 API 或脚本来获取过去一年对所有作业执行的所有构建的列表以及触发构建的用户作为报告?
解决方案
这应该做。使用“执行系统 Groovy 脚本”(不是“执行 Groovy 脚本”)从<JENKINS_URL>/script
Jenkins 作业中运行或在其中运行。
更新:包括主题行的详细信息。
def jobNamePattern ='.*' // adjust to folder/job regex as needed
def daysBack = 365 // adjust to how many days back to report on
def timeToDays = 24*60*60*1000 // converts msec to days
println "Job Name: ( # builds: last ${daysBack} days / overall ) Last Status\n Number | Trigger | Status | Date | Duration\n"
Jenkins.instance.allItems.findAll() {
it instanceof hudson.model.FreeStyleProject && it.fullName.matches(jobNamePattern)
}.each { job ->
builds = job.getBuilds().byTimestamp(System.currentTimeMillis() - daysBack*timeToDays, System.currentTimeMillis())
println job.fullName + ' ( ' + builds.size() + ' / ' + job.builds.size() + ' ) ' + job.getLastBuild()?.result
// individual build details
builds.each { build ->
println ' ' + build.number + ' | ' + build.getCauses()[0].getShortDescription() + ' | ' + build.result + ' | ' + build.getTimestampString2() + ' | ' + build.getDurationString()
}
}
return
样本输出
ITSuppt/sampleApplication ( 4 / 11 ) SUCCESS 13 | Started by user Ian W | SUCCESS | 2020-10-22T01:57:58Z | 30 sec 12 | Started by user Ian W | FAILURE | 2020-10-22T01:51:36Z | 45 sec 11 | Started by user Ian W | SUCCESS | 2020-10-15T18:26:22Z | 29 sec 10 | Started by user Ian W | FAILURE | 2020-10-15T18:14:13Z | 55 sec
如果您有很多作业和构建,可能需要很长时间,因此您可能希望限制跳过详细信息以开始或使用作业模式名称。构建 Javadoc以获取更多信息。
或者,根据此S/O 答案,您可以从 Jenkins REST API 获取所有作业的所有构建的构建详细信息(其他地方的其他示例)。
推荐阅读
- java - Spring Boot 使用 save 永远不会在 Postgresql 表中插入一行
- c - 如何在 C 中使用外部函数中初始化向量的大小?
- python - 将 html 表数据发送到烧瓶方法并从数据库中检索信息
- php - 如何为我的项目创建 PSR-4 自动加载器?
- python - 这是使用静态函数的好标准吗?
- c# - 登录时 sql server 和 c# 登录出现问题显示 System.Data.SqlClient.SqlException:'无效的对象名称'0Stock.dbo.Login'。
- javascript - 从输入中获取用户输入(数字)
- excel - Q:如何动态扩展记录
- javascript - JavaScript 中的 toString():为什么 toString() 仍然被调用,因为 valueOf() 原型用于将对象类型转换为数字
- python - 错误“NameError:名称'logdir'未定义”