GitLabRunner配合SonarScanner针对每次commit做代码检查

2018/12/11 posted in  PM

Sonar GitLab-Plugin插件以及配置

  1. 下载安装插件

    admin登录SonarQube,点击 配置 —> 系统 —> 更新中心 —> Available —> Search,输入 GitLab,在列表中点击 install 安装,安装完毕后重启 SonarQube 即可

  2. 在GitLab上注册一个Sonarqube账号,获取Private Token

  1. 回到SonarQube 配置插件

Sonar Scanner 相关配置

依然采用docker方式

  1. 拉取镜像

    docker pull ciricihq/gitlab-sonar-scanner
    
  2. 在sonarqube上新建要测试的项目
    按照向导创建完项目之后记住所设置的key

  3. 回到GitLab,在需要进行质量检测的项目中加入.gitlab-ci.yml,在末尾添加如下代码:

    stages:
    - analysis
    sonarqube:
    stage: analysis
    image: ciricihq/gitlab-sonar-scanner
    variables:
    SONAR_URL: http://sonarqube.domain.lan #你的sonarqube地址
    SONAR_ANALYSIS_MODE: issues
    script:
    - gitlab-sonar-scanner
    sonarqube-reports:
    stage: analysis
    image: ciricihq/gitlab-sonar-scanner
    variables:
    SONAR_URL: http://sonarqube.domain.lan #你的sonarqube地址
    SONAR_ANALYSIS_MODE: publish
    script:
    - gitlab-sonar-scanner
  4. 在项目根目录添加sonar scanner 配置文件 sonar-project.properties

    sonar.projectKey=<sonarqube上创建项目时填写的key>
    sonar.sources=.
    sonar.gitlab.project_id=git@gitlab.domain.lan/awesome/xxx.git ##你的git仓库地址

GitLab Runner注册

  1. 拉取镜像

    docker pull gitlab/gitlab-runner
    
  2. 利用docker注册镜像

    docker run --rm -t -i -v /path/to/config:/etc/gitlab-runner --name  gitlab-runner gitlab/gitlab-runner register \
      --non-interactive \
    --executor "docker" \
    --docker-image alpine:3 \
    --url "https://gitlab.com/" \
    --registration-token "PROJECT_REGISTRATION_TOKEN" \
    --description "docker-runner" \
    --tag-list "docker,aws" \
    --run-untagged \
    --locked="false"
  3. 启动GitLab Runner

    docker run -d --name gitlab-runner --restart always \
     -v /srv/gitlab-runner/config:/etc/gitlab-runner \
    -v /var/run/docker.sock:/var/run/docker.sock \
    gitlab/gitlab-runner

测试验证

修改代码提交到gitlab,观察gitlab的pipeline的状态,以及sonarqube上新建项目的状态。

GitLab Pipeline
Sonarqube

问题

观察redmine的日志,如果出现权限问题,请注意仓库的用户组需要为redmine:redmine