7.持续集成持续交付企业示例

为了让容器构建镜像可以持续集成并自动上传到harbor仓库,业务主机通过持续交付自动从仓库中下载镜像最近版本并实现业务更新

image-20250824133037448

7.1 在jenkins中添加registry节点

7.1.1 在业务节点中安装docker和java环境并配置其可以从仓库中下载镜像
# 新增一台docker主机进行业务实现 ---> 给每台主机配置好解析
~]# systemctl disable --now firewalld
~]# cat /etc/hosts
172.25.254.50   gitlab.dhj.org
172.25.254.60   jenkins.dhj.org
172.25.254.100  dockernode.dhj.org
172.25.254.200  reg.dhj.org
[root@dockernode ~]# vim /etc/yum.repos.d/docker.repo
[docker]
name = docker
baseurl = https://mirrors.aliyun.com/docker-ce/linux/rhel/9/x86_64/stable/
gpgcheck = 0[root@dockernode ~]# dnf makecache
[root@dockernode ~]# dnf install docker-ce fontconfig java-21-openjdk git -y# 从harbor仓库中把认证文件复制到当前主机
[root@dockernode ~]# mkdir  /etc/docker/certs.d/reg.dhj.org/ -p
[root@dockernode ~]# scp root@172.25.254.200:/data/certs/dhj.org.crt  /etc/docker/certs.d/reg.dhj.org/ca.crt
[root@dockernode ~]# vim /etc/docker/daemon.json
[root@dockernode ~]# systemctl restart docker
[root@dockernode ~]# systemctl enable --now docker# 测试一下docker是否安装好
[root@dockernode ~]# docker info | grep httpshttps://reg.dhj.org/
[root@dockernode ~]# docker pull nginx
[root@dockernode ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        latest    5ef79149e0ec   12 months ago   188MB
7.1.2 部署jenkins节点
7.2.1.1 在harbor仓库主机中安装java环境及git
[root@harbor harbor]# dnf install  fontconfig java-21-openjdk git -y
# 设定git命令补全功能
[root@CICD-node1 timinglee]# echo "source  /usr/share/bash-completion/completions/git" >> ~/.bashrc
[root@CICD-node1 timinglee]# source  ~/.bashrc

image-20250823161330801

初始只有一个master节点

image-20250824151320726

image-20250824151814981
# 添加凭证
# 用户 --> root
# 密码 --> root

image-20250824152009357

image-20250824162734864

7.2 配置构建节点

7.2.1 在jenkins中安装构建插件
# 此处在上面已经安装过了,本处可以忽略

7.2.2 设置jenkins的容器构建规则

image-20250824163024532

image-20250824163112834

image-20250824163242769

image-20250824164107080 image-20250824163702462 image-20250824164335380

7.3 解决ca证书问题

# 诊断SSL证书问题
[root@reg reg.dhj.org]# curl -v https://reg.dhj.org/v2/ 2>&1 | grep -E "(SSL|cert|CA)"
*  CAfile: /etc/pki/tls/certs/ca-bundle.crt
* TLSv1.2 (OUT), TLS alert, unknown CA (560):
* SSL certificate problem: self-signed certificate
curl: (60) SSL certificate problem: self-signed certificate
More details here: https://curl.se/docs/sslcerts.html# 获取服务器当前证书
[root@reg reg.dhj.org]# echo | openssl s_client -connect reg.dhj.org:443 -showcerts 2>/dev/null | \
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/current_cert.pem# 比较证书文件
[root@reg reg.dhj.org]# diff /etc/docker/certs.d/reg.dhj.org/ca.crt /tmp/current_cert.pem# 复制证书到系统CA存储目录
[root@reg reg.dhj.org]# cd
[root@reg ~]# cp /etc/docker/certs.d/reg.dhj.org/ca.crt  /etc/pki/ca-trust/source/anchors/# 更新CA信任存储
[root@reg ~]# update-ca-trust
# 验证证书已被添加
[root@reg ~]# openssl verify /etc/docker/certs.d/reg.dhj.org/ca.crt# 重启Docker服务
[root@reg ~]# systemctl restart docker# 重载docker compose
[root@reg ~]# cd harbor/
[root@reg harbor]# docker compose down && docker compose up -d# 测试连接
[root@reg harbor]# curl -v https://reg.dhj.org/v2/
*   Trying 172.25.254.200:443...
* Connected to reg.dhj.org (172.25.254.200) port 443 (#0)# 测试Docker是否能与Registry--harbor仓库正常通信
[root@reg harbor]# docker pull reg.dhj.org/library/nginx:latest
# 成功!

7.4 测试镜像构建

在gitlab中建立Dockerfile和index.html

[root@gitlab timinglee]# vim index.html
www.dhj.org v1[root@gitlab timinglee]# vim Dockerfile
FROM nginx
COPY index.html /usr/share/nginx/html[root@gitlab timinglee]# git add index.html Dockerfile
[root@gitlab timinglee]# git status -s[root@gitlab timinglee]# git commit -m "webserver v1"
[root@gitlab timinglee]# git push -u origin main

image-20250824173111616

image-20250824173139708

7.4 在业务节点自动运行

# 上面的ssh.hpi的插件上面已经装过

image-20250824180128117

image-20250824180227498

image-20250824180342110

image-20250824180437949

image-20250824175617641

image-20250824175845541

image-20250824175910402

# command命令
docker ps -a | grep myapp && docker rm -f myapp && docker rmi  reg.dhj.org/library/webserver:latest
sleep 4
docker run -d --name myapp -p 80:80 reg.dhj.org/library/webserver:latest
# 此时会发现并没有改变
# 是由于docker-action此项目是由timinglee这个项目触发的

image-20250824180936788

# 可以自己构建(手动触发)
image-20250824181113940 image-20250824181157560

image-20250824181138235

# 此时去浏览器中搜索172.25.254.100即可看到测试效果

image-20250824181254333

7.5 测试效果

[root@gitlab timinglee]# vim index.html
[root@gitlab timinglee]# git commit -a -m "webserver v4"
[root@gitlab timinglee]# git push -u origin main

image-20250824182616969

image-20250824182602826

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

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

相关文章

C++ 入门核心知识

一、C 课程概述与发展历史1. 发展历程:从 C 语言扩展到标准化C 的起源可追溯至 1979 年,由贝尔实验室的 Bjarne Stroustrup 主导开发。当时他为解决大型项目开发中 C 语言在可维护性和扩展性上的不足,在 C 语言基础上引入了面向对象编程特性。…

labelme数据标注保姆级教程:从安装到格式转换全流程,附常见问题避坑指南(含视频讲解)

引言:为什么选择labelme? 在人工智能和机器学习领域,高质量的标注数据是训练优秀模型的基础。而 labelme作为一款开源、跨平台的图像标注工具,凭借其强大的功能和易用性,成为了数据标注领域的热门选择。 它支持多种标…

人工智能-python-深度学习-自动微分

自动微分:基础概念与应用 自动微分(Autograd)是现代深度学习框架(如PyTorch、TensorFlow)中的一个核心功能。它通过构建计算图并在计算图上自动计算梯度,简化了反向传播算法的实现。以下是自动微分的基本概…

k8s原理及操作

简介 kubernetes的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器 进行管理。目的是实现资源管理的自动化,主要提供了如下的主要功能: 自我修复:一旦某一个容器崩溃,能够在…

理解音频响度:LUFS 标准及其计算实现

LUFS 及其重要性 1.1、什么是 LUFS? LUFS(Loudness Units relative to Full Scale)是音频工程中用于测量感知响度的标准单位。它已成为广播、流媒体和音乐制作领域的行业标准,用于确保不同音频内容具有一致的响度水平。 LUFS 是 I…

【在ubuntu下使用vscode打开c++的make项目及编译调试】

在ubuntu下使用vscode打开c的make项目及编译调试第一步:安装必要的软件第二步:示例项目准备1. 创建C源文件: main.cpp2. 创建头文件: utils.h3. 创建实现文件: utils.cpp第三步:使用 VS Code 打开项目第四步…

3-2.Python 函数 - None(None 概述、None 应用场景)

一、None 概述在 Python 中,None 是一个特殊的常量,用于表示空值或无值None 是 Python 中唯一的一个 NoneType 类型的实例二、None 应用场景 1、定义变量 None 常用于初始化变量,表示该变量暂时不需要有具体值 name Noneprint(name) print(t…

js获取html元素并设置高度为100vh-键盘高度

获取HTML元素并设置高度为(100vh - 键盘高度) 我将设计一个页面,展示如何获取HTML元素并动态设置其高度为视口高度减去键盘高度,这在移动设备上特别有用,可以避免键盘遮挡内容。 设计思路 创建一个带有输入框的界面,模拟键盘弹…

基于SpringBoot的校园博客管理系统

🔗 目录 一. 前言   二. 前端框架、后端框架以及存储框架使用情况说明   三. 核心技术     1. ✅Java开发语言     2. ✅MyBatis     3. ✅Mysql     4. ✅Vue     5. ✅部署项目   四. 演示效果     1. 管理员功能模块       …

Nginx + Certbot配置 HTTPS / SSL 证书

前提条件: 1.已有域名 2.Nginx 已安装并正在运行,且有对应的 Server 配置 3.防火墙开放 80 和 443 端口 安装 EPEL 仓库: sudo yum install epel-release -y安装 Snapd sudo yum install snapd -y启用并启动 Snapd Socket sudo systemctl ena…

图结构使用 Louvain 社区检测算法进行分组

图结构使用 Louvain 社区检测算法进行分组 flyfish Louvain 算法是一种基于模块度最大化的社区检测算法,核心目标是在复杂网络中找到“内部连接紧密、外部连接稀疏”的社区结构。它的优势在于高效性(可处理百万级节点的大规模网络)和近似最优…

layui.formSelects自定义多选组件在layer.open中使用、获取、复现

layui.formSelects自定义多选组件在layer.open中使用、获取、复现 引入css和js //<th:block th:include"include :: layui-formSelects-css"/> <link th:href"{/ajax/libs/layui-formSelects/formSelects-v4.css}" rel"stylesheet"/>…

基于SpringBoot的社团管理系统【2026最新】

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

运行node18报错

又碰到一个奇葩的问题&#xff0c;报错如下> tigermes.vue30.1.0 serve > vue-cli-service serveBrowserslist: caniuse-lite is outdated. Please run:npx update-browserslist-dblatestWhy you should do it regularly: https://github.com/browserslist/update-db#rea…

Python第三方库IPFS-API使用详解:构建去中心化应用的完整指南

目录 Python第三方库IPFS-API使用详解&#xff1a;构建去中心化应用的完整指南 引言&#xff1a;IPFS与去中心化存储的革命 星际文件系统&#xff08;IPFS&#xff0c;InterPlanetary File System&#xff09;是一种革命性的点对点超媒体协议&#xff0c;旨在创建持久且分布式的…

ETL与iPaaS的融合方案:加速数据集成流程

在今天的商业世界里&#xff0c;数据几乎无处不在。企业每天都在产生和接收海量的数据——从CRM到ERP&#xff0c;从云端SaaS应用到本地数据库&#xff0c;来源越来越分散&#xff0c;集成也越来越复杂。 传统的ETL工具&#xff08;提取、转换、加载&#xff09;在处理结构化数…

详解flink SQL基础(四)

文章目录1.Flink SQL介绍2.streaming SQL&watermarks使用3.窗口聚合&#xff08;window aggregations&#xff09;4.over aggregations5.FlinkSQL 流连接&#xff08;Streaming join&#xff09;6.使用MATCH_RECOGNIZE 进行模式识别和复杂事件处理7.变更记录&#xff08;ch…

有鹿机器人:为城市描绘清洁新图景的智能使者

一、智慧清洁&#xff1a;科技赋能的环境革新每天清晨&#xff0c;当我沿着小区路径缓缓行驶&#xff0c;双激光雷达系统便开始精准测绘环境。我的专业清扫能力源自2cm精度死亡贴边技术&#xff0c;这项让同行惊叹的能力&#xff0c;可以轻松震出嵌了十年的烟头&#xff0c;彻底…

Tableau Server高危漏洞允许攻击者上传任意恶意文件

Tableau Server 存在一个严重安全漏洞&#xff0c;可能允许攻击者上传并执行恶意文件&#xff0c;最终导致系统完全沦陷。该漏洞编号为 CVE-2025-26496&#xff0c;CVSS 评分为 9.6 分&#xff0c;影响 Windows 和 Linux 平台上的多个 Tableau Server 和 Tableau Desktop 版本。…

数据结构07(Java)-- (堆,大根堆,堆排序)

前言 本文为本小白&#x1f92f;学习数据结构的笔记&#xff0c;将以算法题为导向&#xff0c;向大家更清晰的介绍数据结构相关知识&#xff08;算法题都出自&#x1f64c;B站马士兵教育——左老师的课程&#xff0c;讲的很好&#xff0c;对于想入门刷题的人很有帮助&#x1f4…