如何在Jenkins中生成QA审批流程报告?含REST API及插件场景问询
当然可以通过Jenkins的REST API来实现QA审批报告的生成!我之前在项目里也遇到过类似需求,下面给你几个经过验证的可行方案:
方案一:直接调用Jenkins REST API提取审批信息并生成报告
这是最直接的方式,通过API获取审批数据后,自行解析并生成格式灵活的报告。
步骤1:获取目标构建的Promote记录
使用Jenkins的Promotion API端点,能获取指定构建的所有审批操作详情:GET /job/{job-name}/{build-number}/promotion/你可以用
curl快速测试,记得替换占位符并带上认证信息(推荐用Jenkins API Token,在个人设置里生成):curl -u your-jenkins-username:your-api-token "http://your-jenkins-instance/job/your-project-job/123/promotion/"步骤2:解析API返回的JSON数据
接口返回的JSON会包含每个审批操作的关键信息:审批人(userName)、审批时间戳(timestamp)、审批状态、备注(comment,如果插件支持的话)。
用命令行工具jq可以快速提取核心字段:curl -u your-jenkins-username:your-api-token "http://your-jenkins-instance/job/your-project-job/123/promotion/" | jq '.promotions[] | {approver:.userName, time:.timestamp, status:.status, comment:.comment}'要是用Python处理,可以用
json库解析后整理成结构化数据。步骤3:生成自定义格式报告
把解析好的数据转换成你需要的格式:- 用Markdown表格整理后导出,适合快速查看;
- 用Jinja2模板生成HTML报告,可添加样式和公司logo;
- 借助
wkhtmltopdf之类的工具把HTML转成PDF,方便归档和分享。
方案二:在Jenkins Pipeline中集成报告生成
如果需要在流水线完成后自动生成并归档审批报告,可以直接在Pipeline脚本里调用API并生成报告:
stage('Generate QA Approval Report') { steps { script { def jenkinsUrl = 'http://your-jenkins-instance' def jobName = env.JOB_NAME def buildNumber = env.BUILD_NUMBER // 从Jenkins凭据中读取API Token,避免硬编码 def apiCredentials = credentials('jenkins-api-token-credential-id') // 调用API获取审批数据 def promotionJson = sh( script: "curl -u ${env.JENKINS_USER}:${apiCredentials.password} \"${jenkinsUrl}/job/${jobName}/${buildNumber}/promotion/\"", returnStdout: true ) // 解析JSON数据 def promotionData = readJSON text: promotionJson def approvalRecords = promotionData.promotions.collect { promotion -> [ approver: promotion.userName, approvalTime: new Date(promotion.timestamp).format('yyyy-MM-dd HH:mm:ss'), status: promotion.status ?: 'Approved', comment: promotion.comment ?: 'No comment provided' ] } // 生成Markdown报告 def reportContent = "# QA Approval Report - Build ${buildNumber}\n\n" reportContent += "| Approver | Approval Time | Status | Comment |\n" reportContent += "|----------|---------------|--------|---------|\n" approvalRecords.each { record -> reportContent += "| ${record.approver} | ${record.approvalTime} | ${record.status} | ${record.comment} |\n" } // 保存报告并归档到Jenkins writeFile file: 'qa-approval-report.md', text: reportContent archiveArtifacts artifacts: 'qa-approval-report.md', fingerprint: true } } }
注意:需要确保流水线执行用户有Job/Read和Promotion/Read权限,并且安装了Pipeline Utility Steps插件来支持readJSON和writeFile操作。
方案三:利用Promote-build插件的细化API(针对复杂审批流程)
如果你的QA审批是多步骤的复杂流程,可以调用更细化的API端点获取每个步骤的审批详情:
GET /job/{job-name}/{build-number}/promotion/{promotion-process-name}/
这个接口会返回指定审批流程的所有步骤信息,包括每个步骤的处理人、处理时间和结果,适合生成更详细的审批轨迹报告。
一些注意事项
- 务必妥善保管Jenkins API Token,不要硬编码在脚本中,优先使用Jenkins凭据存储;
- 确保调用API的用户拥有足够的权限,否则会返回403 Forbidden错误;
- 如果审批流程有自定义字段,需要根据插件返回的JSON结构调整解析逻辑。
内容的提问来源于stack exchange,提问作者tech
相关产品推荐
相关产品推荐

