我的要求是创建一个运行日常EOD的Jenkins作业,其中1.我声明了一个作业名称列表,该作业应该遍历每个作业,并打印当天发生的所有成功构建历史。1.打印的消息应打印当前迭代作业名称,然后打印每个构建编号、构建状态、构建完成时间戳、git提交ID、提交消息、提交作者。此打印消息应通过电子邮件发送给声明的收件人。请分享一些有用的代码或参考资料。我是Jenkins和groovy的新手。这些代码块对很多人也有帮助。只使用默认插件的解决方案将不胜感激。
cmssoen21#
您的问题太抽象,包含多个问题。我通常不喜欢回答此类问题,但这里是您的起点。以下脚本将为您获取在过去24小时内运行的所有作业和生成。
Jenkins.instance.getAllItems(Job.class).each { jobitem -> def jobName = jobitem.getFullName() def jobInfo = Jenkins.instance.getItemByFullName(jobName) // Current time in Miliseconds def now = new Date().getTime() def before24Hours = now - (24 * 60 * 60 * 1000) println("Now: " + now + " Before24H: " + before24Hours) jobInfo.getBuilds().byTimestamp(before24Hours, now).each { build -> if(build.getResult().toString().equals('SUCCESS')) { println("Job : " + jobName + " || BuildNumber: " + build.getNumber() + " || Timestamp: " + build.getTime()) } } }
请记住,每个Build可以有多个提交,因此可以有多个用户。您可以使用此方法获取提交详细信息。从上面开始建立你的渠道,并为你在做的过程中遇到的问题创建SO问题。不要把多个问题组合成一个问题。更新:完整管道以包括提交详细信息。
pipeline { agent any stages { stage('Report') { steps { script { def jobsToInclude = ['Job1', 'Job2'] generateReport(jobsToInclude) } } } } } def generateReport(def jobs) { Jenkins.instance.getAllItems(Job.class).each { jobitem -> def jobName = jobitem.getFullName() if(jobs.contains(jobName)) { def jobInfo = Jenkins.instance.getItemByFullName(jobName) // Current time in Miliseconds def now = new Date().getTime() def before24Hours = now - (24 * 60 * 60 * 1000) jobInfo.getBuilds().byTimestamp(before24Hours, now).each { build -> if(build.getResult().toString().equals('SUCCESS')) { println("Job : " + jobName + " || BuildNumber: " + build.getNumber() + " || Timestamp: " + build.getTime()) // Get the commits build.getChangeSets().each{change -> change.getItems().each { item -> println("---" + "COMMITID: " + item.getCommitId() + " || Message: " + item.getMsg() + " || Author: " + item.getAuthorName()) } } } } } } }
1条答案
按热度按时间cmssoen21#
您的问题太抽象,包含多个问题。我通常不喜欢回答此类问题,但这里是您的起点。以下脚本将为您获取在过去24小时内运行的所有作业和生成。
请记住,每个Build可以有多个提交,因此可以有多个用户。您可以使用此方法获取提交详细信息。
从上面开始建立你的渠道,并为你在做的过程中遇到的问题创建SO问题。不要把多个问题组合成一个问题。
更新:完整管道以包括提交详细信息。