我们经常发布文档更新,此页面的翻译可能仍在进行中。有关最新信息,请访问英文文档。如果此页面上的翻译有问题,请告诉我们

触发工作流程的事件

您可以配置工作流程在 GitHub 上发生特定活动时运行、在预定的时间运行,或者在 GitHub 外部的事件发生时运行。

GitHub 操作 目前在有限公测阶段,可能会有变动。强烈建议在公测期间不要将此功能用于高价值工作流程和内容。

更多信息请参阅“关于 GitHub 操作”。

本文内容

事件限制

工作流程运行中的操作无法触发新的工作流程运行。 例如,如果操作使用仓库的 GITHUB_TOKEN 推送代码,则即使仓库包含配置为在 push 事件发生时运行的工作流程,新工作流程也不会运行。

Web 挂钩事件

您可以配置工作流程在 web 挂钩事件从 GitHub 上的活动创建时运行。 工作流程可以使用多个 web 挂钩事件来触发工作流程运行。 更多信息请参阅 GitHub 开发者文档 中的“Web 挂钩”。

使用单一事件的示例

on: push

使用多个事件的示例

# Use an array when using more than one event
on: [push, pull_request]

仓库中代码特定版本的工作流程运行取决于提交 SHA 和 Git 引用。 GitHub 确定使用 web 挂钩事件有效负载触发事件的提交 SHA 和 Git 引用。 当工作流程运行时,GitHub 会在虚拟环境中设置 GITHUB_SHA(提交 SHA)和 GITHUB_REF(Git 引用)环境变量。 更多信息请参阅“环境变量”。

大多数 GitHub 事件由多种活动触发。 例如,release 资源的事件在发行版发布取消发布创建编辑删除预发行时触发。 并非所有事件都有多种触发事件的活动类型。 当事件有多种活动类型时,web 挂钩有效负载在 action 键中定义活动类型。 在某些情况下,如 pull_request,默认是一部分可用活动类型触发工作流程。 要触发特定活动类型的工作流程或扩展默认类型(像 pull_request 情况一样),您可以在工作流程文件中指定类型数组

Example triggering workflows when a pull_request is assigned

on:
  pull_request:
    types: [assigned]

您可以选择以下任何事件来触发工作流程。 For information about each webhook event and activity type, see "Event types and payloads" in GitHub 开发者文档. 每个事件指定工作流程中所用 GITHUB_SHAGITHUB_REF 的来源。 When you omit types, workflows are triggered by the "Default activity types" listed below.

Web 挂钩事件名称 Default activity types GITHUB_SHA GITHUB_REF 事件描述
check_run all 检查运行提交 检查套件分支 Triggered when a check run is created, rerequested, completed, or has a requested_action.
check_suite all 检查套件提交 检查套件分支 Triggered when a check suite is completed, requested, or rerequested.
commit_comment n/a 被评论的提交 n/a Triggered when a commit comment is created.
create n/a 创建的分支或标记上的最新提交 创建的分支或标记 Represents a created branch or tag.
delete n/a 默认分支上的最新提交 默认分支 Represents a deleted branch or tag.
deployment n/a 要部署的提交 要部署的分支或标记(提交时为空) Represents a deployment. 使用提交 SHA 创建的部署可能没有 Git 引用。
deployment_status n/a 要部署的提交 要部署的分支或标记(提交时为空) Represents a deployment status. 使用提交 SHA 创建的部署可能没有 Git 引用。
fork n/a 默认分支上的最新提交 默认分支 Triggered when a user forks a repository.
gollum n/a 默认分支上的最新提交 默认分支 Triggered when a Wiki page is created or updated.
issue_comment all 默认分支上的最新提交 默认分支 Triggered when an issue comment is created, edited, or deleted.
issues all 默认分支上的最新提交 默认分支 Triggered when an issue is opened, edited, deleted, transferred, pinned, unpinned, closed, reopened, assigned, unassigned, labeled, unlabeled, locked, unlocked, milestoned, or demilestoned.
label all 默认分支上的最新提交 默认分支 Triggered when a repository's label is created, edited, or deleted.
member all 默认分支上的最新提交 默认分支 Triggered when a user accepts an invitation or is removed as a collaborator to a repository, or has their permissions changed.
milestone all 默认分支上的最新提交 默认分支 Triggered when a milestone is created, closed, opened, edited, or deleted.
page_build n/a 正在构建的提交 n/a Triggered on push to a GitHub 页面 enabled branch (gh-pages for project pages, master for user and organization pages).
project all 默认分支上的最新提交 默认分支 Triggered when a project is created, updated, closed, reopened, or deleted.
project_card all 默认分支上的最新提交 默认分支 Triggered when a project card is created, edited, moved, converted to an issue, or deleted.
project_column all 默认分支上的最新提交 默认分支 Triggered when a project column is created, updated, moved, or deleted.
public n/a 默认分支上的最新提交 默认分支 Triggered when a private repository is made public.
pull_request opened, synchronize, reopened GITHUB_REF 分支上的最新提交 头部分支或基本分支(如果来自复刻) Triggered when a pull request is assigned, unassigned, labeled, unlabeled, opened, edited, closed, reopened, synchronize, ready_for_review, locked, unlocked or when a pull request review is requested or removed. See below to learn how this event works with forked repositories.
pull_request_review_comment all GITHUB_REF 分支上的最新提交 头部分支或基本分支(如果来自复刻) Triggered when a comment on a pull request's unified diff is created, edited, or deleted (in the Files Changed tab). See below to learn how this event works with forked repositories.
pull_request_review all GITHUB_REF 分支上的最新提交 头部分支或基本分支(如果来自复刻) Triggered when a pull request review is submitted into a non-pending state, the body is edited, or the review is dismissed. See below to learn how this event works with forked repositories.
push n/a 推送的提交,除非删除分支(当它是默认分支时) 更新的引用 Triggered on a push to a repository branch. Branch pushes and repository tag pushes also trigger webhook push events. 这是默认事件。
repository_dispatch n/a GITHUB_REF 分支上的最新提交 收到了分发的分支 另一个用户或应用程序可随时触发事件。
release all 标记的发行版中的最新提交 发行版标记 Triggered when a release is published, unpublished, created, edited, deleted, or prereleased.
schedule n/a 默认分支上的最新提交 默认分支 当预定的工作流程设置为运行时。 预定的工作流程使用 POSIX 计划任务语法。 更多信息请参阅“通过事件触发工作流程”。
status n/a 更改了状态的提交 n/a Triggered when the status of a Git commit changes.
watch all 默认分支上的最新提交 默认分支 Triggered when someone stars a repository.

复刻的仓库的拉取请求事件

从复刻的仓库打开拉取请求时,拉取请求默认在基础仓库上打开。 在这种情况下,GitHub 发送 pull_request 事件到基础分支,而在复刻的仓库上不发生拉取请求事件,因为原始基础仓库的 web 挂钩配置不会应用到复刻的仓库。

基础仓库接收 pull_request 事件,其中 GITHUB_SHA 是头部分支上的最新提交,GITHUB_REF 是头部分支。 拉取请求中的工作流程文件和代码的版本是合并提交 SHA。 对复刻的仓库中 GITHUB_TOKEN 的权限为只读。 有关 GITHUB_TOKEN 的更多信息,请参阅“GitHub 操作 的虚拟环境”。

如果要使用 pull_request 事件触发 CI 测试,建议设置工作流程配置监听 push 事件。

安排的事件

您可以使用 POSIX cron 语法安排工作流程在特定的 UTC 时间运行。 预定的工作流程在默认或基础分支的最新提交上运行。

This example triggers the workflow every 15 minutes:

on:
schedule:
- cron:  */15 * * * *

计划任务语法有五个字段,中间用空格分隔,每个字段代表一个时间单位。

┌───────────── minute (0 - 59)
│ ┌───────────── hour (0 - 23)
│ │ ┌───────────── day of the month (1 - 31)
│ │ │ ┌───────────── month (1 - 12 or JAN-DEC)
│ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT)
│ │ │ │ │                                   
│ │ │ │ │
│ │ │ │ │
* * * * *

您可在这五个字段中使用以下运算符:

运算符 描述 示例
* 任意值 * * * * * 在每天的每分钟运行。
, 值列表分隔符 2,10 4,5 * * * 在每天第 4 和第 5 小时的第 2 和第 10 分钟运行。
- 值的范围 0 4-6 * * * 在第 4、5、6 小时的第 0 分钟运行。
/ 步骤值 20/15 * * * * 从第 20 分钟到第 59 分钟每隔 15 分钟运行(第 20、35 和 50 分钟)。

注: GitHub 操作 不支持非标准语法 @yearly@monthly@weekly@daily@hourly@reboot

您可以使用 crontab guru 帮助生成计划任务语法并确认它在何时运行。 为帮助您开始,我们还提供了一系列 crontab guru 示例

外部事件

当您想触发在 GitHub 外部发生的活动的工作流程时,可以使用 GitHub API 触发 web 挂钩事件 repository_dispatch。 更多信息请参阅 GitHub 开发者文档 中的“创建仓库分发事件”。

要触发自定义 repository_dispatch web 挂钩事件,必须将 POST 请求发送到 GitHub API 端点,并提供 event_type 名称来描述活动类型。 要触发工作流程运行,还必须配置工作流程使用 repository_dispatch 事件。

示例

on: repository_dispatch

问问别人

找不到要找的内容?

联系我们