You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用curl触发GitHub Action?遇404错误及兼容问题求助

问题解决:用Curl触发GitHub Action及统一Payload获取逻辑

一、404错误的原因及修复方案

返回Not Found通常由以下几种情况导致,逐一排查修复:

  1. 仓库路径拼写错误:确认API URL中的pass-culture/pass-culture-app-native是正确的「所有者/仓库名」格式,检查大小写、拼写是否与实际仓库完全一致。
  2. Token有效性问题:确保生成的Token属于拥有该仓库读写权限的账号,且未过期、未被撤销(你的截图显示权限配置正确,可跳过权限检查)。
  3. 未指定GitHub API版本:GitHub API需要明确版本标识,将Accept请求头修正为稳定版格式:Accept: application/vnd.github.v3+json。
  4. Workflow配置未同步到默认分支:修改后的service-worker-test.yml必须提交到仓库默认分支(如master),GitHub仅读取默认分支的Workflow配置来响应repository_dispatch事件。

修正后的Curl命令

curl -H "Accept: application/vnd.github.v3+json" \
     -H "Authorization: Bearer $GITHUB_TOKEN" \
     -X POST \
     -d '{"event_type": "service-worker-test", "client_payload": {"versionFrom": "xxx"}}' \
     https://api.github.com/repos/pass-culture/pass-culture-app-native/dispatches

(注:client_payload字段可按需添加自定义参数)

二、统一workflow_dispatch与repository_dispatch的Payload获取逻辑

通过在Workflow中添加参数统一提取逻辑,让后续业务代码无需区分触发来源:

方案1:用步骤输出统一参数

jobs:
  service-worker-test:
    runs-on: ubuntu-latest
    steps:
      - name: 统一提取参数
        id: extract_params
        run: |
          if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
            echo "versionFrom=${{ github.event.inputs.versionFrom }}" >> $GITHUB_OUTPUT
          elif [ "${{ github.event_name }}" = "repository_dispatch" ]; then
            echo "versionFrom=${{ github.event.client_payload.versionFrom }}" >> $GITHUB_OUTPUT
          fi
      
      - name: 执行业务逻辑
        run: |
          echo "版本来源: ${{ steps.extract_params.outputs.versionFrom }}"
          # 后续代码直接使用上述统一参数即可

方案2:直接用表达式判断

在需要使用参数的位置,通过三元表达式直接获取,无需额外步骤:

- name: 执行业务逻辑
  run: |
    echo "版本来源: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.versionFrom || github.event.client_payload.versionFrom }}"

两种方案都能让Workflow逻辑无需区分触发方式,实现参数获取的统一。

内容的提问来源于stack exchange,提问作者Dimitri Kopriwa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 20:45:34