Jenkins集成Sonar与Gitlab代码质量检测

2023-11-18

  • 前提默认

安装docker19,与docker-compose

  • 安装Jenkins

1、docker-compose.yaml配置

version: '3'

services:

 jenkins:

  #network_mode: "host"

  #镜像

  image: jenkins/jenkins:2.399-jdk11

  #容器名称

  container_name: jenkins

  #启动模式

  restart: always # 设置容器自启模式

  environment:

     - TZ=Asia/Shanghai #时区

  volumes:

   - /etc/localtime:/etc/localtime:ro # 设置容器时区与宿主机保持一致

   - ${PWD}/jenkins_home:/var/jenkins_home

   - ${PWD}/docker.sock:/var/run/docker.sock

   - ${PWD}/docker:/usr/bin/docker

   - ${PWD}/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7

  ports:

   - 8090:8080

   - 5000:5000

  1. 启动:docker-compose -f jenkins.docker-compose.yml up -d
  2. 访问页面:http://IP:8090/
  3. 获取密码:cat jenkins_home/secrets/initialAdminPassword
  4. 使用推荐安装
  5. 安装必备插件
    1. Git
    2. Gitlab
    3. Maven Integration
    4. SonarQube Scanner
    5. Localization: Chinese (Simplified)
    6. Locale plugin
    7. Gitee

  • 安装SonarQube
  1. docker-compose.yaml配置

version: "3.2"

services:

  sonarqube: #服务名称

    image: sonarqube:9.1.0-community

    restart: always

    ports:

      - "8091:9000"

    depends_on:

      - postgres

    networks:

      - sonarnet

    environment:

      - sonar.jdbc.username=sonar

      - sonar.jdbc.password=sonar123#

      - sonar.jdbc.url=jdbc:postgresql://postgres:5432/sonarqube

      - SONARQUBE_JDBC_USERNAME=sonar

      - SONARQUBE_JDBC_PASSWORD=sonar123#

      - SONARQUBE_JDBC_URL=jdbc:postgresql://postgres:5432/sonarqube

    volumes:

      - /etc/localtime:/etc/localtime:ro # 设置容器时区与宿主机保持一致

      - ${PWD}/sonarqube_extensions:/opt/sonarqube/extensions

      - ${PWD}/sonarqube_logs:/opt/sonarqube/logs

      - ${PWD}/sonarqube_data:/opt/sonarqube/data

      - ${PWD}/sonarqube_conf:/opt/sonarqube/conf

  postgres: #数据库

    image: postgres:9.6.23

    restart: always

    ports:

      - 5432:5432

    networks:

      - sonarnet

    environment:

      - ES_JAVA_POTS="-Xms128m -Xmx128m"

      - TZ=Asia/Shanghai

      - POSTGRES_USER=sonar

      - POSTGRES_PASSWORD=sonar123#

      - POSTGRES_DB=sonarqube

    volumes:

      - /etc/localtime:/etc/localtime:ro # 设置容器时区与宿主机保持一致

      - ${PWD}/postgresql:/var/lib/postgresql

      - ${PWD}/postgres_data:/var/lib/postgresql/data

networks:

  sonarnet:

    driver: bridge

    external: true   #使用外部指定网桥  注意:网桥必须存在

  1. 访问http://ip:8091/
  2. 默认密码admin/admin
  3. 安装sonarqube插件
    1. Checkstyle
    2. Chinese Pack
    3. Findbugs
    4. Traditional Chinese Language Pack
  4. SCM设置

  1. 生成令牌

  • Jenkins配置
  1. Maven配置

 

  1. JDK配置

 

  1. 配置Git执行路径

 

  • Jenkins集成Sonar
  1. 向Jenkins添加SonarQube令牌

 

  1. 在 全局 下拉中点击 Add credentials(添加凭据)

 

  1. 选择 Secret text 类型,输入 SonarQube令牌,点击 Create:类型选择Secret text,然后Secret中填入之前生成的Token,ID只要不跟之前重复就行

 

  1. SonarQube Server配置

 

  1. SonarQube Scanner配置

  • Jekins集成Gitlab代码质量扫描
  1. 流程

 

  1. 点击 右侧个人头像,下拉中点击 Setting(设置),并在 设置界面 中点击 私人令牌

 

  1. 输入 令牌名称 并勾选 api 范围,点击 创建个人令牌
    1. 点击创建后,提示个人令牌,一定要先保存好,一刷新页面就没了。
    2. 这里可以撤销,删除token,如果该token已经关联到Jenkins,要删除该token,要连带删除Jenkins里的GitLab API token,否则Jenkins里的GitLab API token失效不能用。

 

  1. 添加Gitlab API令牌凭据
    1. 在 Jekins首页,点击左侧 Manage Jenkins,点击 Manage Credentials(凭据管理)

 

    1. 在 全局 下拉中点击 Add credentials(添加凭据)

 

    1. 选择 Gitlab API 令牌 类型,输入 Gitlab私人令牌,点击 Create

 

  1. 添加Gitlab账号凭据
    1. 在 Jekins首页,点击左侧 Manage Jenkins,点击 Manage Credentials(凭据管理

 

    1. 在 全局 下拉中点击 Add credentials(添加凭据)

 

    1. 选择 Username with password 类型,输入 Gitlab账号和密码,点击 Create

 

  1. 配置Gitlab链接信息
    1. 在 Jekins首页,点击左侧 Manage Jenkins,点击 Configure System(系统管理)

 

    1. 输入 Gitlab 链接信息,选择 私人令牌,点击 测试链接,成功之后,先点击 应用,最后点击 保存

 

  1. 构建项目进行测试
    1. 在 Jekins首页,点击左侧 新建Item(新建任务)

 

    1. 创建一个自由风格的项目

 

    1. 在 General 中输入描述

 

    1. 在 General 中输入自定义的工作空间

 

    1. 在 源码管理 中输入Gitlab信息

 

    1. 在 构建触发器 中选择推送到Gitlab时构建,并选择触发事件

在GitLab的工程项目中,使用Webhook可以使得使用者在推送代码或创建Issue的时候可以触发一个事前配置好的URL,而推送代码还是创建Issue,抑或是合并请求,使用者可以自行在GitLab中进行定制,GitLab会向设定的Webhook的URL发送一个POST请求。整体来说,Webhook指的是用户定义的HTTP回调,GitLab的Webhook在使用上通常具有如下特性:

由某些事件所触发,比如提交代码或者推送代码

一般会触发用户定义的URL,事件触发后,由GitLab发送HTTP请求

Webhook可以从外部更新或者部署

在GitLab CE版本中可以对每个项目进行设定,在EE版本中可以对每个项目或者每个组Group进行设定

设定方式:项目的 Settings ➔ Webhooks

正在

 

    1. 在高级中生成秘密令牌
  1. Gitlab中配置webhook
    1. 点击 Settings,点击 Integrations,输入Jekins 构建时的URL和密码令牌

 

 

    1. 点击添加webhook

 

    1. 使用Webhook所提供的Test按钮,进行结果的正确性验证(当开发人员通过Gitlab 推送、标签推送或合并请求时,会自动触发Jenkins构建任务)

 

  1. 配置SonarQube分析
    1. 在 Build Steps 中 增加 Execute SonarQube Scanner 构建步骤,输入 sonar分析属性 信息

 

    1. 配置信息

#基础信息

sonar.projectKey=test

sonar.projectName=test

#sonar.projectVersion=2.2

sonar.sourceEncoding=UTF-8

sonar.scm.disabled=true

#限定要分析的代码语言,比如js,不设置则默认分析多种语言

sonar.language=java

sonar.java.source=11

sonar.java.target=11

#限定要分析的路径

sonar.sources=.

# binaries code path

sonar.java.binaries=.

sonar.inclusions=**/src/main/java/**

#过滤

#sonar.exclusions=**/test/**,**/target/**,*.xml,**/static/**,*.js,*.html

# Encoding of the source code. Default is default system encoding

#sonar.ce.javaOpts =-Xmx4G -Xms2048m -XX:+HeapDumpOnOutOfMemoryError

#sonar.web.javaOpts=-Xmx4G -Xms2048m -XX:+HeapDumpOnOutOfMemoryError

#sonar.search.javaOpts=-Xmx4G -Xms2048m -XX:+HeapDumpOnOutOfMemoryError

参考:第三篇 Jenkins集成SonarQube配置 - 哔哩哔哩

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jenkins集成Sonar与Gitlab代码质量检测 的相关文章

随机推荐

  • 烧录的HEX文件大于flash存储空间问题

    一 背景 在用一款芯片NRF52832做项目 发现使用Keil编译后的文件大小达到了1M 但是片内flash资源只有512K 结果程序可以正常通过J link烧写 且运行正常 芯片资源如下 nRF52832 是 32 位 ARM Corte
  • A Survey on Metaverse: the State-of-the-art,Technologies, Applications, and Challenges

    本文是对 A Survey on Metaverse the State of the art Technologies Applications and Challenges 的翻译 元宇宙综述 现状 技术 应用和挑战 摘要 1 引言 2
  • vue生命周期mounted和activated使用、踩坑

    activated 说到activated不得不提到keep alive 你切换出去又切出来会调用到它 你可以理解为生命周期钩子函数 用法也一样 mounted 指的是实例被挂载后调用 如果没有keep alive每次切回来该组件都会触发一
  • 理解Spring的AOP和Ioc/DI就这么简单

    一 什么叫Ioc DI Ioc Inversion of Control 控制反转 DI Dependency Injection 依赖注入 其实这两个概念本质上是没有区别的 那我们先来看看什么叫做Ioc 假设这么一个场景 在A类中调用B类
  • 华硕重装系统键盘灯失效 =>重装ATK驱动

    1 点击网站华硕服务与支持 https www asus com cn support 2 输出笔记本型号 选择产品 3 下载驱动 3 1选择驱动程序和工具软件 3 2选择操作系统 3 3找到ATK驱动并且下载 4 安装驱动 4 1安装AT
  • 如何使用随机数实现自动发扑克牌?

    学习不止 问答不止 一 粉丝问题 二 相关函数说明 1 函数说明 产生随机数的方法很多 常用的是rand srand 来看一下这2个函数的定义 SYNOPSIS include
  • 如何导入符号 emdk?

    我在最新的 Android Studio 中创建了一个新的 android projekt 我想导入和使用 Symbol EMDK 包 虽然我像这样放入 gradle implementation com symbol emdk 9 1 1
  • 一文带您了解软件多租户技术架构

    1 多租户技术概述 随着近几年云计算技术的不断发展和成熟 云计算多租户技术在 SaaS 服务领域获得得快速的发展和广泛的应用 基于多租户技术的业务平台首先要保证不同租户业务的隔离 业务隔离主要包括下面 2 个方面 物理隔离 租户开展业务所依
  • 字符串的字体和显示 (3)

    安卓有三种字符串 String String Array Quantity String Plurals String和String Array容易理解 一个是字符串 一个是字符串数组 通过 String planets res getSt
  • Qt做发布版,解决声音和图片、中文字体乱码问题

    前些天做Qt发布版 发现居然不显示图片 后来才发现原来还有图片的库没加 找找吧 去qt的安装包 我装在了F盘 在F盘F QT qt plugins 找到了plugins 这里面有个 imageformats是图片的库 里面有jpg gif等
  • 谷歌开源代码评审规范:好坏代码应该这样来判断

    谷歌开源了一套代码评审 Code Review 规范 它是谷歌一套通用的工程实战指南 几乎涵盖了所有编程语言与各种类型的项目 这个规范代表了谷歌长期发展以来最佳实战经验的集合 谷歌表示希望开源项目或其他组织能够从这套规范中受益 代码评审 也
  • Docker学习:Docker核心命令

    前言 本讲是从Docker系列讲解课程 单独抽离出来的一个小节 重点介绍八大核心命令和一些常用的辅助命令 比如inspect logs push commit等 如果你想 通过部署Tomcat容器 从查找镜像 到拉取 到运行 最后到移除 来
  • sql server - 将sqlserver安装到虚拟机内

    目录 1 安装 打开虚拟机 1 1 打开vmware 1 2 安装虚拟系统到vmware Windows Server 2016 2 安装SQL server 2014 2 1 把SQL server下载并上传到虚拟机 2 2 安装与配置
  • C++ 虚函数表解析

    C 虚函数表解析 陈皓 http blog csdn net haoel 前言 C 中的虚函数的作用主要是实现了多态的机制 关于多态 简而言之就是用父类型别的指针指向其子类的实例 然后通过父类的指针调用实际子类的成员函数 这种技术可以让父类
  • Web前端学习:jQuery基础 · 小终结【异步处理AJAX】

    目录 一 AJAX介绍 AJAX处理过程 二 AJAX请求 代码演示 案例一 获取txt文本内容 通过页面窗口弹出 案例二 返回json数据 一 AJAX介绍 ajax技术的目的是让javascript发送http请求 与后台通信 获取数据
  • Flask框架-重定向与错误

    在Web服务访问时并不总是能够返回正确的结果 当用户访问了错误的URL 或者传输了错误的请求参数 Web服务就需要返回相关的错误信息进行提示 Flask中针对错误请求的场景提供了相关的API 包括标准错误的响应和标准重定向的响应处理 在We
  • 江波龙深化存储技术优势 紧密结合物联网应用需求创新

    转自 http www chinaflashmarket com Producer Netcom News 142127 云计算 大数据以及移动互联网时代下 全球存储容量以爆发式的速度在增长 根据市场调研机构预测 2020年全球存储容量将从
  • servlet编程会话管理技术

    1 会话管理 浏览器与服务器之间会话过程中产生的会话数据 Cookie特点 1 会话数据放在浏览器端 2 数据类型只能string 而且有大小限制的 3 相对数据存放不安全 Session特点 1 会话数据放在服务器端 服务
  • MES的数据采集方式

    为实现生产车间现场数据的采集 制造业MES系统数据采集方法有手工录入方式和自动化提取采集两大类 主要有以下几类 一 手动方式 1 手工方式 操作员或编程员在MES系统控制面板上 输入特定的触发程序 经DNC服务器的自动翻译 就可得到机床端的
  • Jenkins集成Sonar与Gitlab代码质量检测

    前提默认 安装docker19 与docker compose 安装Jenkins 1 docker compose yaml配置 version 3 services jenkins network mode host 镜像 image