触发工作流程的事件

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

注: GitHub 托管的运行器目前在 GitHub Enterprise Server 上不受支持。 您可以在 GitHub 公共路线图 上查看有关未来支持计划的更多信息。

配置工作流程事件

您可以使用 on 工作流程语法配置工作流程为一个或多个事件运行。 更多信息请参阅“GitHub Actions 的工作流程语法”。

示例:使用单一事件

# Triggered when code is pushed to any branch in a repository
on: push

示例:使用事件列表

# Triggers the workflow on push or pull request events
on: [push, pull_request]

示例:使用具有活动类型或配置的多个事件

如果您需要为一个事件指定活动类型或配置,必须分别配置每个事件。 您必须为所有事件附加冒号 (`:</0),包括没有配置的事件。

on:
  # Trigger the workflow on push or pull request,
  # but only for the main branch
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
  # Also trigger on page_build, as well as release created events
  page_build:
  release:
    types: # This configuration does not affect the page_build event above
      - created
`

注意:无法使用 GITHUB_TOKEN 触发新的工作流程。 更多信息请参阅“使用个人访问令牌触发新的工作流程”。

以下步骤将触发工作流程运行:

  1. 仓库中发生事件,生成的事件具有关联的提交 SHA 和 Git ref。

  2. 在仓库的 .github/workflow 目录中关联的提交 SHA 或 Git ref 处搜索工作流程文件。 工作流程文件必须存在于该提交 SHA 或 Git ref 中才会被考虑。

    例如,如果事件发生在特定仓库分支上,则工作流程文件必须存在于该分支的仓库中。

  3. 检查该提交 SHA 和 Git ref 的工作流程文件, 并且对其 on: 值与触发事件匹配的任何工作流程触发新的工作流程。

    工作流程在触发事件的相同提交 SHA 和 Git ref 上的仓库代码中运行。 当工作流程运行时,GitHub Enterprise Server 会在运行器环境中设置 GITHUB_SHA(提交 SHA)和 GITHUB_REF(Git 引用)环境变量。 更多信息请参阅“使用环境变量”。

安排的事件

schedule 事件允许您在计划的时间触发工作流程。

注意: schedule 事件在 GitHub Actions 工作流程运行期间负载过高时可能会延迟。 高负载时间包括每小时的开始时间。 为了降低延迟的可能性,将您的工作流程安排在不同时间运行。

计划

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
n/an/a默认分支上的最新提交默认分支

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

此示例在每天 5:30 和 17:30 UTC 触发工作流程:

on:
  schedule:
    # * is a special character in YAML so you have to quote this string
    - cron:  '30 5,17 * * *'

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

┌───────────── 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 Actions 不支持非标准语法 @yearly@monthly@weekly@daily@hourly@reboot

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

计划工作流程的通知将发送给最后修改工作流程文件中的 cron 语法的用户。 更多信息请参阅“工作流程运行通知”。

手动事件

您可以手动触发工作流程运行。 要触发仓库中的特定工作流程,请使用 workflow_dispatch 事件。 要触发仓库中的多个工作流程并创建自定义事件和事件类型,请使用 repository_dispatch 事件。

workflow_dispatch

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
workflow_dispatchn/aGITHUB_REF 分支上的最新提交收到了分发的分支

您可以直接在工作流程中配置事件的自定义输入属性、默认输入值和必要输入。 当工作流程运行时,您可以访问 github.event.inputs 上下文中的输入值。 更多信息请参阅“上下文”。

You can manually trigger a workflow run using the GitHub Enterprise Server API and from GitHub Enterprise Server. 更多信息请参阅“手动配置工作流程

当您在 GitHub 上触发事件时,可以在 GitHub 上直接提供 ref 和任何 inputs。 更多信息请参阅“对操作使用输入和输出”。

To trigger the custom workflow_dispatch webhook event using the REST API, you must send a POST request to a GitHub Enterprise Server API endpoint and provide the ref and any required inputs. 更多信息请参阅“创建工作流程调度事件”REST API 端点。

示例

要使用 Workflow_paid 事件,您需要将其作为触发器包含在您的 GitHub Actions 工作流程文件中。 下面的示例仅在手动触发时运行工作流程:

on: workflow_dispatch

示例工作流程配置

此示例定义了 namehome 输入,并使用 github.event.inputs.namegithub.event.inputs.home 上下文打印。 如果未提供 home ,则打印默认值“The Octoverse”。

name: Manually triggered workflow
on:
  workflow_dispatch:
    inputs:
      name:
        description: 'Person to greet'
        required: true
        default: 'Mona the Octocat'
      home:
        description: 'location'
        required: false
        default: 'The Octoverse'

jobs:
  say_hello:
    runs-on: ubuntu-latest
    steps:
      - run: |
          echo "Hello ${{ github.event.inputs.name }}!"
          echo "- in ${{ github.event.inputs.home }}!"

repository_dispatch

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
repository_dispatchn/a默认分支上的最新提交默认分支

注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。

You can use the GitHub Enterprise Server API to trigger a webhook event called repository_dispatch when you want to trigger a workflow for activity that happens outside of GitHub. 更多信息请参阅“创建仓库调度事件”。

To trigger the custom repository_dispatch webhook event, you must send a POST request to a GitHub Enterprise Server API endpoint and provide an event_type name to describe the activity type. 要触发工作流程运行,还必须配置工作流程使用 repository_dispatch 事件。

示例

默认情况下,所有 event_types 都会触发工作流程运行。 您可以限制工作流程在 repository_dispatch web 挂钩有效负载中发送特定 event_type 值时运行。 创建仓库调度事件时定义在 repository_dispatch 有效负载中发送的事件类型。

on:
  repository_dispatch:
    types: [opened, deleted]

Web 挂钩事件

您可以将工作流程配置为在 GitHub Enterprise Server 上生成 web 挂钩事件时运行。 某些事件有多种触发事件的活动类型。 如果有多种活动类型触发事件,则可以指定哪些活动类型将触发工作流程运行。 更多信息请参阅“web 挂钩”。

并非所有 web 挂钩事件都触发工作流程。 要了解可用 web 挂钩事件及其有效负载的完整列表,请参阅“web 挂钩事件和有效负载”。

check_run

在发生 check_run 事件的任何时间运行您的工作流程。 多个活动类型会触发此事件。有关 REST API 的信息,请参阅“检查运行”。

注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
check_run- created
- rerequested
- completed
默认分支上的最新提交默认分支

默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。

例如,您可以在检查运行为 rerequestedcompleted 时运行工作流程。

on:
  check_run:
    types: [rerequested, completed]

check_suite

在发生 check_suite 事件的任何时间运行您的工作流程。 多个活动类型会触发此事件。有关 REST API 的信息,请参阅“检查套件”。

注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。

注意:为防止递归工作流程,如果检查套件是由 GitHub Actions 创建的,则此事件不会触发工作流程。

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
check_suite- completed
- requested
- rerequested
默认分支上的最新提交默认分支

默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。

例如,您可以在检查套件为 rerequestedcompleted 时运行工作流程。

on:
  check_suite:
    types: [rerequested, completed]

create

每当有人创建分支或标记(触发 create 事件)时运行您的工作流程。 有关 REST API 的信息,请参阅“创建引用”。

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
createn/a创建的分支或标记上的最新提交创建的分支或标记

例如,您可以在发生 create 事件时运行工作流程。

on:
  create

delete

每当有人删除分支或标记(触发 delete 事件)时运行您的工作流程。 有关 REST API 的信息,请参阅“删除引用”。

注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
deleten/a默认分支上的最新提交默认分支

例如,您可以在发生 delete 事件时运行工作流程。

on:
  delete

deployment

每当有人创建部署(触发 deployment 事件)时运行您的工作流程。 使用提交 SHA 创建的部署可能没有 Git 引用。 有关 REST API 的信息,请参阅“部署”。

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
deploymentn/a要部署的提交要部署的分支或标记(提交时为空)

例如,您可以在发生 deployment 事件时运行工作流程。

on:
  deployment

deployment_status

每当第三方提供部署状态(触发 deployment_status 事件)时运行您的工作流程。 使用提交 SHA 创建的部署可能没有 Git 引用。 有关 REST API 的信息,请参阅“创建部署状态”。

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
deployment_statusn/a要部署的提交要部署的分支或标记(提交时为空)

例如,您可以在发生 deployment_status 事件时运行工作流程。

on:
  deployment_status

注意: 当部署状态设置为 inactive 时,不会创建 web 挂钩事件。

复刻

每当有人复刻仓库(触发 fork 事件)时运行您的工作流程。 有关 REST API 的信息,请参阅“创建复刻”。

注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
复刻n/a默认分支上的最新提交默认分支

例如,您可以在发生 fork 事件时运行工作流程。

on:
  fork

gollum

当有人创建或更新 Wiki 页面时(触发 gollum 事件)运行您的工作流程。

注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
gollumn/a默认分支上的最新提交默认分支

例如,您可以在发生 gollum 事件时运行工作流程。

on:
  gollum

issue_comment

在发生 issue_comment 事件的任何时间运行您的工作流程。 多个活动类型会触发此事件。有关 REST API 的信息,请参阅“议题评论”。

注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
issue_comment- created
- edited
- deleted
默认分支上的最新提交默认分支

默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。

例如,您可以在议题评论为 createddeleted 时运行工作流程。

on:
  issue_comment:
    types: [created, deleted]

issue_comment 事件在评论问题和拉取请求时发生。 要确定 issue_comment 事件是否从议题或拉取请求触发,可以检查 issue.pull_request 属性的事件有效负载,并使用它作为跳过作业的条件。

例如,您可以选择在拉取请求中发生评论事件时运行 pr_commented 作业,在议题中发生评论事件时运行 issue_commented 作业。

on: issue_comment

jobs:
  pr_commented:
    # This job only runs for pull request comments
    name: PR comment
    if: ${{ github.event.issue.pull_request }}
    runs-on: ubuntu-latest
    steps:
      - run: |
          echo "Comment on PR #${{ github.event.issue.number }}"

  issue_commented:
    # This job only runs for issue comments
    name: Issue comment
    if: ${{ !github.event.issue.pull_request }}
    runs-on: ubuntu-latest
    steps:
      - run: |
          echo "Comment on issue #${{ github.event.issue.number }}"

议题

在发生 issues 事件的任何时间运行您的工作流程。 多个活动类型会触发此事件。有关 REST API 的信息,请参阅“议题”。

注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
议题- opened
- edited
- deleted
- transferred
- pinned
- unpinned
- closed
- reopened
- assigned
- unassigned
- labeled
- unlabeled
- locked
- unlocked
- milestoned
- demilestoned
默认分支上的最新提交默认分支

默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。

例如,您可以在议题为 openededitedmilestoned 时运行工作流程。

on:
  issues:
    types: [opened, edited, milestoned]

标签

在发生 label 事件的任何时间运行您的工作流程。 多个活动类型会触发此事件。有关 REST API 的信息,请参阅“标签”。

注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
标签- created
- edited
- deleted
默认分支上的最新提交默认分支

默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。

例如,您可以在标签为 createddeleted 时运行工作流程。

on:
  label:
    types: [created, deleted]

里程碑

在发生 milestone 事件的任何时间运行您的工作流程。 多个活动类型会触发此事件。有关 REST API 的信息,请参阅“里程碑”。

注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
里程碑- created
- closed
- opened
- edited
- deleted
默认分支上的最新提交默认分支

默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。

例如,您可以在里程碑为 openeddeleted 时运行工作流程。

on:
  milestone:
    types: [opened, deleted]

page_build

在有人推送到启用 GitHub Enterprise Server Pages 的分支(触发 page_build 事件)的任何时间运行您的工作流程。 有关 REST API 的信息,请参阅“页面”。

注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
page_buildn/a默认分支上的最新提交n/a

例如,您可以在发生 page_build 事件时运行工作流程。

on:
  page_build

project

在发生 project 事件的任何时间运行您的工作流程。 多个活动类型会触发此事件。有关 REST API 的信息,请参阅“项目”。

注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
project- created
- updated
- closed
- reopened
- edited
- deleted
默认分支上的最新提交默认分支

默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。

例如,您可以在项目为 createddeleted 时运行工作流程。

on:
  project:
    types: [created, deleted]

project_card

在发生 project_card 事件的任何时间运行您的工作流程。 多个活动类型会触发此事件。有关 REST API 的信息,请参阅“项目卡”。

注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
project_card- created
- moved
- converted to an issue
- edited
- deleted
默认分支上的最新提交默认分支

默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。

例如,您可以在项目卡为 openeddeleted 时运行工作流程。

on:
  project_card:
    types: [created, deleted]

project_column

在发生 project_column 事件的任何时间运行您的工作流程。 多个活动类型会触发此事件。有关 REST API 的信息,请参阅“项目列”。

注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
project_column- created
- updated
- moved
- deleted
默认分支上的最新提交默认分支

默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。

例如,您可以在项目列为 createddeleted 时运行工作流程。

on:
  project_column:
    types: [created, deleted]

public

每当有人将私有仓库公开(触发 public 事件)时运行您的工作流程。 有关 REST API 的信息,请参阅“编辑仓库”。

注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
publicn/a默认分支上的最新提交默认分支

例如,您可以在发生 public 事件时运行工作流程。

on:
  public

pull_request

在发生 pull_request 事件的任何时间运行您的工作流程。 多个活动类型会触发此事件。有关 REST API 的信息,请参阅“拉取请求”。

注意:

  • 默认情况下,工作流程仅在 pull_request 的活动类型为 openedsynchronizereopened 时运行。 要让更多活动类型触发工作流程,请使用 types 关键词。
  • 如果拉取请求具有合并冲突,工作流程将不会在 pull_request 活动上运行。 必须先解决合并冲突。
Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
pull_request- assigned
- unassigned
- labeled
- unlabeled
- opened
- edited
- closed
- reopened
- synchronize
- converted_to_draft
- ready_for_review
- locked
- unlocked
- review_requested
- review_request_removed
- auto_merge_enabled
- auto_merge_disabled
GITHUB_REF 分支上的最新合并提交PR 合并分支 refs/pull/:prNumber/merge

您可以使用 types 关键词扩展或限制默认活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。

例如,您可以在拉取请求为 assignedopenedsynchronizereopened 时运行工作流程。

on:
  pull_request:
    types: [assigned, opened, synchronize, reopened]

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

注:如果从复刻仓库打开拉取请求,工作流程不会在私有基础仓库上运行。

当创建一个从复刻仓库到基础仓库的拉取请求时,GitHub 发送 pull_request 事件到基础仓库,而在复刻仓库上不发生拉取请求事件。

默认情况下,工作流程不在复刻仓库上运行。 您必须在复刻仓库的 Actions(操作)选项卡中启用 GitHub Actions。

除了 GITHUB_TOKEN 以外,从复刻的仓库触发工作流程时密码不会传递给运行程序。 对复刻仓库中 GITHUB_TOKEN 的权限是只读的。 更多信息请参阅“使用 GITHUB_TOKEN 验证身份”。

注意:由 Dependabot 拉取请求触发的工作流程被视为来自复刻的仓库,也受到这些限制。

pull_request_review

在发生 pull_request_review 事件的任何时间运行您的工作流程。 多个活动类型会触发此事件。有关 REST API 的信息,请参阅“拉取请求审查”。

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
pull_request_review- submitted
- edited
- dismissed
GITHUB_REF 分支上的最新合并提交PR 合并分支 refs/pull/:prNumber/merge

默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。

例如,您可以在拉取请求审查为 editeddismissed 时运行工作流程。

on:
  pull_request_review:
    types: [edited, dismissed]

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

注:如果从复刻仓库打开拉取请求,工作流程不会在私有基础仓库上运行。

当创建一个从复刻仓库到基础仓库的拉取请求时,GitHub 发送 pull_request 事件到基础仓库,而在复刻仓库上不发生拉取请求事件。

默认情况下,工作流程不在复刻仓库上运行。 您必须在复刻仓库的 Actions(操作)选项卡中启用 GitHub Actions。

除了 GITHUB_TOKEN 以外,从复刻的仓库触发工作流程时密码不会传递给运行程序。 对复刻仓库中 GITHUB_TOKEN 的权限是只读的。 更多信息请参阅“使用 GITHUB_TOKEN 验证身份”。

注意:由 Dependabot 拉取请求触发的工作流程被视为来自复刻的仓库,也受到这些限制。

pull_request_review_comment

每当拉取请求统一差异的评论被修改(触发 pull_request_review_comment 事件)时运行您的工作流程。 多个活动类型会触发此事件。 有关 REST API 的信息,请参阅“审查评论”。

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
pull_request_review_comment- created
- edited
- deleted
GITHUB_REF 分支上的最新合并提交PR 合并分支 refs/pull/:prNumber/merge

默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。

例如,您可以在拉取请求审查评论为 createddeleted 时运行工作流程。

on:
  pull_request_review_comment:
    types: [created, deleted]

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

注:如果从复刻仓库打开拉取请求,工作流程不会在私有基础仓库上运行。

当创建一个从复刻仓库到基础仓库的拉取请求时,GitHub 发送 pull_request 事件到基础仓库,而在复刻仓库上不发生拉取请求事件。

默认情况下,工作流程不在复刻仓库上运行。 您必须在复刻仓库的 Actions(操作)选项卡中启用 GitHub Actions。

除了 GITHUB_TOKEN 以外,从复刻的仓库触发工作流程时密码不会传递给运行程序。 对复刻仓库中 GITHUB_TOKEN 的权限是只读的。 更多信息请参阅“使用 GITHUB_TOKEN 验证身份”。

注意:由 Dependabot 拉取请求触发的工作流程被视为来自复刻的仓库,也受到这些限制。

pull_request_target

此事件在拉取请求基础的上下文中运行,而不是像 pull_request 事件一样在合并提交中运行。 这样可以防止从拉取请求的头部执行不安全的工作流程代码,以免更改您的仓库或窃取您在工作流程中使用的任何机密。 此事件允许您根据事件有效负载的内容创建工作流程来标识和评论拉取请求,等等。

警告: pull_request_target 事件被授予读/写仓库令牌,可以访问机密,即使从复刻触发时。 虽然工作流程在拉取请求的基础上下文中运行,但您应该确保不在此事件中检出、生成或运行来自拉取请求的不受信任代码。 此外,任何缓存共享与基本分支相同的范围,并且为了帮助防止缓存中毒,如果缓存内容可能已更改,则不应保存缓存。 更多信息请参阅 GitHub 安全实验室网站上的“保持 GitHub Actions 和工作流程安全:阻止 pwn 请求”。

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
pull_request_target- assigned
- unassigned
- labeled
- unlabeled
- opened
- edited
- closed
- reopened
- synchronize
- converted_to_draft
- ready_for_review
- locked
- unlocked
- review_requested
- review_request_removed
- auto_merge_enabled
- auto_merge_disabled
PR 基分支上的最后一次提交PR 基础分支

默认情况下,工作流程仅在 pull_request_target 的活动类型为 openedsynchronizereopened 时运行。 要让更多活动类型触发工作流程,请使用 types 关键词。 更多信息请参阅“GitHub Actions 的工作流程语法”。

例如,您可以在拉取请求为 assignedopenedsynchronizereopened 时运行工作流程。

on:
  pull_request_target:
    types: [assigned, opened, synchronize, reopened]

推送

注:适用于 GitHub Actions 的 web 挂钩有效负载在 commit 对象中不包括 addedremovedmodified 属性。 您可以使用 REST API 检索完整的提交对象。 更多信息请参阅“获取提交”。

有人向仓库分支推送(触发 push 事件)时运行您的工作流程。

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
推送n/a推送的提交,除非删除分支(当它是默认分支时)更新的引用

例如,您可以在发生 push 事件时运行工作流程。

on:
  push

registry_package

只要软件包为 published or updated,即运行工作流程。 更多信息请参阅“使用 GitHub Packages 管理包”。

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
registry_package- published
- updated
Commit of the published package已发布软件包的分支或标签

默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。

例如,您可以在软件包为 published 时运行工作流程。

on:
  registry_package:
    types: [published]

发行版

注意:对草稿发行版不触发 release 事件。

在发生 release 事件的任何时间运行您的工作流程。 多个活动类型会触发此事件。有关 REST API 的信息,请参阅“发行版”。

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
发行版- published
- unpublished
- created
- edited
- deleted
- prereleased
- released
标记的发行版中的最新提交发行版标记

默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。

例如,您可以在版本发布为 published 时运行工作流程。

on:
  release:
    types: [published]

注意:prereleased 类型不会触发从草稿版本预发布,但 published 类型会触发。 如果您希望工作流程在稳定预发布时运行,请订阅 published 而不是 releasedprereleased

状态

在 Git 提交的状态发生变化(触发 status 事件)的任何时间运行您的工作流程。 有关 REST API 的信息,请参阅“状态”。

注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
状态n/a默认分支上的最新提交n/a

例如,您可以在发生 status 事件时运行工作流程。

on:
  status

查看

在发生 watch 事件的任何时间运行您的工作流程。 多个活动类型会触发此事件。有关 REST API 的信息,请参阅“星标”。

注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
查看- started默认分支上的最新提交默认分支

默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。

例如,您可以在某人为仓库加星标时(即触发关注事件的 started 活动类型)运行工作流程。

on:
  watch:
    types: [started]

workflow_run

当请求或完成工作流程运行时,将发生此事件,并允许您基于另一个工作流程的完成结果执行工作流程。 无论上一个工作流程的结果如何,工作流程运行都会被触发。

例如,如果 pull_request 工作流程生成构件,您可以创建一个使用 workflow_run 来分析结果的新工作流程,并向原始拉取请求添加注释。

workflow_run 事件启动的工作流程能够访问密钥和写入令牌,即使以前的工作流程不能访问也一样。 这在以前的工作流程有意未获权限的情况下很有用,但您需要在以后的工作流程中采取特权行动。

注意:

  • This event will only trigger a workflow run if the workflow file is on the default branch.

  • You can't use workflow_run to chain together more than three levels of workflows. For example, if you attempt to trigger five workflows (named B to F) to run sequentially after an initial workflow A has run (that is: ABCDEF), workflows E and F will not be run.

Web 挂钩事件有效负载活动类型GITHUB_SHAGITHUB_REF
workflow_run- completed
- requested
默认分支上的最新提交默认分支

默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。

如果需要从此事件中筛选分支,可以使用 branchesbranches-ignore

在此示例中,工作流程配置为在单独的“运行测试”工作流程完成后运行。

on:
  workflow_run:
    workflows: ["Run Tests"]
    branches: [main]
    types:
      - completed
      - requested

要根据上次工作流程运行的结果有条件地运行工作流程作业,您可以使用 jobs.<job_id>.ifjobs.<job_id>.steps[*].if 有条件地结合上次运行的结论。 例如:

on:
  workflow_run:
    workflows: ["Build"]
    types: [completed]

jobs:
  on-success:
    runs-on: ubuntu-latest
    if: ${{ github.event.workflow_run.conclusion == 'success' }}
    steps:
      ...
  on-failure:
    runs-on: ubuntu-latest
    if: ${{ github.event.workflow_run.conclusion == 'failure' }}
    steps:
      ...

使用个人访问令牌触发新工作流程

使用仓库的 GITHUB_TOKEN 代表 GitHub Actions 应用程序执行任务时,GITHUB_TOKEN 触发的事件不会创建新的工作流程运行。 这可以防止意外创建递归工作流程运行。 例如,如果工作流程运行使用仓库的 GITHUB_TOKEN 推送代码,则即使仓库包含配置为在 push 事件发生时运行的工作流程,新工作流程也不会运行。 更多信息请参阅“使用 GITHUB_TOKEN 验证身份”。

如果要从工作流程运行触发工作流程,您可以使用个人访问令牌触发事件。 您需要创建个人访问令牌并将其存储为密码。 为了最大限度地降低 GitHub Actions 使用成本,请确保不要创建递归或意外的工作流程。 有关存储个人访问令牌的更多信息,请参阅“创建和存储加密密码”。

此文档对您有帮助吗?

隐私政策

帮助我们创建出色的文档!

所有 GitHub 文档都是开源的。看到错误或不清楚的内容了吗?提交拉取请求。

做出贡献

或者, 了解如何参与。