我和我的朋友在搭建一个适合我们的构建链时遇到了一些问题。 我 fork 了两个仓库,官方的 ghidra 和 ghidra-ci。 ghidra-ci 是一个可以构建你 fork 的 ghidra 的仓库。当你 cherry-pick 一些 pr's 时,可以添加一些官方 ghidra 仓库尚未添加的功能。
所以,当 ghidra 仓库更新时,ghidra-ci 应该构建 ghidra 仓库。 到目前为止,我已经成功地让它在 ghidra-ci 自身更新时构建。我使用了
name: Ghidra Build
on: [push, pull_request]
(以下仅为构建作业)
所以,我知道这是错误的。 我删除了
on:
行,但它需要一个on:
行,所以我只是粘贴了on:[workflow_dispatch]
。我不知道这是否会起作用。我有一个名为“检查新提交”的工作流程。
name: Check for new commits
on:
schedule:
- cron: '30 12 * * *'
workflow_dispatch:
inputs: {}
jobs:
# Ensure all steps use a common revision
check:
name: Check for new commits since last release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
repository: Lockna/Ghidra
- name: Check for new commits
id: check
run: |
LAST_REL_NAME=$(curl --silent "https://api.github.com/repos/${{github.repository}}/releases/latest" | jq .name)
LAST_REL_COMMITID=$(echo $LAST_REL_NAME | grep -oP "\(\K\w+(?=\))")
COMMIT_HASH_SHORT=$(git rev-parse --short HEAD)
COMMIT_HASH_LONG=$(git rev-parse HEAD)
echo "Latest commit is $COMMIT_HASH_LONG"
if [[ "$LAST_REL_NAME" == *"$COMMIT_HASH_SHORT"* ]]; then
echo "No commits since last release $LAST_REL_NAME"
else
echo "Found new commits since $LAST_REL_NAME. Triggering ci."
echo ::set-output name=trigger::true
echo ::set-output name=rev::$COMMIT_HASH_LONG
echo ::set-output name=lastrev::$LAST_REL_COMMITID
fi
- name: Trigger build
if: steps.check.outputs.trigger
uses: benc-uk/workflow-dispatch@v1.1
with:
workflow: "Ghidra Build"
repo: Lockna/ghidra-ci
token: ${{secrets.PAT_TOKEN}}
inputs: '{ "rev": "${{steps.check.outputs.rev}}", "prevRev": "${{steps.check.outputs.lastrev}}" }'
因此,这个工作流程应该检查(我更喜欢在我更新ghidra本身时触发它,但我已经发现这不像我想要的那样运行)是否有一些更改,如果有,它应该触发“Ghidra Build”工作流程。为了测试,我手动运行这个构建。
Run benc-uk/workflow-dispatch@v1.1
with:
workflow: Ghidra Build
repo: Lockna/ghidra-ci
token: ***
inputs: { "rev": "c1a1674214007bf467dd90f6d80fda453d25b16c", "prevRev": "133d6c2" }
Workflow id is: 3932827
Error: Unexpected inputs provided
这是我收到的错误信息。 我不知道还能尝试什么来使它工作。 如果有人有一个解决方案,在ghidra仓库更新后确实可以构建,我想听听。
workflow_dispatch
的types
似乎不再起作用了(6/22)。文档中也没有提到(https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflow_dispatch)。 - j2L4erepository_dispatch
而不是workflow_dispatch
;repository_dispatch
确实 有一个类型,由实际负载确定。 - Benjamin W.