Skip to content
SRE运维进阶之路SRE运维进阶之路
github icon
  • Jenkins

    • Jenkins 学习笔记
      • 1 Jenkins 简介

        • 1.1 DevOps、CI、CD都是什么鬼?
          • DevOps
            • CI
              • CD
                • 持续交付
                  • 持续部署
                  • Agile Development
                    • CI、CD、DevOps关系
                    • 1.2 Jenkins简介
                    • 2 安装 Jenkins

                      • 2.1 yum 安装 jenkins
                        • 2.2 war 包安装 jenkins
                          • 2.3 使用 ansible 安装 jenkins
                            • 2.4 使用docker安装jenkins
                            • 3 使用 Jenkins

                              • 3.1 Jenkins用户权限管理
                                • 3.2 访问 API
                                • 4 流水线核心语法

                                  • 4.1 开始编写Jenkinsfile
                                    • 4.2 Jenkins流水线语法
                                      • 4.3 Groovy 简明教程
                                        • 4.4 Jenkins共享库应用
                                          • 4.5 共享库之钉钉消息推送
                                            • 4.6 流水线开发工具
                                              • 4.7 pipeline 生产配置实例
                                                • 4.8 在 VS Code 中校验 Jenkinsfile
                                                • 5 流水线集成篇

                                                  • 5.1 构建发布工具集成
                                                    • 5.2 用户认证系统集成
                                                    • 6 管理 jenkins

                                                      • 6.1 Jenkins 关闭和重启的实现方式
                                                      • 7 日常维护

                                                        • 7.1 Jenkins Job迁移
                                                        • 8 Jenkins 常见问题
                                                        • Ansible

                                                          • Ansible 学习笔记
                                                            • 1 初识Ansible
                                                              • 2 Ansible Inventory配置详解
                                                                • 3 Ansible Ad-hoc命令集

                                                                  • 3.1 Ansible Ad-hoc 常用命令集
                                                                    • 3.2 Ansible lineinfile模块详解
                                                                    • 4 Ansible Playbook

                                                                      • 4.1 Playbook的结构及handler用法
                                                                        • 4.2 Playbook循环语句
                                                                          • 4.3 Playbook条件语句
                                                                            • 4.4 Playbook高级用法
                                                                              • 4.5 Playbook之tags
                                                                                • 4.6 巧用Roles
                                                                                  • 4.7 Jinja2 模板
                                                                                    • 4.8 yaml语法
                                                                                    • 5 Ansible变量

                                                                                      • 5.1 自定义变量
                                                                                        • 5.2 Fact变量
                                                                                          • 5.3 魔法变量
                                                                                            • 5.4 使用lookup生成变量
                                                                                              • 5.5 使用vault配置加密
                                                                                              • 6 Ansible使用优化
                                                                                                • 7 常见问题
                                                                                                  • 8 综合项目

                                                                                                    • 使用 ansible 快速安装 k8s 机器

                                                                                                  1.1 DevOps、CI、CD都是什么鬼?

                                                                                                  author iconClaycalendar icon2021年6月2日category icon
                                                                                                  • 自动化工具
                                                                                                  tag icon
                                                                                                  • Jenkins
                                                                                                  timer icon大约 4 分钟

                                                                                                  此页内容
                                                                                                  • DevOps
                                                                                                  • CI
                                                                                                  • CD
                                                                                                    • 持续交付
                                                                                                    • 持续部署
                                                                                                  • Agile Development
                                                                                                  • CI、CD、DevOps关系

                                                                                                  # 1.1 DevOps、CI、CD都是什么鬼?

                                                                                                  转载自:DevOps、CI、CD都是什么鬼?| 晶晶的博客open in new window

                                                                                                  DevOps、Ci、Cd图

                                                                                                  # DevOps

                                                                                                  DevOps是Development和Operations的组合,是一种方法论,是一组过程、方法与系统的统称,用于促进应用开发、应用运维和质量保障(QA)部门之间的沟通、协作与整合。以期打破传统开发和运营之间的壁垒和鸿沟。

                                                                                                  开发和运营之间的壁垒和鸿沟

                                                                                                  DevOps是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。通过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。具体来说,就是在软件交付和部署过程中提高沟通与协作的效率,旨在更快、更可靠的的发布更高质量的产品。

                                                                                                  也就是说DevOps是一组过程和方法的统称,并不指代某一特定的软件工具或软件工具组合。各种工具软件或软件组合可以实现DevOps的概念方法。其本质是一整套的方法论,而不是指某种或某些工具集合,与软件开发中设计到的OOP、AOP、IOC(或DI)等类似,是一种理论或过程或方法的抽象或代称。

                                                                                                  # CI

                                                                                                  CI的英文名称是Continuous Integration,中文翻译为:持续集成。

                                                                                                  Continuous Integration

                                                                                                  CI中,开发人员将会频繁地向主干提交代码,这些新提交的代码在最终合并到主干前,需要经过编译和自动化测试流进行验证。

                                                                                                  持续集成(CI)是在源代码变更后自动检测、拉取、构建和(在大多数情况下)进行单元测试的过程。持续集成的目标是快速确保开发人员新提交的变更是好的,并且适合在代码库中进一步使用。CI的流程执行和理论实践让我们可以确定新代码和原有代码能否正确地集成在一起。

                                                                                                  # CD

                                                                                                  CD可对应多个英文名称,持续交付Continuous Delivery和持续部署Continuous Deployment ,一下分别介绍。

                                                                                                  查了一些资料,关于持续交互和持续部署的概念比较混乱,以下的概念总结按大部分的资料总结而来。

                                                                                                  # 持续交付

                                                                                                  完成 CI 中构建及单元测试和集成测试的自动化流程后,持续交付可自动将已验证的代码发布到存储库。为了实现高效的持续交付流程,务必要确保 CI 已内置于开发管道。持续交付的目标是拥有一个可随时部署到生产环境的代码库。

                                                                                                  持续交付

                                                                                                  在持续交付中,每个阶段(从代码更改的合并,到生产就绪型构建版本的交付)都涉及测试自动化和代码发布自动化。在流程结束时,运维团队可以快速、轻松地将应用部署到生产环境中或发布给最终使用的用户。

                                                                                                  # 持续部署

                                                                                                  对于一个成熟的CI/CD管道(Pipeline)来说,最后的阶段是持续部署。作为持续交付——自动将生产就绪型构建版本发布到代码存储库——的延伸,持续部署可以自动将应用发布到生产环境。

                                                                                                  持续部署

                                                                                                  持续部署意味着所有的变更都会被自动部署到生产环境中。持续交付意味着所有的变更都可以被部署到生产环境中,但是出于业务考虑,可以选择不部署。如果要实施持续部署,必须先实施持续交付。

                                                                                                  持续交付并不是指软件每一个改动都要尽快部署到产品环境中,它指的是任何的代码修改都可以在任何时候实施部署。

                                                                                                  持续交付表示的是一种能力,而持续部署表示的则一种方式。持续部署是持续交付的最高阶段

                                                                                                  # Agile Development

                                                                                                  另外一个概念,也就是所谓的敏捷开发,似乎还没有所谓的简称,而且这个称呼似乎在国内被滥用了。敏捷开发着重于一种开发的思路,拥抱变化和快速迭代。如何实现敏捷开发,目前似乎尚没有完善的工具链,更多的是一种概念性,调侃的说法“既想马尔跑得快,又想马儿不吃草”的另外一种说法。

                                                                                                  Agile Development

                                                                                                  上图揭示了敏捷开发的一些内涵和目标,似乎有点儿一本真经的胡说八道的意思。

                                                                                                  # CI、CD、DevOps关系

                                                                                                  概念性的内容,每个人的理解都有所不同。就好比CGI 这个词,即可以理解成CGI这种协议,也可以理解成实现了CGI协议的软件工具,都没有问题,咬文嚼字过犹不及。留下一图:

                                                                                                  DevOps、CI、CD的区别

                                                                                                  edit icon编辑此页open in new window
                                                                                                  上次编辑于: 2022/4/27 15:33:00
                                                                                                  贡献者: clay-wangzhi
                                                                                                  下一页
                                                                                                  1.2 Jenkins简介
                                                                                                  备案号:冀ICP备2021007336号
                                                                                                  Copyright © 2023 Clay