GitHub Action之Dispatch触发其他仓库
通过 github action API 实现在仓库 A 执行后触发仓库 B 执行。
基本思想¶
仓库 A 中 workflow 执行完成后,利用 GitHub API 中的(curl 或 gh 命令)触发仓库 B。
流程示意图:
配置¶
workflows 配置:
- 仓库 B:
- 添加
repository_dispatch
- 添加
# .github/workflows/deploy.yml
name: Pages
on:
push:
branches:
- main
# ==> 新增部分
repository_dispatch:
types: [deploy-event]
# <== 新增部分结束
jobs:
deploy:
# 任务执行
- 仓库 A:
- 添加 GitHub Token,
https://github.com/用户名/仓库名/settings/secrets/actions
- 修改 workflow,
jobs
添加trigger
部分
- 添加 GitHub Token,
# .github/workflows/example.yml
name: Demo
on:
push:
branches:
- main
# schedule:
# - cron: "0 5 */3 * *"
jobs:
build:# 原先任务的配置
# ...
# ==> 新增部分: 触发任务
trigger:
needs: build # 依赖前面任务
runs-on: ubuntu-latest
steps:
- name: Trigger workflow
env:
GH_TOKEN: ${{ secrets.GH_TOKEN_ACTION }} # 步骤1中添加的secrets名
REPO: owner/repo # 保持和B仓库名字一致
EVENT_TYPE: "deploy-event" # 保持B仓库repository_dispatch类型中一致
run: |
gh api --method POST \
/repos/${REPO}/dispatches \
-f "event_type=${EVENT_TYPE}"
# <== 新增部分结束
TOKEN 申请说明¶
生成 fine-grained personal access token (PAT) , 网址: https://github.com/settings/tokens?type=beta。
添加需要的仓库后,选择权限如下(添加 Actions、Contents 和 Workflows 读写权限即可):
权限名 | 读写权限 |
---|---|
Actions | Access: Read and write |
Contents | Access: Read and write |
Metadata | Access: Read-only |
Workflows | Access: Read and write |