能否仅通过URL触发GitHub Action并处理URL查询参数?
方案可行,具体实现思路如下
核心逻辑
让你的设备通过带参数的URL触发GitHub Action,再由Action完成参数处理,最后将处理后的参数转发请求至目标端点。
具体步骤
创建带参数触发的Workflow
在GitHub仓库的.github/workflows目录下新建Workflow文件(比如relay.yml),配置支持workflow_dispatch触发并定义可接收参数:name: 参数中转与请求转发 on: workflow_dispatch: inputs: param: description: '待传递的参数' required: true type: string jobs: relay: runs-on: ubuntu-latest steps: - name: 处理参数并转发请求 env: TARGET_URL: '你的目标端点URL' INPUT_PARAM: ${{ github.event.inputs.param }} run: | # 按需添加参数处理逻辑,比如格式转换、字符串拼接 PROCESSED_PARAM="处理后的_${INPUT_PARAM}" # 发送请求到目标端点,以curl为例 curl -X POST "$TARGET_URL" -d "param=$PROCESSED_PARAM"让设备触发Workflow
由于设备仅支持发送带参数的GET请求,而GitHub的workflow_dispatch默认需要POST请求,可通过两种方式适配:- 方式一:借助中转服务转请求
生成拥有repo权限的GitHub个人访问令牌(PAT),搭建一个简单的Serverless中转服务(比如用Node.js写一个接口),让设备发送带参数的GET请求到中转服务,由中转服务将参数封装为POST请求调用GitHub的Workflow触发API。 - 方式二:用Issue事件触发
修改Workflow监听Issue创建事件:
设备通过GET请求调用GitHub API创建Issue,将参数放在Issue标题(比如on: issues: types: [opened]param=hello)中,Workflow在步骤中提取参数:INPUT_PARAM=$(echo "${{ github.event.issue.title }}" | grep -o "param=\w*" | cut -d'=' -f2)
- 方式一:借助中转服务转请求
参数处理与转发
在Workflow的run步骤中完成参数的自定义处理,再使用curl或其他工具发送请求至目标端点。
内容的提问来源于stack exchange,提问作者Mqx
相关产品推荐
相关产品推荐

