為什麼我們需要 CI / CD ?
在比較小且快速的循環中,持續驗證系統開發結果 ,小部分小部分地儘早確認,期望開發產出能符合原始需求,或依據產出進行快速修正。 簡單來說就是儘量減少手動人力,將一些日常工作交給自動化工具。例如:環境建置、單元測試、日誌紀錄、產品部署。
CI的目的
降低風險。
減少人工手動的繁複程序。
可隨時產生一版可部署的版本。
增加系統透明度。
建立團隊信心。
什麼是持續性整合(CI)呢?持續性整合的目的為:針對軟體系統每個變動,能持續且自動地進行驗證。此驗證可能包含了:
建置 (build)
測試 (test)
程式碼分析 (source code analysis)
其他相關工作 (自動部署)
驗證完成後,進一步可以整合自動化發佈或部署 (Continuous Delivery / Continuous Deployment) 。透過此流程可以確保軟體品質,不會因為一個錯誤變動而產生錯誤結果或崩潰(Crash)。此流程中的各類工具,也會產生一些回饋給開發者或其他角色,包含網頁/報表等等,用來追蹤並改善軟體潛藏的問題。
工具的選擇
Jenkins
談到 CI,最廣為人知且老牌的工具是 Jenkins。Jenkins的功能完整,也提供了上千個外掛 (Plugins) 來對應各種開發語言與工具。Jenkins目前已發展到了 2.x 版,新版本中對於 Pipeline 概念及容器 (Container) 整合也趨於完整,是一套可以自訂運用的系統。但也因為其功能強大、客製程度高,上手需要一些時間。然而一旦流程被定義,並整合好相關環境,它可以發揮持續性整合威力,大幅增加開發生產力
Git — 版本管理
GitHub — 程式碼託管、審查
CircleCI — 自動化建置、測試、部署
Docker — 可攜式、輕量級的執行環境(使用 Docker,統一開發者、測試人員、以及產品的執行環境。)
AWS Elastic Beanstalk — 雲端平台
Slack — 團隊溝通、日誌、通知
建立 CI / CD 流程雛形
我們結合了 Git Flow + Protected Branch Flow 的開發流程,流程如下:
開發者 (Developer) 先開立 (create) 一個功能分支 (feature branch)。
開發者提交一個 Pull Request, SCM 系統會自動觸發 Jenkins 進行建置以及測試。這個觸發通常是經由 Webhook 來實現。
在軟體建置完成後,在 Jenkins 增加一個步驟來送出原碼掃瞄 (Code Scan) 的請求給 Sonarqube 系統。Sonarqube 則在完成程式碼掃瞄後將結果寫回 SCM 系統。
由於我們在 SCM 上連結了 Slack,每個步驟完成(成功或失敗)的通知便可以送到 Slack 群組。
原碼審核者 (Reviewer) 可以到 SCM 上查看這個Pull Request的相關訊息,搭配 Code Scan的結果決定是否將這個分支合併 (merge) 回主線(develop/master branch)。
分支合併可以觸發另一個 CI 工作,使 Jenkins 將主線建置後部署到測試環境提供給其他人員進行測試。
訂閱:
張貼留言 (Atom)
熱門文章
-
資深前端工程師面試指南:Nuxt 3 生命週期與 SSR、CSR、SSG 渲染策略 在資深前端工程師的面試中,Nuxt 3 是一個熱門話題,尤其是其生命週期以及伺服器端渲染 (SSR)、客戶端渲染 (CSR) 和靜態生成 (SSG) 的應用場景。這些議題不僅考驗對框架的理解...
-
資料庫設計與優化題庫(適用 MySQL / Laravel) 在現代 Web 應用開發中,資料庫設計與優化是資深後端工程師的核心技能,尤其在使用 MySQL 與 Laravel 框架時。本文將提供的題庫擴展為一篇技術文章,分為四大類別。每個問題不僅列出,還附上深入解析、程式...
-
🧠 Vue3 + Nuxt3 面試速答小抄(完整版) 這份速答小抄專為準備 Vue3 與 Nuxt3 面試的開發者設計,採用「方法論 → 案例 → 專業詞彙 → 結果/影響」結構,幫助你在 30 秒內精準展現專業深度,並針對 async 相關問題補充細節。每題都可濃縮為...
-
資深前端工程師面試指南:Vue 與 Nuxt 篇 資深前端工程師的面試不僅考驗 Vue 和 Nuxt 的基本語法,還深入探討架構設計、效能優化、SSR、SEO、安全性、測試與團隊協作等層面。本文將提供的問題列表擴展為一篇技術文章,分為六大類別。每個問題附上深入解析、程式碼範...
-
🧩 PHP/Laravel 資深工程師十大常見面試問題速答小抄(詳細版含演算法與底層原理) 以下是針對 PHP/Laravel 資深工程師面試的十大常見問題,答案經過優化,融入底層原理(如 CORS)、詳細技術細節、具體案例、量化成果與演算法問題,幫助你在面試中展現專業深...
-
🧭 AI Debug & 開發提示詞範本庫(Laravel 專用) 這份範本庫提供一系列標準化的提示詞,幫助 PHP/Laravel 開發者在 Debug、功能開發與進階應用中高效利用 AI 作為程式副駕駛。範本適用於 Laravel 10/11 與 PHP 8.x 環...
-
資深 PHP 後端面試追問應答手冊 這份手冊整理了資深 PHP 後端工程師面試中常見的追問問題與結構化回答,涵蓋 Debug、架構設計、效能優化、安全性、團隊合作與 DevOps 等面向。每個回答遵循 方法論 → 案例 → 專業詞彙 → 結果/影響 的公式,幫助你在面試中...
-
🚀 AI 提示詞最佳實踐:Vue3 / Nuxt3 開發與除錯指南 在現代前端開發中,AI 已成為提高效率的強大工具。然而,如何精準地向 AI 提問,是釋放其潛能的關鍵。這份指南將提供一系列針對 Vue3 和 Nuxt3 的提示詞範本,涵蓋從基礎除錯到進階功能開發,幫助你更...
-
資深 PHP 後端面試追問應答手冊 - Redis 應用篇 本篇為 「資深 PHP 後端面試追問應答手冊」 的補充,聚焦於 Redis 在 PHP(特別是 Laravel)中的進階應用。Redis 作為高效的記憶體資料庫,在快取、隊列、即時通信、會話管理和分散式鎖等場景...
-
非技術面試速答小抄:以 STAR 法則展現職場成熟度 在技術面試中,除了程式設計和系統設計題目外, 行為面試問題 同樣至關重要。這些問題能展現你的軟性技能、解決問題的能力以及團隊合作力。本小抄提供以 STAR 法則(情境 Situation → 任務 Task → 行動 A...
沒有留言:
張貼留言