首页 > 解决方案 > 从另一个 Jenkins 作业触发 Sonar Jenkins 作业

问题描述

我想在 Jenkins 中创建一个进程,当一个作业正在构建时,它应该在内部调用另一个为相同的代码拉取请求生成 SONAR 报告的作业。

当我试图调用 API 来自动触发 Jenkins 作业时。

https://jenkins.com/job/DPNew/job/xyz/buildWithParameters?token=DW&FROM_HASH=195c8df91791768f3098ce260eb2dd8728&REPO_NAME=_python&PROJECT_KEY=%7Eabc&EMAIL=abc@gmail.com&FROM_BRANCH_NAME=feature%2FDO-451&TO_BRANCH_NAME=Port-2.7&PR_ID=622"

作为回应,我得到了以下错误。

content: "<html><head><body style='background-color:white; 
color:white;'>\n\n\nAuthentication required\n<!--\nYou are authenticated as: anonymous\nGroups that you are in:\n  \nPermission you need to have (but didn't): 
hudson.model.Hudson.Read\n ... which is implied by: hudson.security.Permission.GenericRead\n ... which is implied by: 
hudson.model.Hudson.Administer\n-->\n\n</body></html>  

我已经在“用户->配置”中创建了 Jenkins API 令牌

编辑 1:第一个 Jenkins 作业由来自 Bitbucket 的拉取请求触发,bitbucket 中的 UI 显示构建是否成功,如果构建成功则显示声纳报告。

我应该怎么做才能解决这个问题?

标签: jenkinssonarqube

解决方案


代替 API 调用,使用job,这也将使您可以使用声纳报告作业中的参数并在此处显示/使用它们。

例子:

pipeline {
    agent any
    stages {
        stage('stage_name') {
            steps {
                build job: 'JOB_NAME'
            }
        }
     }
}

或带参数:

pipeline {
    agent any
    stages {
        stage('stage_name') {
            steps {
                build job: 'JOB_NAME_HERE', propagate: true, parameters:
                [
                    [
                        $class: 'StringParameterValue',
                        name: 'STRING_NAME_HERE',
                        value: "STRING_VALUE_HERE"
                    ]
                ]
            }
        }
     }
}

propagate: true表示如果 JOB_NAME_HERE 失败,原始作业将失败。


推荐阅读