DevOps 工具链:CI/CD 概念解析 + Git 版本控制 + GitLab 仓库 + Jenkins 自动化全教程

CICD是什么

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

持续集成(Continuous Integration)

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

  1. 频繁提交代码:开发人员可以每天多次提交代码,确保代码库始终保持最新状态。

  2. 自动化构建:每次提交后,自动触发构建过程,包括编译、测试、静态分析等。

  3. 快速反馈:如果构建失败或测试不通过,能够快速地向开发人员提供反馈,以便及时修复问题。

持续部署(Continuous Deployment)

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

  1. 自动化流程:从代码提交到生产环境的部署完全自动化,无需人工干预。

  2. 高频率部署:可以实现频繁的部署,使得新功能能够快速地提供给用户。

  3. 风险控制:需要有强大的测试和监控体系来确保部署的稳定性和可靠性。

持续交付(Continuous Delivery)

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

CI/CD 的好处包括:

  1. 提高开发效率:减少手动操作和等待时间,加快开发周期。

  2. 尽早发现问题:通过频繁的集成和测试,问题能够在早期被发现和解决。

  3. 降低风险:减少了大规模部署时可能出现的问题,提高了软件的质量和稳定性。

  4. 增强团队协作:促进团队成员之间的沟通和协作,提高团队的整体效率。

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

git工具使用

git简介

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

  • 分布式

    • 每个开发者都有完整的代码仓库副本,这使得开发者可以在离线状态下进行工作,并且在网络出现问题时也不会影响开发。

    • 即使中央服务器出现故障,开发者仍然可以在本地进行开发和查看项目历史。

  • 高效的分支管理

    • Git 中的分支创建和切换非常快速和简单。开发人员可以轻松地创建新的分支来进行新功能的开发或修复 bug,而不会影响主分支。

    • 合并分支也相对容易,可以使用多种合并策略来满足不同的需求。

  • 快速的版本回退

    • 如果发现某个版本存在问题,可以快速回退到之前的版本。

    • 可以查看每个版本的详细变更记录,方便了解代码的演进过程。

  • 强大的提交管理

    • 每个提交都有一个唯一的标识符,可以方便地引用和查看特定的提交。

    • 提交可以包含详细的提交信息,描述本次提交的更改内容。

  • 支持协作开发

    • 开发者可以将自己的更改推送到远程仓库,供其他开发者拉取和合并。

    • 可以处理多个开发者同时对同一文件进行修改的情况,通过合并冲突解决机制来确保代码的完整性。

Git必看秘籍:Git

git 工作流程

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

  • 已修改表示修改了文件,但还没保存到数据库中。

  • 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。

  • 已提交表示数据已经安全地保存在本地数据库中。

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

部署git

安装git

cpp 复制代码
#在rhel9的系统中默认自带git
[root@hitlab ~]# dnf install git  -y

#设定命令补全功能
[root@hitlab ~]# echo "source  /usr/share/bash-completion/completions/git" >> ~/.bashrc
[root@hitlab ~]# source  ~/.bashrc

初始化

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

  • 将尚未进行版本控制的本地目录转换为 Git 仓库。

  • 从其它服务器克隆 一个已存在的 Git 仓库。比如: git clone

初始化版本库

cpp 复制代码
[root@hitlab ~]# mkdir rin

[root@hitlab ~]# cd rin/

[root@hitlab rin]# ls

[root@hitlab rin]# 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>
Initialized empty Git repository in /root/rin/.git/

[root@hitlab rin]# ls -a
.  ..  .git

[root@hitlab rin]# ls .git/
branches  config  description  HEAD  hooks  info  objects  refs


#设定用户信息
[root@hitlab rin]# git config --global user.name "rin"
[root@hitlab rin]# git config --global user.email "rin@rin.com"


#查看当前文件状态
[root@hitlab rin]# git status
位于分支 master

尚无提交

无文件要提交(创建/拷贝文件并使用 "git add" 建立跟踪)

[root@hitlab rin]# git status -s   #简化输出

git的使用方法

常用方法

cpp 复制代码
[root@hitlab rin]# echo Rinleren > README.md
[root@hitlab rin]# git status 
位于分支 master

尚无提交

未跟踪的文件:
  (使用 "git add <文件>..." 以包含要提交的内容)
        README.md

提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
[root@hitlab rin]# git status -s
?? README.md                 #??	新建文件未添加到版本库


[root@hitlab rin]# git add README.md
[root@hitlab rin]# git status  -s
A  README.md               #A 已添加到暂存区

#提交暂存区的数据


[root@hitlab rin]# git commit -m "add README.md"
[master (根提交) 871e3c1] add README.md
 1 file changed, 1 insertion(+)
 create mode 100644 README.md
[root@hitlab rin]# git status  -s       #无任何显示,标识已经提交到版本库

#再次修改
[root@hitlab rin]# vim README.md 
[root@hitlab rin]# cat README.md 
Rinleren
Rinleren
Rinleren
[root@hitlab rin]# git status  -s
 M README.md    #右M 表示文件在工作区被修改


#撤销修改
[root@hitlab rin]# git checkout -- README.md
[root@hitlab rin]# cat README.md
Rinleren


#从新修改
[root@hitlab rin]# echo rinleren> README.md
[root@hitlab rin]# git add README.md
[root@hitlab rin]# git status -s
M  README.md      #左M表示文件已经在版本库中并被跟踪

#从暂存区撤销
[root@hitlab rin]# git restore --staged README.md
[root@hitlab rin]# git status -s
 M README.md     撤销后为被跟踪,显示为右M

#重新提交
[root@hitlab rin]# git add README.md
[root@hitlab rin]# git status -s
M  README.md     再次提交后变为左M

#更新
[master 50822d9] update v1
 1 file changed, 1 insertion(+), 1 deletion(-)
[root@hitlab rin]# git status -s


#更新文件
[root@hitlab rin]# echo rin >> README.md
[root@hitlab rin]# git add README.md
[root@hitlab rin]# echo rinrin >> README.md
[root@hitlab rin]# git status -s
MM README.md          #MM表示有一部分在暂存区,还有一部分没有提交

#如果现在提交只能提交在暂存区中的部分
[root@hitlab rin]# git commit -m "update v2"
[master edec71c] update v2
 1 file changed, 1 insertion(+)
[root@hitlab rin]# git status -s
 M README.md          #右M还在


#查看已暂存和未暂存的修改变化
[root@hitlab rin]# echo rinleren >> README.md
[root@hitlab rin]# git diff
diff --git a/README.md b/README.md
index 09c10b6..d1456cc 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,4 @@
 rinleren
 rin
+rinrin
+rinleren


#跳过使用暂存区,只能在提交过的在版本库中存在的文件使用如果文件状态是"??"不能用此方法
[root@hitlab rin]# git commit -a -m "update v3"
[master 7f903b1] update v3
 1 file changed, 2 insertions(+)


#撤销工作区中删除动作
[root@hitlab rin]# touch rin.txt
[root@hitlab rin]# git add rin.txt 
[root@hitlab rin]# git commit  -m "add rin.txt"
[master d085871] add rin.txt
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 rin.txt
[root@hitlab rin]# git status -s

gitlab代码仓库

gitlab简介

  • GitLab 是一个用于仓库管理系统的开源项目,使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务。

  • GitLab 具有很多功能,比如代码托管、持续集成和持续部署(CI/CD)、问题跟踪、合并请求管理等。它可以帮助开发团队更好地协作开发软件项目,提高开发效率和代码质量。

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

中文站点: GitLab下载安装_GitLab安装和配置_GitLab最新中文官网免费版下载-极狐GitLab

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

gitlab 的部署实施

部署gitlab

部署gitlab需要内存大于4G

cpp 复制代码
#在安装包之前需配置好软件仓库来解决依赖性
[root@hitlab ~]# yum install -y curl policycoreutils-python-utils  openssh-server perl

[root@hitlab mnt]# ls
gitlab-ce-17.1.6-ce.0.el9.x86_64.rpm  hgfs  jenkins-2.462.2-1.1  jenkins-2.516.2-1.1  jenkins-plugin
[root@hitlab mnt]# dnf install gitlab-ce-17.1.6-ce.0.el9.x86_64.rpm -y

配置gitlab

cpp 复制代码
#修改配置文件
[root@hitlab gitlab]# vim gitlab.rb 
  32 external_url 'http://172.25.254.220'

#修改配置文件后需利用gitlab-crt来生效,
[root@hitlab gitlab]# gitlab-ctl reconfigure

#执行命令成功后会把所有组件全部启动起来

登陆gitlab

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

!WARNING

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

cpp 复制代码
#查看原始密码
[root@hitlab gitlab]# cat /etc/gitlab/initial_root_password
# WARNING: This value is valid only in the following conditions
#          1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
#          2. Password hasn't been changed manually, either via UI or via command line.
#
#          If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.

Password: chTlakUevScMuwGe64w9+9hwZ06TqRY8IAGbrUwfY0U=     #密码

# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.

登录:

设置密码

在gitlab中新建项目

cpp 复制代码
#生成sshd密钥
[root@hitlab ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:PELuQkK7s3PJtp23wUg4u2AMDRiRq30d51yDvihcwsc root@hitlab.rin.com
The key's randomart image is:
+---[RSA 3072]----+
|oo               |
|o.               |
|o..   .  .       |
|.+ . +..o o      |
|o.+.+o+*S. .     |
|.o.++=E++.       |
|  *+o=o.o.       |
| ..+B+..o.       |
|  .+ooo...       |
+----[SHA256]-----+

[root@hitlab ~]# ls .ssh/
id_rsa  id_rsa.pub

[root@hitlab ~]# cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDeP/9t71Q3xPp/89wxsr48+02qs26ajz58P2sLqsW8QnXI5drNOXutHqbDB51bbqk2RsdQAzeaSl0Ze+njvqxHDAcvXafjDlli0zBhjDDwIk7BP4XizcSYu1sOS6y1zqHTK88vdg/sc53xpE85Px2/ExFo3xfEipW40yRu96WoczIyYUwzqBc8P6t7XqqDyDS5JabrTkzqa0aAjwiWH6TlMoiSBcn/F21AQCRUObXmpMpucG4D+ZC6weV8QgK1mBbVUlKxPfZBf7dw2l8FAnXH0QS5vLVUDzT6hQ7DNnG9a4IfSKW3pedBeh0//83ctyRct2WaF3ByEbuvev0tXovHevivXf27a5pnr/nvOi1C4mGJdO7nMdj/KhxV5xDEECx2v2YcFbfjy0WQlXwhQJ5w/xRYCUotZbMdYZoupgKsrdOFUgXgg+VhUIbHG5MxKlNgBBS5P0IdXbroLLmq27KPzhguwMuxkfUvd1+88OKys7ESXuCO16M5CvcVGulJvj0= root@hitlab.rin.com

上传公钥到gitlab中

下载项目

cpp 复制代码
[root@hitlab ~]# git clone  git@172.25.254.220:root/rinleren.git
Cloning into 'rinleren'...
The authenticity of host '172.25.254.220 (172.25.254.220)' can't be established.
ED25519 key fingerprint is SHA256:tsP+LpnayZTuoWfrjH761t6k/+wJucVkeLPBeSoc3cE.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '172.25.254.220' (ED25519) to the list of known hosts.
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (3/3), done.

[root@hitlab ~]# ls -R
.:

./rin:
README.md  rin.txt

./rinleren:
README.md

[root@hitlab ~]# cd rinleren/
[root@hitlab rinleren]# ls
README.md
[root@hitlab rinleren]# git remote -v
origin	git@172.25.254.220:root/rinleren.git (fetch)
origin	git@172.25.254.220:root/rinleren.git (push)

#文件提交
[root@hitlab rinleren]# echo rinleren > rinleren
[root@hitlab rinleren]# git add rinleren 
[root@hitlab rinleren]# git commit -m "add rinleren"
[main 2f1bb98] add rinleren
 1 file changed, 1 insertion(+)
 create mode 100644 rinleren
[root@hitlab rinleren]# git push -u origin main
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 2 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 271 bytes | 271.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To 172.25.254.220:root/rinleren.git
   6acfee2..2f1bb98  main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.

jenkins

jenkins 简介

  • Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。

  • Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行

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

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

部署 jenkins

软件下载:Download and deploy

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

!WARNING

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

cpp 复制代码
#安装依赖包
[root@jenkins mnt]# dnf install fontconfig java-21-openjdk  git -y

#安装jenkins
[root@jenkins jenkins-2.516.2-1.1]# dnf install jenkins-2.516.2-1.1.noarch.rpm  -y

#启动jenkins
[root@jenkins jenkins-2.516.2-1.1]# systemctl enable --now jenkins.service
Created symlink /etc/systemd/system/multi-user.target.wants/jenkins.service → /usr/lib/systemd/system/jenkins.service.

#替换plugins
[root@jenkins jenkins-2.516.2-1.1]# ls
jenkins-2.516.2-1.1.noarch.rpm  plugins.tar.gz
[root@jenkins jenkins-2.516.2-1.1]# cd /var/lib/jenkins/
[root@jenkins jenkins]# systemctl stop jenkins.service 
[root@jenkins jenkins]# ls
config.xml                                      jenkins.telemetry.Correlator.xml  secret.key.not-so-secret
hudson.model.UpdateCenter.xml                   jobs                              secrets
hudson.plugins.git.GitTool.xml                  logs                              updates
identity.key.enc                                nodeMonitors.xml                  userContent
jenkins.install.InstallUtil.lastExecVersion     plugins                           users
jenkins.install.UpgradeWizard.state             queue.xml
jenkins.model.JenkinsLocationConfiguration.xml  secret.key
[root@jenkins jenkins]# rm -rf plugins/
[root@jenkins jenkins]# tar xzf /mnt/
hgfs/                jenkins-2.516.2-1.1/ 
[root@jenkins jenkins]# tar xzf /mnt/jenkins-2.516.2-1.1/plugins.tar.gz -C /var/lib/jenkins/
[root@jenkins jenkins]# ls
config.xml                                      jenkins.telemetry.Correlator.xml  secret.key.not-so-secret
hudson.model.UpdateCenter.xml                   jobs                              secrets
hudson.plugins.git.GitTool.xml                  logs                              updates
identity.key.enc                                nodeMonitors.xml                  userContent
jenkins.install.InstallUtil.lastExecVersion     plugins                           users
jenkins.install.UpgradeWizard.state             queue.xml
jenkins.model.JenkinsLocationConfiguration.xml  secret.key




#查看原始密码
[root@jenkins jenkins-2.516.2-1.1]# cat /var/lib/jenkins/secrets/initialAdminPassword
5d1a353336694581b3547b96be53ed83

部署插件:

访问:172.25.254.230:8080

粘贴密码,

jenkins 与gitlab的整合

生成ssh:

cpp 复制代码
[root@jenkins mnt]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:q8YCccwb5lpas44wF6aHWarwmtL1l+WZjUCumyncD/I root@jenkins.rin.com
The key's randomart image is:
+---[RSA 3072]----+
|                 |
|                 |
|   o             |
|  . *   .        |
|  += o oS        |
| B..B   o..      |
|O.oO.*...= =     |
|+B+.=o*=o = .    |
|=.o..+E+.        |
+----[SHA256]-----+

[root@jenkins mnt]# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC9urMp8ZCy59ojdzui/COjifeLMdZavMQXPCSNMMPkl97T3cXQXc6SLXLezBl1PA/VJyY1SqYbEt96I9q1W/4G+Uh5Q9kUxBEAgt2iyh+wuJU9akl+iV4fRIpNXF/bq9cL1x1y5+27+QqJ4qxPn/A+0HWXEn69YUkmxu2zxONhD2WB9TOvFyZNms2AVEblZeTlZSIratp8iTHrcL6SmzveGOuRU7U8UAtiHRNfGctfeJ1vbcGiqEvX/GY9fPT5MccXrrYaW+gwYwGu+zjrniZN2JjkIVSjMx+UM3NCThBxUmzQXn63fV47eSBI0uS4aoAZaNX8kq3myeAmAgtnuu9+OZCFSn2XYyE9KXaQa52eAep62rrEdqphVgtRilwbW2zbOXWMJJh/EEWOrBSUerx/Q/SPr4ABTKQOPsK7Q3yJMnPs0dMMZqBVSTUW8GNXQ5M1Dmh0M2u/DrhTiOF479f5t0RAqmZPAnS7Z0+WaSGBYK2qhCjvlmxgtauG8PNVY5M= root@jenkins.rin.com

把此密钥添加到gitlab上

回到jenkins:

在key处填入本机的私钥:

cpp 复制代码
[root@jenkins mnt]# cat /root/.ssh/id_rsa
-----BEGIN OPENSSH PRIVATE KEY-----
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
-----END OPENSSH PRIVATE KEY-----

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

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

方法一:

cpp 复制代码
[root@jenkins mnt]# vim /etc/ssh/ssh_config
[root@jenkins mnt]# cat /etc/ssh/ssh_config |grep StrictHostKeyChecking
   StrictHostKeyChecking no

方法二:

完成此设定即可解决

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

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

安装插件

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

本地部署:

部署自动触发

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

相关推荐
九河云3 小时前
物流仓储自动化升级:物道供应链 AGV 机器人实现分拣效率提升 60%
人工智能·科技·物联网·机器人·自动化
Freed&5 小时前
Ansible 生产级自动化指南:Playbook、Handlers、Jinja2 全解析
运维·自动化·ansible
b***25115 小时前
储能电池包的自动化产线探秘|深圳比斯特自动化
运维·自动化
工控小楠5 小时前
涡街流量计温度数据的协议桥梁:Modbus RTU 转 Profinet 网关的自动化应用
运维·自动化
m0_464608266 小时前
Ansible实现自动化运维
运维·自动化·ansible
m0_464608266 小时前
Ansible Playbook:自动化配置管理的利器
运维·自动化·ansible
YAY_tyy12 小时前
【JavaScript 性能优化实战】第六篇:性能监控与自动化优化
javascript·性能优化·自动化
慌糖14 小时前
自动化接口框架搭建分享-pytest第二部分
运维·自动化·pytest
初学者_xuan15 小时前
零基础新手小白快速了解掌握服务集群与自动化运维(七)Nginx模块--Nginx反向代理与缓存功能(二)
运维·nginx·自动化