CI(持续集成)和CD(持续交付、持续部署)

持续集成(Continuous integration,简称CI)持续集成,就是频繁地(一天多次)将代码集成到主干。持续交付(Continuous delivery)就是频繁地将软件的新版本,交付给质量团队或者用户,以供评审。持续部署(Continuous deployment)是持续交付的下一步,也就是代码通过评审以后,自动部署到生产环境。本文主要介绍CI(持续集成)和CD(持续交付、持续部署)的作用、流程和相关的工具。

1、持续集成(CI)

每次代码提交时,都会自动化构建(包括编译、发布、自动化测试),可以很快发现程序代码中的错误。


1)持续集成过程

先把代码放到git、Jenkins从git获取代码进行构建、测试、生成结果再返回。

2)持续集成工具

Jenkins:

Jenkins 是一个流行的、开源的自动化服务器,用于持续集成,具有丰富的插件和友好的用户界面。Jenkins 可用于 Windows、Mac OS、Linux 和其他 Unix 版本。它提供了简单的安装和更新过程,并且可以通过图形用户界面轻松配置。

Bamboo:

Bamboo 由 Atlassian 研发。内置的 Git 和 Mercurial 使 Bamboo 能够自动化合并来自两个版本控制系统的分支的过程。Bambor 负责分支检测、构建、测试和合并任务,以便仅基于分支名称将代码持续部署到生产环境。Bamboo 是一个收费应用,一个公司可以付很少的费用获取许可证。

CircleCI:

CircelCI 是一个基于云的 CI 解决方案,支持多平台的,适合分布式,有很多定制选项。它支持许多不同的语言,包括 Java、Python、JS、Haskell、Ruby on Rails 和 Scala,不过他只支持 GitHub 代码管控。CircelCI 拥有庞大的用户群,是最常用的 DevOps 工具之一,每天处理超过一百万个构建。CircleCI 的用户非常欣赏其独特的仪表盘,其中包含关于团队工作方式和代码运行方式的统计数据和数据,帮助他们提高生产力并缩短上线时间。

GitLab:

GitLab 提供持续集成作为其版本控制产品的一部分。它的 CI 工具是一个 Web 应用程序,带有一个开放 API,通过友好的用户界面管理项目,并集成了 GitLab 的所有功能。通过此 API,开发人员可以创建与产品的更深层次的集成。GitLab CI 通过发现开发过程的潜在改进,帮助开发人员将想法转化为产品。开发人员在合并请求中共享每一段新代码,这将触发执行所有验证任务的管道,然后再将更改合并到源代码存储库中。

2、持续交付

频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。持续交付是在持续集成的基础上,将集成后的代码部署到更接近真实运行环境(测试环境)中。

3、持续部署

代码在任何时候都是可以部署的,可以进入生产阶段,持续部署的前提是能自动化完成测试、构建、部署等步骤。持续部署则是在持续交付的基础上,把部署到生产环境的过程自动化。

4、CI/CD工具

1)Jenkins

Jenkins是一个用于自动化的开源服务器,在其中进行集中开发和持续集成的过程。它是一个基于Java的、自包含的、跨平台的CI/CD工具,带有Windows、macOS和其他类Unix操作系统包。Jenkins通过大量可用的插件促进了软件开发过程的构建、部署和自动化,并在更广泛的代码基础上促进了对孤立修改的实时测试和报告。

2)GitLab

GitLab是一个处理软件开发生命周期各个阶段的工具包。它是用于CI/CD的最佳工具之一,因为它在一个指示板内提供了各种特性,比如代码审查、CI/CD、持续部署等等。要使用GitLab CI/CD并在YAML文件中定义构建、测试和部署脚本,必须将代码库托管在Git存储库中。对于每次推或提交,GitLab都允许你执行构建、运行测试和部署代码。可以在虚拟机、Docker容器或另一个不同的服务器上构建作业。

3)Buddy

Buddy是一个很棒的CI/CD平台,旨在为Web开发人员减少入门级的DevOps障碍。它使用来自GitHub、Bitbucket和GitLab的代码来构建、测试和部署应用程序。有超过100种可用的操作可以以各种方式配置,管道的构建就像建造一座砖砌的房子。它利用Docker容器和预安装的编程语言和框架来与DevOps一起构建、监视和通知操作。

4)TeamCity

TeamCity是一个基于服务器的CI/CD管道工具,由JetBrains创建和管理,该组织开发了许多强大的工具,如PyCharm,IntelliJ Idea等。对于开源项目,它是免费使用的,并为小型团队提供了Azure DevOps和Jira软件云的简单集成解决方案。它在Java环境中运行并与Visual Studio和ide集成。你可以在Windows和Linux服务器上安装这个工具,它同时支持.net和开放堆栈项目。TeamCity还支持来自GitLab和Bitbucket的服务器拉取请求,涉及基于令牌的认证、识别、Go测试报告和AWS Spot Fleet请求。

5)Travis CI

Travis CI和Jenkins一样,也是早期的CI/CD管道工具。它最初只针对开源项目,后来也转向支持闭源项目。Travis CI会自动检测新提交并推送到GitHub存储库。然后,它将构建项目,并在每次提交新代码后适当地运行测试。如果你的项目在GitHub或Bitbucket上,Travis CI是开源和企业级项目最好的CI/CD工具之一。它支持许多构建配置和语言,如Node、PHP、Python、Java、Perl等等。


推荐阅读
cjavapy编程之路首页