基于SonarQube分析结果在GitLab中进行突破

时间:2018-06-11 12:49:31

标签: gradle sonarqube gitlab gitlab-ci gitlab-ci-runner

我在springboot中有一个应用程序,它使用gradle来构建代码。

我在SonarQube上设置了https://github.com/gabrie-allaigre/sonar-gitlab-plugin并集成了gitlab CI 分析每次推送/提交的代码。我想要实现的是在分析失败时中断推送/提交。 下面是我的.gitlab-ci.yml

image: XXXXXX:oraclejdk:1.8.0_121

    before_script:
      - export GRADLE_USER_HOME=`pwd`/.gradle

    sonarqube_master_job:
      stage: test
      only:
        - master
        - release2.0
  script:
    - ./gradlew assemble
    - ./gradlew -x test sonarqube   -Dsonar.host.url=http://sonarqube.XXX.XXX.XXX:9000/sonarqube   -Dsonar.login=xxxxxxxxxxxxxxxxxxxx

sonarqube_preview_feature_job:
  stage: test
  only:
    - /^feature\/*/
    - development
  script:
    - git checkout $CI_COMMIT_REF_NAME
    - git merge  --no-commit --no-ff
    - ./gradlew assemble
    - ./gradlew -x test sonarqube -Dsonar.host.url=http://XXXX.XXXXX.com:9000/sonarqube -Dsonar.login=xxxxxxxxxxxxxxxxxxxxx -Dsonar.analysis.mode=preview -Dsonar.gitlab.commit_sha=$CI_COMMIT_REF -Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME -Dsonar.gitlab.project_id=$CI_PROJECT_ID --stacktrace

如果分析失败,如何确保推送失败?我需要使用webhooks吗?是否有样本CI文件?

1 个答案:

答案 0 :(得分:0)

@jibsonline,您可以参考以下链接中提供的我的答案。 但是,该脚本仅回答如何打破声纳分析的基础并显示结果。

How to integrate Sonar Quality Gates with Gitlab-CI

由于gitlab触发了构建,所以一旦推送更改,就不建议设置自动化工具来代表您还原代码更改。每当构建失败时,编写脚本(依赖项),以使代码不会被部署。由于未部署代码,因此不会影响您的环境。此外,每当构建失败时,请设置电子邮件配置。