For more, please visit my GitHub repo: github.com/kingcos/Per…前端
一个软件工程项目从编写、到测试、再最终交付到用户一般有不少重复且固定的步骤。虽然做为开发者,咱们的核心任务是编写代码,而这些其余的步骤却也不能忽视,持续集成(Continuous Integration)则能够帮助开发者完成这些琐碎的事务,提高团队的开发效率与质量。git
本文将主要介绍持续集成是什么,以及其中的好处。固然,您可能也注意到了标题后面「(一)」,没错,持续集成并不是一篇文章能够归纳,笔者但愿尽量将目前团队中使用到的和持续集成相关的内容进行总结,目的是为了让你们一块儿思考如何让持续集成更好地服务咱们开发。固然,限于笔者能力,文中难免出现遗漏,也望读者可以批评和指出。github
持续集成,译自 Continuous Integration,简称 CI(在下文中,将统一使用该英文简称)。在 Wikipedia 中,也有针对 CI 特别详细且专业的介绍。简而言之,当开发者经过版本控制系统(例如 Git)提交了代码,CI 系统将为其自动执行构建、分析、测试等服务,当前面的服务一致经过,其也能直接将产品部署到生产环境,然后进入下一个循环。其中每一步都将自动触发、执行,结果也将会自动反馈回开发者。正以下图所示,CI 的重点在于 C——持续。编程
那么为何须要 CI 呢?相比于传统的先开发,再测试,后上线的模式有哪些好处呢?在团队使用 CI 这段时间中,得出了如下主要两个好处:swift
若是这两个显而易见的好处还不足以说服,能够参考文末 Reference 中 EKATERINA NOVOSELTSEVA 的文章。那么 CI 会不会也存在什么难处呢?后端
若是后面两个问题并无阻挠你,那么就开始尝试 CI 吧~api
CI 并不依赖于某种特定的技术栈,其属于一种编程范式。可是,具体谈及如何实践,这就须要结合不一样的工具和业务,进行定制。服务器
Jenkins 是一款使用 Java 开发且开源的持续集成工具,不少 iOS 团队内部都会使用 Jenkins & Fastlane 来自动化打包。由于 Jenkins 是开源的,能够方便地部署在本身的服务器中,并且也有不少插件来辅助不一样的技术栈和功能需求。Swift 官方也使用了 Jenkins 做为本身的 CI。工具
GitHub,人尽皆知,是全球最大的代码托管平台,但 GitHub 自己并无集成 CI。但有不少 CI 平台为 GitHub 定制 CI 环境,其中使用较多的即是 Travis CI。在 GitHub 仓库中看到有 .travis.yml
文件便意味着该仓库集成了 Travis CI。对于开源的项目,能够选择它就不用开发者再单独配置服务器来运做 CI,固然速度可能会慢些。以前在写我的的一个命令行工具时,便尝试使用了 Travis CI,并且能够很是容易的将 CI 状态和代码覆盖率的 Budge 标示在项目文档中。gitlab
相比于上述的几个平台,GitLab 真正把代码托管和 CI 结合了起来,并在最新 Release 版中加入了 Auto DevOps,彷佛是更加先进的 CI。团队内部目前使用的即是 GitLab EE,后续就将以 GitLab 为主,讲讲其中配合 GitLab Runner 来规范化开发流程。