使用POST请求触发Github操作(Github REST API)
我有一个位于GitHub组织中的私有GitHub存储库。 回购协议包含一个带有使用POST请求触发Github操作(Github REST API),github,curl,github-actions,restapi,Github,Curl,Github Actions,Restapi,我有一个位于GitHub组织中的私有GitHub存储库。 回购协议包含一个带有工作流\u分派选项的GitHub操作 (参见) 摘自行动YAML文件: 关于: #允许您从“操作”选项卡手动运行此工作流 工作流程和调度: 工作: 建造: 运行于:ubuntu最新版本 我可以从GitHub操作选项卡成功触发此操作 但是,我希望能够通过对githubapi的POST请求触发此操作。 这应该可以使用GithubAPI实现。 相关的API端点似乎是/repos/{owner}/{repo}/actions
工作流\u分派
选项的GitHub操作
(参见)
摘自行动YAML文件:
关于:
#允许您从“操作”选项卡手动运行此工作流
工作流程和调度:
工作:
建造:
运行于:ubuntu最新版本
我可以从GitHub操作选项卡成功触发此操作
但是,我希望能够通过对githubapi的POST
请求触发此操作。
这应该可以使用GithubAPI实现。
相关的API端点似乎是/repos/{owner}/{repo}/actions/workflows/{workflow\u id}/dispatches
,如中所述
文件还指出:
要使用此端点,必须使用repo作用域中的访问令牌进行身份验证
因此,在“开发者设置”下的我的个人帐户设置中→ “个人访问令牌”,
我已经创建了一个令牌,并授予对所有“回购”项目以及“工作流”项目的访问权
我已经通过使用curl
以及发出POST
请求来测试触发GitHub操作。
为此,我根据
:
:accept
(根据github建议)application/vnd.github.v3+json
:GitHubõ组织的名称所有者
:存储库的名称repo
:使用GitHub操作YAML文件的完整文件名(包括结尾,workflow\u id
),因为我不确定在哪里可以找到id.yml
:ref
,因为我认为这指的是相关的存储库分支(?),回购协议只有一个main
分支,操作就在那里main
curl
示例(但向其添加身份验证):
curl-xpost-H“Accept:application/vnd.github.v3+json”\
-u GITHUBUSERNAME:GITHUBPERSONALACCESSTOKEN\
https://api.github.com/repos/ORGNAME/REPONAME/actions/workflows/YMLFILE/dispatches \
-d'{“ref”:“main”}
我得到以下结果:
{
“消息”:“解析JSON时出现问题”,
“文档url”:https://docs.github.com/rest/reference/actions#create-a-workflow-dispatch-event“
}
我还测试了从发出POST
请求(通过导入上述curl
语句)。
这会产生完全相同的结果
curl
语句错了吗按照这个说明,你可能做的大部分都是正确的 尝试在LINUX上使用
curl-H“Accept:application/vnd.github+json”-H“Authorization:token your token”--request POST--data'{“event_type”:“do something”}https://api.github.com/repos/yourname/yourrepo/dispatches
在Windows上:cURL POST命令在Windows命令提示符下不起作用,因为使用了单引号。请参见,还有可以为您执行此操作(使用此Github API服务调度事件)的,无论操作系统是什么
用法
-名称:存储库调度
用途:peter evans/repository-dispatch@v1
与:
令牌:${secrets.REPO\u ACCESS\u token}
事件类型:我的事件
Duh,我看得更远了。这解决了我的问题,谢谢!谢谢,但由于外部条件,我特别需要能够从Github外部触发操作。这一部分用@scriptdaddy的答案的提示进行了修正。