SonarQube使用gitlab自动运行

时间:2018-01-18 14:08:24

标签: sonarqube gitlab gitlab-ci

我用SonarQube创建了自己的服务器,我想将它与我的gitlab连接起来。每次我将提交我的提交sonarqube扫描仪将运行并在代码中创建结果+注释。

我已经下载了这个插件: https://gitlab.talanlabs.com/gabriel-allaigre/sonar-gitlab-plugin

根据 Gitlab integration with SonarQube 这些只是2个插件

我在SonarQube服务器上安装了这个插件。在插件选项中,将gitlab API密钥和url添加到我的存储库中,就像在文档中一样。

好的,所以它已经完成......但现在呢?我必须在gitlab中改变,当我推送提交gitlab时会知道“好吧,我必须用这个sonarqube服务器分析这段代码”

我对此很新(sonarqube和gitlab),3天前我对SonarQube一无所知,我不知道我可以在gitlab中开始跑步。

插件文档中有一些示例,但我不理解它们,我的意思是我不知道在gitlab上的“示例”部分放置此代码,以使其正常工作。

被困在原地。我不是在谈论这个.gitlab-ci.yml因为我认为它适用于java项目,而且没关系但是我想分析python和其他......但是如何; /?

请帮忙

1 个答案:

答案 0 :(得分:7)

首先,所需的设置包含您已经拥有的多个组件。

  1. SonarQube服务器+ Gitlab插件https://sonarqube.example.com
  2. Gitlab项目(foo / bar)
  3. 在项目设置CI / CD秘密变量中设置SonarQube用户令牌的SONAR_TOKEN变量(将在每个CI作业中注入)
  4. Gitlab CI配置(.gitlab-ci.yml
  5. 项目根目录(sonar-project.properties
  6. 中的声纳项目配置文件
  7. 您的CI亚军上的sonar-scanner installed(或参见说明)
  8. sonar-project.properties

    修改您的需求或提供所有设置为-D选项(请参阅工作)

    # Required metadata
    sonar.projectKey=nl.example.foo.bar
    sonar.projectName=FoorBar app
    
    # Comma-separated paths to directories with sources (required)
    sonar.sources=src/app
    
    # Language
    sonar.language=js
    
    # Encoding of sources files
    sonar.sourceEncoding=UTF-8
    
    # Exclude
    sonar.exclusions=src/app/core/**/*
    

    .gitlab-ci.yml jobs

    CI设置包含2个并行运行的作业(在我的情况下),一个作业进行预览,负责在提交中进行注释,但实际上并不向SonarQube服务器发送数据。第二个作业执行相同的扫描,但发布到SonarQube服务器并检查所有质量门(通过/失败)。

    #######################################
    # Check the project code quality with Sonar, make sure your Gitlab project has a secret variable (project -> settings -> CI/CD) defined called SONAR_TOKEN
    #######################################
    codequality_preview:
      stage: qa
      script:
        - sonar-scanner -Dsonar.host.url=https://sonarqube.example.com -Dsonar.analysis.mode=preview -Dsonar.login=$SONARQUBE_TOKEN -Dsonar.gitlab.commit_sha=$CI_BUILD_REF -Dsonar.gitlab.ref_name=$CI_BUILD_REF_NAME -Dsonar.projectVersion=$CI_BUILD_ID -Dsonar.branch=$CI_BUILD_REF_NAME -Dsonar.gitlab.project_id=$CI_PROJECT_URL
    
    #######################################
    # Check the project code quality with Sonar, make sure your Gitlab project has a secret variable (project -> settings -> CI/CD) defined called SONAR_TOKEN
    #######################################
    codequality:
      stage: qa
      script:
        - sonar-scanner -Dsonar.host.url=https://sonarqube.example.com -Dsonar.login=$SONARQUBE_TOKEN -Dsonar.projectVersion=$CI_BUILD_ID -Dsonar.branch=$CI_BUILD_REF_NAME
    

    备注

    • 除了在跑步者中安装声纳扫描仪,您还可以使用例如一个提供声纳扫描仪的Docker container
    • 如果您不想要sonar-project.properties文件,可以通过命令行提供设置,就像其他-D个变量一样。