gradle - 基于 SonarQube 分析结果的 GitLab 中的 Break Push

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

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

我已设置 https://github.com/gabrie-allaigre/sonar-gitlab-plugin在 SonarQube 上并集成了 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

如果分析失败,如何确保推送失败?我需要使用 webhook。是否有示例 CI 文件?

最佳答案

@jibsonline,您可以引用我在以下链接中提供的答案。
然而,该脚本仅回答如何打破 Sonar 分析的构建并显示结果。

How to integrate Sonar Quality Gates with Gitlab-CI

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

关于gradle - 基于 SonarQube 分析结果的 GitLab 中的 Break Push,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50798181/

相关文章:

intellij-idea - Intellij IDEA 在gradle-wrapper.properties文件中用 'i'的ASCII码覆盖 'ı'字符

ios - Sonar 无法在Mac EI Caption上连接到mysql

jenkins - 如何在 Jenkins 中为 sonarqube 配置 TSLint 插件?

java - 在大型枚举上使用 switch-case 时,能否避免高圈复杂度(警告)?

gitlab - 如何将工件传递到另一个阶段?

git - 克隆使用 git lfs 且一直不提供密码的 gitlab 项目

gradle - 扩展 'War' 任务的自定义 gradle 任务没有看到某些必需的类

Cucumber/gradle 示例没有生成报告?

maven - Grails 3.2.9自定义插件依赖项

cron - manbetx客户端打不开备份不包括维基