持續整合與持續部署 (CI/CD)

avatar-img
發佈於軟體開發
更新於 發佈於 閱讀時間約 6 分鐘

1. 什麼是持續整合 (Continuous Integration, CI)? 🤔

  • 定義: CI 是一種軟體開發實踐,開發團隊成員頻繁地將他們的程式碼變更整合到一個共享的主幹(main branch)中。每次整合都會觸發自動化的建構 (Build)自動化的測試 (Test)
  • 白話比喻: 想像一個團隊的每個人都在寫一本書的不同章節。CI 就像是大家每寫完一小段,就立刻把自己的部分交上去,然後有一個自動檢查機器人立刻檢查所有章節拼起來有沒有語法錯誤、有沒有內容衝突,並跑一遍基礎的內容測試,確保書本內容是連貫且沒有明顯問題的。
  • 核心目標: 及早發現整合錯誤和程式碼問題,減少在開發後期才發現大問題的風險。
  • 關鍵活動:
    1. 頻繁提交程式碼: 開發者每天多次將程式碼提交到版本控制系統(如 Git)。
    2. 自動化建構: 每次提交都會觸發 CI 伺服器自動拉取最新程式碼,進行編譯、打包,生成可執行的軟體包。
    3. 自動化測試: 建構成功後,自動運行各種測試,例如單元測試 (Unit Tests)整合測試 (Integration Tests),以確保程式碼的品質和功能的正確性。
    4. 即時回饋: 如果建構或測試失敗,CI 系統會立即通知開發者,以便他們快速修復問題。

2. 什麼是持續部署 (Continuous Deployment, CD)? 🚀

  • 定義: CD 是 CI 的延伸,它進一步將自動化部署的概念引入。每次成功通過 CI 階段的程式碼變更,都會自動地部署到生產環境(或使用者可用的環境)
  • 白話比喻: 如果 CI 機器人檢查書本內容沒問題,那麼 CD 機器人就會立刻把這本新書印刷出來,並自動運送到書店上架,讓讀者可以馬上買到最新、最修正過的版本。
  • 核心目標: 讓軟體產品更快、更頻繁地交付到使用者手中,實現快速迭代和價值交付。
  • 關鍵活動:
    1. 自動化部署: 成功通過 CI 測試的程式碼包,會被自動部署到測試環境、預生產環境,最終到生產環境。
    2. 持續交付 (Continuous Delivery, CD) vs. 持續部署 (Continuous Deployment, CD):
      • 持續交付 (Continuous Delivery): 程式碼變更經過 CI 後,可以自動部署到測試/預生產環境,但部署到生產環境需要人工審核或手動觸發。
      • 持續部署 (Continuous Deployment): 更進一步,所有通過自動化測試的程式碼變更都會自動部署到生產環境,無需人工干預。這是最高層次的自動化交付。
    • 回滾機制: 應有自動化的回滾機制,以便在部署後發現嚴重問題時,能快速恢復到前一個穩定版本。

3. CI/CD 的重要性與優勢 🌟

  • 加速軟體交付 (Faster Delivery): 大幅縮短軟體從開發到上線的時間,讓新功能和修復更快地到達用戶。
  • 提高軟體品質 (Improved Quality): 自動化測試及早發現並修復錯誤,減少缺陷進入生產環境的機會。
  • 降低風險 (Reduced Risk): 小批量、頻繁的部署減少了每次部署的複雜性和風險,即使出現問題,也更容易定位和修復。
  • 提高開發效率 (Increased Efficiency): 減少手動操作,釋放開發者時間,讓他們專注於編寫程式碼。
  • 增強團隊協作 (Enhanced Collaboration): CI 鼓勵開發者頻繁整合,減少「整合地獄」的發生。
  • 持續回饋 (Continuous Feedback): 快速交付意味著可以更快地從用戶那裡獲得回饋,並將其納入下一次迭代。
  • 實現 DevOps 文化: CI/CD 是 DevOps (開發與運維) 理念的核心實踐,它促進了開發和運維團隊之間的緊密合作。

4. CI/CD 常用的工具 🛠️

實現 CI/CD 流水線需要一系列工具的協同工作:

  • 版本控制系統:
    • Git: 最主流的分散式版本控制系統。
    • GitHub, GitLab, Bitbucket: 提供 Git 程式碼託管和整合 CI/CD 功能的平台。
  • CI/CD 工具 / 自動化伺服器: 這些是構建和運行 CI/CD 流水線的核心。
    • Jenkins: 最知名的開源 CI/CD 自動化伺服器,功能強大,但配置可能較複雜。
    • GitLab CI/CD: GitLab 內建的 CI/CD 服務,與程式碼管理無縫整合。
    • GitHub Actions: GitHub 提供的 CI/CD 服務,讓開發者直接在 GitHub 倉庫中定義自動化工作流。
    • CircleCI, Travis CI, Jenkins X: 其他流行的雲端原生或開源 CI/CD 工具。
    • Azure DevOps, AWS CodePipeline/CodeBuild/CodeDeploy, Google Cloud Build: 雲端供應商提供的 CI/CD 服務,與其雲端生態系統深度整合。
  • 測試框架:
    • 單元測試: JUnit (Java), Pytest (Python), Jest (JavaScript)
    • 整合測試/端到端測試: Selenium, Cypress, Playwright
  • 容器化工具:
    • Docker: 打包應用程式及其依賴,確保環境一致性。
    • Kubernetes: 自動化部署、擴展和管理容器化應用。
留言
avatar-img
留言分享你的想法!
avatar-img
hello maple
4會員
81內容數
各種工作及生活中的小小紀錄
hello maple的其他內容
2025/06/04
這篇文章討論負載平衡的技術、類型、運作原理、常見演算法和應用場景,並解釋其如何與擴展性相關聯。
Thumbnail
2025/06/04
這篇文章討論負載平衡的技術、類型、運作原理、常見演算法和應用場景,並解釋其如何與擴展性相關聯。
Thumbnail
2025/06/04
本文提供網路監控的完整指南,涵蓋定義、指標、最佳實踐、數據來源、協定、拓撲發現、基線、分散式監控、自動化及雲端監控等面向,並以淺顯易懂的比喻輔助說明,適合所有想了解網路監控的人閱讀。
Thumbnail
2025/06/04
本文提供網路監控的完整指南,涵蓋定義、指標、最佳實踐、數據來源、協定、拓撲發現、基線、分散式監控、自動化及雲端監控等面向,並以淺顯易懂的比喻輔助說明,適合所有想了解網路監控的人閱讀。
Thumbnail
2025/06/04
備份 (Backup) 就是你定期把這些黃金和文件複製一份,然後存放在另一個安全的地方。萬一金庫被盜、失火或文件破損,你還有副本可以拿來用。 災難復原 (Disaster Recovery, DR) 則是一套完整的應變計畫,當真的發生像金庫失火這樣的大災難時,你該怎麼做才能最快地把所有黃金和文件找
Thumbnail
2025/06/04
備份 (Backup) 就是你定期把這些黃金和文件複製一份,然後存放在另一個安全的地方。萬一金庫被盜、失火或文件破損,你還有副本可以拿來用。 災難復原 (Disaster Recovery, DR) 則是一套完整的應變計畫,當真的發生像金庫失火這樣的大災難時,你該怎麼做才能最快地把所有黃金和文件找
Thumbnail
看更多
你可能也想看
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
在這篇文章中,我們將介紹工作與以前念書時期在開發流程上的差異,並深入瞭解CI/CD、Travis CI以及加解密的應用。 CI/CD是自動化的軟體開發實踐,而加解密則是保護機密資料安全的重要技術。
Thumbnail
在這篇文章中,我們將介紹工作與以前念書時期在開發流程上的差異,並深入瞭解CI/CD、Travis CI以及加解密的應用。 CI/CD是自動化的軟體開發實踐,而加解密則是保護機密資料安全的重要技術。
Thumbnail
本文將介紹如何在Gitlab上部署和註冊runner,以進行CI/CD測試。透過Docker-compose方式進行部署,同時注意安裝時的一些注意事項。建議學習者至少掌握一種以上的Pipeline工具,以滿足實務上的需求。
Thumbnail
本文將介紹如何在Gitlab上部署和註冊runner,以進行CI/CD測試。透過Docker-compose方式進行部署,同時注意安裝時的一些注意事項。建議學習者至少掌握一種以上的Pipeline工具,以滿足實務上的需求。
Thumbnail
前年第一次藉公司機會,參加了DevOpsDay的活動。雖然devOps一詞各自表述,大多狀況還是偏向維運會遇到的技術為主,做為平時開發、跟使用者訪談需求的工作內容來說,參加聚會如果沒有一定的知識,對講者所提到的狀況比較難有共鳴...
Thumbnail
前年第一次藉公司機會,參加了DevOpsDay的活動。雖然devOps一詞各自表述,大多狀況還是偏向維運會遇到的技術為主,做為平時開發、跟使用者訪談需求的工作內容來說,參加聚會如果沒有一定的知識,對講者所提到的狀況比較難有共鳴...
Thumbnail
列出一套完整的程式 程式設計有許多種方法,不過通常會先列出清單的再逐一執行,這樣會加快程式設計的速度。設計通常會採取順推的辦法。所以順推的程式設計方式就是經歷觀念溝通、系統分析、資料統合、權限管理、頻率與時間、後台管理、畫面設計等等階段後,將框架設計完了以後,先列出一套完整的程式,將所有使用者都確
Thumbnail
列出一套完整的程式 程式設計有許多種方法,不過通常會先列出清單的再逐一執行,這樣會加快程式設計的速度。設計通常會採取順推的辦法。所以順推的程式設計方式就是經歷觀念溝通、系統分析、資料統合、權限管理、頻率與時間、後台管理、畫面設計等等階段後,將框架設計完了以後,先列出一套完整的程式,將所有使用者都確
Thumbnail
前言 上次我們講到 CI/CD 中的 when 使用,今天我們要來傳授一套必殺技,我們要把過去所學的全部融合再一起,相信各位都準備好了,將 Gitlab 從枷鎖中解放出來吧,讓我們來詠唱「武裝完全支配術」 「System Call. Connect Armament. Search Archiv
Thumbnail
前言 上次我們講到 CI/CD 中的 when 使用,今天我們要來傳授一套必殺技,我們要把過去所學的全部融合再一起,相信各位都準備好了,將 Gitlab 從枷鎖中解放出來吧,讓我們來詠唱「武裝完全支配術」 「System Call. Connect Armament. Search Archiv
Thumbnail
上次我們講解了 CI/CD 的相依性,也講解了 stages 工作階段的運作,今天我們來了解 only 的作用,可以幫助我們做甚麼 only 作用 only 可以指定那些工作,只在哪個分支名運作,假設今天開了一個新分支,名子叫 feature/add_test 這樣子,接著 CI/CD 有定義四
Thumbnail
上次我們講解了 CI/CD 的相依性,也講解了 stages 工作階段的運作,今天我們來了解 only 的作用,可以幫助我們做甚麼 only 作用 only 可以指定那些工作,只在哪個分支名運作,假設今天開了一個新分支,名子叫 feature/add_test 這樣子,接著 CI/CD 有定義四
Thumbnail
上次我們了解 Pipeline 各自在做什麼是,今天來講解 Gitlab CI/CD 工作相依性,來了解 CI/CD 怎麼依據不同階段,進行工作。 上傳四個工作查看 CI/CD 運作 首先我們先定義我們要做的工作,然後上傳到 GitLab,看結果怎麼樣 run-unit-test: bef
Thumbnail
上次我們了解 Pipeline 各自在做什麼是,今天來講解 Gitlab CI/CD 工作相依性,來了解 CI/CD 怎麼依據不同階段,進行工作。 上傳四個工作查看 CI/CD 運作 首先我們先定義我們要做的工作,然後上傳到 GitLab,看結果怎麼樣 run-unit-test: bef
Thumbnail
前言 上次我們簡單的寫了 CI/CD 的工作,這次我們對 Pipeline 與 Job,來多加了解他們的運作,以及我們這些工作是怎麼處發的。 Pipeline 與 Job 首先我們先切到 Build 子清單,可以看到裡面有 Pipeline、Job、Pipeline editor、Pipeli
Thumbnail
前言 上次我們簡單的寫了 CI/CD 的工作,這次我們對 Pipeline 與 Job,來多加了解他們的運作,以及我們這些工作是怎麼處發的。 Pipeline 與 Job 首先我們先切到 Build 子清單,可以看到裡面有 Pipeline、Job、Pipeline editor、Pipeli
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News