Skip to content

workflow_dispatch 參數,是 GitHub Actions 手動觸發 workflow 時可以填的輸入欄位

你可以把它想成:

執行 workflow 前,先讓你輸入一些值,再把這些值傳進流程裡用。


範例

alt text


注意

GitHub Actions 裡這些 input 通常會以字串處理,所以像:

yaml
default: true

很多情況下你還是要當成 "true" 來比對。

例如:

alt text

如何透過 Workflow 來監控其他 WorkFlow

1️⃣ workflow_run 是監聽其他 workflow 的事件

在 GitHub Actions 裡有三個常見「workflow 相關事件」:

事件觸發對象說明
workflow_dispatch觸發自己 workflow手動執行 workflow
workflowworkflow 定義變更workflow YAML 被更新時觸發
workflow_run其他 workflow 執行完成當 repo 裡的某個 workflow 執行完成(成功、失敗、取消)時觸發

重點workflow_run 可以監聽「其他 workflow 的完成事件」,不是只監聽自己的 workflow。


2️⃣ 怎麼監聽特定 workflow

yaml
on:
  workflow_run:
    workflows:   # 可選,指定要監聽的 workflow 名稱
      - "CI"
      - "Build"
    types:
      - completed
  • types: completed 表示 workflow 結束後才觸發。
  • 透過 github.event.workflow_run.conclusion 可以判斷成功 (success)、失敗 (failure) 或取消 (cancelled)。

3️⃣ 為什麼可以監聽其他 workflow

  • GitHub Actions 的架構是 事件驅動 (event-driven)

    1. 每個 workflow 執行完成後,都會在內部生成一個事件 payload。
    2. 其他 workflow 可以訂閱這個事件 (workflow_run)。
    3. 這個 payload 包含 workflow 名稱、狀態、提交 SHA 等資訊。
  • 所以你可以寫一個 workflow 專門做通知、審核、或自動化處理,而不需要修改原本的 workflow。


4️⃣ 實務應用

  1. 失敗通知 → 任何 workflow 失敗時觸發 Telegram/Slack 通知。
  2. 依賴 workflow → workflow B 只有在 workflow A 成功後才執行(可用 if: github.event.workflow_run.conclusion == 'success')。
  3. 統計/審計 → 收集所有 workflow 結果,生成報表。

重點欄位

  • github.event.workflow_run.name 失敗的是哪個 workflow
  • github.event.workflow_run.head_branch 哪個分支觸發
  • github.event.workflow_run.head_sha 哪個 commit
  • github.event.workflow_run.html_url 該次 workflow 執行頁面連結