github actions

GitHub Actions 是 GitHub 提供的一套 CI/CD(持續整合/持續部署)與自動化工具,能讓開發者在程式碼倉庫中直接定義並執行工作流程。它的核心理念是:當程式碼有變更時,自動觸發測試、建置、部署或其他任務,減少人工操作並提升效率 1 2 3


🚀 GitHub Actions 的核心概念

  • Workflow(工作流)
    YAML 檔案定義,放在 .github/workflows 目錄下。描述整個自動化流程。
  • Event(事件)
    觸發工作流的條件,例如:pushpull_request、定時排程(cron)、手動執行。
  • Job(任務)
    工作流中的執行單元,可以包含多個步驟。不同 Job 可平行或依序執行。
  • Step(步驟)
    Job 中的具體操作,例如執行命令、腳本或呼叫 Action。
  • Action(動作)
    可重複使用的模組,像是「檢出程式碼」、「安裝 Node.js」、「部署到雲端」等。可使用官方或社群提供的 Action,也能自製。
  • Runner(執行環境)
    負責執行工作流的伺服器,GitHub 提供雲端 Runner(Linux、Windows、macOS),也能使用自架 Runner。

🛠️ 常見用途

  • 自動化測試:每次推送程式碼時自動執行單元測試,確保品質。
  • 自動部署:合併到主分支後,直接部署到生產或測試環境。
  • 程式碼檢查:整合 ESLint、SonarQube 等工具,維持程式風格一致。
  • 通知與監控:與 Slack、Email 整合,隨時掌握工作流狀態。
  • 定時任務:利用 schedule 事件,定期執行爬蟲或資料更新 2 3

📄 範例:簡單的 CI 工作流

name: CI Workflow
on:
  push:
    branches: [ main ]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14'
      - name: Install dependencies
        run: npm install
      - name: Run tests
        run: npm test

這個範例會在程式碼推送到 main 分支時,自動安裝依賴並執行測試。


⚖️ 優勢與注意事項

  • 優勢
    • 提升開發效率,減少重複性工作
    • 降低人為錯誤風險
    • 與 GitHub 生態系無縫整合
  • 注意事項
    • 公開專案免費,但私有專案有使用時間限制
    • 自架 Runner 可省成本,但需自行維護環境 1

👉 總結來說,GitHub Actions 是一個強大且彈性的自動化平台,不僅能處理 CI/CD,也能延伸到通知、排程、爬蟲等多種場景,非常適合團隊提升開發流程的透明度與效率。

Also See

File14FileLast Modified
git 重新再從github上pull 所有branchgit 重新再從github上pull 所有branch1:24 AM - December 07, 2025
git 恢復到最近一次 git pull狀態,取消本地修改git 恢復到最近一次 git pull狀態,取消本地修改1:24 AM - December 07, 2025
git 初始化與推送流程圖git 初始化與推送流程圖1:24 AM - December 07, 2025
git 中查看commit歷史資訊git 中查看commit歷史資訊1:24 AM - December 07, 2025
git 中修改檔名且保留原來commit紀錄git 中修改檔名且保留原來commit紀錄1:24 AM - December 07, 2025
git Remote 常見情境與操作git Remote 常見情境與操作1:24 AM - December 07, 2025
git GUI tool, SourceTreegit GUI tool, SourceTree1:23 AM - December 07, 2025
把目前repo 所有的branch都push 到github把目前repo 所有的branch都push 到github8:20 PM - December 06, 2025
把目前 branch 上的修改(尚未 commit 的檔案)直接帶到一個新的 branch把目前 branch 上的修改(尚未 commit 的檔案)直接帶到一個新的 branch8:20 PM - December 06, 2025
從 Windows 把 repo 搬到 WSL再一次性 push 所有 branch 到GitHub 這樣就能避開 aux 檔名問題從 Windows 把 repo 搬到 WSL再一次性 push 所有 branch 到GitHub 這樣就能避開 aux 檔名問題8:20 PM - December 06, 2025
git指定初始化的 branch 名稱git指定初始化的 branch 名稱8:20 PM - December 06, 2025
git內部完全刪除一個檔案git內部完全刪除一個檔案8:20 PM - December 06, 2025
github上的repo clone下來check out 某一個dev branchgithub上的repo clone下來check out 某一個dev branch8:20 PM - December 06, 2025
github一台電腦同時使用兩個 GitHub 帳號github一台電腦同時使用兩個 GitHub 帳號8:20 PM - December 06, 2025