如何将每日 Jenkins 工作摘要报告以 Table 格式发送到邮件
How to make daily Jenkins Jobs Summary Report send to mail in Table format
我尽力搜索并确保这不是重复的问题。但没有得到任何。所以现在就写。
我们的应用程序有在夜间运行的每日计划作业。所以我们有我们的支持团队,他们实际上确保所有工作每晚都成功进行。如果不提高 ticket/concern。
现在,支持团队通过转到 Jenkins 检查所有这些作业。
我们现在正在寻找通过向所有利益相关者发送邮件来使此监视自动化的选项。
据说 我有 10 个工作,我希望所有这些工作都列在 table 中,并发送给一群人。
我们怎样才能做到这一点?有什么 Jenkins 插件 可以帮助我们吗?
提前致谢。
不幸的是,由于一些安全限制,我不能在我们的 Jenkins 中使用 API。
所以必须采用以下解决方案。
(仅添加了我们获取工作状态所需的阶段。请根据需要随意 edit/update)
stage('Get status of Jobs') {
steps {
script {
env.mailText=""
def mailText = "============================================= \n"
//Add your all jobs name in a list.
allDailyJobs = ['Prod/Daily-Jobs/dbBackups', 'Prod/Daily-Jobs/productImport']
allDailyJobs.each() { jobName ->
//Remove the path prefix to get only Job name (to mention in mail report)
def regex = ~"^Prod/Daily-Jobs/"
String just_job_name = jobName - regex
// Get the Job Latest Details
def job_number = getBuildNumber(jobName)
def job_result = getBuildStatus(jobName)
//echo is paragraph format with lines sepearators
mailText = mailText + " Daily Job Name => ${just_job_name} \n"
mailText = mailText + " Build number => ${job_number} \n"
mailText = mailText + " Build Status => ${job_result} \n"
mailText = mailText + " ============================================= \n\n"
}
env.mailText = mailText
}
}
}
// Get the Last Build Numnber for the job.
@NonCPS
def getBuildNumber(String jobName) {
def job = jenkins.model.Jenkins.instance.getItemByFullName(jobName)
return job.getLastBuild().getNumber()
}
// Get the Status of the Job
@NonCPS
def getBuildStatus(String jobName) {
def job = jenkins.model.Jenkins.instance.getItemByFullName(jobName)
return job.getLastBuild().getResult().toString()
}
此阶段给出“env.mailText”值,其中包含您需要的所有工作详细信息。我们可以使用它来发送邮件或聊天或任何挂钩。
要点:这需要 Jenkins 中的脚本批准才能执行任务。所以请确保您有正确的访问权限。
(为避免这种情况一再发生,请在没有沙盒检查的情况下使用它)
这是它在邮件中的样子。
我尽力搜索并确保这不是重复的问题。但没有得到任何。所以现在就写。
我们的应用程序有在夜间运行的每日计划作业。所以我们有我们的支持团队,他们实际上确保所有工作每晚都成功进行。如果不提高 ticket/concern。 现在,支持团队通过转到 Jenkins 检查所有这些作业。
我们现在正在寻找通过向所有利益相关者发送邮件来使此监视自动化的选项。 据说 我有 10 个工作,我希望所有这些工作都列在 table 中,并发送给一群人。
我们怎样才能做到这一点?有什么 Jenkins 插件 可以帮助我们吗?
提前致谢。
不幸的是,由于一些安全限制,我不能在我们的 Jenkins 中使用 API。 所以必须采用以下解决方案。
(仅添加了我们获取工作状态所需的阶段。请根据需要随意 edit/update)
stage('Get status of Jobs') {
steps {
script {
env.mailText=""
def mailText = "============================================= \n"
//Add your all jobs name in a list.
allDailyJobs = ['Prod/Daily-Jobs/dbBackups', 'Prod/Daily-Jobs/productImport']
allDailyJobs.each() { jobName ->
//Remove the path prefix to get only Job name (to mention in mail report)
def regex = ~"^Prod/Daily-Jobs/"
String just_job_name = jobName - regex
// Get the Job Latest Details
def job_number = getBuildNumber(jobName)
def job_result = getBuildStatus(jobName)
//echo is paragraph format with lines sepearators
mailText = mailText + " Daily Job Name => ${just_job_name} \n"
mailText = mailText + " Build number => ${job_number} \n"
mailText = mailText + " Build Status => ${job_result} \n"
mailText = mailText + " ============================================= \n\n"
}
env.mailText = mailText
}
}
}
// Get the Last Build Numnber for the job.
@NonCPS
def getBuildNumber(String jobName) {
def job = jenkins.model.Jenkins.instance.getItemByFullName(jobName)
return job.getLastBuild().getNumber()
}
// Get the Status of the Job
@NonCPS
def getBuildStatus(String jobName) {
def job = jenkins.model.Jenkins.instance.getItemByFullName(jobName)
return job.getLastBuild().getResult().toString()
}
此阶段给出“env.mailText”值,其中包含您需要的所有工作详细信息。我们可以使用它来发送邮件或聊天或任何挂钩。
要点:这需要 Jenkins 中的脚本批准才能执行任务。所以请确保您有正确的访问权限。 (为避免这种情况一再发生,请在没有沙盒检查的情况下使用它)
这是它在邮件中的样子。