--- tags: 基礎 --- ###### tags: `CI/CD`、`vue`、`github`、`gitlab` # ♨ Day 2 CI/CD介紹 常見情境 ---------- Clone 的專案無法執行 A 將手上可以正式執行與建置的專案,提交到版本控制系統。但因為 A 的粗心,少提交相關的檔案,或組態設定內的設定指向不在版管範圍內的檔案。 當 B 接手維護時,因為檔案缺少或組態設定錯誤,造成 B 要花費額外的時間進行修正。 提交程式碼時,發現大量的衝突,需花大量額外時間來解決衝突 A、B、C 三位開發者協力開發一個系統,若三人都在負責功能開發完成後,才提交修改內容。 第一個提交的人很幸運,可能沒有任何的衝突。 第二個提交的人,因為手上的版本與線上的版本,己經有相當大的差異,他可能要額外花時間解決與前一位提交者的衝突。 第三個提交旳人,就更辛苦。因為最新版本的程式,在經過兩位提交的變更後,版本間的差異更大。變動的範圍越大,可能衝突項目就更多。甚至可能會重覆出現第二位提交者所遇到的衝突。 持續整合CI(Continuous Integration) ---------- 持續整合的目的,利用頻繁地提交新功能的變更,觸發自動化建置和測試,確保最新版本的軟體是可運行的。 * 版本控制: 持續整合最重要的一步,可以說,沒有版控,就沒有 CI/CD。 * 建置: 確保提交的程式碼是否可以執行的。 * 自動化測試 確保功能正常與軟體品質。 * 程式碼分析: 檢查 code style 或程式的穩健度。 持續整合的重點是將各個開發人員的工作產品融合到一個儲存庫中。通常,此操作每天要進行多次,其主要目的是為了及早發現整合錯誤,最終將導致更緊密的內聚和更多的開發協作。 連續輸送的目的是使展開或釋放過程中固有的摩擦點最小化。通常,實現涉及自動化構建部署的每個步驟,以便可以隨時隨地(理想情況下)完成安全的程式碼釋出。 ### 流程: * 「程式建置」 開發人員在每一次的 Commit & Push 後,都能夠於統一的環境自動 Build 程式,透過此一步驟可以避免每個開發人員因本機的環境&套件版本不相同,造成 Service 異常。 * 「程式測試」 當程式編譯完成後,將會透過「單元測試」測試新寫的功能是否正確,或者確認是否有影響到現有功能,透過該步驟進行測試,可以避免掉開發人員遺忘於本機先行檢查,作為「雙重驗證」工用。 持續交付CD(Continuous Delivery) ---------- 持續交付(Continuous delivery)指的是,頻繁地將軟體的新版本,交付給質量團隊或者使用者,以供評審。如果評審通過,程式碼就進入生產階段。 持續交付可以看作持續整合的下一步。 它強調的是,不管怎麼更新,軟體是隨時隨地可以交付的。 持續交付在持續集成的基礎上,將集成后的代碼部署到更貼近真實運行環境的「類生產環境」(production-like environments)中。 比如,我們完成單元測試后,可以把代碼部署到連接資料庫的 Staging 環境中更多的測試。 如果代碼沒有問題,可以繼續手動部署到生產環境中。 持續部署CD(Continuous Deployment) ---------- 持續部署是指當交付的程式碼通過評審之後,自動部署到生產環境中。持續部署是持續交付的最高階段。 這意味著,所有通過了一系列的自動化測試的改動都將自動部署到生產環境。它也可以被稱為“Continuous Release”。 參考: * [淺談持續整合(CI)、持續交付(CD)、持續部署(CD)](https://iter01.com/598499.html) * [08. 踏入 CI/CD 的世界 - 觀念篇](https://ithelp.ithome.com.tw/articles/10204538) * [[學習筆記] 簡單了解 CI/CD 是什麼吧](https://zx2515296964.medium.com/%E5%AD%B8%E7%BF%92%E7%AD%86%E8%A8%98-%E7%B0%A1%E5%96%AE%E4%BA%86%E8%A7%A3-ci-cd-%E6%98%AF%E4%BB%80%E9%BA%BC%E5%90%A7-7adf50a573e6) * [Day12 什麼是 CICD](https://ithelp.ithome.com.tw/articles/10219083) * [CI/CD是什麼?如何理解持續集成、持續交付和持續部署](https://www.itnotetk.com/2022/03/20/ci-cd%E6%98%AF%E4%BB%80%E9%BA%BC%EF%BC%9F%E5%A6%82%E4%BD%95%E7%90%86%E8%A7%A3%E6%8C%81%E7%BA%8C%E9%9B%86%E6%88%90%E3%80%81%E6%8C%81%E7%BA%8C%E4%BA%A4%E4%BB%98%E5%92%8C%E6%8C%81%E7%BA%8C%E9%83%A8/)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up