使用POST请求触发Github操作(Github REST API)

使用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

我有一个位于GitHub组织中的私有GitHub存储库。 回购协议包含一个带有
工作流\u分派
选项的GitHub操作 (参见)

摘自行动YAML文件:

关于:
#允许您从“操作”选项卡手动运行此工作流
工作流程和调度:
工作:
建造:
运行于:ubuntu最新版本
我可以从GitHub操作选项卡成功触发此操作

但是,我希望能够通过对githubapi的
POST
请求触发此操作。 这应该可以使用GithubAPI实现。 相关的API端点似乎是
/repos/{owner}/{repo}/actions/workflows/{workflow\u id}/dispatches
,如中所述

文件还指出:

要使用此端点,必须使用repo作用域中的访问令牌进行身份验证

因此,在“开发者设置”下的我的个人帐户设置中→ “个人访问令牌”, 我已经创建了一个令牌,并授予对所有“回购”项目以及“工作流”项目的访问权

我已经通过使用
curl
以及发出
POST
请求来测试触发GitHub操作。 为此,我根据 :

  • accept
    application/vnd.github.v3+json
    (根据github建议)
  • 所有者
    :GitHubõ组织的名称
  • repo
    :存储库的名称
  • workflow\u id
    :使用GitHub操作YAML文件的完整文件名(包括结尾,
    .yml
    ),因为我不确定在哪里可以找到id
  • 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
语句)。 这会产生完全相同的结果

  • 我是否需要以不同的方式配置此过程的GitHub端
  • 我的
    curl
    语句错了吗
  • 我有没有办法检查“问题[atic]JSON”以了解到底发生了什么

  • 按照这个说明,你可能做的大部分都是正确的

    尝试在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的答案的提示进行了修正。