安装一下gitlab,这里不推荐做挂载,在docker-desktop上会有文件读写的权限导致运行出问题。
docker run -d -p 443:443 -p 80:80 -p 222:22 ^
--hostname mygitlab.local --name gitlab --restart always ^
gitlab/gitlab-ce:18.5.0-ce.0
在本地的C:\Windows\System32\drivers\etc目录的hots下面提前配置一下域名,这是gitla安装需要的: 127.0.0.1 mygitlab.local
然后可以使用 mygitlab.local登录本地的git,默认的账号是root,密码看这里
image
还有一个gitlab.rb文件,跟初始密码是同一个目录下,配置一下下面的变量
image
image
也可以使用下面命令拷贝出来改完后再拷贝进去然后重启服务
docker cp gitlab:/etc/gitlab/gitlab.rb D:\work\docker/gitlab.rb 拷贝出来然后替换
docker cp D:\work\docker\gitlab.rb gitlab:/etc/gitlab/gitlab.rb
下面就是安装runner,首先拿到需要注入到runner中的token
image
下面就是启动服务的命令:
docker run -d --name gitlab-runner ^
--restart always ^
-v d:/dwz/docker-volume/gitlab-runner/config:/etc/gitlab-runner ^
-v /var/run/docker.sock:/var/run/docker.sock ^
gitlab/gitlab-runner:v13.2.4
然后需要注册一个runner,这里的registration-token就是gitlab拷贝出来的,url也是gitlab的地址
docker exec -it gitlab-runner gitlab-runner register -n ^
--url http://172.17.0.2 ^
--registration-token Tca8wkxwbjswexxtE_ij ^
--executor docker ^
--description "Docker Runner" ^
--docker-image "sonarsource/sonar-scanner-cli:latest"
image
以上就是完整的gitlab和ci/cd的搭建了。注意一下docker中默认使用的网关bridge,否则都要指定一下同一个,如果网关gateway:172.17.0.2不一致就需要各种网络假如等等操作,所以安装制定好就行。上面的有默认就不需要额外配置。
下面继续sonar安装:
复制代码
services:
postgres:
image: postgres:13
container_name: postgres
ports:
- "15432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
POSTGRES_DB: sonar
network_mode: bridge
sonar:
image: sonarqube:9.9-community
container_name: sonar
depends_on:
- postgres
ports:
- "9000:9000"
environment:
SONARQUBE_JDBC_USERNAME: sonar
SONARQUBE_JDBC_PASSWORD: sonar
# 内部容器互访请用服务名:port(不要用容器 IP)
SONARQUBE_JDBC_URL: jdbc:postgresql://postgres:5432/sonar
volumes:
- sonarqube_extensions:/opt/sonarqube/extensions
- sonarqube_logs:/opt/sonarqube/logs
- sonarqube_data:/opt/sonarqube/data
- sonarqube_conf:/opt/sonarqube/conf
network_mode: bridge
volumes:
postgres_data:
sonarqube_extensions:
sonarqube_logs:
sonarqube_data:
sonarqube_conf:
复制代码
使用docker-compose 安装完后需要手动配置一下数据库相关,还是社区版的插件安装配置等。首先安装旧版本,最后再试试新版本。
第一个插件可以就可以将 sonarQube 的审查结果以评论的试发布到 gitlab 上面
https://github.com/javamachr/sonar-gitlab-plugin
第二个插件可以实现增强 sonarQube 多分支包括MR的代码检测
https://github.com/mc1arke/sonarqube-community-branch-plugin
第一个插件就固定一个最新的,第二个需要根据镜像版本来安装对应的插件和配置了。
image
docker cp "D:\work\docker\sonar-gitlab-plugin-5.4.0.jar" 67ccc284b64a:/opt/sonarqube/extensions/plugins/ (67ccc284b64a 是容器名)
docker cp "D:\work\docker\sonarqube-community-branch-plugin-25.9.0.jar" 67ccc284b64a:/opt/sonarqube/extensions/plugins/ (67ccc284b64a 是容器名)
下面需要拷贝一下配置文件然后改好覆盖进去:有五行改动,分别是数据库的配置,和第二个插件。如果配置不对或者插件版本不对都会导致服务启动不了。
docker cp 容器名:/opt/sonarqube/conf/sonar.properties "D:\work\docker\sonar.properties"
docker cp "D:\work\docker\sonar.properties" 容器名:/opt/sonarqube/conf/sonar.properties
image
image
image
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:postgresql://172.17.0.4:5432/sonar
sonar.web.javaAdditionalOpts=-javaagent:./extensions/plugins/sonarqube-community-branch-plugin-1.14.0.jar=web
sonar.ce.javaAdditionalOpts=-javaagent:./extensions/plugins/sonarqube-community-branch-plugin-1.14.0.jar=ce
可以看到我这个文件的插件是针对老版本sonarqube:9.9-community的配置,而拷贝插件命令是最新版本的sonarqube:community的配置,最新版最后说。
下面就可以通过9000端口进入sonar了, 默认账号密码admin,需要进入后改掉密码。
老版本比新版本多了这个分支管理功能
image
image
下面就是如何配置sonar和gitlab的交互了,这里不配置gitlab可以通过sonar继承登录 和分组权限功能,直接最高权限来做配置。
image
image
image
image
上面权限看着勾选,前面几个read少不了的。
image
点击创建项目会提示你输入gitlab的personal access token,然后选择要导入的项目到gitlab,然后就关联上项目了。
在gitlab配置一下sonar的回调地址和权限即可,否则sonar拿不到runner扫描的结果