GitHub Actions 不支持用 GITHUB_TOKEN 跨仓库触发工作流,但可通过 PAT 触发 workflow_dispatch、GitHub App 发送 repository_dispatch、跨仓库推送代码或借助 Jenkins 等外部服务实现。

GitHub Actions 本身不支持直接用 GITHUB_TOKEN 跨仓库触发另一个仓库的工作流(因为该令牌默认不会触发目标仓库的 workflow 运行),但有几种稳定、安全且广泛使用的方案可实现跨仓库触发,核心在于“换一个有权限的令牌”或“换一种触发机制”。
用 Personal Access Token(PAT)调用目标仓库的 workflow_dispatch
这是最常用、最直接的方式。关键点是:不能用内置的 GITHUB_TOKEN,而要用你创建的带 workflow:write 权限的 PAT。
- 在源仓库中,将 PAT 存为 Secrets(如
PERSONAL_ACCESS_TOKEN) - 在工作流中用
curl或ghCLI 向目标仓库发送workflow_dispatch事件 - 目标仓库需启用
on: workflow_dispatch并配置对应 inputs(可选)
示例(源仓库触发目标仓库):
- name: Trigger target workflow
run: |
gh workflow dispatch \
--repo owner/target-repo \
--workflow "deploy.yml" \
--ref main \
--field env=prod
env:
GH_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}用 GitHub App 的 Installation Token 发起 repository_dispatch
比 PAT 更安全、更可控,适合组织级自动化场景。GitHub App 可以被安装到多个仓库,并获得细粒度权限。
- 创建 GitHub App,勾选
Repository permissions → Actions → Read and write - 将 App ID 和私钥存为源仓库 Secrets
- 在工作流中用
actions/github-app-token动作生成 Installation Token - 再用该 Token 向目标仓库发送
repository_dispatch事件
这种方式避免了 PAT 泄露风险,也便于权限回收和审计。
使用约定式提交(Conventional Commits)从 Git 历史记录中生成结构化变更日志,支持多种格式、AI 增强型描述以及可自定义的范围……
通过跨仓库推送间接触发
如果目标仓库监听的是 push 事件(比如推到 main 或特定分支),你可以让源仓库把变更推过去——本质是“用 Git 推送代替事件触发”。
- 用
ad-m/github-push-action或原生git push推送代码/标签到目标仓库 - 目标仓库需配置对应分支的
on: push工作流 - 注意:推送需使用带
contents:write权限的 token(同样不能用GITHUB_TOKEN)
典型用途包括文档同步、版本发布标记、构建产物归档等。
用 Jenkins 或其他外部服务做中转
当已有 Jenkins 等成熟 CI 系统时,可让 GitHub Actions 仅做“通知”,由 Jenkins 承担实际构建逻辑。
- 源仓库 Actions 用
curl调用 Jenkins 的 Job API(需 Jenkins 开放远程触发) - Jenkins 接收后拉取目标仓库代码并执行复杂任务(如多环境部署、集成测试)
- 适合需要强状态管理、长时任务或混合技术栈的场景
这种模式解耦清晰,也规避了 GitHub Actions 的超时限制和权限模型约束。

















