CICD构建实验

article/2025/9/22 10:17:06

CICD

CICD是一个可以集部署、拉取、上传等于一体的架构环境,它支持一线进行部署,免去了人工一条条的进行部署环境的工作流程,大大降低了人力手工运维成本和出错率。
CICD的搭建需要至少三台服务器,他们分别监管着Harbor(镜像仓库存储),git(开发代码仓库存储),Jenkings(一键化部署)

企业级镜像Harbor部署

docker镜像级的存储可以储存在docker hub 上,也可以储存在自建本地仓库上,而Harbor属于本地仓库的其中一种,该软件可以提供图形化界面操作,安装简单,且方便查看。
它是一个类似docker hub的可以使用浏览器进行登录操作查看的软件,又不需要像docker hub需要直接网上拉取,导致容易出现丢包、拉取失败的现象,因此国内很多企业都会将安装包存放于此。

安装

1)首先需要一台虚拟机,在搭建好docker和compose的情况下才能进行Harbor的下载,其中Harbor的下载有多种,有在线安装(通过docker hub下载镜像),这边讲的就是离线下载,即直接安装安装包。安装包可以通过官方地址:https://vmware.github.io/harbor/cn/ 去进行下载

2)准备一台虚拟机,其ip地址为192.168.53.10,将下载好的Harbor安装包拉入到虚拟机中。

3)安装docker:
创建docker专用下载通道:

yum install -y yum-utils
yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo开启存储库
yum-config-manager --enable docker-ce-nightly
yum-config-manager --enable docker-ce-test安装docker
yum install docker-ce docker-ce-cli containerd.io安装完成后使用命令使docker永久开启
systemctl start docker
systemctl enable docker

4)安装compose(可以直接将编辑好的compose放置/usr/local/bin下,并且更改为可执行文件即可)

5)解压Harbor压缩包,并且将压缩包放置在/usr/local目录下:
tar -xf harbor-offline-installer-v1.9.1.tar

6)修改文件vi /etc/docker/daemon.json ,添加如下代码:

{"insecure-registries":[“192.168.9.10"]}			\\更改成自己Harbor的IP地址systemctl restart docker		\\重启docker

7)进入解压好的harbor文件中,编写vim harbor.yml,将hostname改为自己的地址
在这里插入图片描述

8)./prepare
./install.sh
进行安装

8)当完成安装后,即可通过本机地址进行浏览器的访问,账户名为admin,密码默认为Harbor12345

9)当我们上传某个镜像的时候,即可通过tag改名(harbor的ip地址/存放的标签/文件名:标签)来进行改名,并且上传。
上传的话首先需要进行登录,登录的形式为docker login ip地址 -uadmin -pHarbor12345 的形式来登录,如果忽略了后面的一步,系统会默认登录到docker hub网页
在这里插入图片描述

在这里插入图片描述

10)创建存放镜像的项目页(也可以称之为目录)
在这里插入图片描述

11)上传镜像,第一步,登录:docker login 192.168.53.10 -uadmin -pHarbor12345
12)第二步,镜像改名: docker tag hello-world 192.168.53.10/xiaoyang/hello-world:v1
13)第三步,上传镜像:docker push 192.168.53.10/xiaoyang/hello-world:v1
14)第四步:验证,可以在xiaoyang的项目页中进行查看
15)为了完成DIDC的实验,需要提前将tomcat镜像放置在harbor的项目中
在这里插入图片描述

git 开发语言存放仓库

Harbor是用于镜像的存放的,而git则是用于开发语言的存放的,二者分工不同,但却是架构中的一员,现实中,最首先由开发工作人员上传代码和数据进入git,而后由运维从Jenkings来进行一键化的部署
需要新开一台服务器:192.168.53.20

安装

1)安装git首先需要拥有ssh软件,但是该程序linux是自带拥有的,所以可以直接进行下载,如果没有ssh,可以使用:yum install openssh.x86_64来进行下载
2)yum install -y git 下载git,也可以通过官网中下载安装包进行拉取
git官网:https://mirrors.edge.kernel.org/pub/software/scm/git/

3)使用git version命令可以查看git版本,同时也可以进行查看git是否进行安装
4)创建用户,用户名字随意,但是尽量还是使用和git相关的名字
useradd gitme
passwd 123
5)切换到gitme用户
6)

mkdir demo.git		#创建名为demo.git的用户
cd demo.git/	
git --bare init 		#在该目录下,初始化仓库

jenkings一键部署

jenkings是一款可以实现一键化部署的软件,以往,一个开发软件或者app的部署需要从测试到上线起码需要一天的时间,而jenkings通过与其他服务器的联动的,大大简化了到正式上线为止的繁琐步骤,所以,这也是jenkings被人选择的原因。
需要新开一台服务器:192.168.53.30

安装

1)准备材料:jenkings主机上需要安装docker、tomcat、java文件等,其中,docker是为了进行部署,tomcat、jdk则是为了进行java代码的编译(jenkings需要接触java)
2)yum -y install java 安装java模块
3)yum -y install maven
4)docker安装略,而后将tomcat的安装包拉进/usr/local的目录中,进入tomcat的bin目录下,输入./startup.sh启动tomcat
5)为了不影响使用,需要将tomcat的webapps里的目录删除,只留ROOT
6)将.war包放入到ROOT下
7)将.war包用unzip解压
上述为源代码安装,yum安装如下:

wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key		#导入公钥
yum install jenkins#通过java命令可以查看jenkins是否正常下载完成
java -jar /usr/lib/jenkins/jenkins.war --httpPort=端口号	#命令可以开启jenkins
#该端口号不可与别的端口号重复

开启过后可以直接使用端口ip地址:端口号 来进行浏览器访问
在这里插入图片描述

8)从镜像平台拉包,并且更改,此操作先不要开启tomcat或者jenkings

git clone https://github.com/407777853/java-demo
cd java-demo/
vi .git/config 
[core]repositoryformatversion = 0filemode = truebare = falselogallrefupdates = true
[remote "origin"]url = gitme@192.168.53.20:/home/gitme/demo.git			#修改这一步为自己的git服务器fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]remote = originmerge = refs/heads/master

8)cd java-demo

git add .		#添加该代码进入存储git库
git status		#查看git库
git commit -m "all"	
[root@localhost java-demo]# git push origin master
Everything up-to-date

9)免密登录

ssh-keygen 
ssh-copy-id gitme@192.168.53.20

10)根据内容提示cat /root/.jenkins/secrets/initialAdminPassword,来将密码复制粘贴并且放置在浏览器中。
11)根据推荐来安装相应的模块
12)可以进行注册登录
在这里插入图片描述

13)上传jenkings的私钥到网页上:cat /root/.ssh/id_rsa
14)添加凭据,将类型改为SSH Username with private key
在这里插入图片描述

15)而后在凭据中会生成该凭据id
在这里插入图片描述

16)新建item,选择流水线(已安装好的模块)
在这里插入图片描述
在这里插入图片描述

stage为任务项
这边要注意的是checkout这一列需要将对应的凭据ID更改,并且指向git服务器
其余的为镜像服务器,并且要确保路径和你的Harbor项目对应

17)执行Build now命令开始构建
18)而后便可以完成一键部署

备注

如果没构建成功,有以下可能:
1、所需要的模块因为网络等问题并没有下载成功
2、脚本配置文件中的IP地址和指向地点有没有写对的遗漏地点


http://chatgpt.dhexx.cn/article/AjSUcQVM.shtml

相关文章

请问什么是 CICD

CI,Continuous Integration,持续集成。CD,Continuous Deployment,持续部署。CICD 一般合称,无需特意区分二者区别。从开发、测试到上线的过程中,借助于 CICD 进行一些自动化处理,保障项目质量。 CICD 与 git 集成在一起,可理解为服务器端的 git hooks: 当代码 push 到…

企业级生产环境CICD入门

代码上线方案 部署代码,就是把程序包,传到linux服务器上,然后运行。 以前都是手动上传。 合理化上线方案 上线之前需要备份。 大型企业上线制度和流程 代码上线解决方案注意事项 持续集成,持续交付,持续部署&#…

前端搭建CICD流程

用Docker-compose 安装gitlab、gitlab-runner 源码地址 如果您觉得有用请STAR 安装docker 如果有已安装旧版docker需要先卸载 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docke…

搭建CICD平台

** 搭建CICD平台 ** 1、主机准备。 2、安装前预配置。准备相应的系统配置与软件依赖。 3、执行安装。 4、安装后配置。添加相应的组件以及修改配置。如导入模板等。 一、主机准备 Centos7.2 配置:内存大于4G。(其中Jenkins占1.5G、Gitlab占2G&#xf…

什么是CICD

什么是CICD 一、简介二、持续集成(CI)三、持续交付(CD)四、持续部署(CD)五、下一步是什么? 一、简介 CI / CD的采用改变了开发人员和测试人员如何发布软件。 最初是瀑布模型,后来是…

CI/CD是什么

文章目录 前言CI/CD概念持续集成(Continuous integration,CI)持续交付(Continuous Delivery,CD)持续部署(Continuous Deployment,CD)CI/CD小结 CI/CD 工具CI/CD 配置文件…

CICD简介

简介 CICD 是 持续集成(Continuous Integration)持续交付和持续部署(Continuous Deployment)简称。指在开发过程中自动执行一系列从开发到部署的过程中,尽量减少人工的介入。 CI 持续集成 ​ 定义:频繁…

都在说CI/CD,到底什么是CI/CD

引入 这篇文章是自己工作多年对CI/CD的理解,纯属个人见解。 不想说太多概念性的东西,直接从技术人员实际能接触的过程来展开说说。另外我这篇只是想关注一些通用的流程,细节的不同这里不纠结。比如微服务的CI/CD和单体服务有些不同&#xf…

自动化运维CICD

目录 概述 为什么持续集成和发布可以提高效率 如何实现 1、在linux服务器安装部署代码仓库 2、安装jenkins 使用shell脚本实现CICD 使用pipeline实现CICD 使用Blue Ocean实现CICD 概述 持续集成(Continuous Integration,CI)和持续发布&#xff0…

什么是 CI/CD ?

说在开头 CI、CD 其实是三个概念,包含了一个 CI 和两个 CD,CI全称 Continuous Integration,表示持续集成,CD包含 Continuous Delivery和 Continuous Deployment,分别是持续交付和持续部署。这三个概念之间是有前后依赖…

【神经网络】一文读懂LSTM神经网络

简介 说到LSTM神经网络,大家都不陌生,LSTM指的是Long Short-Term Memory,意思是:长短时记忆,也就是说这个神经网络有记忆功能,为什么说它有记忆功能呢?因为在训练数据的时候,很久之前…

深度学习中的循环神经网络LSTM详解

(一)、什么是循环神经网络LSTM? LSTM指的是长短期记忆网络(Long Short Term Memory),它是循环神经网络中最知名和成功的扩展。由于循环神经网络有梯度消失和梯度爆炸的问题,学习能力有限,在实际任务中的效果…

【神经网络】学习笔记三—LSTM简介篇

1. RNN和LSTM结构对比 RNN: 循环神经网络(Recurrent Neural Network,RNN)是一种用于处理序列数据的神经网络。相比一般的神经网络来说,他能够处理序列变化的数据。比如某个单词的意思会因为上文提到的内容不同而有不…

深度学习-LSTM网络-代码-示例

一、 LSTM网络原理 要点介绍 (1)LSTM网络用来处理带“序列”(sequence)性质的数据,比如时间序列的数据,像每天的股价走势情况,机械振动信号的时域波形,以及类似于自然语言这种本身带有顺序性质的由有序单…

LSTM模型介绍

递归神经网络(RNN) 人类不会每时每刻都开始思考。 当你阅读这篇文章时,你会根据你对之前单词的理解来理解每个单词。 你不会忘掉掉所有东西,然后再从头开始思考。 你的想法有持久性。 传统的神经网络不能做到这一点,…

人人都能用Python写出LSTM-RNN的代码![你的神经网络学习最佳起步]

0. 前言 本文翻译自博客: iamtrask.github.io ,这次翻译已经获得trask本人的同意与支持,在此特别感谢trask。本文属于作者一边学习一边翻译的作品,所以在用词、理论方面难免会出现很多错误,假如您发现错误或者不合适…

LSTM神经网络算法

RNN RNN 是包含循环的网络,允许信息的持久化。 在下面的示例图中,神经网络的模块,A,正在读取某个输入 x_i,并输出一个值 h_i。循环可以使得信息可以从当前步传递到下一步。 RNN 可以被看做是同一神经网络的多次复制&…

Understanding LSTM Networks(LSTM的网络结构)

Recurrent Neural Networks 人类不是每时每刻都从头开始思考的。当你读这篇文章的时候,你理解每个单词是基于你对以前单词的理解。你不会把所有的东西都扔掉,然后从头开始思考。你的思想有毅力。传统的神经网络无法做到这一点,这似乎是一个主…

理解 LSTM 网络

递归神经网络人类并不是每时每刻都从头开始思考。正如你阅读这篇文章的时候,你是在理解前面词语的基础上来理解每个词。你不会丢弃所有已知的信息而从头开始思考。你的思想具有持续性。传统的神经网络不能做到这点,而且这似乎也是它的主要缺陷。比如&…

LSTM网络的简单理解

目录 RNN递归神经网络LSTM神经网络结构变形1.peephole connections结构2.在忘记门与输入门之间引入一个耦合3.门循环单元(GRU) 今天对LSTM网络进行学习。 在理解LSTM网络之前,我们首先要对Recurrent Neural Networks(RNNs&#xf…