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

持续集成与持续交付CI/CD

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. 增强团队协作:促进团队成员之间的沟通和协作,提高团队的整体效率。
#下载
[root@gitlab ~]# dnf install git -y
# 初始化
[root@gitlab luo]# git init
# 查看
[root@gitlab luo]# ls -a
.  ..  .git

建立用户信息

[root@gitlab luo]# git config --global user.name "luo"
[root@gitlab luo]# git config --global user.email "luo@timingluo.org"

未提交状态

在这里插入图片描述
提交后状态
在这里插入图片描述
追加内容,右M,在工作区被修改,但没提交

[root@gitlab luo]# echo >> README.md

在这里插入图片描述

提交后左绿,提交到暂存区

[root@gitlab luo]# git add README.md 

在这里插入图片描述
提交到工作区

[root@gitlab luo]# git commit -m "README.md v2"

在这里插入图片描述
git status -s 无任何显示,标识已经提交到版本库

当再次修改

[root@gitlab luo]# vim README.md

在这里插入图片描述
右红M表示文件在工作区被修改
在这里插入图片描述
撤销修改

[root@gitlab luo]# git checkout -- README.md
[root@gitlab luo]# cat README.md 
luo

在这里插入图片描述
重新修改

[root@gitlab luo]# echo luoluo > README.md
[root@gitlab luo]# git add README.md 
[root@gitlab luo]# git status -s
M  README.md

在这里插入图片描述
从暂存区撤销

[root@gitlab luo]# git restore --staged README.md
[root@gitlab luo]# git status -s
 M README.md

在这里插入图片描述
重新提交

[root@gitlab luo]#  git add README.md
[root@gitlab luo]# git status -s
M  README.md

在这里插入图片描述

更新

[root@gitlab luo]# git commit -m "update v1"
[master f126628] update v1
 1 file changed, 1 insertion(+), 2 deletions(-)
[root@gitlab luo]# git status -s

在这里插入图片描述
更新文件

[root@gitlab luo]# echo luo1 >> README.md
[root@gitlab luo]# git add README.md
[root@gitlab luo]# echo luo1 >> README.md 
[root@gitlab luo]# git status -s
MM README.md

在这里插入图片描述
MM表示有一部分在暂存区,还有一部分没有提交
如果现在提交只能提交在暂存区中的部分

[root@gitlab luo]# git commit -m "update v2"
[master c155d30] update v2
 1 file changed, 1 insertion(+)
[root@gitlab luo]# git status -s
 M README.md

在这里插入图片描述
查看已暂存和未暂存的修改变化

[root@gitlab luo]# echo luo >> README.md 
[root@gitlab luo]# git diff
diff --git a/README.md b/README.md
index a700f83..6240833 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,4 @@
 luoluo
 luo1
+luo1
+luo

在这里插入图片描述

跳过使用暂存区,只能在提交过的在版本库中存在的文件使用如果文件状态是“??”不能用此方法

撤销工作区中删除动作

[root@gitlab luo]# touch luo.txt
[root@gitlab luo]# git add luo.txt 
[root@gitlab luo]# git commit  -m "add luo.txt"
[master aa037c1] add luo.txt
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 luo.txt
 [root@gitlab luo]# rm -rf luo.txt 
 [root@gitlab luo]# git status -s
 D luo.txt

右D 表示文件在工作区被删除
在这里插入图片描述

git 对文件忽略

[root@gitlab luo]# mkdir dir1
[root@gitlab luo]# touch dir1/.file2
[root@gitlab luo]# git status -s
?? dir1/

在这里插入图片描述

gitlab代码仓库

部署gitlab

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

在这里插入图片描述
修改配置文件

[root@gitlab luo]# cd /etc/gitlab/
[root@gitlab gitlab]# vim gitlab.rb
[root@gitlab gitlab]# gitlab-ctl reconfigure

在这里插入图片描述
使用gitlab-crt生效配置
[root@gitlab gitlab]# gitlab-ctl reconfigure

查看原始密码
[root@gitlab gitlab]# cat /etc/gitlab/initial_root_password

登录
在这里插入图片描述

更改密码
在这里插入图片描述

在gitlab中新建项目

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
生成sshd密钥

[root@gitlab gitlab]# ssh-keygen
[root@gitlab ~]# cat .ssh/id_rsa.pub

在这里插入图片描述

上传公钥到gitlab中
在这里插入图片描述
在这里插入图片描述

下载项目
在这里插入图片描述
在这里插入图片描述

部署jenkins

[root@jenkins-node1 ~]# ls
公共  图片  音乐             jenkins-2.462.2-1.1.noarch.rpm
模板  文档  桌面             plugins.tar.gz
视频  下载  anaconda-ks.cfg
[root@jenkins-node1 ~]# dnf install jenkins-2.476-1.1.noarch.rpm


[root@jenkins-node1 ~]# systemctl enable --now jenkins.service
Created symlink /etc/systemd/system/multi-user.target.wants/jenkins.service → /usr/lib/systemd/system/jenkins.service.
[root@jenkins-node1 ~]# cat /var/lib/jenkins/secrets/initialAdminPas

在这里插入图片描述
使用下载好的插件

[root@jenkins-node1 jenkins]# rm -rf /var/lib/jenkins/*
[root@jenkins-node1 jenkins]# cd
[root@jenkins-node1 ~]# tar zxf plugins.tar.gz -C /var/lib/jenkins/
[root@jenkins-node1 ~]# cd /var/lib/jenkins/
[root@jenkins-node1 jenkins]# ls
plugins
[root@jenkins-node1 jenkins]# systemctl restart jenkins.service 

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
设置密码
在这里插入图片描述

jenkins 与gitlab的整合

在这里插入图片描述
在这里插入图片描述

添加密钥
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

关闭远程登录需要的yes/no

[root@jenkins-node1 ~]# vim /etc/ssh/ssh_config

在这里插入图片描述

更该类型

在这里插入图片描述
设置计划任务
在这里插入图片描述
设置查看有没有建立成功
在这里插入图片描述
点击立刻创建
在这里插入图片描述
查看
在这里插入图片描述


http://www.kler.cn/a/308567.html

相关文章:

  • Dolby TrueHD和Dolby Digital Plus (E-AC-3)编码介绍
  • DAY112代码审计PHP开发框架POP链利用Yii反序列化POP利用链
  • 爬虫补环境案例---问财网(rpc,jsdom,代理,selenium)
  • Diffusion Policy——斯坦福机器人UMI所用的扩散策略:从原理到其编码实现(含Diff-Control、ControlNet详解)
  • C语言 | Leetcode C语言题解之第557题反转字符串中的单词III
  • 结构体是否包含特定类型的成员变量
  • TDengine 首席架构师肖波演讲整理:探索新型电力系统的五大关键场景与挑战
  • CentOS7下安装Ruby3.2.4的实施路径
  • LeetCode_sql_day26(184,1549,1532,1831)
  • ubuntu系统服务器离线安装python包
  • 力扣(leetcode)每日一题 2848 与车相交的点
  • 7天速成前端 ------学习日志 (继苍穹外卖之后)
  • Spire.PDF for .NET【页面设置】演示:为 PDF 添加背景颜色或背景图像
  • python压缩图片的代码
  • 《锐捷AP 胖模式配置示例》
  • UiBot教程:实现复杂流程图的高效方法
  • C++学习笔记(21)
  • solidity-21-call_contract
  • 华为SMU02B1智能通信电源监控单元模块简介
  • 基于SpringBoot+Vue的养老院管理系统
  • 在Ubuntu中编译含有JSON的文件出现报错
  • 【前后端】大文件切片上传
  • 网络安全学习(一)初识kali
  • 【JavaEE初阶】多线程(5 单例模式 \ 阻塞队列)
  • 构建基于 Feign 的微服务:从 Eureka 到负载均衡的实践 --day05
  • 微信支付开发-前端api实现