1、gitlab和gitlab-runner的安装
首先,需要安装gitlab和gitlab-runner,这样,就可以进行自动化作业任务。安装使用docker-compose进行,docker-compose.yml文件内容如下:
version: '3'
services:
gitlab:
image: gitlab/gitlab-ce:latest
container_name: gitlab
restart: always
volumes:
- ./config:/etc/gitlab
- ./logs:/var/log/gitlab
- ./data:/var/opt/gitlab
ports:
- 8888:80
- 4443:443
- "2222:22"
runner:
image: gitlab/gitlab-runner:latest
container_name: gitlab-runner
restart: always
links:
- gitlab
volumes:
- ./runner-config:/etc/gitlab-runner
# - ./runner-config/profile:/etc/profile
# - /project/soft/jdk-17.0.5:/usr/local/jdk-17.0.5
# - /project/soft/apache-maven-3.8.6:/usr/local/apache-maven-3.8.6
容器运行成功后,需要对runner的环境变量进行配置,不然在进行检测的时候会提示找不到对应的命令。同时,为了保证变量的可重用性,可以将环境变量配置文件进行本地文件映射,方法如下:
[java@localhost gitlab]$ sudo docker cp gitlab-runner:/etc/profile ./runner-config/
然后修改./runner-config/profile文件,在文件最下方添加如下内容:
# 需要先下载jdk安装包
# 下载地址:https://www.oracle.com/java/technologies/downloads/#java17
export JAVA_HOME=/usr/local/jdk-17.0.5
PATH=$PATH:$JAVA_HOME/bin
export PATH
# maven环境变量,需要先下载maven安装包
# 下载地址:https://archive.apache.org/dist/maven/
MAVEN_HOME=/usr/local/apache-maven-3.8.6
export PATH=${MAVEN_HOME}/bin:${PATH}
设置完成后,修改docker-compose.yml文件,将volumes中的#去掉,然后重新创建容器。
2、创建runner
使用命令创建runner。

java@localhost gitlab]$ sudo docker exec -it gitlab-runner gitlab-runner register
Runtime platform arch=amd64 os=linux pid=862 revision=133d7e76 version=15.6.1
WARNING: The 'register' command has been deprecated in GitLab Runner 15.6 and will be replaced with a 'deploy' command. For more information, see https://gitlab.com/gitlab-org/gitlab/-/issues/380872
Running in system-mode.
Enter the GitLab instance URL (for example, https://gitlab.com/):
填入自己gilab网址
Enter the registration token:
填入项目的token,见上图
Enter a description for the runner:
[b8655c42ba38]: 填入runner的描述
Enter tags for the runner (comma-separated):
runner的tag
Enter optional maintenance note for the runner:
这个可以不管,直接enter
Registering runner... succeeded runner=j9bcBHxz
Enter an executor: docker+machine, docker-ssh+machine, kubernetes, custom, docker-ssh, parallels, shell, virtualbox, docker, ssh, instance:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml"
创建完成后,属性gitlab页面,可以看到刚才创建的runner:

3、配置SonarQube
安装SonarQube:
version: '3.1'
services:
postgres:
image: postgres:14.2
restart: always
container_name: postgres
volumes:
- /project/docker/data/sonarqube/postgres/postgresql:/var/lib/postgresql
- /project/docker/data/sonarqube/postgres/data:/var/lib/postgresql/data
environment:
TZ: Asia/Shanghai
POSTGRES_USER: sonarqube
POSTGRES_PASSWORD: sonarqube
POSTGRES_DB: sonarqube
sonarqube:
image: sonarqube:9.3.0-community
container_name: sonarqube
privileged: true
depends_on:
- postgres
volumes:
- ./extensions:/opt/sonarqube/extensions
- ./logs:/opt/sonarqube/logs
- ./data:/opt/sonarqube/data
- ./conf:/opt/sonarqube/conf
ports:
- 9001:9000
environment:
SONARQUBE_JDBC_USERNAME: sonarqube
SONARQUBE_JDBC_PASSWORD: sonarqube
SONARQUBE_JDBC_URL: jdbc:postgresql://postgres:5432/sonarqube
等待运行完成后登录,默认用户名和密码都是admin。
3.1 安装汉化补丁
从“Administration -> Marketplace”打开插件界面,搜索指定的插件,点击插件列表右侧的“install”安装插件。

点击install即可。
3.2 安装导出插件
从https://gitee.com/zzulj/sonar-pdf-plugin/tags下载对应版本的jar包,然后将jar包上传到extensions/plugins目录下,然后重启服务器。

重启完成后,对插件进行配置(主要配置登录密码,不然无法使用插件)。

即可在项目的更多内找到下载按钮:

3.3 连接gitlab
进入gitlab个人中心,创建访问令牌:

然后进入sonar配置中心,填写gitlab访问配置:

这样就可以从gitlab中直接导入项目(第一次可能还需要再填一下访问密钥)。
接着,添加一个项目:

然后,按照步骤添加对应的数据:



最后,在git根目录增加 .gitlab-ci.yml文件,填入内容后下面内容:

然后再在文件中添加runner创建时的tag,推送到master分支,即可开始解析。最终配置(根据项目的不同配置内容将会发生变化):
sonarqube-check:
image: maven:3.6.3-jdk-11
variables:
SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar" # Defines the location of the analysis task cache
GIT_DEPTH: "0" # Tells git to fetch all the branches of the project, required by the analysis task
cache:
key: "${CI_JOB_NAME}"
paths:
- .sonar/cache
script:
- mvn verify sonar:sonar -Dsonar.projectKey=java_2022-before_appraisal_AYT1eWcCnmTV8TCHuKJu
allow_failure: true
only:
- master # or the name of your main branch
tags:
- tag

Comments NOTHING