軟體開發流程與版本控制(Software Development Workflow & Version Control)

軟體開發流程與版本控制(Software Development Workflow & Version Control)

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

🔹 什麼是版本控制?

版本控制(Version Control)是一種用來追蹤檔案變化的系統,主要用來管理程式碼,但其實任何文件都能用版本控制來管理。

想像一下:

  • 工程師每天都在改程式。
  • 如果改壞了、想回到昨天的版本怎麼辦?
  • 如果兩個人同時改同一份檔案又該怎麼合併?

這時候就會需要版本控制工具,最常見的就是 Git

🔹 Git 是什麼?

Git 是一個分散式的版本控制系統。你可以把它想成:

像 Google 文件那樣,記得你每一個修改紀錄,但是專門給程式碼用的,還能多人協作、安全又可回溯。

用 Git 可以做到:

  • 看誰改了哪一行
  • 隨時回到任何一個歷史版本
  • 支援多人同時改不同功能,最後再合併起來

🔹 GitHub 是什麼?

GitHub 是一個放 Git 專案的網站,也就是程式碼的「雲端主機」,讓團隊可以在線上共享、審查、協作開發。

Git 是技術,GitHub 是平台。

🔹 Branch(分支)是什麼?

在 Git 裡,「分支」就像是主線外開出的一條小路,可以讓工程師在不影響主線(通常是 mainmaster)的情況下開發新功能、修 bug。

想像情境:

  • main 分支就像正式的產品。
  • 工程師想加一個「新功能 A」,就會從 main 拉出一條 feature/A 分支。
  • 他在 feature/A 分支上寫、測試,等都完成、確認沒問題,再「合併(merge)」回 main,讓正式產品也有這個功能。

🔹 Pull Request(PR)是什麼?

當開發者完成一個功能分支的開發後,他們會發出一個 PR(Pull Request),意思是:「我寫好了,可以請別人幫忙審核並把它合併進主線嗎?」

🔹 CI/CD 的基本概念

CI(持續整合,Continuous Integration)

CI 是指開發者將程式碼頻繁地(通常是每天多次)合併進主分支(例如 main),並且透過自動化工具來進行編譯、測試、驗證,確保新提交的程式碼不會破壞系統。

CI 的關鍵

  • 開發者將自己的程式碼提交到 Git 存儲庫。
  • 每次提交(push)後,CI 工具會自動拉取最新的程式碼,執行測試、構建等操作。
  • 如果測試通過,才會繼續進行合併或部署。

CD(持續交付,Continuous Delivery)

CD 是指把 CI 過程中已經測試過且合格的程式碼,自動部署到測試環境或預生產環境中,確保每個版本都可以被隨時交付。

CD 的關鍵

  • 在 CI 的基礎上,CI 完成後,會自動將已測試的程式碼部署到其他環境。
  • 這樣可以隨時、快速地將新功能或修復部署到生產環境。

CD(持續部署,Continuous Deployment)(高階)

與持續交付相似,但在持續部署中,每次測試通過後,程式碼會自動部署到生產環境。這是一個更加自動化的過程。

🔹 CI/CD 與 Git 的搭配

Git 在 CI/CD 流程中扮演了核心角色。下面是 CI/CD 流程中如何與 Git 整合的具體步驟:

1. 開發者編寫程式碼並提交到 Git(推送到遠端分支)

開發者在本地端的分支上寫好程式碼後,會將變更推送到遠端 Git 存儲庫(如 GitHub)。

2. CI 工具觸發自動化流程

每次提交代碼後,CI 工具(如 Jenkins、GitHub Actions、GitLab CI、Travis CI)會檢測到變動,並自動啟動構建過程。

這包括:

  • 拉取程式碼
  • 執行單元測試、集成測試
  • 編譯程式碼(如果有需要)

3. 測試結果回饋

CI 工具會在測試完成後提供結果。

  • 如果測試成功,程式碼可以繼續處理,進入到下個階段。
  • 如果測試失敗,開發者會收到通知,並且需要修正錯誤後重新提交。

4. 自動部署到測試環境

當程式碼通過所有測試,並成功進行構建後,CI 工具會自動將代碼部署到測試環境或預生產環境中進行進一步驗證。

5. 代碼合併(如果是多分支開發)

如果是 feature 分支開發的話,CI 工具會觸發 Pull Request(PR),讓其他開發者進行代碼審查和合併。

  • 當 PR 通過審查後,會將其合併到 main 分支。
  • 然後會觸發部署流程,將最新的代碼推送到生產環境。

6. 自動部署到生產環境

在某些高效能團隊中,當程式碼經過所有測試且合併後,會自動部署到生產環境。這稱為「持續部署(Continuous Deployment)」。



avatar-img
hello maple
1會員
40內容數
各種工作及生活中的小小紀錄
留言
avatar-img
留言分享你的想法!
hello maple 的其他內容
從監控工具到 SRE 方法論,本文帶你了解如何透過日誌、告警、自動化與可靠性指標,實現高效交付與系統穩定並行的產品維運策略。
這篇文章探討了虛擬機和容器的優勢與局限,並探討了在不同需求下如何選擇最適合的技術,幫助企業實現更靈活和高效的 IT 運維。
在現代網路與雲端架構中,負載平衡(Load Balancer)、橫向擴展(Scale Out)、以及 API 溝通機制是不可或缺的基礎。本文帶你快速理解負載平衡如何分散流量、系統如何透過擴展應對成長需求,以及 API 在不同服務間扮演的溝通角色。
從監控工具到 SRE 方法論,本文帶你了解如何透過日誌、告警、自動化與可靠性指標,實現高效交付與系統穩定並行的產品維運策略。
這篇文章探討了虛擬機和容器的優勢與局限,並探討了在不同需求下如何選擇最適合的技術,幫助企業實現更靈活和高效的 IT 運維。
在現代網路與雲端架構中,負載平衡(Load Balancer)、橫向擴展(Scale Out)、以及 API 溝通機制是不可或缺的基礎。本文帶你快速理解負載平衡如何分散流量、系統如何透過擴展應對成長需求,以及 API 在不同服務間扮演的溝通角色。
本篇參與的主題活動
提升手作銷售額的關鍵在於審美,本文提供一套「懶人秒速判斷法」,從色彩掌握力、材質敏銳度、留白與呼吸感、整體故事感及比例掌握五個面向,全面檢視作品的美感戰力,幫助手作賣家提升作品質感及品牌價值,衝破訂價天花板。
經歷澳洲雪梨打工度假、義大利留學,和這次的歐洲冬季自助20天,我已經養成出國會固定搜尋這些項目的習慣~ 望對大家出國旅遊事前準備與行程規劃有幫助!有興趣的朋友就點進文章看看吧~
在商場江湖上,會計這門內功常被誤認為只有財務長、會計師那種老骨頭才需要修煉。但真相是不懂會計,就像拿著破銅爛鐵去闖天下,怎麼跟別人比劍?
提升手作銷售額的關鍵在於審美,本文提供一套「懶人秒速判斷法」,從色彩掌握力、材質敏銳度、留白與呼吸感、整體故事感及比例掌握五個面向,全面檢視作品的美感戰力,幫助手作賣家提升作品質感及品牌價值,衝破訂價天花板。
經歷澳洲雪梨打工度假、義大利留學,和這次的歐洲冬季自助20天,我已經養成出國會固定搜尋這些項目的習慣~ 望對大家出國旅遊事前準備與行程規劃有幫助!有興趣的朋友就點進文章看看吧~
在商場江湖上,會計這門內功常被誤認為只有財務長、會計師那種老骨頭才需要修煉。但真相是不懂會計,就像拿著破銅爛鐵去闖天下,怎麼跟別人比劍?