Helm部署Sonar

本文讲述了如何在Kubernetes上部署SonarQube,包括添加helm仓库、配置Ingress和GitLab集成,以及Maven配置以支持代码质量检查。
摘要由CSDN通过智能技术生成

一、简介

SonarQube 是一种自我管理的自动代码审查工具,可系统地帮助您交付清洁代码。作为 Sonar 解决方案的核心要素,SonarQube 可集成到您现有的工作流程中,并检测代码中的问题,帮助您对项目进行持续的代码检查。该工具可分析 30 多种不同的编程语言,并集成到您的 CI 管道和 DevOps 平台中,以确保您的代码符合高质量标准。

二、部署

1、添加helm仓库

helm repo add sonarqube https://SonarSource.github.io/helm-chart-sonarqube

2、创建命名空间并安装

kubectl create ns sonar
helm upgrade --install -n sonar sonarqube sonarqube/sonarqube

3、配置域名

vim sonar-test.sllme.com.yaml

apiVersion: v1
items:
- apiVersion: networking.k8s.io/v1
  kind: Ingress
  metadata:
    annotations:
    name: sonar
  spec:
    ingressClassName: nginx
    rules:
    - host: sonar-test.sllme.com
      http:
        paths:
        - backend:
            service:
              name: sonarqube-sonarqube
              port:
                number: 9000
          path: /
          pathType: ImplementationSpecific
    tls:
    - hosts:
      - sonar-test.sllme.com
      secretName: sllme-com
  status:
    loadBalancer:
      ingress:
      - ip: 106.15.1.27
kind: List
metadata:
  resourceVersion: ""
  selfLink: ""
  
kubectl apply -f sonar-test.sllme.com.yaml -n sonar

4、访问并重置密码

默认用户名密码:admin/admin

5、安装中文插件

下载插件

https://github.com/xuhuisheng/sonar-l10n-zh

编辑Dockrefile

FROM sonarqube:10.2.0-community
USER root
COPY sonar-l10n-zh-plugin-10.2.jar /opt/sonarqube/extensions/plugins/
RUN chown -R sonarqube:sonarqube  /opt/sonarqube/extensions/plugins/ && chmod 755 -R /opt/sonarqube/extensions/plugins/
USER sonarqube

编译镜像

docker build -t lishuailing/sonarqube:10.2.0 .
docker login
docker push lishuailing/sonarqube:10.2.0

6、更换服务的镜像

kubectl edit sts sonarqube-sonarqube -n sonar
修改镜像,改成lishuailing/sonarqube:10.2.0
服务重启成功后,访问即可为中文。

三、添加项目

1、添加gitlab的步骤暂时省略

目前gitlab已经添加成功,只需要从gitlab导入项目,在进行配置即可

2、导入项目

3、配置扫描

添加变量

首先创建一个令牌,并在该项目上添加环境变量,以lux-admin-api为例:

以上变量名必须是这两个。

进行配置

修改pom文件:(当然这里需要重新拉一个分支)

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <sonar.projectKey>lux_backend_lux-admin-api_AYqTT_Ykv4z47dnxTgI0</sonar.projectKey>
        <sonar.projectName>lux-admin-api</sonar.projectName>
        <sonar.qualitygate.wait>true</sonar.qualitygate.wait>
    </properties>
添加sonar相关这三行

修改gitlab-ci文件:

stages:
  - verify
  - build
  - source2img
  - sonarqube-check
##  - deploy

variables:
  MAVEN_PATH: .m2
  MAVEM_IMAGE: maven:3.8-eclipse-temurin-17-alpine  # maven 打包使用的镜像
  MAVEN_CLI_OPTS: "-s $MAVEN_PATH/settings.xml --batch-mode"
  MAVEN_OPTS: "-Dmaven.repo.local=$MAVEN_PATH/repository"
  DOCKER_IMAGE: shuinfo-docker-images-registry.cn-shanghai.cr.aliyuncs.com/jbs/$CI_PROJECT_NAME:${CI_PIPELINE_IID}
  KUBECONFIG: /root/.kube/config
  TEST: "HELLO WORLD"
  REQ_CPU: 500m
  REQ_MEM: 512Mi
  SCALE: 1

cache:
  paths:
    - $MAVEN_PATH/repository/
    - target/

build:
  artifacts:
    paths:
      - target/*.jar
    expire_in: 1 week
  stage: build
  image: $MAVEM_IMAGE
  before_script:
    - mkdir -p $MAVEN_PATH
    - echo $SETTING > $MAVEN_PATH/settings.xml
  script:
    - echo $TEST = "test"
    - echo $TEST
    - mvn  $MAVEN_CLI_OPTS  clean install package  -Dmaven.test.skip=true
  only:
    - /^develop/.*$/
    - develop
    - prod
    - release
    - /^release/.*$/
    - master
    - test-scan

source2img:
  needs:
    - build
  stage: source2img
  image: sp0cket/kaniko-executor:debug
  before_script:
    - echo $DOCKER_AUTH_CONFIG > /kaniko/.docker/config.json
  script:
    - echo $DOCKER_AUTH_CONFIG
    - echo ${DOCKER_IMAGE}
    - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination ${DOCKER_IMAGE}
  only:
    - develop
    - /^develop/.*$/
    - /^release/.*$/
    - release
    - prod
    - master
    - test-scan

sonarqube-check:
  stage: sonarqube-check
  image: maven:3-eclipse-temurin-17
  before_script:
    - mkdir -p $MAVEN_PATH
    - echo $SETTING > /root/.m2/settings.xml
  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: 
    - mvn clean verify sonar:sonar -Dmaven.test.skip=true
  allow_failure: true
  only:
    - test-scan
  dependencies:
    - source2img

我们使用的是test-scan分支,只会进行构建,并不会进行发布。

执行构建

查看sonar扫描结果


【完成】

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值