GitHub 触发事件有哪些
GitHub Actions 常用触发事件:push、pull_request、workflow_dispatch(手动)、schedule(定时)、release 等;均可附加分支、路径与类型过滤。配置要点:push 与 pull_request 用 branches 与 paths 过滤;手动用 workflow_dispatch;定时用 schedule(POSIX cron、UTC 时区、在默认分支运行);多个事件取并集触发。安全模型前提:fork 仓库的 pull_request 默认不向发起方暴露 secrets。
基本信息
| push 与 pull_request | branches、paths 过滤 |
|---|---|
| 手动 | workflow_dispatch |
| 定时 | schedule(UTC cron,默认分支运行) |
| 组合 | 多个事件取并集触发 |
| 安全前提 | fork 的 PR 默认不暴露 secrets |
典型使用场景
- 日常验证:push 与 pull_request 触发 CI 检查。
- 按需操作:workflow_dispatch 提供手动按钮与输入参数。
- 定时巡检:schedule 跑夜间任务与依赖检查。
- 版本发布:release 事件或标签推送触发发布流程。
- 路径过滤:只改文档不跑构建,控制运行成本。
- 事件去重:同一提交避免推送与 PR 双触发,配合并发策略收敛。
多事件配置
多事件配置
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:fork 仓库的 pull_request 默认不向发起方暴露 secrets:安全模型以此为前提。
事件过滤写在 on 里:branches、paths、types 的改动随代码一起评审,可追溯。
workflow_dispatch 支持自定义输入:手动触发也能携带参数,例如选择环境或版本号。
常见事件与过滤键
| 事件 | 典型用途 | 常用过滤 |
|---|---|---|
| push | 分支与标签的代码校验 | branches、tags、paths |
| pull_request | 合并前检查 | branches、paths、types |
| schedule | 定时巡检 | cron(UTC) |
| workflow_dispatch | 手动补跑与带参运行 | inputs |
| release | 发布后动作 | types |
其他可组合的事件
- workflow_call:把工作流封装成可复用的模块。
- workflow_run:上游工作流完成后触发,用于跨工作流接力。
- repository_dispatch:由外部系统调用 API 触发并携带参数。
- issues 与 issue_comment:根据 Issue 与评论动作触发自动化。
- merge_group:合并队列审批场景下触发验证。
schedule 只在默认分支生效、时间按 UTC 计算;仓库长期无活动时定时工作流会被自动禁用。
workflow_call 用于复用通用流程;repository_dispatch 适合部署平台或监控系统从外部触发流水线。
按事件收紧 permissions:fork 的 pull_request 拿不到 secrets,也不应默认拥有写权限。