簡體   English   中英

如何從 Github API 觸發 `workflow_dispatch`?

[英]How to trigger a `workflow_dispatch` from Github API?

GH Rest API 文檔,我們似乎能夠創建repository_dispatch事件,但沒有workflow_dispatch事件。 GH GraphQL API中,我找不到如何調度事件。

甚至可以使用 API 觸發workflow_dispatch事件嗎?

您還可以通過 GH CLI 工具https://cli.github.com/觸發workflow_dispatch

例如: gh workflow run <WORKFLOW_ID> -f param_1=foo

  • 您可以通過gh workflow list獲取工作流 ID。

或者,您也可以使用工作流文件名而不是工作流 ID。

例如: gh workflow run staging.yml -f param_1=foo

是的,可以手動通過 Github API 來實現

手動(通過存儲庫上的“ Actions ”選項卡。)

這是有關它的官方文檔

基本上,一旦你 select 選項卡上的工作流,如果工作流實現有工作流調度觸發器,選項Run workflow將出現在 window 的右側,如下所示:

在此處輸入圖像描述

與 Github API

在官方的 Github 文檔上,有一個創建工作流調度事件的服務

這是一個 curl 示例:

curl \
  -X POST \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/repos/octocat/hello-world/actions/workflows/42/dispatches \
  -d '{"ref":"main"}'

請注意,您也可以通過此 API 發送工作流inputs

您還可以在本文中找到更多關於此的參考資料。

還有另一個Github API 服務來觸發repository_dispatch 事件

獎金

如果您正在尋找通過終端命令行觸發這些workflow_dispatch事件(和repository_dispatch事件),您可以在 Python 中使用此自動化 可以在此 class中找到實現。

下面是觸發 GitHub 工作流程的 Python 代碼示例。

您可以通過gh workflow list獲取工作流 ID,請參閱: https ://stackoverflow.com/a/71972073/1661491

github_token是經典的個人令牌,參見: https ://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token

workflow_ref是分支或標簽。

import requests
import json

parameter_dict = ...
github_token = ...
workflow_ref = ...
workflow_id = ...
org = ...
repo_name = ..

inputs_str = json.dumps(parameter_dict)

response = requests.post( 
 f"https://api.github.com/repos/{org}/{repo_name}/actions/workflows/{workflow_id}/dispatches",
  headers={"Authorization": f"Bearer {github_token}"},
  data=f'{{"ref": "{workflow_ref}", "inputs": {inputs_str}}}'
)

if response.status_code >= 400:
  raise ValueError(f"Failed to trigger workflow: {response.status_code} {response.text}")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM