一、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(一個免費的靜態網站託管平臺)。

  1. 準備Git倉庫:在GitHub上創建一個新倉庫,提交你的React項目代碼。
  2. 配置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
  1. 配置Netlify:在Netlify上連接你的GitHub倉庫,部署方式選擇“從GitHub Actions觸發”。
  2. 測試效果:開發者修改代碼後,git push到main分支,GitHub Actions會自動跑測試,測試通過後自動部署到Netlify,你可以在瀏覽器直接訪問部署後的網站。

五、爲什麼要結合Git和CI/CD?

  • 減少錯誤:自動測試代替人工檢查,能及時發現邏輯漏洞、兼容性問題。
  • 加快迭代:從“提交代碼→測試→部署”全程分鐘級完成,不再需要等“下週上線”。
  • 降低成本:減少人工操作,團隊可以把精力放在覈心功能開發上,而非重複流程。
  • 可追溯:每次部署都能追溯到是哪個提交觸發的,問題排查更簡單。

Git就像“地基”,管理代碼的版本和協作;CI/CD是“流水線”,把代碼從提交到上線的過程自動化。兩者結合,讓開發流程從“手動摸索”變成“自動流暢”,是現代開發必備的技能。如果你剛開始接觸,不妨從一個簡單的小項目(比如靜態網頁)開始嘗試,很快就能體會到自動化的快樂!

小夜