Loc*_*kna 6 continuous-integration github continuous-deployment
我在为我和一些朋友设置适当的构建链时遇到一些麻烦。因此,我分叉了两个存储库:官方 ghidra 和 ghidra-ci。ghidra-ci 是一个构建您的 ghidra 分支的存储库,当您挑选一些 pr 时,您可以添加一些尚未添加到官方 ghidra 存储库中的内容。
因此,ghidra-ci 应该在 ghidra 存储库更新时构建 ghidra 存储库。到目前为止,我设法在 ghidra-ci 本身更新时构建它。我用了
name: Ghidra Build
on: [push, pull_request]
Run Code Online (Sandbox Code Playgroud)
(此后仅是构建作业)
所以,我知道这是错误的。我删除了该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}}" }'
Run Code Online (Sandbox Code Playgroud)
所以,这个工作流程应该检查(我希望它在我更新 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
Run Code Online (Sandbox Code Playgroud)
这就是我收到的错误消息。我不知道我还可以尝试什么来完成这项工作。如果有人有一个在 ghidra 存储库更新时真正构建的解决方案,我很想听听。
您可以让 ghidra-ci 监听该repository_dispatch事件:
name: Listener for ghidra
on:
repository_dispatch:
workflow_dispatch:
jobs:
dump:
runs-on: ubuntu-20.04
steps:
- name: Dump event payload
run: |
jq . "$GITHUB_EVENT_PATH"
Run Code Online (Sandbox Code Playgroud)
workflow_dispatch在那里您可以手动触发工作流程以进行测试。该run步骤只是转储事件负载,您可以将其替换为您想要的任何构建步骤;您可以通过按事件类型过滤来进一步过滤应触发的事件,例如
on:
repository_dispatch:
types:
- mytrigger
Run Code Online (Sandbox Code Playgroud)
在 ghidra 中,您可以通过向 发送 POST 请求来生成该事件/repos/Lockna/ghidra-ci/dispatches,例如使用GitHub CLI:
name: Notify ghidra-ci
on:
push:
workflow_dispatch:
jobs:
notify:
runs-on: ubuntu-20.04
steps:
- name: Create repository dispatch event
env:
GITHUB_TOKEN: ${{ secrets.PAT_TOKEN }}
run: |
gh api repos/Lockna/ghidra-ci/dispatches \
--raw-field event_type=mytrigger
Run Code Online (Sandbox Code Playgroud)
同样,workflow_dispatch触发器允许手动触发。
对于身份验证,您必须使用至少具有public_repo范围的个人访问令牌;$GITHUB_TOKEN单独是行不通的。
设置的值event_type显示action在事件负载中。
| 归档时间: |
|
| 查看次数: |
4515 次 |
| 最近记录: |