Gitlab+Sonar实现提交代码时自动审计

本文主要讲解,如何将Gitlab的代码管理功能和Sonar的代码审查功能结合起来,实现开发人员每次push时,自动scanner。由于服务器性能有限,未采用Jenkins。

环境介绍

centos 7

sonar cube 6.5

gitlab-ce-10.1.0

sonar-scanner-cli-3.0.3

配置sonar-scanner-cli

在gitlab服务器上,部署sonar-scanner-cli,要注意的是通过二进制包安装的gitlab是在gitlab-runner用户下,所以需要将sonar-scanner-cli也部署在该用户下,否则会有权限问题。

在sonar-scanner-cli的配置文件中配置

1
2
3
sonar.host.url=https://sonar.lefer.cn
sonar.sourceEncoding=UTF-8
sonar.login=your token

login可以在sonar-cube的用户-安全页面中生成。

安装gitlab-runner

1
2
3
# 添加gitlab的repository,由于是国外网站可能不稳定,如果失败就多执行几次
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
sudo yum install gitlab-runner

可参考官方文档

注册runner到gitlab中

runner 分为全局runner和项目级的runner,根据需求决定注册为什么级别。下面以项目级runner来说明。

  • 进入gitlab的项目页面下的Serttings -> Runners settings,找到注册令牌。

  • 在centos中运行以下命令注册,过程中需要输入一些信息,包括gitlab的url,令牌,以及标签

    1
    sudo gitlab-runner register

    标签可以自行定义。接下来的触发器根据标签去决定需要触发哪些runner。

编写CI脚本

在gitlab的项目首页,点击CI配置按钮,开始编写CI脚本。

1
2
3
4
5
sonar:
stage: test
script:
- whoami
- bash /home/gitlab-runner/sonar-scanner-3.0.3.778-linux/bin/sonar-scanner

可以看到CI脚本就是形如YML的一种格式文本文件。第一行sonar是job的名字,stage是job的标签,对应上一步的标签,script就是一行行的命令。

END

完成以上配置后,每次提交代码时,就会触发sonar的运行。