📘 GitHub Workflows 基礎(二):深入理解 on
、jobs
、steps
的核心語法與執行邏輯
繼第一篇講完
.github/workflows/
中多個工作流的結構后,本篇將深入 GitHub Actions 的核心三要素:on
(觸發器)、jobs
(任務)、steps
(步驟),帶你徹底搞懂它的執行流程、語法規則與靈活寫法。
🧩 一、Workflow 的結構復習
每一個 .yml
文件都是一個完整的工作流(workflow),它的基本結構如下:
name: 工作流名稱on: # 👈 觸發條件push:branches: [main]jobs: # 👇 工作流任務build:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v4- run: echo "Hello World"
? 二、on
:定義何時觸發
on:
是 GitHub Actions 的“啟動器”——定義這個 workflow 應該在什么事件發生時啟動。
? 常見寫法
on: push # 推送時觸發
on: pull_request # PR 時觸發
on: workflow_dispatch # 手動觸發(按鈕)
? 進階配置
指定分支:
on:push:branches: [main, dev]
指定文件變化:
on:push:paths:- 'src/**'- '!docs/**'
多種觸發器:
on:push:pull_request:
📌 你可以組合不同觸發器,一個 workflow 可以監聽多個事件。
🧱 三、jobs
:任務組,真正的工作發生地
每個 jobs
就是一個“任務集合”,可以有多個 job 并行或順序執行。
基本結構
jobs:build:runs-on: ubuntu-lateststeps:...
build
是這個 job 的 IDruns-on
是運行環境(如 ubuntu、windows、macOS)- 一個 job 包含多個 step,每個 step 是一個命令或 action
🧩 四、steps
:構成 job 的每一個步驟
每個 job 的步驟通過 steps:
列出,按順序執行,就像命令行里一行一行敲的命令。
兩種類型的步驟:
1. 使用已有 action:
- uses: actions/checkout@v4 # 拉取代碼
- uses: actions/setup-node@v4with:node-version: 18
2. 自定義 shell 命令:
- run: echo "開始構建項目"
- run: npm install && npm run build
📌 run:
相當于寫一條 shell 命令。你可以寫一行,也可以像腳本一樣多行:
- name: 安裝并構建run: |npm cinpm run build
🔁 五、多個 Job 的依賴與串聯
默認情況下,多個 job 是并行執行的,但你可以使用 needs:
實現前后順序。
示例:先 build 再 deploy
jobs:build:runs-on: ubuntu-lateststeps:- run: echo "構建中..."deploy:needs: build # ? 表示必須等 build 執行完runs-on: ubuntu-lateststeps:- run: echo "部署中..."
這樣可以避免部署提前觸發,確保順序正確。
🔐 六、使用 Secrets 和變量
GitHub Actions 支持讀取環境變量和倉庫的 Secret 值。
? 使用 Secrets
- run: echo "${{ secrets.MY_SECRET_KEY }}"
Secrets 可以在倉庫 → Settings → Secrets 中配置,用于保存:
- API Key
- token
- 密碼等敏感信息
? 自定義環境變量
env:NODE_ENV: production
也可以在 jobs
或 steps
中設置。
🧪 七、實踐示例:構建并部署網站
name: Build and Deployon:push:branches: [main]jobs:build:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v4- uses: actions/setup-node@v4with:node-version: 18- run: npm install- run: npm run build- uses: actions/upload-pages-artifact@v2with:path: distdeploy:needs: buildruns-on: ubuntu-lateststeps:- uses: actions/deploy-pages@v3
📌 總結思維圖
workflow
├── name: 工作流名稱
├── on: 觸發器
└── jobs:├── job1:│ ├── runs-on│ └── steps: [uses, run]└── job2:├── needs: job1└── steps
🏁 總結一句話
on
決定何時觸發,jobs
定義做哪些事,steps
寫出每個動作。GitHub Actions 就是一個小型 CI 系統,讓你用 YAML 編排自動化流程。
🔮 下一篇預告
👉 《GitHub Workflows 基礎(三):深入理解 artifact、緩存、并發與條件執行》