当前位置: 首页 > news >正文

CI/CD持续集成及持续交付详解

CICD持续集成及持续交付

1.CICD是什么

CI/CD 是指持续集成(Continuous Integration)和持续部署(Continuous Deployment)或持续交付(Continuous Delivery)

1.1 持续集成(Continuous Integration)

持续集成是一种软件开发实践,团队成员频繁地将他们的工作集成到共享的代码仓库中。其主要特点包括:

  1. 频繁提交代码:开发人员可以每天多次提交代码,确保代码库始终保持最新状态。
  2. 自动化构建:每次提交后,自动触发构建过程,包括编译、测试、静态分析等。
  3. 快速反馈:如果构建失败或测试不通过,能够快速地向开发人员提供反馈,以便及时修复问题。

1.2 持续部署(Continuous Deployment)

持续部署是在持续集成的基础上,将通过所有测试的代码自动部署到生产环境中。其特点如下:

  1. 自动化流程:从代码提交到生产环境的部署完全自动化,无需人工干预。
  2. 高频率部署:可以实现频繁的部署,使得新功能能够快速地提供给用户。
  3. 风险控制:需要有强大的测试和监控体系来确保部署的稳定性和可靠性。

1.3 持续交付(Continuous Delivery)

持续交付与持续部署类似,但不一定自动部署到生产环境,而是随时可以部署。其重点在于确保软件随时处于可发布状态。

CI/CD 的好处包括:

  1. 提高开发效率:减少手动操作和等待时间,加快开发周期。
  2. 尽早发现问题:通过频繁的集成和测试,问题能够在早期被发现和解决。
  3. 降低风险:减少了大规模部署时可能出现的问题,提高了软件的质量和稳定性。
  4. 增强团队协作:促进团队成员之间的沟通和协作,提高团队的整体效率。

常见的 CI/CD 工具包括 Jenkins、GitLab CI/CD、Travis CI 等。这些工具可以帮助团队实现自动化的构建、测试和部署流程。

2.git工具使用

2.1 git简介

Git 是一个分布式版本控制系统,被广泛用于软件开发中,以管理代码的版本和变更。

2.1.1 主要特点
  • 分布式
    • 每个开发者都有完整的代码仓库副本,这使得开发者可以在离线状态下进行工作,并且在网络出现问题时也不会影响开发。
    • 即使中央服务器出现故障,开发者仍然可以在本地进行开发和查看项目历史。
  • 高效的分支管理
    • Git 中的分支创建和切换非常快速和简单。开发人员可以轻松地创建新的分支来进行新功能的开发或修复 bug,而不会影响主分支。
    • 合并分支也相对容易,可以使用多种合并策略来满足不同的需求。
  • 快速的版本回退
    • 如果发现某个版本存在问题,可以快速回退到之前的版本。
    • 可以查看每个版本的详细变更记录,方便了解代码的演进过程。
  • 强大的提交管理
    • 每个提交都有一个唯一的标识符,可以方便地引用和查看特定的提交。
    • 提交可以包含详细的提交信息,描述本次提交的更改内容。
  • 支持协作开发
    • 开发者可以将自己的更改推送到远程仓库,供其他开发者拉取和合并。
    • 可以处理多个开发者同时对同一文件进行修改的情况,通过合并冲突解决机制来确保代码的完整性。

Git必看秘籍:https://git-scm.com/book/zh/v2

2.2 git 工作流程

Git 有三种状态:已提交(committed)、已修改(modified) 和 已暂存(staged)。

  • 已修改表示修改了文件,但还没保存到数据库中。
  • 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
  • 已提交表示数据已经安全地保存在本地数据库中。

这会让我们的 Git 项目拥有三个阶段:工作区、暂存区以及 Git 目录。

3.部署git

3.1 安装git

# 在rhel9的系统中默认自带git
[root@CICD-node1 ~]# dnf install git  -y# 设定命令补全功能
[root@CICD-node1 timinglee]# echo "source  /usr/share/bash-completion/completions/git" >> ~/.bashrc
[root@CICD-node1 timinglee]# source  ~/.bashrc

3.2 初始化

获取 Git 仓库通常有两种方式

  • 将尚未进行版本控制的本地目录转换为 Git 仓库。
  • 从其它服务器克隆 一个已存在的 Git 仓库。比如: git clone

初始化版本库

[root@CICD-node1 ~]# mkdir  timinglee
[root@CICD-node1 timinglee]# git init
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint:   git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint:   git branch -m <name>[root@CICD-node1 timinglee]# ls -a
.  ..  .git
[root@CICD-node1 timinglee]# ls .git/
branches  config  description  HEAD  hooks  info  objects  refs# 设定用户信息
[root@CICD-node1 timinglee]# git config --global user.name "timinglee"
[root@CICD-node1 timinglee]# git config --global user.email "timinglee@timinglee.org"# 查看当前文件状态
[root@CICD-node1 timinglee]# git status
On branch masterNo commits yetnothing to commit (create/copy files and use "git add" to track)[root@CICD-node1 timinglee]# git status -s		#简化输出

[!WARNING]

.git目录是git跟踪管理版本库的,没事别瞎溜达

4.git的使用方法

4.1 常用方法

[root@CICD-node1 timinglee]# echo timnglee > README.md
[root@CICD-node1 timinglee]# git status
位于分支 master尚无提交未跟踪的文件:(使用 "git add <文件>..." 以包含要提交的内容)README.md提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
[root@CICD-node1 timinglee]# git status -s
?? README.md					# ??	新建文件未添加到版本库[root@CICD-node1 timinglee]# git add README.md
[root@CICD-node1 timinglee]# git status  -s
A  README.md					# A 已添加到暂存区# 提交暂存区的数据
[root@CICD-node1 timinglee]# git commit -m "add README.md"
[root@CICD-node1 timinglee]# git status -s		# 无任何显示,标识已经提交到版本库# 再次修改
[root@CICD-node1 timinglee]# vim README.md
timnglee
timnglee
[root@CICD-node1 timinglee]# git status -sM README.md									# 右M 表示文件在工作区被修改# 撤销修改
[root@CICD-node1 timinglee]# git checkout -- README.md[root@CICD-node1 timinglee]# cat README.md
timnglee# 重新修改
[root@CICD-node1 timinglee]# echo timinglee> README.md
[root@CICD-node1 timinglee]# git add README.md
[root@CICD-node1 timinglee]# git status -s
M  README.md									# 左M表示文件已经在版本库中并被跟踪,# 从暂存区撤销
[root@CICD-node1 timinglee]# git restore --staged README.md
[root@CICD-node1 timinglee]# git status -sM README.md# 重新提交
[root@CICD-node1 timinglee]# git add README.md
[root@CICD-node1 timinglee]# git status -s
M  README.md# 更新
[root@CICD-node1 timinglee]# git commit -m "update v1"
[master 6a14bb5] update v11 file changed, 1 insertion(+), 1 deletion(-)[root@CICD-node1 timinglee]# git status -s# 更新文件
[root@CICD-node1 timinglee]# echo timinglee >> README.md
[root@CICD-node1 timinglee]# git add README.md
[root@CICD-node1 timinglee]# echo timinglee >> README.md
[root@CICD-node1 timinglee]# git status -s
MM README.md								# MM表示有一部分在暂存区,还有一部分没有提交# 如果现在提交只能提交在暂存区中的部分
[root@CICD-node1 timinglee]# git commit -m "update v2"
[master dc9b45f] update v21 file changed, 1 insertion(+)
[root@CICD-node1 timinglee]# git status -sM README.md								# 右M还在# 查看已暂存和未暂存的修改变化
[root@CICD-node1 timinglee]# echo timinglee >> README.md
[root@CICD-node1 timinglee]# git diff
diff --git a/README.md b/README.md
index 62be538..f08851c 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,4 @@timingleetiminglee
+timinglee
+timinglee# 跳过使用暂存区,只能在提交过的在版本库中存在的文件使用如果文件状态是“??”不能用此方法
[root@CICD-node1 timinglee]# git commit -a -m "update v3"# 撤销工作区中删除动作
[root@CICD-node1 timinglee]# touch lee.txt
[root@CICD-node1 timinglee]# git add lee.txt
[root@CICD-node1 timinglee]# git commit  -m "add lee.txt"# 从版本库中删除文件
[root@CICD-node1 timinglee]# git rm lee.txt
rm 'lee.txt' 
[root@CICD-node1 timinglee]# git status -s
D  lee.txt								# 左D表示文件删除动作被提交到暂存区[root@CICD-node1 timinglee]# git status -sD lee.txt								# 右D表示文件在工作区被删除
[root@CICD-node1 timinglee]# git checkout -- lee.txt
[root@CICD-node1 timinglee]# ls
dir1  lee.txt  README.md[root@CICD-node1 timinglee]# git commit -m "delete lee.txt"
[root@CICD-node1 timinglee]# git status -s# 恢复从版本库中被删除的文件
[root@CICD-node1 timinglee]# git log			# 查看操作日志[root@gitlab timinglee]# git reflog				# 查看提交动作
25a4fec (HEAD -> master) HEAD@{0}: commit: delete lee.txt
be6ec2a HEAD@{1}: commit: add lee.txt			# 下面会用到到# 版本回退到删除之前[root@gitlab timinglee]# git reset --hard be6ec2a
HEAD is now at be6ec2a add lee.txt
[root@gitlab timinglee]# ls
lee.txt  README.md

4.2 git对于文件如何忽略

在做软件开发时对源码编译会产生一些临时文件,我们在提交时需要忽略这些临时文件

[root@CICD-node1 timinglee]# mkdir dir1/
[root@CICD-node1 timinglee]# touch dir1/.file2
[root@CICD-node1 timinglee]# git status -s
?? .file1
?? dir1/[root@CICD-node1 timinglee]# echo .file1 > .gitignore
[root@CICD-node1 timinglee]# git status -s
?? .gitignore
?? dir1/
[root@CICD-node1 timinglee]# echo ".*" > .gitignore
[root@CICD-node1 timinglee]# git status -s

5.gitlab代码仓库

5.1 gitlab简介

  • GitLab 是一个用于仓库管理系统的开源项目,使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务。
  • GitLab 具有很多功能,比如代码托管、持续集成和持续部署(CI/CD)、问题跟踪、合并请求管理等。它可以帮助开发团队更好地协作开发软件项目,提高开发效率和代码质量。

官网:https://about.gitlab.com/install/

中文站点: https://gitlab.cn/install/

官方包地址:https://packages.gitlab.com/gitlab/gitlab-ce

5.2 gitlab 的部署实施

5.2.1 部署gitlab

部署gitlab需要内存大于4G

# 在安装包之前需配置好软件仓库来解决依赖性
[root@CICD-node1 ~]# yum install -y curl policycoreutils-python-utils  openssh-server perl[root@CICD-node1 ~]# dnf install gitlab-ce-17.1.6-ce.0.el9.x86_64.rpm -y
image-20250823144614590
5.2.2 配置gitlab
# 修改配置文件
[root@CICD-node1 ~]# cd /etc/gitlab/
[root@CICD-node1 gitlab]# ls
gitlab.rb
[root@CICD-node1 gitlab]# vim gitlab.rb
32 external_url 'http://172.25.254.80'# 修改配置文件后需利用gitlab-crt来生效,
[root@CICD-node1 gitlab]# gitlab-ctl reconfigure
# 执行命令成功后会把所有组件全部启动起来
5.2.3 登陆gitlab

用户名默认为 root 。如果在安装过程中指定了初始密码,则用初始密码登录,如果未指定密码,则系统会随机生成一个密码并存储在 /etc/gitlab/initial_root_password 文件中, 查看随机密码并使用 root 用户名登录。

[!WARNING]

注意:出于安全原因,24 小时后,/etc/gitlab/initial_root_password 会被第一次 gitlab-ctl reconfigure 自动删除,因此若使用随机密码登录,建议安装成功初始登录成功之后,立即修改初始密码。

# 查看原始密码
[root@CICD-node1 gitlab]# cat /etc/gitlab/initial_root_password
Password: jN9lq6NSP8a2V+4n57djzWlEGP7RZ43DSIse8sXJGTQ=		# 密码(后面需要改密码!要不然密码24小时换一次--账户默认root---后面设置成Dhjnb520即可)# 进入浏览器搜索172.25.254.50
5.2.3.1 登陆

image-20250823145511650

5.2.3.2 设置语言
Snipaste_2025-08-23_14-57-43
5.2.3.3 设置密码
image-20250823150617284 image-20250823150602482

5.3 在gitlab中新建项目

image-20250823151559942 image-20250823151736589
# 生成sshd密钥
[root@CICD-node1 ~]# ssh-keygen		# 一路回车
[root@CICD-node1 ~]# cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC5Zg+ZbnTCrOPVne0OhYzGhxIsAcyuq7dGvG8EkMl+KGZD4+4vI3dxznQHbIa2ZNoC6gatHzdCty5KK+Ipkywzq0YSxJEzjfbCQX8n8AHRka7EI/IlkGenwD3ALkncMop7GmMNiNgfpFqQCTpM/cptXzDdAVA5AwRgIVB1efCU7QhwL/IHs91eAqH4ZalGh2W+hRAjdc3Iv68TyOTMFU5qg9CuEb899+qu8qCZlerj49ot7cps5O0wDFfyYopIKvdeYzDCDXTkd+dlHUqeSaSOh1yccCobT10wVmZDYdV7cDBsjZN3mlTKfCUAixVlyreWMXUyjQx1I+6iy0PVfrOt98ZjLb6D2oSFljvVeO57f3U/NRw90H1yOZ/FPrCGXfueSmwya9d+A6WtJFQ+eirrtqh8Q4Vy87BL2GbaKZxoLdvt7b5crqix95KzY4IAE51HvS6KQDlpR8PQKokTvRzDHWcEfcbpnBpPPA06oB89RNAeEJksaykcVen9peksRVs= root@gitlab.dhj.org

上传公钥到gitlab中

image-20250823151956656

image-20250823152015696

下载项目

# 做此实验之前,需要将前面的timinglee目录删除,以免影响实验效果!
[root@gitlab ~]# rm -rf timinglee
[root@gitlab ~]# git clone  git@172.25.254.50:root/timinglee.git[root@CICD-node1 ~]# ls -R
./timinglee:
README.md[root@gitlab ~]# cd timinglee/
[root@gitlab timinglee]# ls
README.md
[root@gitlab timinglee]# git remote -v
origin  git@172.25.254.50:root/timinglee.git (fetch)
origin  git@172.25.254.50:root/timinglee.git (push)# 文件提交
[root@CICD-node1 timinglee]# echo timinglee > timinglee
[root@CICD-node1 timinglee]# git add timinglee
[root@CICD-node1 timinglee]# git commit -m "add timinglee"
[root@CICD-node1 timinglee]# git push -u origin main# 去浏览器中进行网页刷新,发现已经成功!
image-20250823155017067

6.jenkins

6.1 jenkins 简介

image-20250824123714527
  • Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。
  • Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行

CI(Continuous integration持续集成)持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。

CD(Continuous Delivery持续交付) 是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中

6.2 部署 jenkins

软件下载:https://www.jenkins.io/download/

jenkins需要部署在新的虚拟机中

[!WARNING]

jenkins需要部署在新的虚拟机中,建议最少4G内存,4核心cpu

# 安装依赖包
[root@jenkins ~]# dnf install -y fontconfig java-21-openjdk# 安装jenkins
[root@jenkins ~]# dnf install -y jenkins-2.516.2-1.1.noarch.rpm# 启动jenkins
[root@jenkins ~]# systemctl enable --now jenkins.service# 查看原始密码
[root@jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
f0d8f8bb85ff4b81aa65db1aff88d0ac
# 浏览器中进行172.25.254.60:8080

部署插件

image-20250823155846715

# 如果网络环境不对;
# 此时会发现,很慢而且过不去,上传资源包里面的文件即可[root@jenkins ~]# cd  /var/lib/jenkins/
[root@jenkins jenkins]# systemctl stop jenkins.service
[root@jenkins jenkins]# rm -fr plugins
[root@jenkins ~]# ls
jenkins-2.516.2-1.1.noarch.rpm  plugins.tar.gz
[root@jenkins ~]# tar zxf /root/plugins.tar.gz -C  /var/lib/jenkins/[root@jenkins ~]# systemctl enable --now jenkins.service
[root@jenkins ~]# systemctl restart jenkins.service			# 一定要进行重启!!!
[root@jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
f0d8f8bb85ff4b81aa65db1aff88d0ac
# 再次去测试即可# 出现满屏红,后退之后进行安装即可
image-20250823161149759 image-20250823163440076 image-20250823163528592 image-20250823163544060

[!NOTE]

建议修改admin的密码,在admin的设置中修改即可

image-20250823164510617

6.3 jenkins 与gitlab的整合

# 下载git命令
[root@CICD-node1 ~]# dnf install git  -y
[root@CICD-node1 timinglee]# echo "source  /usr/share/bash-completion/completions/git" >> ~/.bashrc
[root@CICD-node1 timinglee]# source  ~/.bashrc

这个错误的原因是因为本机没有gitlab上的sshkey

[root@jenkins ~]# ssh-keygen
[root@jenkins ~]# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCv//RUt7dZbb5N6P6SF/nnmSMqgYPHTs3UQ2gCYeAFiS0i917BCwQURsCrh6fnIgk2NOuzP6ZxuE5fqqvBM6gaME1/o/GFvavy7Qe22alrYhSTxITUgVEwwgn1dqjzEB/AmbBMwTCf7VUJHISkchmuUNOhtynwBrZDobzMP+wHFOdpSoL9WRUSEOEHMhAvSZmU7uhyXorOyKBD/cryTq4ul8CRO5oor5Te+YhJEctA7UhXa11Ug1rFp+tZhr8RPWjk6BFMenexq6nDHPwcKgtRz9fXo+DRrJSwGWs9IFQt5skpyRcjJpb4fXsP66aTSr/PgGW+oaAQJGGRenLxU+ys7yx4wxP7JHSeOlibeeDzl8QTtVq6lXH9/0RNo/VDJUr97uBmUKBpZpRBg50PWvx9OmCC6dB/rKSGBe3xFgnGGqlB9v4mXyGMixFwBteQ4PG4DD95BnItfwtoe8XyqiTBGmYl0uhI13Bhh6e0q3eqDdN0033EG/I8qz8aJXKM7RU= root@jenkins.dhj.org

把此密钥添加到gitlab上即可

image-20250823164903386

添加密钥凭据

[root@jenkins ~]# cd .ssh/
[root@jenkins .ssh]# cat id_rsa
-----BEGIN OPENSSH PRIVATE KEY-----
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
-----END OPENSSH PRIVATE KEY-----

image-20250823174310053

image-20250823174336056

image-20250823174407803

image-20250823165124079 image-20250823165134148

添加完成后报错依然存在,因为ssh首次连接主机是需要签名认证,需要手动输入yes

还有两台主机之间一定要做好解析

[root@gitlab timinglee]# vim /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@gitlab timinglee]# scp /etc/hosts root@172.25.254.60:/etc/hosts
[root@gitlab timinglee]# scp /etc/hosts root@172.25.254.100:/etc/hosts
方法1
[root@jenkins ~]# vim /etc/ssh/ssh_config33    StrictHostKeyChecking no
方法2

image-20250823170306191

完成此设定即可解决

image-20250823172534953

image-20250823172627937

6.4 genkins中gitlab触发器的部署与使用

在 Jenkins 中配置 GitLab 触发器可以实现代码提交或合并请求时自动触发 Jenkins 流水线

6.4.1 安装插件

如果需要使用gitlab触发器需要安装gitlab插件。目前使用官方源下载比较吃力,可以直接本地部署插件即可

# 由于网络环境差,访问官网下载插件的效果并不好;
# 可以选择本地部署插件
image-20250824124836056

image-20250824125918368

image-20250824125931937

6.4.2 部署自动触发

插件加载完毕后在jenkins中选择之前构建的项目并配置自动触发

image-20250824130204537

image-20250824130520108

image-20250824131037904

在gitlab中设定

image-20250824131325455

image-20250824131428660

image-20250824130358437

image-20250824130654038

image-20250824130908237

image-20250824131148980

image-20250824131651706

image-20250824131708213

image-20250824131840365

image-20250824132001787

# 这样可以感受到自动触发;但是发现感觉不是很强烈,下面展示明显的自动触发的效果!
6.4.3 测试自动触发

image-20250824132427858

# 编写测试文件
[root@gitlab timinglee]# echo "This is a ceshi project! " > ceshi.txt
[root@gitlab timinglee]# git add ceshi.txt
[root@gitlab timinglee]# git commit -m "ceshi v1"
[root@gitlab timinglee]# git push -u origin main
image-20250824132742963
# 此时打开浏览器去观察!

image-20250824132854350

image-20250824132911700

image-20250824132925026

http://www.dtcms.com/a/348867.html

相关文章:

  • Jwt令牌设置介绍
  • 关于熵减 - 电子圆柱
  • feat(compliance): 添加电子商务法技术解读
  • PCB电路设计学习4 PCB图布局 PCB图布线
  • Python - 100天从新手到大师:第十五天函数应用实战
  • HTTP 接口调用工具类(OkHttp 版)
  • 如何用单张gpu跑sglang的数据并行
  • Java全栈开发面试实战:从基础到高并发场景的深度解析
  • MATLAB 与 Python 数据交互:数据导入、导出及联合分析技巧
  • `free` 内存释放函数
  • 【蓝桥杯 2024 省 C】挖矿
  • K8s 实战:六大核心控制器
  • yggjs_rlayout框架v0.1.2使用教程 01快速开始
  • python---类
  • 服装生产跟单系统是什么?主要功能有哪些?
  • 【51单片机按键控制LED按下位移】2022-11-12
  • 若依4.7.8(springboot2.5.15)升级到4.8.1(springboot3.3.5)并集成Dubbo3客户端
  • cmake--CPack/deb
  • Linux系统编程——网络协议
  • The United Nations Is Already Dead
  • comfyUI背后的一些技术——CLIP
  • LeetCode 热题100——56.合并区间
  • 【Docker项目实战】使用Docker部署轻量级LetsMarkdown文本编辑器
  • kafka基本思路即概念
  • PCIE总线接口TSN网卡
  • 【DeepResearch调研】大模型多跳推理能力的深度解析:瓶颈、去偏研究与前沿进展
  • C++(vector):
  • 笔试——Day48
  • 【C++组件】ODB 安装与使用
  • LeetCode 42.接雨水