将扫描结果和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的方法
//根据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)
}
}
}
}
}