沪ICP备2021032517号-1

SonarQube & Jenkins

  |   0 评论   |   0 浏览

SonarQube

docker-compose

修改 vim /etc/sysctl.conf

vm.max_map_count=262144
version: '3'

services:

  sonarqube:
    image: sonarqube:8.9.0
    container_name: sonarqube
    depends_on:
      - postgresql
    environment:
      SONAR_JDBC_URL: jdbc:postgresql://postgresql:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: sonar
      #sonar.security.realm: LDAP
      #ldap.url: ldap://110.10.1.10:3268
      #ldap.bindDn: cn=gitlab,ou=test,dc=test,dc=com
      #ldap.bindPassword: 123
      #ldap.user.baseDn: dc=test,dc=com
      #ldap.user.request: (&(objectClass=user)(sAMAccountName={login}))
      #ldap.user.realNameAttribute: sAMAccountName
      #ldap.user.emailAttribute: mail
      #ldap.group.baseDn: ou=Group,ou=test,dc=test,dc=com
      #ldap.group.request: (&(objectClass=group)(member={dn}))
    volumes:
      - /data/sonarqube/sonarqube_data:/opt/sonarqube/data
      - /data/sonarqube/sonarqube_extensions:/opt/sonarqube/extensions
      - /data/sonarqube/sonarqube_logs:/opt/sonarqube/logs
      - /data/sonarqube/sonarqube_temp:/opt/sonarqube/temp
    ports:
      - "9000:9000"

  postgresql:
    image: postgres:13
    container_name: postgresql
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
    ports:
      - "5432:5432"
    volumes:
      - /data/sonarqube/postgresql:/var/lib/postgresql
      - /data/sonarqube/postgresql_data:/var/lib/postgresql/data

拉去镜像

docker pull sonarqube:latest
docker tag sonarqube:latest sonarqube:8.9.0

应用配置文件启动服务

docker-compose -f sonarqube.yml up -d

Sonar-scanner

下载安装包

wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.6.2.2472-linux.zip

修改配置文件

sonar.host.url=http://10.10.4.71:9000
#sonar.login=admin
#sonar.password=888999

如果在本地测试时 sonar.loginonar.password 需要配置。

jeknins使用 sonar-scanner -Dsonar.login=secretsonar.loginsonar.password 不需要配置

中文插件

wget https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases/download/sonar-l10n-zh-plugin-1.19/sonar-l10n-zh-plugin-1.19.jar

image.png

启动一个测试任务

./bin/sonar-scanner -Dsonar.projectKey=Task

执行结束后在 sonarqube 管理界面查看

image.png

以上说明 sonarqube sonar-runner配置成功。

Jenkins sonarqube-webhook

当我们把Jenkins和 sonarqube整合的时候,Jenkins调用 sonarqube scanner 扫描,把结果发送给sonarqube 服务器,然后服务器完成报告之后,通过 webhook再把结果发过Jenkins,Jenkins根据结果判断是否继续运行pipeline

image.png

http://jenkins_domain/sonarqube-webhook/

Jenkins-pipeline& Scanner

下载 SonarQube Scanner for Jenkins 插件

安装完成后,在 系统管理->系统设置中,找到SonarQube servers模块,填写服务器信息

image.png

上面 ip前面的 http 必须带上

其中认证token需要登陆sonar后,点击Administrator->security->user,点击token按钮,输入key后再点击generate进行生成

然后到jenkins 凭据管理生成 Secret 凭据 ,Secret使用上一步在 sonar 管理界面生成的密钥

image.png

jenkins Pipeline部分关于 sonarqube 的配置

111.png

图中 1 是 jenkins 在系统管理设置中添加 sonarqube 时的名字

图中 2 是 sonarqube 生成的 Secret

图中 3 是 在 jenkins pipeline过程中提示 SonarQube task status is IN_PROGRESS/PENDING 流水线无法继续时使用

前置条件

项目代码根目录的 sonar-project.properties 文件

#required metadata
#projectKey项目的唯一标识,不能重复 
sonar.projectKey=solo
sonar.projectName=xiongzf
sonar.projectVersion=1.0 
sonar.sourceEncoding=UTF-8
sonar.modules=java-module
sonar.java.binaries=.
#,javascript-module,html-module
   
# Java module
java-module.sonar.projectName=Java Module
java-module.sonar.language=java
# .表示projectBaseDir指定的目录
java-module.sonar.sources=.
java-module.sonar.projectBaseDir=src/main/java
sonar.binaries=classes
  
# JavaScript module
#javascript-module.sonar.projectName=JavaScript Module
#javascript-module.sonar.language=js
#javascript-module.sonar.sources=js
#javascript-module.sonar.projectBaseDir=src/main/webapp
  
# Html module
#html-module.sonar.projectName=Html Module
#html-module.sonar.language=web
#html-module.sonar.sources=pages
#html-module.sonar.projectBaseDir=src/main/webapp

上面文件放入项目根目录后即可开始构建流水线


标题:SonarQube & Jenkins
作者:zifuy
地址:https://www.zifuy.cn/articles/2020/06/19/1592582219028.html