You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:08:58