繁体   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