Golang代码质量持续检测

使用DockerJenkinsSonarQube搭建代码质量持续检测环境。

安装

通过Docker安装Jenkins

1
docker run -d -p 10240:8080 -p 10241:50000 -v /var/jenkins_mount:/var/jenkins_home -v /etc/localtime:/etc/localtime --name myjenkins jenkins/jenkins

安装插件:

  • GitLab
  • SonarQube Scanner

Docker 快速安装Jenkins完美教程 (亲测采坑后详细步骤)

在macOS和Linux上

通过Docker安装Gitlab

1
2
3
4
5
6
7
8
9
10
docker run -d \
--hostname gitlab.xxx.com \ # 域名,设置成自己的
--name gitlab \
--restart always \
-p 8082:443 -p 8083:80 -p 8084:22 \
-v /etc/localtime:/etc/localtime:ro \
-v /usr/local/gitlab_data/gitlab/config:/etc/gitlab \
-v /usr/local/gitlab_data/gitlab/logs:/var/log/gitlab \
-v /usr/local/gitlab_data/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce

GitLab Docker images

通过Docker安装SonarQube

1
docker run -d --name sonarqube -e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true -p 9000:9000 sonarqube:latest

Try out SonarQube

安装一些插件:

  • Chinese Pack

设置

Jenkins上配置GtiLab

Jenkins上配置SonarQube

修改通知,可选邮件通知,以及发送邮件时机。

配置任务

创建自定义任务,配置时由于golang需要使用gopath,选择自定义工作空间。填写git源码地址,配置gitlab用户名密码。

image-20230116142921729

选择触发器,可设置为推送代码时,合并代码时

image-20230116143025378

增加构建步骤,这里可选一些golang的静态代码检查,例如golint

1
golangci-lint run ./...

增加SonarQube

1
2
3
4
5
6
7
8
sonar.projectKey=com.company.projectkey1
sonar.projectName=My Project Name

sonar.sources=.
sonar.exclusions=**/*_test.go

sonar.tests=.
sonar.test.inclusions=**/*_test.go

Introduction

在Jenkins中安装golang环境及工具

  1. 进入Jenkins容器中,安装golang以及一些工具,vgogometalinter

GitLab系统配置

image-20230116143121867

代码线配置集成触发器

image-20230116143248265

测试

拉取代码,修改代码,推送代码进行测试。

  • 是否会自动构建和执行静态检测
  • 是否会发送邮件或者配置的其他结果通知

推荐阅读

sonarqube-for-golang