31 DevOps 之 Jenkins 与 Gitlab 的 CI/CD
DevOps 之 Jenkins 与 Gitlab 的 CI/CD
1. DevOps 介绍
1.1 什么是 DevOps
DevOps 是Development和Operations的组合,也就是开发和运维的简写。
DevOps 是针对企业中的研发人员、运维人员和测试人员的工作理念,是他们在应用开发、代码部署和 质量测试等整条生命周期中协作和沟通的佳实践,DevOps 强调整个组织的合作以及交付和基础设施 变更的自动化、从而实现持续集成、持续部署和持续交付。
DevOps 四大平台:
代码托管:如:gitlab,svn
项目管理:如:jira
运维平台:如:开源平台,腾讯蓝鲸
持续交付:如:Jenkins,gitlab
1.2 为什么要推广DevOps
传统的模式是开发人员只顾开发程序,运维只负责基础环境管理和代码部署及监控等,其并不是为了一 个共同的目标;
DevOps 强调团队协作、相互协助、持续发展,实现团队作战,即无论是开发、运维还是测试,都为了 终的代码发布、持续部署和业务稳定而付出各自的努力,从而实现产品设计、开发、测试和部署的良 性循环,实现产品的终持续交付。
1.3 持续集成、持续交付和持续部署 CICD
最初是瀑布模型,后来是敏捷开发,现在是DevOps,这是现代开发人员构建出色的产品的技术路线。 随着DevOps的兴起,出现了持续集成(Continuous Integration)、持续交付(Continuous Delivery) 、持续部署(Continuous Deployment) 的新方法。传统的软件开发和交付方法正在迅 速变得过时。从以前的敏捷时代,大多数公司会每月,每季度,每两年甚至每年发布部署/发布软件。然 而现在在DevOps时代,每周,每天,甚至每天多次是常态。当SaaS正在占领世界时,尤其如此,您可 以轻松地动态更新应用程序,而无需强迫客户下载新组件。很多时候,他们甚至都不会意识到正在发生 变化。开发团队通过软件交付流水线(Pipeline)实现自动化,以缩短交付周期,大多数团队都有自动 化流程来检查代码并部署到新环境。
CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念是持续 集成、持续交付和持续部署。作为一个面向开发和运营团队的解决方案,CI/CD 主要针对在集成新代码 时所引发的问题
具体而言,CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段,到交付 和部署)。这些关联的事务通常被统称为“CI/CD 管道”,由开发和运维团队以敏捷方式协同支持。
1.4 CICD 流程过程和架构
1.4.1 常见的软件部署方式
开发人员自行上传--原始的方案
开发人员将代码发给运维,由运维手动上传--运维自己手动部署
运维使用脚本实现部署--半自动化
结合web界面一键部署--自动化
1.4.2 CICD 服务器架构
2. Git 和 GitLab 部署管理
2.1.1 数据保存方式
SVN 与 CVS:
每次提交的文件都单独保存, 即按照文件的提交时间区分不同的版本, 保存至不同的逻辑存储区域,后 期恢复时候直接基于之前版本恢复。 将它们存储的信息看作是一组基本文件和每个文件随时间逐步累积 的差异 (它们通常称作基于差异(delta-based) 的版本控制)
Git:
在 Git中,每当你提交更新或保存项目状态时,它基本上就会对当时的全部文件创建一个快照并保存这个 快照的索引。为了效率,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存 储的文件。 Git 对待数据更像是一个 快照流。
Git和SVN区别:
git是分布式的,svn是集中式的;
git是每个历史版本都存储完整的文件,便于恢复,svn是存储差异文件,历史版本不可恢复;
git可离线完成大部分操作,svn则不能;
git有着更优雅的分支和合并实现;
git有着更强的撤销修改和修改历史版本的能力;
git速度更快,效率更高 。