1.先安装前提gitlab,我之前的文章涉及,直接在这里docker安装gitlab-runner:
docker pull gitlab/gitlab-runner:latest
下载OK后
2、运行gitlab-runner容器
---docker启动 docker run -d --name gitlab-runner \ --restart always \ -v /opt/docker-volume/gitlab-runner/config:/etc/gitlab-runner \ -v /opt/run/docker.sock:/var/run/docker.sock \ gitlab/gitlab-runner:latest ---docker启动 --如果之前gitlab配置网络,这里要和谐gitlab网络一致 docker run -d --name gitlab-runner --net=project1_net \ --restart always \ -v /opt/docker-volume/gitlab-runner/config:/etc/gitlab-runner \ -v /opt/run/docker.sock:/var/run/docker.sock \ gitlab/gitlab-runner:latest
3.这里需要注册gitlab-runner
一开始没有配置runner时会在setting的CI/CD下面有个runner,点击扩展,将显示runner的url和token
我的操作是以后用的maven包装,使用maven:3.6.3-jdk-所以可以先做docker pull maven:3.6.3-jdk-8.拉取所需的镜像:
docker exec -it gitlab-runner gitlab-runner register -n \ --url http://192.168.29.133:8089/ \ --registration-token GR1348941kMCKgTJy4eo3ad7yJ_3S \ --executor docker \ --description "Docker Runner" \ --docker-image "maven:3.6.3-jdk-8" \ --docker-volumes /opt/run/docker.sock:/var/run/docker.sock
注册成功后
会在gitlab的runners新增一个runner:
此时需要新增runner的话:
如果没有操作maven这里增加镜像配置sonarqube的信息:
如果使用sonarqube自己的scanner:
使用下面的前提是docker pullsonarsource/sonar-scanner-cli:latest,准备好这个镜像
docker exec -it gitlab-runner gitlab-runner register -n \ --url GITLAB-REGISTER-URL \ --registration-token GITLAB-REGISTER-TOKEN \ --executor docker \ --description "Docker Runner" \ --docker-image "sonarsource/sonar-scanner-cli:latest" \ --dokcer-dns 172.16.0.253 \ --docker-volumes /var/run/docker.sock:/var/run/docker.sock
若要使用:
现在创建一个新项目,创建完成后Project overview、Details页面中可以看到一个CI/CD configuretion
点击按钮添加选项.gitlab-ci.yml
这是文件配置的内容sonar-scanner自己的工具镜像:
image: name: sonarsource/sonar-scanner-cli:latest entrypoint: [""] variables: SONAR_TOKEN: "6d119e3e0798302753b652e06d52d2356ee9001d" # 在sonarqube创建项目时生成TOKEN SONAR_HOST_URL: "http://172.16.0.12:9000" GIT_DEPTH: 0 sonarqube-check: stage: test script: - sonar-scanner -X -Dsonar.qualitygate.wait=true -Dsonar.projectKey=myproject # sonarqube项目标识 allow_failure: true only: # 仅检测master合并请求和master提交分支代码,sonarqube-ce版本只支持分析master分支 - merge_requests - master
此处提供maven配置信息:
image: maven:3.6.3-jdk-8 variables: SONAR_TOKEN: "${sonar_token}" SONAR_HOST_URL: "http://sonar.example.com:9000" GIT_DEPTH: 0 stages: - build_push - feedback_to_gitlab # 执行 SonarQube 分析,并将检测结果推到 SonarQube sonarqube_analysis: stage: build_push only: - merge_requests - master script: - mvn --batch-mode verify sonar:sonar -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$SONAR_TOKEN tags: - docker_runner # 执行 SonarQube 分析,并反馈检测结果 GitLab sonarqube_gitlab_comment: stage: feedback_to_gitlab except: - master script: - mvn --batch-mode verify sonar:sonar -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$SONAR_TOKEN -Dsonar.analysis.mode=preview -Dsonar.gitlab.commit_sha=$CI_COMMIT_SHA -Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME -Dsonar.gitlab.project_id=$CI_PROJECT_ID tags: - docker_runner
sonarqube生成token: