continuous-integration - 使用持续集成和持续部署的好用例是什么?
问题描述
我浏览了几个用于持续集成(以及持续交付和部署)的可用资源,例如:
- https://www.atlassian.com/continuous-delivery/principles/continuous-integration-vs-delivery-vs-deployment
- https://www.atlassian.com/continuous-delivery/continuous-integration/how-to-get-to-continuous-integration
- 持续集成 vs. 持续交付 vs. 持续部署
我的问题是
- 我什么时候应该使用持续集成
- 什么时候应该使用持续部署
解决方案
让我们尝试使用一个非常简化但不一定正确的真实示例:
我在一家开发 Android 应用程序的公司工作。目前我们必须开发一个应用程序,这只是一个相当小的项目,所以只有我和另一位同事在应用程序上工作。
由于我们是一流的开发人员,我们当然会编写测试,并且只希望我们的代码develop
在应用程序实际编译并且我们所有的测试都是绿色的时候到达分支。
为了自动化这个重复的任务,我们使用像Jenkins(或者像Bamboo这样的其他东西)这样的自动化/连续服务器,并创建一个工作流来构建我们的项目代码,并在我们尝试将任何代码提交到develop
分支时运行我们的测试。只有构建成功并且所有测试都是绿色的,我们的代码才会被集成到develop
分支中。
--> 我们正在使用持续集成,耶!
现在,几个月过去了,我们决定我们的应用已经准备好发布给 Play 商店的用户了。
我们从develop
分支中获取我们当前(并希望经过彻底测试)版本的应用程序的代码,并将其复制到名为release
.
该release
分支用于第二个 Jenkins 工作流,现在它与我们的第一个工作流相同:它从这个分支构建代码并针对它运行测试。
然后我们需要在新的 Jenkins 工作流程中添加另一个步骤。当我们的应用程序代码成功构建并且所有测试都为绿色时,我们希望应用程序自动部署/上传到 Play 商店,以便用户可以下载并安装到手机上。
--> 我们正在使用持续部署,耶!
推荐阅读
- python - SQL 在具有值边界的 CASE 中使用 LIKE 和通配符
- javascript - React Context API - 孩子/消费者可以请求提供者更改值吗?
- c - 如何通过大于 65535 字节的 iw_point 传递数据?
- c# - 使用通用接口创建工厂
- python - 如何在 Keras 中试验自定义二维卷积核?
- java - AWS S3 - 删除多个对象时出现 UserKeyMustBeSpecified 错误
- python - ipywidgets 使用复选框来显示或隐藏其他小部件
- javascript - Python 版本的 JavaScript ES6 符号
- android - 删除笔记后,用户收不到通知
- elasticsearch - 弹性搜索批量操作