CI: 单打独斗必备

什么是CI

持续集成(英语:Continuous integration,缩写CI),又译为持续集成,是一种软件工程流程,是将所有软件工程师对于软件的工作副本持续集成到共享主线(mainline)的一种举措。该名称最早由葛来迪·布区(Grady Booch)在他的布区方法中提出,不过他并不支持在一天中进行数次集成。之后该举措成为极限编程(extreme programming)的一部分时,其中建议每天应集成超过一次,甚至达到数十次。在测试驱动开发(TDD)的作法中,通常还会搭配自动单元测试。持续集成的提出主要是为解决软件进行系统集成时面临的各项问题,极限编程称这些问题为集成地狱(integration hell)。

CI能做什么

CI 可以用来在 git 的 commit, branch, tag, marge 上做 hook, 或者手动触发. 来进行测试, 代码分析, 打镜像, 部署,编译或者其他可以运行脚本的工作.我还用CI做过一个自动部署静态博客的功能.

当然上面这些功能,大部分都需要写脚本来实现,不过基本上是一次辛劳,之后次次享受.

所以 CI 能帮我们减少运维和测试的压力, 这类型的重复工作在每次代码提交之后都需要做,交给脚本来操作,犯错的概率会更小.更不容易因为人为的错误导致部署失败.

优点

  • 可以及时发现错误,并且可以避免错误的代码进入生产环境.
  • 可以尽可能保证上线前不出现错误.
  • 当上线后失败可以最快速度会滚到上一个正确的代码.

缺点

  • 构建一个自动化测试包需要大量的工作,包括不断努力以覆盖新功能,并依照特定情境进行代码修改。

无论是否采用持续性集成,测试被认为是软件开发的最佳实践,测试必须依循软件布署的最佳实务。自动化是诸如测试驱动开发之类项目方法的一个组成部分。

持续性集成可以在不需要测试包下运行,但是如果必须手动和经常地完成,生产产品的质量保证成本将会提高。 构建构建系统需要一些工作,而且可能变得复杂,难以灵活修改。

但是,也有一些开放来源代码的持续集成的项目软件可以使用。

如果范围很小或包含无法测试的旧版代码,持续性集成不一定有价值。

增加的价值取决于测试的质量以及代码的真实可测性。 较大的团队意味着不断将代码添加到集成队列中,因此追踪交付(同时保持质量)很困难,而排队可能会减慢所有人的进度。

通过一天的多次提交和合并,功能的部分代码可以轻松推送,如此一来集成测试将会失败直到整个功能开发完成。

常用 CI 列表

  • Travis CI
  • Circle CI
  • Jenkins
  • AppVeyor
  • CodeShip
  • Drone
  • Semaphore CI
  • Buildkite
  • Wercker
  • TeamCity

个人比较推荐开源项目用 Travis CI 在 Github 上使用非常广泛。 个人私有项目可以考虑 Circle CI 个人使用也绝对足够使用的。

Enjoy CI

相信通过本文你对CI也有一定的了解,去尝试着体验一下吧。

# CI  What IS 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×