CICD 持续集成与持续交付——jenkins
部署
软件下载:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/
[root@cicd2 ~]# rpm -ivh jdk-11.0.15_linux-x64_bin.rpm[root@cicd2 ~]# yum install -y fontconfig[root@cicd2 ~]# rpm -ivh jenkins-2.432-1.1.noarch.rpm 启动服务
[root@cicd2 ~]# systemctl enable --now jenkins.service [root@cicd2 ~]# netstat -antlp|grep :8080 
登录
192.168.92.22:8080
初始密码
[root@cicd2 ~]# cat /var/lib/jenkins/secrets/initialAdminPassword 
安装推荐插件

无需新建用户,直接使用admin账户


配置
修改密码
新建项目
在jenkins主机上安装git工具
[root@cicd2 ~]# yum install -y git 创建密钥并上传gitlab
[root@cicd2 ~]# ssh-keygen[root@cicd2 ~]# cat .ssh/id_rsa.pub 
添加gitlab认证凭据

复制私钥
配置ssh
[root@cicd2 ~]# vim /etc/ssh/ssh_configStrictHostKeyChecking no
构建触发器
构建任务
查看控制台输出
实时触发
安装gitlab插件
配置项目触发器
配置gitlab
再回到demo项目下配置
测试推送

添加jenkins节点
新建虚拟机cicd3
安装jdk和git
[root@cicd3 ~]# rpm -ivh jdk-11.0.15_linux-x64_bin.rpm[root@cicd3 ~]# yum install -y git 配置解析
[root@cicd3 ~]# cat /etc/hosts 
在节点管理中添加节点
配置从节点
cicd3 ssh认证
关闭master节点的构建任务数
关闭git主机校验
最后测试构建,构建任务会在docker1节点上运行
自动化构建docker镜像
在cicd3上安装docker-ce
[root@cicd3 ~]# cd /etc/yum.repos.d/[root@cicd3 yum.repos.d]# cat docker.repo 
[root@cicd3 yum.repos.d]# yum install -y docker-ce 修改内核参数
[root@cicd3 ~]# vim /etc/sysctl.d/docker.conf net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1 [root@cicd3 ~]# sysctl --system[root@cicd3 ~]# systemctl enable --now docker 配置docker默认仓库
[root@cicd3 ~]# vim /etc/docker/daemon.json {"registry-mirrors": ["https://reg.westos.org"]
}

[root@cicd3 ~]# systemctl restart docker 拷贝仓库证书
[root@k8s1 ~]# cd /etc/docker/[root@k8s1 docker]# scp -r certs.d/ 192.168.92.23:/etc/docker/ [root@cicd3 ~]# ls /etc/docker/certs.d/reg.westos.org/ca.crt 
测试
[root@cicd3 ~]# docker pull nginx 
登录私有harbor仓库
[root@cicd3 ~]# docker login reg.westos.org
安装CloudBees Docker Build and Publish插件
配置项目构建
在server1上提交Dockerfile
[root@cicd1 dockerfile]# cat Dockerfile 
[root@cicd1 demo]# git status -s[root@cicd1 demo]# git add Dockerfile[root@cicd1 demo]# git commit -m "add Dockerfile"[root@cicd1 demo]# git push -u origin main 此时gitlab会主动触发jenkins构建任务,观察jenkins的任务输出
通过ssh插件交付任务
jenkins安装ssh插件
进入系统配置,添加ssh主机

新建ssh项目
当docker项目成功运行后触发ssh项目
构建后查看输出
RBAC
安装插件
修改默认授权策略
新建测试用户
新建角色
用户授权
使用不同的用户登录,测试权限是否正确
pipeline
安装ssh agent 插件
新建流水线项目 docker_image_build
复制一下脚本并做相应修改
pipeline {agent anystages {stage('check out') {steps {git credentialsId: 'e44734dd-bdce-4a18-9722-bc51ca25ddd6', url: 'git@192.168.92.21:root/dockerfile.git', branch: 'main'}}stage('docker build') {steps {sh '''cd $WORKSPACEdocker build -t reg.westos.org/library/webserver:${BUILD_NUMBER} .'''}}stage('docker push') {steps {sh '''REPOSITORY=reg.westos.org/library/webserver:${BUILD_NUMBER}docker tag $REPOSITORY reg.westos.org/library/webserver:latestdocker login reg.westos.org -u admin -p westosdocker push $REPOSITORYdocker push reg.westos.org/library/webserver:latest'''}}stage('docker deploy') {steps {sshagent(credentials: ['044d5700-a59d-4f63-a241-7530117879c3']) {sh '''ssh -o StrictHostKeyChecking=no root@192.168.92.23 """docker ps -a |grep myapp && docker rm -f myappdocker rmi reg.westos.org/library/webserver:latestdocker run -d --name myapp -p 80:80 reg.westos.org/library/webserver:latest """'''}}}}
} 注意:ssh需要使用ssh免密认证

jenkins结合ansible参数化构建
主机环境
| 主机 | IP | 角色 |
| cicd2 | 192.168.92.22 | jenkins、ansible |
| cicd1 | 192.168.92.21 | 测试机test、devops sudo |
| cicd3 | 192.168.92.23 | 测试机prod、devops sudo |
安装ansible
[root@cicd2 ~]# vim /etc/yum.repos.d/ansible.repo [ansible]
name=epel
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/
gpgcheck=0 [root@cicd2 ~]# yum install -y ansible 
devops是测试机的ssh免密用户,并且配置sudo
[root@cicd1 ~]# useradd devops[root@cicd1 ~]# echo westos | passwd --stdin devops[root@cicd1 ~]# visudo 

cicd3同上配置

在ansible主机上以jenkins身份配置ssh免密到所有测试机
[root@cicd2 ~]# usermod -s /bin/bash jenkins[root@cicd2 ~]# su - jenkins-bash-4.2$ ssh-keygen-bash-4.2$ ssh-copy-id devops@192.168.92.21-bash-4.2$ ssh-copy-id devops@192.168.92.23 

新建gitlab项目
克隆项目
[root@cicd1 ~]# git clone git@192.168.92.21:root/playbook.git 
[root@cicd1 ~]# cd playbook/[root@cicd1 playbook]# vim ansible.cfg [defaults]
command_warnings=False
remote_user=devops[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False [root@cicd1 playbook]# mkdir inventory[root@cicd1 playbook]# cd inventory/ [root@cicd1 inventory]# vim test[test]
192.168.92.21 http_port=8000 [root@cicd1 inventory]# vim prod[prod]
192.168.92.23 http_port=8080 [root@cicd1 inventory]# cd ..[root@cicd1 playbook]# vim playbook.yaml ---
- hosts: alltasks:- name: install the latest version of Apacheyum:name: httpdstate: latest- name: configure apachetemplate:src: httpd.conf.j2dest: /etc/httpd/conf/httpd.confnotify: restart apache- name: Start service httpd, if not startedservice:name: httpdstate: startedenabled: yeshandlers:- name: restart apacheservice:name: httpdstate: restarted 
[root@cicd1 playbook]# yum install -y httpd[root@cicd1 playbook]# cp /etc/httpd/conf/httpd.conf .[root@cicd1 playbook]# mv httpd.conf httpd.conf.j2[root@cicd1 playbook]# vim httpd.conf.j2 
推送项目
[root@cicd1 playbook]# git add .[root@cicd1 playbook]# git status -s[root@cicd1 playbook]# git commit -m "add playbook.yaml"[root@cicd1 playbook]# git push -u origin main 
jenkins新建项目playbook
选择参数构建
控制台输出
相关文章:
CICD 持续集成与持续交付——jenkins
部署 软件下载:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/ [rootcicd2 ~]# rpm -ivh jdk-11.0.15_linux-x64_bin.rpm[rootcicd2 ~]# yum install -y fontconfig[rootcicd2 ~]# rpm -ivh jenkins-2.432-1.1.noarch.rpm启动服务 [rootcicd2 ~]# systemctl…...
【Zabbix】Zabbix Agent 2在Ubuntu/Debian系统上的安装
一、Zabbix Agent 2介绍 Zabbix Agent 2是一款监控软件,由Zabbix SIA开发。Zabbix Agent 2可以提供系统、服务、应用程序和网络设备的监控及性能指标数据收集。它是通过在被监视的主机上运行来获取数据。Zabbix Agent 2可以在Linux、Unix、Windows和MAC平台上运行&…...
浅谈无线测温产品在菲律宾某工厂配电项目的应用
摘要:配电系统是由多种配电设备和配电设施所组成的变换电压和直接向终端用户分配电能的一个电力网络系统。由于配电系统作为电力系统的一个环节直接面向终端用户,它的完善与否直接关系着广大用户的用电可靠性和用电质量,因而在电力系统中具有…...
软件工程第十一周
面向对象 面向对象编程(Object-Oriented Programming, OOP)不仅仅是一种程序设计方法,它更是一种深刻的软件工程开发思想。这种思想的核心在于通过抽象和封装来模拟现实世界中的对象和概念,以便更好地管理和解决复杂的软件工程问…...
【从入门到起飞】JavaSE—带你了解Map,HashMap,TreeMap的使用方法
🎊专栏【Java基础】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【The truth that you leave】 🥰欢迎并且感谢大家指出我的问题 文章目录 🌺双列集合的特点🎄Map🍔Ma…...
[Docker]六.Docker自动部署nodejs以及golang项目
一.自动部署nodejs 1.创建node项目相关文件 app.js代码如下: var express require(express);var appexpress();app.get(/,function(req,res){res.send(首页update); }) app.get(/news,function(req,res){res.send(首页); })//docker做端口映射的时候不要指定ip app.listen(30…...
FPC焊点剥离失效分析
一、案例背景 FPC在后续组装过程中,连接器发生脱落。在对同批次的样品进行推力测试后,发现连接器推力有偏小的现象。据此进行失效分析,明确FPC连接器脱落原因。 #1、#2样品连接器脱落连接器脱落;#3样品连接器未脱落;…...
Java爬虫框架下代理使用中的TCP连接池问题及解决方案
引言 当使用Java爬虫框架进行代理爬取时,可能会遇到TCP连接池问题,导致"java.net.BindException: Cannot assign requested address"等错误。本文将介绍如何以爬取小红书为案例,解决Java爬虫框架中代理使用中的TCP连接池问题&…...
PostgreSQL 数据定义语言 DDL
文章目录 表创建主键约束非空唯一约束检查约束外键约束默认值约束 触发器表空间构建表空间 视图索引索引的基本概念索引的分类创建索引 物化视图 表创建 PostgreSQL表的构建语句与所有数据库都一样,结构如下,其核心在于构建表时,要指定上一些…...
设计模式-行为型模式-策略模式
一、什么是策略模式 策略模式是一种行为设计模式,它允许在运行时选择算法或行为,并将其封装成独立的对象,使得这些算法或行为可以相互替换,而不影响使用它们的客户端。(ChatGPT生成) 主要组成部分ÿ…...
ResizeObserver观察元素宽度的变化
ResizeObserver观察元素宽度的变化 ResizeObserver观察元素宽度的变化 ResizeObserver观察元素宽度的变化 ResizeObserver 构造函数创建一个新的 ResizeObserver 对象,它可以用于监听 Element 内容盒或边框盒或者 SVGElement 边界尺寸的大小。查看详细说明 案例 &l…...
斐波那契数列,剑指offer,力扣
目录 题目地址: 我们直接看题解吧: 解题方法: 难度分析: 审题目事例提示: 解题思路(动态规划): 代码实现: 补充说明: 代码(优化)&…...
Mac安装CocoaPods
安装HomeBrew 安装 % /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"安装失败 % /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"curl: (28) F…...
APP专项测试方法和工具的使用(测试新手必看)
APP专项测试 1、网络测试 可使用抓包工具辅助网格测试推荐:fiddler,Charles (1)网络切换2G-3G-4G-wifi-网络信号差--无网(2)网络信号弱关注是否出现ANR、crash 2、中断测试 (1)…...
WordPress网站迁移实战经验
前几日,网站服务器到期,换了服务商,就把我的WordPress的网站迁移到本地电脑了。方便以后文章迁移。 本次迁移网站主要经历以下几个步骤。 1.域名转出。 2.备份数据库及网站文件下载。 3.重新搭建WordPress网站。 4.网站文件及数据库导入。 下面详细介绍下每个步骤的操作…...
3D全景视角,足不出户感知真实场景的魅力
近年来,随着科技的快速发展,普通的平面静态视角已经无法满足我们了,不管是视角框架的限制还是片面的环境展示,都不足以让我们深入了解场景环境。随着VR全景技术的日益成熟,3D全景技术的出现为我们提供了全新的视觉体验…...
C编译环境和预处理(非常详细,建议收藏)
C编译环境和预处理(非常详细,建议收藏) 一、程序的翻译环境和执行环境二、 详解编译链接2.1 翻译环境2.2 编译本身的几个阶段符号汇总、符号表、合并段表、符号表的合并和重定位分别是什么? 2.2 运行环境 三、预处理详解3.1 预定义…...
LeetCode669. Trim a Binary Search Tree
文章目录 一、题目二、题解 一、题目 Given the root of a binary search tree and the lowest and highest boundaries as low and high, trim the tree so that all its elements lies in [low, high]. Trimming the tree should not change the relative structure of the …...
YOLOv8优化策略:轻量级Backbone改进 | VanillaNet极简神经网络模型 | 华为诺亚2023
🚀🚀🚀本文改进:一种极简的神经网络模型 VanillaNet,支持vanillanet_5, vanillanet_6, vanillanet_7, vanillanet_8, vanillanet_9, vanillanet_10, vanillanet_11等版本 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到创新,…...
【数据结构(二)】稀疏 sparsearray 数组(1)
文章目录 1. 稀疏数组的应用场景1.1. 一个实际的需求1.2. 基本介绍 2. 稀疏数组转换的思路分析3. 稀疏数组的代码实现3.1. 二维数组转稀疏数组3.2. 稀疏数组转二维数组 4. 课后练习 1. 稀疏数组的应用场景 1.1. 一个实际的需求 问题: 编写的五子棋程序中&…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
