GitHub Action - Trigger workflow from another repository
最近在做Github Action相关的项目时候有个需求,有两个Github Repositories, 其中一个作为另外一个的submodule。 想要在submodule 有push 提交操作的时候,自动触发其workflow。 当然最后根据本文解决了之后发现,即便没有submodule的关系,两个仓库之间依然可以trigger 调用workflow。 但是这里还是把这两个仓库姑且叫做ChildRepo和ParentRepo。
目标需求:
ChildRepo仓库push提交,能够触发ParentRepo调用相关的workflow进行编译操作。
解决方案:
通过Github api,发送repository dispatch event. Repository_dispatch event是一个webhook event, 可以用来触发github action workflow。
Sample Code
- ChildRepo/.github/workflows/triggerevents.yml
name: Dispatch Event
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
with:
fetch-depth: 1
- name: dispatch event to another repository
env:
GITHUB_TOKEN: ${{ secrets.REPO_ACCESS_TOKEN }}
EVENT: YOUR_EVENT_TYPE
ORG: YOUR_ORG_NAME
REPO: YOUR_TARGET_REPO_NAME
run: |
curl -d "{\"event_type\": \"${EVENT}\"}" -H "Content-Type: application/json" -H "Authorization: token ${GITHUB_TOKEN}" -H "Accept: application/vnd.github.everest-preview+json" "https://api.github.com/repos/${ORG}/${REPO}/dispatches"
- ParentRepo/.github/workflows/workflow.yml
name: hugo publish
on:
push:
branches:
- master
repository_dispatch:
types: sub_commit
jobs:
build-deploy:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
上面的参数中 需要personal access token:${{ secrets.REPO_ACCESS_TOKEN }}, 参考GitHub Docs来创建