CI/CD简介及常用工具

  • Post author:
  • Post category:其他



什么是持续集成(CI-Continuous integration)

  • 持续集成是指多名开发者在开发不同功能代码的过程当中,可以频繁的将代码行合并到一起并且相互不影响工作。 即一个让开发人员将工作集成到共享分支中的过程,从而增强了协作开发。频繁的集成有助于解决隔离,减少每次提交的大小,以降低合并冲突的可能性。
  • 为了鼓励CI实践,一个强大的工具生态已经构建起来。这些系统集成了VCS库,当检测到更改时,可以自动运行构建脚本并测试套件。集成测试确保不同组件功能可以在一个组内兼容,使得团队可以尽早发现兼容性的bug。因此,持续集成所生产的构建是经过充分测试的,并且是完全可靠的。


什么是持续交付(CD-Continuous Delivery)

  • 持续交付是持续集成的扩展,它将构建从集成测试套件部署到预生产环境。这使得它可以直接在类生产环境中评估每个构建,因此开发人员可以在无需增加任何工作量的情况下,验证bug修复或者测试新特性。一旦部署到staging环境中,就可能需要进行额外的手动和自动测试。


什么是持续部署(CD-continuous deployment)

  • 持续部署则更进一步。一旦构建在staging环境中通过了自动测试,持续部署系统将会自动将它部署到生产服务器上。换言之,每个通过测试的构建都是实时的,可供用户及早反馈。这使得团队可以不断发布新特性和修复bug,并以其测试流程提供的保证为后盾。


CI/CD的优势

  • 快速反馈回路
  • 增加可见度
  • 简化故障排除
  • 软件质量更高
  • 集成问题更少
  • 有更多的时间专注于开发


实践指导原则

  • 对CI / CD流水线负责
  • 确保部署一致
  • 提交小的、渐进的更改
  • 良好的测试覆盖率(单元测试=》集成测试=》UI测试)


实践常用工具


  • GitLab CI

    是 GitLab 为了提升其在软件开发工程中作用,完善 DevOPS 理念所加入的 CI/CD 基础功能。可以便捷的融入软件开发环节中。通过 GitLab CI 可以定义完善的 CI/CD Pipeline。

    实践

  • Jenkins

    是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。

    教程

  • Azure DevOps

    可以理解成 JIRA + GitHub + Jenkins + Test Management + Nuget/Maven/NPM等大平台的一种合体产品,但又比这几款产品更为灵活和强大。

    官网

    &

    教程

  • Travis CI

    是目前新兴的开源持续集成构建项目,它与jenkins,GO的很明显的特别在于采用yaml格式,简洁清新独树一帜。目前大多数的github项目都已经移入到Travis CI的构建队列中,据说Travis CI每天运行超过4000次完整构建。

    教程

  • Concourse CI

    该系统由微服务组成,每个作业在一个容器中运行。它独家提供的一个最有用的特性是:从本地系统(可进行本地修改)运行一项作业的能力。这意味着你可以在本地进行开发(假设你已经连接到 Concourse 服务器),并像在实际构建管道中那样运行构建。此外,你还可以从本地系统重新运行失败的构建,并注入特定的更改来测试修复程序。

    教程

  • GoCD

    是一个开源的持续集成和持续交付系统,可以在持续交付过程中执行编译,自动化测试,自动部署等,和Jenkins类似,GoCD的基础架构由Server和Agent组成。

    教程

  • Spinnaker

    是一个开源的多云连续交付平台,用于以高速度和信心发布软件更改。它是在Netflix上创建的,已经在数以百万计的部署中经过数百个团队的生产测试。它结合了强大且灵活的管道管理系统以及与主要云提供商的集成。

    官网

    &

    源代码

    (https://spinnaker.io/)

  • Screwdriver

    是一个非常简单的工程。它使用微服务方法,并依赖 Nomad、Kubernetes 和 Docker 等工具作为执行引擎。对于到 AWS 和 Kubernetes 的部署,它提供了一个很好的部署教程,但是,一旦进行中的 Helm Charts 完成,它就可以得到改进。

    官网

    &

    源代码


参考及补充知识点:

流程顺序:持续集成=》持续交付=》持续部署


什么是 CI/CD?



持续集成-CI/CD流程图



从0到1了解CI/CD:初学者入门必备



项目开发中的dev, test, prod , staging 环境是什么意思



谈谈持续集成,持续交付,持续部署之间的区别



版权声明:本文为oTianLe1234原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。