ZBLOG

gitlab ci 获取qualitygates的分析结果

在GitLab CI中,可以使用SonarQube插件来进行代码质量分析,并获取分析结果。在获取分析结果时,您需要关注的是Quality Gate这个概念。

Quality Gate(质量门)是SonarQube用于评估应用程序质量的一系列条件。当应用程序不符合某些条件时,将会被标记为“失败”。因此,Quality Gate的结果可以告诉我们应用程序是否达到了预期的质量要求。

要在GitLab CI中获取Quality Gate的分析结果,您需要完成以下步骤:

  1. 首先,在GitLab项目中添加SonarQube插件并配置好分析任务。
  2. 在CI脚本中,执行sonar-scanner命令或者其他指定的分析任务命令。
  3. 使用curl命令调用SonarQube API,获取Quality Gates的分析结果。

下面是一个示例脚本:

  1. image: maven:3-jdk-8
  2. variables:
  3. SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar" # 存储SonarQube扫描结果的目录
  4. GIT_DEPTH: "0"
  5. cache:
  6. key: ${CI_JOB_NAME}
  7. paths:
  8. - ${SONAR_USER_HOME}/.sonar/cache
  9. - target/
  10. stages:
  11. - build
  12. - analyze
  13. - deploy
  14. build:
  15. stage: build
  16. script:
  17. - mvn clean package -DskipTests=true
  18. analyze:
  19. stage: analyze
  20. script:
  21. - mvn sonar:sonar
  22. allow_failure: true
  23. only:
  24. - merge_requests
  25. deploy:
  26. stage: deploy
  27. script:
  28. - echo "Deploying...."
  29. after_script:
  30. - |
  31. if [[ "$CI_PIPELINE_SOURCE" == "merge_request_event" ]]; then
  32. SONAR_RESULT=$(curl -s -u ${SONARQUBE_AUTH_TOKEN}: ${SONAR_HOST_URL}/api/qualitygates/project_status?projectKey=${CI_PROJECT_KEY}\&branch=${CI_COMMIT_BRANCH})
  33. SONAR_STATUS=$(echo $SONAR_RESULT | jq -r '.projectStatus.status')
  34. if [ "$SONAR_STATUS" != "OK" ]; then
  35. curl -X POST -H 'Content-type: application/json' \
  36. -d "{\"body\": \"The Quality Gate did not pass. Please check the [SonarQube report](${SONAR_HOST_URL}/dashboard?id=${CI_PROJECT_KEY}&branch=${CI_COMMIT_BRANCH}) for more information.\"}" \
  37. ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/merge_requests/${CI_MERGE_REQUEST_IID}/notes
  38. exit 1
  39. fi
  40. fi

在上面的示例中,我们使用了curl命令调用SonarQube API来获取Quality Gates的分析结果。具体实现方式是,在GitLab CI的after_script阶段调用API,并判断Quality Gates是否通过。如果未通过,则发送通知消息到Merge Request中。

需要注意的是,在上面的示例中,我们需要使用环境变量${SONARQUBE_AUTH_TOKEN}${SONAR_HOST_URL}来访问SonarQube API。这些环境变量需要您自行配置并保密。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=457

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?