文章目录

  • 0. 老男孩思想-选对池塘钓美人鱼
  • 1. 代码回滚方案
  • 2. SonarQube
    • 2.1 代码检查工具
    • 2.2 部署sonarqube
      • 2.2.1 软件要求
      • 2.2.2 安装软件
      • 2.2.3 启动sonar
      • 2.2.4 部署插件
    • 2.3 sonar检查java代码
      • 2.3.1 创建sona项目
      • 2.3.2 分析java代码
      • 2.3.3 Jenkins结合sonar检查代码
    • 2.4 sonar检查非java代码
      • 2.4.1 创建项目
      • 2.4.2 部署SonarScanner CLI
      • 2.4.3 Jenkins结合sonar检查代码
  • 3. nexus-maven仓库(私服)
    • 3.1 部署软件
    • 3.2 页面访问
    • 3.3 修改远程仓库地址
    • 3.4 修改maven的配置地址
  • 4. Jenkins用户权限管理(RBAC)
    • 4.1 Jenkins设置
    • 4.2 RBAC配置
      • 4.2.1 新增Jenkins用户
      • 4.2.2 配置权限
      • 4.2.3 分配权限
  • 5. Jenkins基于docker的完整流程
  • 6. 思维导图

0. 老男孩思想-选对池塘钓美人鱼

找女朋友不建议找高学历的(硕士、博士)。否则就等着人家虐你吧,累的都不知道咋死的。找宠物找智商高的,因为宠物智商最高不过3岁儿童的智商,你可以玩弄于股掌之间,若你找个智商比你还高的宠物,那你不死也会扒层皮。

男生的标配学历是本科,女生的标配学历是大专。

找女朋友,要找气质好的、身材好的,不要找妖艳的。

—以上经验来自老男孩老师的亲身感悟

1. 代码回滚方案

在这里插入图片描述

2. SonarQube

SonarQube 是 一个开源的静态代码分析平台,用于帮助开发团队提升代码质量和安全性=。它能够自动检测代码中的潜在问题,例如错误、漏洞、代码异味和安全风险,并提供详细的报告和分析结果。

  • 官方地址:[Code Quality, Security & Static Analysis Tool with SonarQube | Sonar](https://www.sonarsource.com/products/sonarqube/)
  • 官方下载地址:[Download SonarQube | Sonar](https://www.sonarsource.com/products/sonarqube/downloads/)
  • 历史版本:[下载以前的 SonarQube 服务器版本 |声纳](https://www.sonarsource.com/products/sonarqube/downloads/historical-downloads/)

2.1 代码检查工具

使用阶段代码安全检查工具说明用法
部署前Sonarqube(开源,商业)安全、质量检查部署前,Jenkins通过sonar命令调用
部署前OWASP Dependency-Check根据漏洞库,做漏洞扫描Jenkins插件
运行中AppScan(商业)漏扫工具
运行中awvs(商业)扫描业务漏洞、应用楼顶部署
运行中nessus(商业)扫描系统漏洞部署
运行中hm(河马)(开源)漏扫,webshell(网站后门)部署软件;二进制部署
运行中绿盟、奇安信、云安全中心
运行中trivy、clair、容器环境扫描容器部署

2.2 部署sonarqube

2.2.1 软件要求

  • Sonarqube 7.7 jdk 1.8 MySQL数据库
  • Sonarqube 8.9 lts jdk 11
  • sonarqube从7.9后不支持MySQL,支持PostgreSQL、PSQL、Oracle

  1. sonarqube基于java开发,所以需要安装OpenJDK8版本
  2. sonarqube需要依赖MySQL数据库,至少5.6版本以上
  3. sonarqube的小型实例至少需要4G内存,如果是大型实例需要16G

2.2.2 安装软件

  • 软件包和插件:sonarqube-7.7.zip等2个文件 链接: https://pan.baidu.com/s/1iAcRDLDrgmqk4i4EUj91tQ?pwd=ubpp 提取码: ubpp
# 安装jdk
[root@devops-sonarqube ~]# yum install -y java
# 部署sonarqube
[root@devops-sonarqube ~]# mkdir -p /app/tools
[root@devops-sonarqube ~]# unzip sonarqube-7.7.zip -d /app/tools
……
[root@devops-sonarqube ~]# ln -s /app/tools/sonarqube-7.7 /app/tools/sonar
[root@devops-sonarqube ~]# cd /app/tools/sonar/conf
# sonar对MySQL版本的要求
[root@devops-sonarqube /app/tools/sonar/conf]# grep -E 'MySQL' sonar.properties 
#----- MySQL >=5.6 && <8.0
# 配置普通用户
# sonar中有elasticsearch,es需要普通用户运行
[root@devops-sonarqube ~]# useradd sonar
[root@devops-sonarqube ~]# chown -R sonar:sonar /app/tools/sonar/
  • 启动sonar数据库:mysql
[root@docker01 ~]# docker run -d --name sonar_db -p 3306:3306 --restart always -e MYSQL_ROOT_PASSWORD=1 -e MYSQL_DATABASE=sonar -e MYSQL_USER=sonar -e MYSQL_PASSWORD=1  mysql:5.7-debian
949f44bdd19213012d9c5761d82b493bb31925dbbeaae117c3d68de47a973dc6
[root@docker01 ~]# docker ps |grep mysql
949f44bdd192   mysql:5.7-debian                      "docker-entrypoint.s…"   7 seconds ago   Up 7 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   sonar_db
  • 修改配置文件:/app/tools/sonar/conf/sonar.properties

在这里插入图片描述

2.2.3 启动sonar

[root@devops-sonarqube ~]# su - sonar -c "/app/tools/sonar/bin/linux-x86-64/sonar.sh start"
Starting SonarQube...
Started SonarQube.
[root@devops-sonarqube ~]# ss -lntup |grep -E '9000|9001'
tcp    LISTEN  0       25                        *:9000                 *:*      users:(("java",pid=8266,fd=118))                           
tcp    LISTEN  0       128      [::ffff:127.0.0.1]:9001                 *:*      users:(("java",pid=8177,fd=86))   
  • 主机添加hosts

在这里插入图片描述

  • 前端页面访问

在这里插入图片描述

在这里插入图片描述

2.2.4 部署插件

# 删掉原有插件
[root@devops-sonarqube /app/tools/sonar/extensions/plugins]# rm *
文件,目录已经移动到回收站:/recyle/tmp.o49otsVpDL
[root@devops-sonarqube /app/tools/sonar/extensions/plugins]# ll ~/sonarqube*gz
-rw-r--r-- 1 root root 76055738  81 08:34 /root/sonarqube_7.7.plugins_new.tar.gz
[root@devops-sonarqube /app/tools/sonar/extensions/plugins]# tar xf ~/sonarqube_7.7.plugins_new.tar.gz 
[root@devops-sonarqube /app/tools/sonar/extensions/plugins]# mv plugins/* .
[root@devops-sonarqube /app/tools/sonar/extensions/plugins]# rm plugins/
文件,目录已经移动到回收站:/recyle/tmp.yxCWpFOYKu
  • 重启sonar
[root@devops-sonarqube ~]# su - sonar -c "/app/tools/sonar/bin/linux-x86-64/sonar.sh restart"
Stopping SonarQube...
SonarQube was not running.
Starting SonarQube...
Started SonarQube.

2.3 sonar检查java代码

2.3.1 创建sona项目

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 令牌:a4e2ef0f0b5e4b5342bb8443de5e9bbb22d38d67

在这里插入图片描述

2.3.2 分析java代码

mvn sonar:sonar \-Dsonar.projectKey=java \-Dsonar.host.url=http://sonar.oldboy.cn:9000 \-Dsonar.login=a4e2ef0f0b5e4b5342bb8443de5e9bbb22d38d67 clean package
  • 做好hosts解析

在这里插入图片描述

  • 使用sonar命令编译代码

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.3.3 Jenkins结合sonar检查代码

sonar:sonar
-Dsonar.projectName=${JOB_NAME}
-Dsonar.projectKey=${JOB_NAME}
-Dsonar.host.url=http://sonar.oldboy.cn:9000
-Dsonar.login=a4e2ef0f0b5e4b5342bb8443de5e9bbb22d38d67
clean package

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.4 sonar检查非java代码

2.4.1 创建项目

在这里插入图片描述

在这里插入图片描述

  • 令牌:b2ca01afe7b2e7807a6389eaee44e2591b025fc9

在这里插入图片描述

  • sonar命令:
sonar-scanner \-Dsonar.projectKey=china \-Dsonar.sources=. \-Dsonar.host.url=http://sonar.oldboy.cn:9000 \-Dsonar.login=b2ca01afe7b2e7807a6389eaee44e2591b025fc9

2.4.2 部署SonarScanner CLI

  • 软件包:sonar-scanner-cli-4.7.0.2747-linux.zip 链接: https://pan.baidu.com/s/1rTT4DbTnYLYkprCrPs8o3A?pwd=6yww 提取码: 6yww
[root@devops-jenkins /app/tools]# unzip sonar-scanner-cli-4.7.0.2747-linux.zip 
[root@devops-jenkins /app/tools]# ln -s sonar-scanner-4.7.0.2747-linux sonar-scanner
# 测试
[root@devops-jenkins /app/code/china/china-ex-main]# /app/tools/sonar-scanner/bin/sonar-scanner  -Dsonar.projectKey=china   -Dsonar.sources=.   -Dsonar.host.url=http://sonar.oldboy.cn:9000   -Dsonar.login=b2ca01afe7b2e7807a6389eaee44e2591b025fc9
……

2.4.3 Jenkins结合sonar检查代码

# sonar扫描器路径写绝对路径
sonar-scanner \-Dsonar.projectName=${JOB_NAME} \-Dsonar.projectKey=${JOB_NAME} \-Dsonar.sources=. \-Dsonar.host.url=http://sonar.oldboy.cn:9000 \-Dsonar.login=b2ca01afe7b2e7807a6389eaee44e2591b025fc9

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3. nexus-maven仓库(私服)

3.1 部署软件

  • 软件包:nexus-3.13.0-01-unix.tar.gz 链接: https://pan.baidu.com/s/15Ebhb7K5iro-GR3UNBnPJw?pwd=c1pp 提取码: c1pp
[root@devops-nexus ~]# mkdir -p /app/tools
[root@devops-nexus ~]# tar xf nexus-3.13.0-01-unix.tar.gz -C /app/tools/
[root@devops-nexus ~]# ln -s /app/tools/nexus-3.13.0-01 /app/tools/nexus
[root@devops-nexus ~]# ln -s /app/tools/nexus/bin/nexus /sbin/
# 安装jdk1.8
[root@devops-nexus ~]# yum install -y java-1.8.0-openjdk
……
  • 启动服务,nexus端口是8081
[root@devops-nexus ~]# nexus start
WARNING: ************************************************************
WARNING: Detected execution as "root" user.  This is NOT recommended!
WARNING: ************************************************************
Starting nexus
[root@devops-nexus ~]# ss -lntup |grep 8081
tcp     LISTEN   0        50               0.0.0.0:8081           0.0.0.0:*      users:(("java",pid=2673,fd=871))  
  • 主机添加解析

在这里插入图片描述

3.2 页面访问

在这里插入图片描述

在这里插入图片描述

3.3 修改远程仓库地址

  • Nexus向远程仓库获取本地没有的依赖,默认是官方地址;需要修改成阿里云的下载源
  • https://maven.aliyun.com/nexus/content/groups/public/

在这里插入图片描述

3.4 修改maven的配置地址

  • maven获取依赖时,不再直接访问阿里云,而是访问Nexus
[root@devops-jenkins /app/tools/maven/conf]# cp settings.xml settings.xml.bak 
[root@devops-jenkins /app/tools/maven/conf]# vim settings.xml
  • maven的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"><pluginGroups></pluginGroups><proxies></proxies><servers><server>   <id>my-nexus-releases</id>   <username>admin</username>   <password>admin123</password>   </server>   <server>   <id>my-nexus-snapshot</id>   <username>admin</username>   <password>admin123</password>   </server></servers><mirrors><mirror><id>nexus</id><mirrorOf>*</mirrorOf><url>http://10.0.0.74:8081/repository/maven-public/</url></mirror></mirrors><profiles><profile><id>nexus</id><repositories><repository><id>central</id><url>http://10.0.0.74:8081/repository/maven-public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories><pluginRepositories><pluginRepository><id>central</id><url>http://10.0.0.74:8081/repository/maven-public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></pluginRepository></pluginRepositories></profile></profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
  • 编译代码,测试一下

在这里插入图片描述

在这里插入图片描述

4. Jenkins用户权限管理(RBAC)

  • Jenkins默认每个用户的权限都是最⾼权限。
  • 需要让用户与任务关联(RBAC)
  • RBAC:基于角色的认证

4.1 Jenkins设置

  • 查看RBAC插件是否安装

在这里插入图片描述

在这里插入图片描述

  • 用户权限策略

在这里插入图片描述

在这里插入图片描述

4.2 RBAC配置

4.2.1 新增Jenkins用户

在这里插入图片描述

在这里插入图片描述

4.2.2 配置权限

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.2.3 分配权限

在这里插入图片描述

在这里插入图片描述

5. Jenkins基于docker的完整流程

在这里插入图片描述

6. 思维导图

https://kdocs.cn/join/gpuxq6r?f=101\r\n邀请你加入共享群「老男孩教育Linux运维99期-孙克旭」一起进行文档协作

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【前端基础】15、列表元素、表格元素、表单元素(注:极其粗略的记载。)

一、列表元素 1、什么是列表元素2、有序列表&#xff08;ol、li&#xff09; ol有序列表 直接子元素只能是li。 li列表中的每一项。3、无序列表&#xff08;ul、li&#xff09; ol无序列表 直接子元素只能是li。 li列表中的每一项。4、定义列表&#xff08;dl、dt、dd&#xff…

IRFBG30PBF Vishay威世MOSFET场效应管

IRFBG30PBF Vishay威世&#xff1a;超快MOSFET 场效应管一、产品定位IRFBG30PBF 是Vishay威世推出的600V/30A N沟道功率MOSFET&#xff0c;采用第五代TrenchFET技术&#xff0c;专为开关电源、电机驱动、新能源逆变器等高功率场景设计。以85mΩ超低导通电阻和超快反向恢复&…

【07-AGI的讨论】

AI ANI&#xff1a;artificial narrow intelligence; 如 智能音箱&#xff1b;自动驾驶汽车&#xff0c;网络搜索&#xff0c;其他用于专业特定事项的工具&#xff1b; AGI&#xff1a;artificial general intelligence; building AI systems that could do anything a typical…

[激光原理与应用-225]:机械 - 3D图与2D图各自的作用

在机械设计与加工领域&#xff0c;3D图和2D图是两种核心的工程表达方式&#xff0c;它们在产品设计、制造、装配及维护等环节中扮演不同角色&#xff0c;具有互补性。以下是它们各自的作用及具体应用场景的详细解析&#xff1a;一、3D图的作用1. 直观展示产品全貌三维可视化&am…

【从零开始java学习|第一篇】java中的名词概念(JDK、JVM、JRE等等)

目录 一、核心运行环境三要素&#xff08;JVM/JRE/JDK&#xff09; 二、常用开发指令&#xff08;JDK 自带工具&#xff09; 三、一些其他概念 四、总结核心逻辑链 要入门 Java&#xff0c;理解核心概念之间的关系是基础。以下是 Java 中最核心的基础概念、工具及相关名词的…

UVa12345 Dynamic len(set(a[L:R]))

[TOC](UVa12345 Dynamic len(set(a[L:R]))) 题目链接 UVA - 12345 Dynamic len(set(a[L:R])) 题意 有编号从 0 到 n−1 的 n 个数&#xff0c;有两种操作&#xff1a; Q L R 询问编号 L 到编号 R−1 的数中有多少个不同的数字。M X Y 将编号为 X 的数字改为 Y。 你的任务就是…

[Ubuntu] VNC连接Linux云服务器 | 实现GNOME图形化

将桌面环境修改为 GNOME 并通过 VNC 远程访问的步骤 & TightVNC 的安装与配置说明&#xff1a;1. 安装 GNOME 桌面环境 sudo apt update sudo apt install ubuntu-gnome-desktop -y2. 安装 TightVNC 服务器 sudo apt install tightvncserver -y3. 初始化 VNC Server 并设置…

进程、网络通信方法

一、进程间通信(IPC)方法 适用于同一台主机上的进程间数据交换。 管道(Pipe) 匿名管道:单向通信,仅用于父子进程。 命名管道(FIFO):通过文件系统路径访问,支持无亲缘关系进程。 消息队列(Message Queue) 结构化消息(类型+数据),按类型读取,支持异步通信。…

[激光原理与应用-241]:设计 - 266n皮秒深紫外激光器,哪些因素影响激光器紫外光的输出功率?

一、短期稳定性266nm皮秒深紫外激光器紫外光输出功率的稳定性受非线性晶体性能、光学系统设计、热管理效果、重复频率与脉冲能量匹配度、环境干扰控制等因素影响&#xff0c;具体分析如下&#xff1a;1. 非线性晶体性能晶体选择与状态&#xff1a;BBO&#xff08;偏硼酸钡&…

Django配置sqllite之外的数据库

当连接到其他数据库后端时&#xff0c;如 MariaDB、MySQL、Oracle 或 PostgreSQL&#xff0c;将需要额外的连接参数。请参阅下面的 ENGINE 配置&#xff0c;了解如何指定其他数据库类型。这个例子是针对 PostgreSQL&#xff1a; 在django项目的settings.py文件里&#xff0c;关…

银河通用招人形机器人强化学习算法工程师了

人形强化学习算法工程师&#xff08;26届&#xff09;&#xff08;岗位信息已通过jobleap.cn授权&#xff0c;可在csdn发布&#xff09;银河通用机器人 北京收录时间&#xff1a; 2025年08月11日职位描述1. 研发基于深度强化学习的足式机器人运动控制算法&#xff0c;提升机器…

使用MongoDB存储和计算距离

一、MongoDB 计算距离的优势 优势说明原生地理空间索引支持 2dsphere 索引&#xff0c;高效处理地理坐标查询&#xff08;毫秒级响应&#xff09;。内置地理计算函数提供 $near、$geoWithin、$geoNear 等操作符&#xff0c;无需手动实现复杂计算。高性能基于B树索引优化&#…

鸿蒙开发-ArkUI中@Type作用详细解答

在鸿蒙&#xff08;HarmonyOS&#xff09;应用开发中&#xff0c;Type 是 ArkUI 框架中用于 类型定义和类型检查 的关键注解&#xff08;装饰器&#xff09;。它的主要作用是为自定义组件的属性提供明确的类型约束&#xff0c;确保数据传递的类型安全性。 核心作用解析&#xf…

MCU中的存储器映射(Memory Map)

MCU中的存储器映射(Memory Map) 在MCU(微控制器单元)中,存储器映射(Memory Map)是指将不同类型的存储器(如Flash、RAM、外设寄存器等)和功能模块分配到统一的地址空间的过程。这种映射方式使得CPU可以通过访问特定地址来读写数据或控制外设,而无需关心物理存储介质的…

Rust面试题及详细答案120道(11-18)-- 控制流与函数

《前后端面试题》专栏集合了前后端各个知识模块的面试题&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…

数据结构-排序(2)

一、堆排序 &#xff08;借助树&#xff09;1.利用完全二叉树构建大顶堆 2.堆顶元素和堆底元素进行交换&#xff0c;堆底元素不再参与构建&#xff0c;剩余元素继续构建大顶堆3.时间复杂度 O(nlogn)1.完全二叉树&#xff1a;按照从上到下&#xff0c;从左到右的顺序进行排序2.…

Qt-信号和槽

一.信号和槽概念1. 信号&#xff08;Signal&#xff09;概念&#xff1a;信号是 Qt 对象在状态发生变化或事件发生时自动发出的通知。比如按钮被点击、文本框内容变化、定时器超时等&#xff0c;都会发出相应信号。本质&#xff1a;它只是一个函数声明&#xff08;没有函数体&a…

NLP学习开始-02逻辑回归

逻辑回归什么是逻辑回归逻辑回归的应用场景逻辑回归几个重要概念Sigmoid 函数损失函数构建逻辑回归模型的步骤举个例子参数解释模型优化什么是逻辑回归 逻辑回归&#xff08;Logistic Regression&#xff09;是一种广泛应用于分类问题的统计学习方法&#xff0c;尽管名字中带有…

【运维进阶】LAMPLNMP 最佳实践

LAMP/LNMP 最佳实践 LAMP/LNMP 组件 LAMP&#xff1a;LinuxApacheMysql/MariadbPHP/Python/Perl。 LNMP&#xff1a;LinuxNginxMysql/MariadbPHP/Python/Perl。 Linux&#xff1a;操作系统&#xff0c;提供程序运行基础。Apache/Nginx&#xff1a;Web 服务器&#xff0c;提供网…

深入解析 resolv.conf 文件:DNS 配置的核心

/etc/resolv.conf 文件是 Linux 和类 Unix 系统中 DNS 配置的核心组件。它决定了系统如何将域名解析为 IP 地址&#xff0c;这是网络通信的关键环节。本文将深入探讨 resolv.conf 文件的核心内容&#xff0c;重点讲解 nameserver 指令以及 options 配置中的 attempts 和 rotate…