一、Git:代碼的“日記本”與“協作賬本”¶
在開始之前,我們先聊聊Git。簡單說,Git是一個版本控制工具,就像給代碼寫“日記”——你每次修改代碼、提交新功能,Git都會記錄下來,還能幫你和團隊成員“協作寫日記”,避免衝突。
比如,你和同事同時改一個文件的不同部分,Git會自動識別衝突並提示你手動解決;你寫了新功能後,想回滾到上週的版本,Git也能輕鬆做到。在傳統開發中,代碼靠郵件或U盤傳來傳去,很容易丟版本、改亂文件;而Git讓代碼管理變得清晰、安全,是現代開發的基礎。
二、CI/CD:自動化的“生產流水線”¶
CI/CD是“持續集成(CI)”和“持續交付/部署(CD)”的合稱,核心是用自動化代替手動重複工作。
- 持續集成(CI):每次有人提交代碼到Git倉庫(比如合併PR、push分支),系統會自動拉取最新代碼,安裝依賴,運行測試(比如前端跑單元測試、後端跑接口測試)。如果測試失敗,立刻通知開發者,避免問題堆積到後期才發現。
- 持續交付/部署(CD):測試通過後,代碼會自動部署到目標環境(開發、測試、生產環境)。比如你寫完代碼,測試通過後,CI/CD會自動把代碼部署到測試服務器,甚至直接上線到生產環境(需謹慎設置)。
傳統開發中,這些步驟(合併代碼→手動測試→手動部署)全靠人工操作,容易出錯且效率低。CI/CD就像一條“流水線”,從代碼提交到上線全程自動化,讓開發者專注於寫代碼,而不是重複勞動。
三、Git與CI/CD:天生一對的“黃金搭檔”¶
Git是“觸發器”,CI/CD是“執行者”。它們的結合邏輯是:開發者在Git倉庫中提交代碼 → CI/CD工具檢測到變化 → 自動執行測試、構建、部署。
舉個更具體的例子:
1. 開發者在本地寫好一個前端頁面代碼,提交(git commit)並推送到GitHub/GitLab倉庫(git push)。
2. 此時,CI/CD工具(比如GitHub Actions、GitLab CI)會“監聽”到這個倉庫的變化,自動觸發流水線。
3. 流水線第一步:拉取最新代碼到CI服務器。
4. 第二步:安裝項目依賴(比如前端的npm install,後端的pip install)。
5. 第三步:運行測試(比如用Jest測試前端組件,用Postman測試後端接口)。如果測試失敗,整個流程終止,開發者收到通知修改代碼。
6. 第四步:測試通過後,構建項目(比如前端打包成靜態文件,後端編譯成可執行程序)。
7. 第五步:自動部署到目標環境(比如開發環境用Docker容器,生產環境用雲服務器)。
四、簡單實操:用GitHub Actions實現自動化部署¶
假設你是一名前端開發者,用React寫了一個簡單的項目,想讓每次提交代碼後自動測試並部署到Netlify(一個免費的靜態網站託管平臺)。
- 準備Git倉庫:在GitHub上創建一個新倉庫,提交你的React項目代碼。
- 配置GitHub Actions:在倉庫根目錄新建
.github/workflows/ci-cd.yml文件,內容如下:
name: 自動測試與部署
on:
push:
branches: [ main ] # 只有推送到main分支時觸發
jobs:
test-and-deploy:
runs-on: ubuntu-latest # 使用Ubuntu系統
steps:
- name: 拉取代碼
uses: actions/checkout@v4 # GitHub官方提供的拉取代碼Action
- name: 安裝Node.js
uses: actions/setup-node@v4
with:
node-version: 20 # 指定Node版本
- name: 安裝依賴
run: npm install # 前端項目安裝依賴
- name: 運行測試
run: npm test # 執行package.json裏的test腳本(比如Jest測試)
- name: 構建項目
run: npm run build # 生成可部署的靜態文件(比如React的build目錄)
- name: 部署到Netlify
uses: netlify/actions/cli@master
with:
args: deploy --dir=build --prod # 部署build目錄到Netlify生產環境
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} # 從GitHub Secrets獲取Netlify令牌
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} # 目標網站ID
- 配置Netlify:在Netlify上連接你的GitHub倉庫,部署方式選擇“從GitHub Actions觸發”。
- 測試效果:開發者修改代碼後,
git push到main分支,GitHub Actions會自動跑測試,測試通過後自動部署到Netlify,你可以在瀏覽器直接訪問部署後的網站。
五、爲什麼要結合Git和CI/CD?¶
- 減少錯誤:自動測試代替人工檢查,能及時發現邏輯漏洞、兼容性問題。
- 加快迭代:從“提交代碼→測試→部署”全程分鐘級完成,不再需要等“下週上線”。
- 降低成本:減少人工操作,團隊可以把精力放在覈心功能開發上,而非重複流程。
- 可追溯:每次部署都能追溯到是哪個提交觸發的,問題排查更簡單。
Git就像“地基”,管理代碼的版本和協作;CI/CD是“流水線”,把代碼從提交到上線的過程自動化。兩者結合,讓開發流程從“手動摸索”變成“自動流暢”,是現代開發必備的技能。如果你剛開始接觸,不妨從一個簡單的小項目(比如靜態網頁)開始嘗試,很快就能體會到自動化的快樂!