電影裡,總是把工程師演成一種擁有超能力的角色,
一鍵破解密碼、一鍵駭入你電腦、一鍵上傳下載(就想問他的網路是哪家電信的……)
炸車炸房什麼的好像都很簡單,
還能「發明」新元素,飛上天什麼的……喔,那是「鈔能力」
而現實中的工程師們很清楚,我這一鍵下去……
不要有Bug、能正常Build、不要一堆紅字,真的就要偷笑了。
每個人的開發環境、各SDK或工具的路徑都會有些許不同,
更不用說很多專案還有套件的問題,
如果再加上是老專案年久失修,
或是有傻冒同事將自己電腦的Config或路徑整合到專案,
那真的會欲哭無淚。
「每一次拿到專案,都是踩抗的開始」
這就是為什麼要有CI/CD的導入!
持續整合 CI (Continuous Integration)
其實就是設法讓前面說的那些坑消失,而且自動化的過程。
包含了建置及持續測試,一般是將code push到儲存庫後,就會進入CI的流程。
機器會自動的將新的code與專案整合,並試著建置,
由於是設定好的環境,所以每次建置的條件及環境是固定的,或者是可預期的。
如果有寫好Unit Test的話,機器還會自動在建置完後跑測試。
這樣一來,不論前面提到的踩坑之旅,還是品質低下的code,都會即時自動找出來。
持續部署 CD (Continuous Deployment)
有設定好部署部份的話,機器也能在確認測試結果正常後,幫工程師把專案發布出去。
一般是會先將其發布到beta版,這樣相當於在工程師寫好後,
一口氣完成建置、Unit Test並交付給品管人員,
也能透過改動一些參數,直接上架喔!
其實有很多很多種方式去實作,網路上也有許多方案與教學。
一個完整的CI/CD可能會長這樣:
常見的工具:
GitLab(常用)
GitHub
Jenkins(老牌,建議了解)
同時也有一些像Fastlane之類的開源工具。
而本篇要說明的……都不是這些~
是更加簡單,適合個人小型專案的 -- Codemagic
這是一個第三方的網頁平台,若你擔心源碼被第三方存取,那就不建議用這個了。
但如果你本來就是放在像GitLab、GitHub之類的平台,
而且本身就是小型的專案,那就更適合這個方法了。
直接就能和你的儲存庫連結,並快速發布。
這樣就可以完成你的CI/CD囉~
才怪!
總之,如果還有問題,他也有豐富的資源可以幫你解惑。
當你習慣了寫測試、自己測完上git,並讓codemagic幫你CI/CD時,
才是真正學會的時候,不過現在先當即時的整合工具使用,也是很不錯的~
流程完成就像這樣:(因為目前沒寫測試,所以照片少了Test的部份)
延伸推薦:用GitLab 和 Fastlane設置的CI/CD
參考
CI/CD (持續性整合 / 部署) - 因為懶,所以更要 CI/CD!概念講解!
[學習筆記] 簡單了解 CI/CD 是什麼吧
架構師觀點: 你需要什麼樣的 CI / CD ?
Flutter 里的持续部署(Flutter官方)
使用 Codemagic 持续部署 Flutter 应用
使用 CodeMagic 和 Firebase 實現 Flutter CICD