黑马程序员技术交流社区

标题: 【上海校区】Practice - iOS 项目持续集成实践(一) [打印本页]

作者: 不二晨    时间: 2018-7-18 09:26
标题: 【上海校区】Practice - iOS 项目持续集成实践(一)
Preface一个软件工程项目从编写、到测试、再最终交付到用户通常有很多重复且固定的步骤。虽然作为开发者,我们的核心任务是编写代码,而这些其他的步骤却也不能忽视,持续集成(Continuous Integration)则可以帮助开发者完成这些琐碎的事务,提升团队的开发效率与质量。
本文将主要介绍持续集成是什么,以及其中的好处。当然,您可能也注意到了标题后面「(一)」,没错,持续集成并非一篇文章可以概括,笔者希望尽可能将目前团队中使用到的和持续集成相关的内容进行总结,目的是为了让大家一起思考如何让持续集成更好地服务我们开发。当然,限于笔者能力,文中不免出现遗漏,也望读者能够批评和指出。
What持续集成,译自 Continuous Integration,简称 CI(在下文中,将统一使用该英文简称)。在 Wikipedia 中,也有针对 CI 特别详细且专业的介绍。简而言之,当开发者通过版本控制系统(例如 Git)提交了代码,CI 系统将为其自动执行构建、分析、测试等服务,当前面的服务一致通过,其也能直接将产品部署到生产环境,而后进入下一个循环。其中每一步都将自动触发、执行,结果也将会自动反馈回开发者。正如下图所示,CI 的重点在于 C——持续。


Why & Why not那么为什么需要 CI 呢?相比于传统的先开发,再测试,后上线的模式有哪些好处呢?在团队使用 CI 这段时间中,得出了以下主要两个好处:
如果这两个显而易见的好处还不足以说服,可以参考文末 Reference 中 EKATERINA NOVOSELTSEVA 的文章。那么 CI 会不会也存在什么难处呢?
如果后面两个问题并没有阻挠你,那么就开始尝试 CI 吧~
HowCI 并不依赖于某种特定的技术栈,其属于一种编程范式。但是,具体谈及如何实践,这就需要结合不同的工具和业务,进行定制。
Jenkins

Jenkins 是一款使用 Java 开发且开源的持续集成工具,很多 iOS 团队内部都会使用 Jenkins & Fastlane 来自动化打包。因为 Jenkins 是开源的,可以方便地部署在自己的服务器中,而且也有很多插件来辅助不同的技术栈和功能需求。Swift 官方也使用了 Jenkins 作为自己的 CI。


GitHub with Travis CI

GitHub,人尽皆知,是全球最大的代码托管平台,但 GitHub 本身并没有集成 CI。但有很多 CI 平台为 GitHub 定制 CI 环境,其中使用较多的便是 Travis CI。在 GitHub 仓库中看到有 .travis.yml 文件便意味着该仓库集成了 Travis CI。对于开源的项目,可以选择它就不用开发者再单独配置服务器来运作 CI,当然速度可能会慢些。之前在写个人的一个命令行工具时,便尝试使用了 Travis CI,而且可以非常容易的将 CI 状态和代码覆盖率的 Budge 标示在项目文档中。


GitLab with CI

相比于上述的几个平台,GitLab 真正把代码托管和 CI 结合了起来,并在最新 Release 版中加入了 Auto DevOps,似乎是更加先进的 CI。团队内部目前使用的便是 GitLab EE,后续就将以 GitLab 为主,讲讲其中配合 GitLab Runner 来规范化开发流程。


作者:萌面大道
链接:https://juejin.im/post/5b4e39edf265da0f82022724




作者: 不二晨    时间: 2018-7-18 11:12
奈斯,优秀
作者: 小影姐姐    时间: 2018-7-18 11:22
牛牛牛!
作者: wuqiong    时间: 2018-7-26 11:47

作者: 吴琼老师    时间: 2018-7-26 16:33





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2