SonarQube 扫描结果关联GitLab commitid

将扫描结果和git commit去做一个关联,下面红色方框的就是commit id,每次提交都会有一个id

提前装好插件:GitHub - gabrie-allaigre/sonar-gitlab-plugin at 4.1.0-SNAPSHOT插件的说明文档查看该插件的Readme文档。

[root@zeyang-nuc-service ~]# cp sonar-gitlab-plugin-4.1.0-SNAPSHOT.jar  /data/cicd/sonarqube/sonarqube_extensions/plugins/
[root@zeyang-nuc-service ~]# chmod +x /data/cicd/sonarqube/sonarqube_extensions/plugins/sonar-gitlab-plugin-4.1.0-SNAPSHOT.jar
[root@zeyang-nuc-service ~]# docker restart sonarqube

这里可以使用参数指定的形式去指定,也可以配置好gitlab的url

user_token 这个需要去gitlab里面去创建( sonar.gitlab.user_token=vxLDfBedyUzPRtBZzFUu)

                -Dsonar.gitlab.commit_sha=fb8765ad915bde634c000398b6cb35543a9d9d6f \
                -Dsonar.gitlab.ref_name=release-1.1.1 \
                -Dsonar.gitlab.project_id=2 \
                -Dsonar.dynamicAnalysis=reuseReports \
                -Dsonar.gitlab.failure_notification_mode=commit-status \
                -Dsonar.gitlab.url=http://139.198.170.122:81 \
                -Dsonar.gitlab.user_token=vxLDfBedyUzPRtBZzFUu \
                -Dsonar.gitlab.api_version=v4

-Dsonar.gitlab.failure_notification_mode 值为commit-status表示更改提交状态, 值为nothing不做任何动作。 

sonar-scanner -Dsonar.host.url=http://139.198.170.122:9000 \
-Dsonar.projectKey=devops-maven4-service \
-Dsonar.projectName=devops-maven4-service \
-Dsonar.projectVersion=1.0 \
-Dsonar.login=admin \
-Dsonar.password=admin \
-Dsonar.ws.timeout=30 \
-Dsonar.projectDescription="my first project!" \
-Dsonar.links.homepage=http://139.198.170.122:81/root/devops-maven-service \
-Dsonar.links.ci=http://139.198.170.122:8080/job/devops-maven-service/ \
-Dsonar.sources=src \
-Dsonar.sourceEncoding=UTF-8 \
-Dsonar.java.binaries=target/classes \
-Dsonar.java.test.binaries=target/test-classes \
-Dsonar.java.surefire.report=target/surefire-reports \
-Dsonar.branch.name=master \
-Dsonar.gitlab.commit_sha=fb8765ad915bde634c000398b6cb35543a9d9d6f \
-Dsonar.gitlab.ref_name=master \
-Dsonar.gitlab.project_id=2 \
-Dsonar.dynamicAnalysis=reuseReports \
-Dsonar.gitlab.failure_notification_mode=commit-status \
-Dsonar.gitlab.url=http://139.198.170.122:81 \
-Dsonar.gitlab.user_token=vxLDfBedyUzPRtBZzFUu \
-Dsonar.gitlab.api_version=v4

最后就是GitLab获取project id和commit id的方法

Projects API | GitLabDocumentation for GitLab Community Edition, GitLab Enterprise Edition, Omnibus GitLab, and GitLab Runner.https://docs.gitlab.com/ee/api/projects.html

//根据gitlab项目的id号和分支名称拿到项目的commitid
def GetProjectCommitID(project_id,branch_name){
        gitUrl = "http://192.168.11.129/api/v4"
        apiUrl = "projects/${project_id}/repository/commits/${branch_name}"
        response = sh  returnStdout: true, 
        script: """ 
            curl --location --request GET ${gitUrl}/${apiUrl} \
            --header 'Authorization: Basic YWRtaW46MTIzNDU2'
        """
        response = readJSON text: "${response}"
        return response.id        
}

//根据项目名称和所属组获取项目id,注意fork的一种情况得使用if判断
def GetProjectID(projectName,groupName){
    gitUrl = "http://192.168.11.129/api/v4"
    apiUrl = "projects?search=${projectName}"

    response = sh  returnStdout: true, 
        script: """ 
            curl --location --request GET ${gitUrl}/${apiUrl} \
            --header 'Authorization: Basic YWRtaW46MTIzNDU2'
        """
    response = readJSON text: "${response}"
    
    for (p in response){
        if (p.namespace.name ==groupName){
            return p.id
        }
    }
}




@Library("devopslib@master") _

import org.devops.*

def gitlab = new GitLab()

pipeline {
    agent any

    stages {
        stage('Hello') {
            steps {
                script{
                    id = gitlab.GetProjectCommitID(2,"master")
                    println(id)
                    
                   id1 = gitlab.GetProjectID("devops-library","Administrator")
                   println(id1)
                }
            }
        }
    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值