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_URLSONAR_TOKEN变量配置:https://gitlab.xxx/saas/asm-web/admin/-/settings/ci_cd

  1. 在项目里面加上sonar-project.properties文件,内容如下:

sonar.projectKey=asm-web-admin
sonar.qualitygate.wait=true
  1. 在项目根目录下创建.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注册

gitlab-ci runner部署

4.laravel项目配置codeception

文档:Codeception for Laravel

所有用户都可以去薅羊毛,192元充值200元话费!先到先得!导航栏话费充值,正规可靠,快充慢充自由选择。
欧阳逸资源站 » sonarqube部署及gitlab-ci触发扫描

发表评论