CI/CD是什么?如何通过谷歌云实现CI/CD?

CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念是持续集成、持续交付。

CI 持续集成(Continuous Integration)

现代应用开发需要让多位开发人员同时处理同一应用的不同功能,而这些开发人员分别写的源代码最终还是需要汇总和集合。但是企业的开发人员分别独立去开发,最后的源代码汇总在一起的时候,很有可能会出现冲突。

持续集成(CI)可以帮助开发人员更加频繁地(有时甚至每天)将代码更改合并到共享分支或"主干"中。一旦开发人员对应用所做的更改被合并,系统就会通过自动构建应用并运行不同级别的自动化测试来验证代码,如果自动化测试发现新代码和现有代码之间存在冲突,CI 可以更加轻松地快速修复这些错误。

持续集成 (CI) 的核心是尽早并经常获得反馈,这使得在开发过程的早期识别和纠正问题成为可能。使用 CI,您可以频繁地集成您的工作,通常是一天多次,而不是等待稍后进行一次大型集成。每个集成都通过自动构建进行验证,使您能够尽快检测集成问题并减少下游问题。

CD 持续交付(Continuous Delivery)

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

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

持续交付(CD) 是关于打包和准备软件的,目的是为用户提供增量更改。

CI/CD管道

构成 CI/CD 管道的步骤被划分为不同的任务子集,称之为管道阶段。典型的管道阶段包括:

  • Source,在大多数情况下,管道运行由源代码存储库触发;
  • Build,构建阶段,编译程序;
  • Test ,自动化测试代码
  • Deploy,部署代码

CI/CD策略

最近应用程序开发领域发生了很大变化,因此导致CI/CD策略也发生了变化。

  • 混合和多云部署——大型企业希望在混合云环境中部署应用程序,并使用不会将它们锁定在特定供应商的工具和服务。
  • 从单体架构到微服务的转变——团队正在将大型单体架构分解为微服务,以提高敏捷性。这使得不同的团队可以使用不同的语言、技术堆栈、开发生命周期,这意味着部署模式、工具需求和扩展模式正在发生变化。
  • 云原生应用程序——不再只是虚拟机;公司正在转变范式并采用无服务器、容器和 Kubernetes。在简化应用程序开发的某些方面的同时,这一举措增加了其他领域的复杂性。

理想情况下,开发人员应该专注于他们的代码,而不是通过 CI/CD 流程来引导他们的更改。嵌入代码后,应立即触发 CI/CD 步骤并在后台运行。因此, CI/CD 管道应支持:

  • 打包源码
  • 自动化单元和集成测试
  • 一致的构建环境
  • 部署到生产之前的批准
  • Red/Green/Canary 回滚(Roll-outs)

如何通过谷歌云实现CI/CD?

 

为了帮助客户实现CI/CD,谷歌云平台开发并提供了一系列产品/服务满足CI/CD管道的需求。

产品包括:

  • Cloud Code,包含编写、调试和部署适用于 IntelliJ、VS Code 或浏览器的云端应用所需的一切。
  • Cloud Build,自定义工作流,跨多个环境进行构建、测试和部署。
  • Artifact Registry,存储、管理和保护容器映像及语言包。
  • Cloud Run,用于运行容器化应用的全代管式环境。
  • Cloud Deploy,全代管式Google Kubernetes Engine持续交付,具有内置指标、批准和安全性。

Cloud Code

如果您完全在云原生环境中工作,那么您将需要使用 Cloud Code 来启动您的 CI/CD 管道。在您的 IDE 中使用Cloud Code ;它附带的工具可帮助您快速轻松地编写、运行和调试云原生应用程序。然后将您的代码推送到 Cloud Build 进行构建过程,将其打包到Artifact Registry中,然后在GKE或 Cloud Run 上运行。您可以在Google Cloud 的运维套件中获得部署所需的所有可见性和指标。

Cloud Build

Cloud Build 是一个完全托管的 CI/CD 平台,可让您在包括 VM、无服务器、Kubernetes 和 Firebase 在内的混合和多云环境中构建、测试和部署。Cloud Build 可以从 Cloud Storage、Cloud Source Repositories、GitHub 或 Bitbucket 导入源代码;根据您的规格执行构建;并生成诸如 Docker 容器映像或 Java 档案之类的工件。

Cloud Build 将您的构建作为一系列构建步骤执行,每个步骤都在 Docker 容器中运行。无论环境如何,构建步骤都可以做任何可以从容器中完成的事情。要执行任务,您可以使用Cloud Build 提供的支持构建步骤,也可以编写自己的构建步骤。作为构建步骤的一部分,Cloud Build 将应用部署到您选择的平台。您还可以使用二进制授权在 CI/CD 管道内执行深度安全扫描,并确保仅将受信任的容器映像部署到生产环境。

Cloud Build 私有池可帮助您满足企业安全性和合规性要求。这些是私有的、专用的工作人员池,可对构建环境提供更大的定制,包括访问私有网络中资源的能力。例如,您可以从托管在私有网络(包括 Github Enterprise)中的源代码存储库触发完全托管的 DevOps 工作流。

Cloud Deploy

Google Cloud Deploy(预览版)是一种托管的持续交付服务,它使向 GKE 的持续交付更容易、更快、更可靠。它内置了安全控制,可以与您现有的 DevOps 生态系统集成。

以上是关于CI/CD的介绍和谷歌云提供的CI/CD工具的简单介绍,之后还会发布相关的如何利用上述的产品实现CI/CD的文章。

http://cloud-ace.cn

你可能感兴趣的:(大数据/云计算,ci/cd,kubernetes)