GitHub Action跨仓库构建失败求助:Ghidra工作流配置问题
一、修复"Unexpected inputs provided"错误
这个报错的核心原因是你调用workflow-dispatch时传入的参数,和目标工作流「Ghidra Build」定义的输入参数不匹配,另外你的脚本还存在一处语法小问题,咱们一步步来修:
1. 对齐目标工作流的输入定义
先打开你的ghidra-ci仓库里的「Ghidra Build」工作流文件(比如.github/workflows/ghidra-build.yml),检查它的workflow_dispatch部分是否明确定义了rev和prevRev这两个输入项。如果没有,要么在目标工作流里补上对应的输入定义,要么调整触发时传递的参数。
正确的目标工作流输入定义示例:
on: workflow_dispatch: inputs: rev: description: '要构建的提交哈希值' required: true prevRev: description: '上一个版本的提交哈希值' required: false
2. 修正脚本语法与参数格式
你的check步骤里提取LAST_REL_COMMITID的命令有语法错误:grep -oP "\(\K\w+(?=)"的括号没闭合,应该改成grep -oP "\(\K\w+(?=\))",这个错误会导致lastrev输出为空或无效值,间接引发问题。
另外,触发时的JSON参数格式可以更清晰,避免转义问题,修改Trigger build步骤的inputs部分:
inputs: | { "rev": "${{ steps.check.outputs.rev }}", "prevRev": "${{ steps.check.outputs.lastrev }}" }
二、实现Ghidra仓库更新时直接触发构建
不需要依赖定时检测,我们可以利用GitHub Actions的跨仓库触发能力,在你的Ghidra仓库(Lockna/Ghidra)里加一个工作流,当有新提交或发布时直接触发ghidra-ci的构建:
步骤1:在Ghidra仓库添加触发工作流
创建.github/workflows/trigger-ghidra-ci.yml文件,内容如下:
name: 触发Ghidra CI构建 on: push: branches: [ main, master ] # 替换成你需要监听的分支 release: types: [ published ] # 可选:当发布新版本时触发 jobs: trigger-build: runs-on: ubuntu-latest steps: - name: 调用Ghidra CI工作流 uses: benc-uk/workflow-dispatch@v1.1 with: workflow: "Ghidra Build" repo: Lockna/ghidra-ci token: ${{ secrets.PAT_TOKEN }} # 这个PAT需要拥有ghidra-ci仓库的工作流触发权限 inputs: | { "rev": "${{ github.sha }}", "prevRev": "${{ github.event.release.target_commitish || github.event.before }}" }
步骤2:配置权限
确保你的PAT_TOKEN具备以下权限:
- 对ghidra-ci仓库的
workflow权限(允许触发工作流) - 对Ghidra仓库的
repo权限(读取仓库事件)
步骤3:移除定时检测工作流(可选)
如果直接触发的方案生效,你可以删掉之前的「Check for new commits」定时工作流,减少不必要的资源消耗。
额外注意事项
- 确认两个仓库的工作流文件都放在
.github/workflows/目录下,路径正确 - 测试时可以手动触发Ghidra仓库的触发工作流,验证是否能成功调用ghidra-ci的构建
- 遇到问题时查看GitHub Actions的日志,能清晰看到参数传递的细节,方便排查
内容的提问来源于stack exchange,提问作者Lockna

