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来创建

posted @ 2021-02-02 16:09  AED-Jesse  阅读(283)  评论(0编辑  收藏  举报