Jenkins 入门教程之一 Jenkins 介绍

Jenkins 相关站点

Jenkins 与 Hundson 介绍

Jenkins 与 Hundson 是目前最流行的持续集成及自动化部署工具,基于 Java 语言开发,二者师出同门。2009 年甲骨文收购了 Sun 公司并继承了 Hudson 代码库。在 2011 年年初,甲骨文和开源社区之间的关系破裂,该项目被分成两个独立的项目 Jenkins 和 Hundson。其中 Jenkins 的团队由大部分原始开发人员组成,Hudson 则由甲骨文公司继续管理,所以二者是非常相似的产品。Jenkins 可以整合 Subversion、Git、GitHub 等,而 Husband 同样也可以。其他优秀的持续集成工具还有 Strider、GitLab CI、TeamCity(JetBrains)、Travis CI、Codeship、Codefresh 等。

持续集成介绍

  • 问题:各个小组分别负责各个具体模块开发,本模块独立测试虽然能够通过,但是上线前夕将所有模块整合到一起集成测试却发现存在很多问题,想要解决就需要把很多代码返工重写而且仍然有可能有问题,但现在时间很可能不够了。那怎么做会好一些呢?
  • 概念:Continuous Integration(CI)持续集成指开发人员提交了新代码之后,立刻进行构建、自动化测试。根据测试结果,确定所有模块的代码是否能正确地集成在一起;如果失败,开发团队就要停下手中的工作立即修复它。Martin Fowler 说过:” 持续集成并不能消除 Bug,而是让它们非常容易发现和改正。”
  • 关注点:持续集成的关注点在于尽早发现项目整体运行存在的问题,并尽早解决。

持续交付介绍

  • 问题:项目的各个升级版本之间间隔时间太长,对用户反馈感知迟钝,无法精确改善用户体验,用户流失严重。那怎么做会好一些呢?
  • 概念:Continuous Delivery (CD) 持续交付建立在持续集成的基础上,指将集成后的代码部署到更贴近真实运行环境的「类生产环境」,确保可以以可持续的方式快速向质量团队或者用户发布新版本;同时不断收集用户反馈的信息,用最快的速度改进优化。如果代码没有问题,下一步可以继续部署到生产环境中。
  • 关注点:持续交付的关注点在于研发团队的最新代码能够尽快让最终用户体验到。

持续部署介绍

  • 问题:开发过程中进行单元测试能够通过,但是部署到服务器上运行出现问题。仅仅单元测试还不够,各个模块都必须能够在服务器上运行。那怎么做会好一些呢?
  • 概念:Continuous Deployment(CD)持续部署建立在持续交付的基础上,指代码通过评审之后,把部署到生产环境的过程自动化,前提是能自动化完成构建、测试、部署等步骤。
  • 关注点:持续部署的关注点在于代码在任何时刻都是可以部署和进入生产阶段的,为下一步测试环节或最终用户正式使用做好准备。

CI/CD 工作流程图

ci-cd-process

GitOps 工作流程图

ci-cd-gitops

参考资料