iota app 的 持續交付 (Continuous Delivery)
持續交付 定義
(Continuous Delivery)
讓軟體產品的產出過程在一個短週期內完成,
以保證軟體可以穩定、持續的保持在隨時可以釋出的狀況。它的目標在於讓軟體的建置、測試與釋出變得更快以及更頻繁。
這種方式可以減少軟體開發的成本與時間,減少風險。
持續交付 定義
(Continuous Delivery)
-
定義:
- 保證軟體可以 短周期、穩定、持續的在隨時可以釋出的狀態
-
目的 & 優點:
- 減少軟體開發的成本與時間,減少風險
持續交付 流程
(Continuous Delivery)
- Develop
- Build
- Test
- Deploy
- Release
- and Feedback!!!

iota app 遇到的問題
-
Repository & submodule 太多,容易出錯
- 有 xmpp, view, mobile, desktop 四個 repository
- 切錯一個 branch 或少 pull 一次 就等於 build 錯
-
Release 前才 build app,導致太晚才能發現錯誤
- build 錯誤都等到 Release 前才發現,很難馬上修好
- view 錯誤都等到 Release 前才發現,很難馬上修好
-
每次都花很多時間在 MR 後的測試上
- build app*4, 修改 ios 版號, 下載, download 到手機上
- 因為太麻煩,所以基本上 MR 後不會 build 出來測試
-
每次都花很多時間在 release 上
- build app*4, 修改 ios 版號, 下載, release app*4
iota app 遇到的問題
-
Repository & submodule 太多,容易出錯
- 有 xmpp, view, mobile, desktop 四個 repository
- 切錯一個 branch 或少 pull 一次 就等於 build 錯
-
Release 前才 build app,導致太晚才能發現錯誤
- 建置環境錯誤都等到 Release 前才發現,很難馬上修好
- 程式錯誤都等到 Release 前才發現,很難馬上修好
-
每次都花很多時間在 MR 後的測試上
- build app*4, 修改 ios 版號, 下載, download 到手機上
- 因為太麻煩,所以基本上 MR 後不會 build 出來測試
-
每次都花很多時間在 release 上
- build app*4, 修改 ios 版號, 下載, release app*4
iota app 遇到的問題
-
Repository & submodule 太多,容易出錯
- 有 xmpp, view, mobile, desktop 四個 repository
- 切錯一個 branch 或少 pull 一次 就等於 build 錯
-
Release 前才 build app,導致太晚才能發現錯誤
- build 錯誤都等到 Release 前才發現,很難馬上修好
- view 錯誤都等到 Release 前才發現,很難馬上修好
-
每次都花很多時間在 MR 後的測試上
- build app*4, 修改 ios 版號, 下載, download 到手機上
- 因為太麻煩,所以基本上 MR 後不會 build 出來測試
-
每次都花很多時間在 release 上
- build app*4, 修改 ios 版號, 下載, release app*4
iota build app 很麻煩的解法
- 測試版 Continuous Deployment
- 正式版 Continuous Delivery
iota app 測試版 CD
- 一個 MR,一個版本







Build Feedback Deploy
iota app 測試版 CD
- 一個 MR,一個版本











Build Feedback Deploy
iota app 正式版 CD
- 只在 Desktop / Mobile Merge 回 Master 時觸發











Test Feedback Release Feedback

iota app CD 完整流程














目前成效
- 加入 Daily build 機制
- 額外花時:無
- 減少 Release 花費時間
- 不再需要臨時 debug
- 省去點 Jenkins、下載、上 Desktop、更版號 等時間
- 只剩 android上架、ios上架、打 tag 要費時
- 區分 artifactory 上的 正式版 & 測試版
- 正式版:x.x.x
- 測試版:x.x.x-test
TODOs
- 完善 CI 機制
- ESLint 搭配 GitLab CI
- 銜接自動測試腳本
- 自動打 tag
- 自動升版 (x.x.x-test)
- 自動加上 GitLab label
心得
很瑣碎、很容易忘記、很容易出錯的事情,
自動化就對了
References
- https://en.wikipedia.org/wiki/Continuous_delivery
- https://puppet.com/blog/continuous-delivery-vs-continuous-deployment-what-s-diff
- https://www.altexsoft.com/blog/business/continuous-delivery-and-integration-rapid-updates-by-automating-quality-assurance/
- https://dev.to/semaphore/ci-cd-continuous-integration-delivery-explained-75l
- https://medium.com/@crunchtech/our-journey-to-continuous-deployment-part-1-625ab9ae7d41
- https://www.websequencediagrams.com
iota app 的 持續交付 (Continuous Delivery)
By Chang Henry
iota app 的 持續交付 (Continuous Delivery)
- 55