Workflows 概念

部分內容由 LLM 生成,尚未經過人工驗證。

GitHub Actions Workflow 的基本概念與執行流程。

什麼是 Workflow

Workflow 是由一個或多個 job 組成的可配置自動化流程,定義在儲存庫的 .github/workflows/ 目錄下。

Workflow 檔案位置

.github/
└── workflows/
    ├── ci.yml
    ├── deploy.yml
    └── test.yml

Workflow 執行流程

觸發事件

根據定義的事件(如 push、pull_request)觸發 workflow。

初始化 Runner

GitHub Actions 啟動虛擬機器(Ubuntu、Windows 或 macOS)。

執行 Jobs

按照依賴關係執行定義的 jobs。

執行 Steps

每個 job 內的 steps 依序執行,可以是命令或 Action。

完成與報告

顯示執行結果(成功/失敗),並提供詳細日誌。

Workflow 狀態

狀態說明
Queued等待 runner 可用
In progress正在執行
Success所有 jobs 成功完成
Failure至少一個 job 失敗
Cancelled手動取消或超時

Runner 類型

GitHub-hosted Runners

Runner規格
ubuntu-latest2-core CPU, 7 GB RAM, 14 GB SSD
windows-latest2-core CPU, 7 GB RAM, 14 GB SSD
macos-latest3-core CPU, 14 GB RAM, 14 GB SSD

Self-hosted Runners

自託管 runner 可在自己的伺服器或虛擬機器上執行,提供更多控制和自訂選項。

Workflow 範例

基本 CI Workflow

name: CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run tests
        run: npm test

多環境部署 Workflow

name: Deploy

on:
  push:
    branches: [main]

jobs:
  deploy-staging:
    runs-on: ubuntu-latest
    environment: staging
    steps:
      - uses: actions/checkout@v4
      - name: Deploy to staging
        run: ./deploy.sh staging

  deploy-production:
    needs: deploy-staging
    runs-on: ubuntu-latest
    environment: production
    steps:
      - uses: actions/checkout@v4
      - name: Deploy to production
        run: ./deploy.sh production