环境

个人PC:Windows10 家庭版

docker:docker官方提供的Docker Desktop

gitlab server:使用docker镜像安装

postgresSQL:使用docker镜像安装

sonaqube:使用docker镜像安装

搭建步骤

windows10环境配置

1. 打开: 控制面板-程序与功能-启用或关闭windows功能。勾选下图所示的选项,然后点击确定并重启系统。

2. 下载linux内核包并安装,具体参考下方微软官网链接中的步骤4~步骤6操作。

安装 WSL | Microsoft Learn

下载Docker Desktop

1. 前往官网Docker Desktop: The #1 Containerization Tool for Developers | Docker,下载并安装docker,如下图:

2. 安装完成后打开 cmd命令行或者PowserShell,运行docker ps,出现相关命令,即安装成功。

利用docker镜像安装gitlab server

1. 可以参照gitlab官网的指导安装。这里为了方便,就从网上搜索一个gitlab镜像,直接安装。从此链接GitHub - sameersbn/docker-gitlab: Dockerized GitLab处下载docker-compose.yml。然后使用管理员权限运行PowerShell,再.yaml文件目录执行docker-compose.exe up 进行安装。安装完成后,在Docker Desktop中查看,若成功,gitlab的相关服务docker都应该处在running状态,如下图:

2. 浏览器输入:http://localhost:10080/ 测试,如果出现gitlab登录界面,则说明服务安装成功且正常运行。

以上详细操作请参考:GitLab服务器搭建(Win10系统企业版,在Docker上部署GitLab的搭建)_gitlab community edition-CSDN博客

安装sonaqube

1. 使用docker镜像安装sonaqube和postgresSQL

docker pull postgres
docker pull sonarqube
docker run --name db -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d postgres
docker run --name sq -e sonar.jdbc.password=sonar -e sonar.jdbc.username=sonar -e sonar.jdbc.url=jdbc
:postgresql://postgres/sonar --link db:postgres -p 9000:9000 -d sonarqube

2. 此时在Docker Desktop上查看sonaqube和postgresSQL的部署情况。一般情况下,sonaqube会因报错而退出。查看日志,会发现因为sonaqube服务中自带ES服务,要求vm.max_map_count的值设置为262144。此种问题在PowserShell中输入如下命令解决:

wsl -d docker-desktop
sysctl -w vm.max_map_count=262144

3. Docker Desktop中再次重启sonaqube docker,发现重启成功。

4. 浏览器中输入http://localhost:9000/ 进行测试,如出现sonaqube的登录界面,说明服务运行正常。

以上详细操作请参考:采坑记:Win10下 Docker 安装 sonarqube_window10的docker中安装sonarqube-CSDN博客

GitLab CI + sonaqube集成

以上环境都已经准备好,下面开始利用gitlab自带的CI/CD功能进行CI的实现,同时将sonaqube参与到CI过程中。

安装windows版gitlab runner

1.  参照Install GitLab Runner on Windows | GitLab 下载windows版gitlab runner并安装。具体过程为:本地建立GitLab-Runner目录,下载exe文件到该目录,如下图:

2. 将 gitlab-runner.exe 安装为服务,如下:

cd D:
cd D:\GitLab-Runner
 .\gitlab-runner.exe install
 .\gitlab-runner.exe start

3. 进入windows进程管理器检查gitlab runner服务是否正常运行,如下图:

注册gitlab runner

1. 使用root登录刚才在本机安装的gitlab http://localhost:10080/, 在Admin Area -> Overview ->Runner 中找到Set up a shared runner manually,复制并保存Url和Token。如下图:

2. cd 到gitlab-runner.exe 的目录,执行gitlab-runner.exe命令,按照提示要求进行注册,如下图:

注意:上图中url和token就是第一步中保存的url和token。另外还有两个地方需要注意,一是注册过程中要求输入tags,这个tags是给注册的Runner打上标签,以后使用这个runner的gitlab项目也必须有这个标签才能运行此runner;二是选择Runner的执行环境,这里为了方便,直接选择shell。

3. 登录gitlab查看runner

在Admin Area -> Overview ->Runner中,查看新注册的gitlab runner,如下图:

Gitlab添加sonarqube app验证

1. 登录Gitlab,默认账号为root,密码为初次打开页面时设置的密码。

2. 登录后,如果没有需求,建议先将 Admin Area -> Settings -> CI/CD -> Expand -> Default to Auto DevOps pipeline for all projects选项去掉并记得保存

3. 添加一个Application,添加sonarqube回调地址。Admin Area -> Applications -> New Application进入后,进行设置,如下图:

4. 配置好之后,提交后保存Application IDSecret

配置sonarqube ALM Integrations

1. 配置Server base URL。如下图:

2. 配置ALM Integrations,按照如下方法配置。如下图所示:

Administration -> Configuration -> General Settings -> ALM Integrations -> Gitlab

Enabled:启用。

GitLab URL:Gitlab地址。

Application ID:在Gitlab applications中创建的application id。

Secret:在Gitlab applications中创建的application Secret。

创建sonarqube代码分析项目

在sonarqube web界面中点击新建项目,输入项目标识myproject,创建一个TOKEN、输入TOKEN名称。点击,生成TOKEN串。保存这个TOKEN串。如下图:

配置.gitlab-ci.yml文件并提交CI过程

1. gitlab中创建一个用户,赋予管理员权限,用此用户创建一个testsonar项目,添加一个.gitlab-ci.yml文件,如下图:

2. 下载安装sonar-scanner

下载地址:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.5.0.2216.zip

解压之后将.\bin配置到PATH环境变量中

3. 配置gitlab-runner执行shell的环境变量

进入testsonar项目下,进入setting -> CI / CD -> Variables -> Expend,开始设置环境变量。将JAVA_HOME,CLASS_PATH,Path等环境变量配置上去。如果之前没有安装java的这里要自行安装一下java并配置JAVA_HOME,CLASS_PATH,Path。如下图:

4. 编辑.gitlab-ci.yml文件,注意要添加tags字段表明要使用那个gitlab-runner。如下:

sonarqube-check:
  stage: test
  script:
    - sonar-scanner -D sonar.projectKey=myproject -D sonar.host.url=http://localhost:9000 -D sonar.login=8f1b26481a6e365ea861c77f3097575d612b1094

  allow_failure: true
  only: 
    - merge_requests
    - master
  tags:
    - testsonar

5. Gitlab上提交编辑好的.gitlab-ci.yml文件。此时会发生如下过程:

  • testsonar下的CI/CD将会找到.gitlab-ci.yml文件并按照文件中的stage执行test阶段
  • 之后找到注册的gitlab runner,也就是tags为testsonar的gitlab runner,使这个runner运行script中的shell 脚本
  • shell脚本执行的是:对项目进行扫描并将扫描结果同步到上面搭建的sonarqube myproject项目中

执行过程图如下:

6. 登录sonarqube,查看扫描结果,显示成功,如下图。至此,gitlab + gitlab runner + docker + sonaqube在windows10上的集成流程跑通。证明此方案可行。

Logo

更多推荐