DevOps: 持续交付 [Continuous Delivery]

143 阅读2分钟

你将收获

  • 对持续交付有基本的了解
  • 回顾一些持续交付工具
  • 了解如何使用 IBM 工具链进行持续交付
  • 将 IBM 工具链与您的 GitHub 仓库集成

“Being able to recover quickly from failure is more important than having failures less often.” -- John Allspaw, CTO at Etsy

持续集成 (CI) vs 持续交付 (CD)

  • 持续集成

    • 在通过一组测试后,将每个开发人员更改持续集成到主分支中,从而产生潜在的可部署代码的过程
  • 持续交付

    • 一系列实践旨在通过将每次更改交付到类似生产的环境来确保代码可以快速、安全地部署到生产中

持续交付的目的

  1. 主分支必须始终可部署
  2. 需要检查以确保没有错误代码进入主分支
  3. 持续集成在每个 PULL 请求上运行
  4. 确保代码在合并回主分支之前正常工作

持续交付核心的五个关键原则

  1. 质量

    • 确保每个步骤都能保证质量
    • 持续审查代码
    • 确保管道内一切正常
  2. 小批量工作

    • 让您的 User Story 变小
    • 较小的 Story 意味着较少的变更,因此风险也较小
    • 持续集成变更
  3. 由人来解决问题

    • 人们无需执行重复性任务
  4. 追求持续改进

    • 持续交付实现持续改进
    • 对构建过程的快速反馈
    • 快速知道事情何时出现问题
  5. 没人都应该负责

    • 不要问 “这是谁的错?”
    • 而是问 ”为什么失败了?“

挑选 CD 工具的注意事项

  1. 功能丰富
  2. 兼容性
  3. 易于使用/设置
  4. 维护工作量

IBM Toolchain Overview

  1. 一组支持开发、部署和运营任务的工具集成
  2. 用于构建 pipelines 的图形用户界面
  3. 集成 IBM Cloud Security 与 Compliance Center、IBM Cloud Secrets Manager、GitHub 存储库、Slack 通道等

工具链 / 交付管道架构

image.png

Toolchains

Example one: image.png Example two:

image.png

Delivery Pipeline

image.png

image.png

让我们实操一下

  • 现在,我们将创建一个 DevOps Pipeline 并将其连接到我们之前 fork 的 GitHub 存储库
  • 我们必须动态编辑 deployment.yaml 文件,将 app 的 image 名称更改为由 pipeline 构建的 image
  • 然后将这些更改推送回您 fork 的存储库以启动它

1. 需要用到以下工具

  • IBM Cloud Account (cloud.ibm.com)
  • GitHub Account (github.com)
  • Git Client
  • Visual Studio Code
  • Vagrant (optional)
  • VirtualBox or Docker

2. 代码库中有什么?

  1. 使用 PostgreSQL 数据库作为持久存储的宠物店演示
  2. .devcontainer 文件夹包含:
    • Python 3 环境
    • Docker 容器中的 PostgreSQL 数据库
    • IBM Cloud、Helm 和 Kubernetes 命令行界面
    • K3D Kubernetes 集群
    • 端口 8080 转发

3. Tools

3.1 Github

image.png

3.2 Delivery Pipeline

image.png

4. Stages

4.1 构建阶段 Build Stage

您现在有 3 项 jobs :

  • 检查代码
  • 运行单元测试
  • 构建 Docker 镜像

image.png

4.2 部署阶段 Deploy Stage

image.png !选择 Build Image 作为输入的 Job

结果展示

image.png