Workflows 概念
部分內容由 LLM 生成,尚未經過人工驗證。
GitHub Actions Workflow 的基本概念與執行流程。
什麼是 Workflow
Workflow 是由一個或多個 job 組成的可配置自動化流程,定義在儲存庫的 .github/workflows/ 目錄下。
Workflow 檔案位置
.github/
└── workflows/
├── ci.yml
├── deploy.yml
└── test.ymlWorkflow 執行流程
觸發事件
根據定義的事件(如 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-latest | 2-core CPU, 7 GB RAM, 14 GB SSD |
| windows-latest | 2-core CPU, 7 GB RAM, 14 GB SSD |
| macos-latest | 3-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