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

news2024/11/16 14:47:47

  • 前提默认

安装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配置 - 哔哩哔哩

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/676487.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

探索uniapp+vue3解析markdown语法|uniapp键盘撑起

最近正在尝试使用uniappvue3开发仿制chatgpt会话功能。 如上图:经过测试在h5/App端/小程序端 均支持markdown语法解析,键盘撑起后,整体页面和顶部自定义导航栏不会被顶起。 uniapp markdown解析及语法高亮 使用了markdown-it和highlight.js…

深入理解深度学习——BERT(Bidirectional Encoder Representations from Transform):输入表示

分类目录:《深入理解深度学习》总目录 BERT在预训练阶段使用了《深入理解深度学习——BERT(Bidirectional Encoder Representations from Transform):MLM(Masked Language Model)》和《深入理解深度学习——…

C++——函数重载

目录 1. 函数重载的概念 2. 函数重载注意点 3. C可以函数重载的原因 4. 总结 1. 函数重载的概念 函数重载:是函数的一种特殊情况。C语言不支持函数重载,而C允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数 或 类型 …

【软件设计师暴击考点】软件工程知识高频考点【一】

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:软件…

基于Springboot+vue的汽车租赁系统设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

阿里云服务器的可用区和地域选择有哪些考虑因素?如何优化性能?

阿里云服务器的可用区和地域选择有哪些考虑因素?如何优化性能?   选择阿里云服务器时,可用区和地域选择是一个非常关键的环节。本文将为您详细解析在这个过程中需要考虑的因素以及如何优化性能。 一、阿里云服务器的可用区和地域选择的考虑…

PHP基础知识解析:探索PHP编程的核心概念和技巧

目录 PHP简介 什么是PHP 网站基本概念 网站 静态网站特点 动态网站特点 服务器概念 IP 域名 DNS 端口 PHP基础知识 PHP语法 PHP注释 PHP语句分隔符 变量 变量基本概念 变量的使用 命名的命名规则: 预定义变量: 可变变量 变量传值 …

【Linux操作系统】共享内存

文章目录 什么是共享内存?共享内存的原理共享内存的知识点构建创建共享内存的前提-key值共享内存的创建ipcs命令共享内存的释放共享内存的关联与解除代码演示共享内存的大小共享内存的特点 什么是共享内存?共享内存的原理 共享内存让不同进程看到同一份…

C++ --引用与函高级

引用 定义:给变量起别名。 语法:数据类型&别名原名。 int a10; int &ba; //(此时的a和b都指向了同一块空间,都可对里面的元素进行修改) 对这两个变量名字任意一个进行修改,两变量的结果都会发生变化 引用注意事项 1.引…

211大学,4个计算机应届生,真实求职情况~

每年6月,毕业就业是一个绕不开的永恒话题!2024届秋招即将开始,你们都找到工作了吗?是否还在犹豫、焦虑、没有头绪…… 先知先觉的那一批人,总会未雨绸缪,从前辈那里汲取经验。 播妞采访了4位211计算机应届…

vue+leaflet笔记之地图放大镜

vueleaflet笔记之地图放大镜 文章目录 vueleaflet笔记之地图放大镜开发环境使用教程安装依赖库使用简介 详细源码(Vue3) 本文介绍了Web端使用 Leaflet开发库显示地图放大镜的方法 (底图来源:中科星图),结合 leaflet.magnifyingglass插件可以为Leaflet图层添加“放…

SHAP显示原始特征

1.问题描述 SHAP用于特征解释,对于机器学习方法往往需要对原始特征进行编码,而SHAP在绘制单个样本时,会显示每个特征及其取值,而这个取值已经是编码后的,通常无法确定其含义。如: 下图所示的拍卖公司、城市…

【软件设计师暴击考点】数据结构高频考点暴击系列

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:软件…

MarkDown语法学习 —— LaTex数学公式 数学符号

文章目录 01 | 🛑 LaTex公式模式02 | 🚦上下标符号 & 数学符号03 | 🚥 运算符 LaTeX,作为广义上的计算机标记语言(比如HTML),它继承了计算机语言的光荣传统,通过一些简单的代码表…

入门防火墙基本原理

防火墙是可信和不可信网络之间的一道屏障,通常用在LAN和WAN之间。它通常放置在转发路径中,目的是让所有数据包都必须由防火墙检查,然后根据策略来决定是丢弃或允许这些数据包通过。例如: 如上图,LAN有一台主机和一台交…

Nginx基础配置以及实操

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、nginx主配置文件1.全局配置2.I/O事件配置3.HTTP配置4.检查文件是否配置正确5.浏览器测试6.总配置文件图示6.1 nginx总配置文件的三个模块6.2 HTTP文件配置的图示…

通过Python+Selenium获取我的所有文章质量分

文章目录 前言一、背景二、设计三、环境准备四、开发1.查询文章数量1.1请求url1.2响应结果1.3代码 2.获取每页文章列表2.1请求url2.2响应结果 3.获取所有文章url3.1代码 4.保存excle方法4.1代码 5.查询所有文章质量分并写入excle5.1代码 6.程序入口6.1代码 7.需要引入的模块 五…

Copilot是GPT的理想应用模式吗?

自OpenAI发布ChatGPT以来,LLM持续火热,各大公司纷纷入场。但近一段时间以来,我观测到的LLM应用场景,基本都是Copilot的形式,即以对话为基础的辅助应用。尽管体验起来十分的高大上,但我能明确感受到&#xf…

微信小程序发布上线全流程 注册 开发 上传审核

微信小程序接入全流程 微信小程序从零到上线,要经历小程序账号注册开通、完善小程序信息、开发小程序、提交小程序审核及发布四个过程: 以下是微信小程序发布上线的详细流程: 确认小程序信息:在微信公众平台注册并登录后&#…

【C语言进阶】预处理那些事儿

文章目录 📖预定义符号📖预处理指令📖#define 🔖#define定义标识符🔖#define定义宏🔖#define替换规则🔖#和##🔖带有副作用的宏参数🔖宏和函数的对比🔖命名约定…