sonarqube部署及gitlab-ci触发扫描
1.sonarqube部署
服务器:host_ip sonarqube服务web端: http://host_ip:9000/projects/create 账号:admin / eevxYrjdeK%J5w#9 cat /home/l-yourname/sonacube.yml
version: "3" services: sonarqube: image: sonarqube depends_on: - db environment: SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar SONAR_JDBC_USERNAME: sonar SONAR_JDBC_PASSWORD: sonar volumes: - sonarqube_data:/opt/sonarqube/data - sonarqube_extensions:/opt/sonarqube/extensions - sonarqube_logs:/opt/sonarqube/logs ports: - "9000:9000" db: image: postgres environment: POSTGRES_USER: sonar POSTGRES_PASSWORD: sonar volumes: - postgresql:/var/lib/postgresql - postgresql_data:/var/lib/postgresql/data sonar-scanner: image: sonarsource/sonar-scanner-cli:latest # 使用官方或自定义的sonar-scanner镜像 volumes: sonarqube_data: sonarqube_extensions: sonarqube_logs: postgresql: postgresql_data:
安装服务:
sudo docker-compose -f /home/l-yourname/sonacube.yml up -d --build # 如果改动了yml文件需要重新启动单个服务,使用下面的命令 sudo docker-compose up -d --build php
管理服务:
# 查看容器映射目录: sudo docker volume ls # 删除映射目录: sudo docker volume rm sonarqube_data sonarqube_logs sonarqube_extensions sonarqube_conf sonarqube_bundled-plugins
服务启动成功以后,就能访问sonarqube server的web页面了。
2.增加gitlab-CI功能
创建项目:
http://host_ip:9000/projects/create?mode=manual 1.设置项目名,设置key,设置扫描分支,这个和真实分支名没有关系,你可以在别的分支手动触发sonar scanner扫描 2.在gitlab增加 SONAR_HOST_URL
和SONAR_TOKEN
变量配置:https://gitlab.xxx/saas/asm-web/admin/-/settings/ci_cd
-
在项目里面加上
sonar-project.properties
文件,内容如下:
sonar.projectKey=asm-web-admin sonar.qualitygate.wait=true
-
在项目根目录下创建
.gitlab-ci.yml
,内容如下:
stages: - sonarqube-check - sonarqube-vulnerability-report sonarqube-check: stage: sonarqube-check image: name: sonarsource/sonar-scanner-cli:5.0 entrypoint: [""] 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: - sonar-scanner -Dsonar.host.url=${SONAR_HOST_URL} -Dsonar.login=${SONAR_TOKEN} -Dsonar.sources=./app -Dsonar.exclusions=/vendor/,/node_modules/ allow_failure: true only: - merge_requests - master - main - develop sonarqube-vulnerability-report: stage: sonarqube-vulnerability-report script: - 'curl -u "${SONAR_TOKEN}:" "${SONAR_HOST_URL}/api/issues/gitlab_sast_export?projectKey=asm-web-admin&branch=${CI_COMMIT_BRANCH}&pullRequest=${CI_MERGE_REQUEST_IID}" -o gl-sast-sonar-report.json' allow_failure: true only: - merge_requests - master - main - develop artifacts: expire_in: 1 day reports: sast: gl-sast-sonar-report.json dependencies: - sonarqube-check
sonarqube-vulnerability-report支支持GitLab Ultimate版本,如果是社区版,就不要写report了。
3. gitlab-runner注册
4.laravel项目配置codeception
文档: