Configuring workflow events
You can configure workflows to run for one or more events using the on workflow syntax. For more information, see "Workflow syntax for 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
`
Note: You cannot trigger new workflow runs using the GITHUB_TOKEN. For more information, see "Triggering new workflows using a personal access token."
The following steps occur to trigger a workflow run:
-
An event occurs on your repository, and the resulting event has an associated commit SHA and Git ref.
-
The .github/workflows directory in your repository is searched for workflow files at the associated commit SHA or Git ref. The workflow files must be present in that commit SHA or Git ref to be considered.
For example, if the event occurred on a particular repository branch, then the workflow files must be present in the repository on that branch.
-
The workflow files for that commit SHA and Git ref are inspected, and a new workflow run is triggered for any workflows that have on: values that match the triggering event.
The workflow runs on your repository's code at the same commit SHA and Git ref that triggered the event. When a workflow runs, GitHub sets the GITHUB_SHA (commit SHA) and GITHUB_REF (Git ref) environment variables in the runner environment. For more information, see "Using environment variables."
Scheduled events
The schedule event allows you to trigger a workflow at a scheduled time.
注意: schedule 事件在 GitHub Actions 工作流程运行期间负载过高时可能会延迟。 高负载时间包括每小时的开始时间。 为了降低延迟的可能性,将您的工作流程安排在不同时间运行。
schedule
Webhook event payload Activity types GITHUB_SHAGITHUB_REFn/a n/a Last commit on default branch Default branch
您可以使用 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 * * *'
Cron syntax has five fields separated by a space, and each field represents a unit of time.
┌───────────── 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)
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │
* * * * *
You can use these operators in any of the five fields:
Operator Description Example * Any value * * * * * runs every minute of every day., Value list separator 2,10 4,5 * * * runs at minute 2 and 10 of the 4th and 5th hour of every day.- Range of values 0 4-6 * * * runs at minute 0 of the 4th, 5th, and 6th hour./ Step values 20/15 * * * * runs every 15 minutes starting from minute 20 through 59 (minutes 20, 35, and 50).
Note: GitHub Actions does not support the non-standard syntax @yearly, @monthly, @weekly, @daily, @hourly, and @reboot.
You can use crontab guru to help generate your cron syntax and confirm what time it will run. To help you get started, there is also a list of crontab guru examples.
Notifications for scheduled workflows are sent to the user who last modified the cron syntax in the workflow file. For more information, please see "Notifications for workflow runs."
Manual events
You can manually trigger workflow runs. To trigger specific workflows in a repository, use the workflow_dispatch event. To trigger more than one workflow in a repository and create custom events and event types, use the repository_dispatch event.
workflow_dispatch
Webhook event payload Activity types GITHUB_SHAGITHUB_REFworkflow_dispatch n/a Last commit on the GITHUB_REF branch Branch that received dispatch
You can configure custom-defined input properties, default input values, and required inputs for the event directly in your workflow. When the workflow runs, you can access the input values in the github.event.inputs context. For more information, see "Contexts."
You can manually trigger a workflow run using the GitHub API and from GitHub. For more information, see "Manually running a workflow."
When you trigger the event on GitHub, you can provide the ref and any inputs directly on GitHub. For more information, see "Using inputs and outputs with an action."
To trigger the custom workflow_dispatch webhook event using the REST API, you must send a POST request to a GitHub API endpoint and provide the ref and any required inputs. For more information, see the "Create a workflow dispatch event" REST API endpoint.
Example
To use the workflow_dispatch event, you need to include it as a trigger in your GitHub Actions workflow file. The example below only runs the workflow when it's manually triggered:
on: workflow_dispatch
Example workflow configuration
This example defines the name and home inputs and prints them using the github.event.inputs.name and github.event.inputs.home contexts. If a home isn't provided, the default value 'The Octoverse' is printed.
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
Webhook event payload Activity types GITHUB_SHAGITHUB_REFrepository_dispatch n/a Last commit on default branch Default branch
注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。
You can use the GitHub API to trigger a webhook event called repository_dispatch when you want to trigger a workflow for activity that happens outside of GitHub. For more information, see "Create a repository dispatch event."
To trigger the custom repository_dispatch webhook event, you must send a POST request to a GitHub API endpoint and provide an event_type name to describe the activity type. To trigger a workflow run, you must also configure your workflow to use the repository_dispatch event.
Example
By default, all event_types trigger a workflow to run. You can limit your workflow to run when a specific event_type value is sent in the repository_dispatch webhook payload. You define the event types sent in the repository_dispatch payload when you create the repository dispatch event.
on:
repository_dispatch:
types: [opened, deleted]
Workflow reuse events
workflow_call is a keyword used as the value of on in a workflow, in the same way as an event. It indicates that a workflow can be called from another workflow. For more information see, "Reusing workflows."
workflow_call
Webhook event payload Activity types GITHUB_SHAGITHUB_REFSame as the caller workflow n/a Same as the caller workflow Same as the caller workflow
Example
To make a workflow reusable it must include workflow_call as one of the values of on. The example below only runs the workflow when it's called from another workflow:
on: workflow_call
Webhook events
You can configure your workflow to run when webhook events are generated on GitHub. Some events have more than one activity type that triggers the event. If more than one activity type triggers the event, you can specify which activity types will trigger the workflow to run. For more information, see "Webhooks."
Not all webhook events trigger workflows. For the complete list of available webhook events and their payloads, see "Webhook events and payloads."
branch_protection_rule
Runs your workflow anytime the branch_protection_rule event occurs. 多个活动类型会触发此事件。 For information about the GraphQL API, see "BranchProtectionRule."
注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。
Webhook event payload Activity types GITHUB_SHAGITHUB_REFbranch_protection_rule- created
- edited
- deleted Last commit on default branch Default branch
默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。
For example, you can run a workflow when a branch protection rule has been created or deleted.
on:
branch_protection_rule:
types: [created, deleted]
check_run
Runs your workflow anytime the check_run event occurs. 多个活动类型会触发此事件。 For information about the REST API, see "Check runs."
注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。
Webhook event payload Activity types GITHUB_SHAGITHUB_REFcheck_run- created
- rerequested
- completed Last commit on default branch Default branch
默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。
For example, you can run a workflow when a check run has been rerequested or completed.
on:
check_run:
types: [rerequested, completed]
check_suite
Runs your workflow anytime the check_suite event occurs. 多个活动类型会触发此事件。 For information about the REST API, see "Check suites."
注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。
Note: To prevent recursive workflows, this event does not trigger workflows if the check suite was created by GitHub Actions.
Webhook event payload Activity types GITHUB_SHAGITHUB_REFcheck_suite- completed
- requested
- rerequested
Last commit on default branch Default branch
默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。
For example, you can run a workflow when a check suite has been rerequested or completed.
on:
check_suite:
types: [rerequested, completed]
create
Runs your workflow anytime someone creates a branch or tag, which triggers the create event. For information about the REST API, see "Create a reference."
Webhook event payload Activity types GITHUB_SHAGITHUB_REFcreaten/a Last commit on the created branch or tag Branch or tag created
For example, you can run a workflow when the create event occurs.
on:
create
delete
Runs your workflow anytime someone deletes a branch or tag, which triggers the delete event. For information about the REST API, see "Delete a reference."
注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。
Webhook event payload Activity types GITHUB_SHAGITHUB_REFdeleten/a Last commit on default branch Default branch
For example, you can run a workflow when the delete event occurs.
on:
delete
deployment
Runs your workflow anytime someone creates a deployment, which triggers the deployment event. Deployments created with a commit SHA may not have a Git ref. For information about the REST API, see "Deployments."
Webhook event payload Activity types GITHUB_SHAGITHUB_REFdeploymentn/a Commit to be deployed Branch or tag to be deployed (empty if commit)
For example, you can run a workflow when the deployment event occurs.
on:
deployment
deployment_status
Runs your workflow anytime a third party provides a deployment status, which triggers the deployment_status event. Deployments created with a commit SHA may not have a Git ref. For information about the REST API, see "Create a deployment status."
Webhook event payload Activity types GITHUB_SHAGITHUB_REFdeployment_statusn/a Commit to be deployed Branch or tag to be deployed (empty if commit)
For example, you can run a workflow when the deployment_status event occurs.
on:
deployment_status
Note: When a deployment status's state is set to inactive, a webhook event will not be created.
discussion
Runs your workflow anytime the discussion event occurs. 多个活动类型会触发此事件。 For information about the GraphQL API, see "Discussions."
注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。
Webhook event payload Activity types GITHUB_SHAGITHUB_REFdiscussion- created
- edited
- deleted
- transferred
- pinned
- unpinned
- labeled
- unlabeled
- locked
- unlocked
- category_changed
- answered
- unanswered Last commit on default branch Default branch
默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。
For example, you can run a workflow when a discussion has been created, edited, or answered.
on:
discussion:
types: [created, edited, answered]
discussion_comment
Runs your workflow anytime the discussion_comment event occurs. 多个活动类型会触发此事件。 For information about the GraphQL API, see "Discussions."
注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。
Webhook event payload Activity types GITHUB_SHAGITHUB_REFdiscussion_comment- created
- edited
- deleted
Last commit on default branch Default branch
默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。
For example, you can run a workflow when an issue comment has been created or deleted.
on:
discussion_comment:
types: [created, deleted]
fork
Runs your workflow anytime when someone forks a repository, which triggers the fork event. For information about the REST API, see "Create a fork."
注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。
Webhook event payload Activity types GITHUB_SHAGITHUB_REFforkn/a Last commit on default branch Default branch
For example, you can run a workflow when the fork event occurs.
on:
fork
gollum
Runs your workflow when someone creates or updates a Wiki page, which triggers the gollum event.
注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。
Webhook event payload Activity types GITHUB_SHAGITHUB_REFgollumn/a Last commit on default branch Default branch
For example, you can run a workflow when the gollum event occurs.
on:
gollum
issue_comment
Runs your workflow anytime the issue_comment event occurs. 多个活动类型会触发此事件。 For information about the REST API, see "Issue comments."
注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。
Webhook event payload Activity types GITHUB_SHAGITHUB_REFissue_comment- created
- edited
- deleted
Last commit on default branch Default branch
默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。
For example, you can run a workflow when an issue comment has been created or deleted.
on:
issue_comment:
types: [created, deleted]
The issue_comment event occurs for comments on both issues and pull requests. To determine whether the issue_comment event was triggered from an issue or pull request, you can check the event payload for the issue.pull_request property and use it as a condition to skip a job.
For example, you can choose to run the pr_commented job when comment events occur in a pull request, and the issue_commented job when comment events occur in an issue.
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
Runs your workflow anytime the issues event occurs. 多个活动类型会触发此事件。 For information about the REST API, see "Issues."
注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。
Webhook event payload Activity types GITHUB_SHAGITHUB_REFissues- opened
- edited
- deleted
- transferred
- pinned
- unpinned
- closed
- reopened
- assigned
- unassigned
- labeled
- unlabeled
- locked
- unlocked
- milestoned
- demilestoned Last commit on default branch Default branch
默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。
For example, you can run a workflow when an issue has been opened, edited, or milestoned.
on:
issues:
types: [opened, edited, milestoned]
label
Runs your workflow anytime the label event occurs. 多个活动类型会触发此事件。 For information about the REST API, see "Labels."
注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。
Webhook event payload Activity types GITHUB_SHAGITHUB_REFlabel- created
- edited
- deleted
Last commit on default branch Default branch
默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。
For example, you can run a workflow when a label has been created or deleted.
on:
label:
types: [created, deleted]
milestone
Runs your workflow anytime the milestone event occurs. 多个活动类型会触发此事件。 For information about the REST API, see "Milestones."
注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。
Webhook event payload Activity types GITHUB_SHAGITHUB_REFmilestone- created
- closed
- opened
- edited
- deleted
Last commit on default branch Default branch
默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。
For example, you can run a workflow when a milestone has been opened or deleted.
on:
milestone:
types: [opened, deleted]
page_build
Runs your workflow anytime someone pushes to a GitHub Pages-enabled branch, which triggers the page_build event. For information about the REST API, see "Pages."
注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。
Webhook event payload Activity types GITHUB_SHAGITHUB_REFpage_buildn/a Last commit on default branch n/a
For example, you can run a workflow when the page_build event occurs.
on:
page_build
project
Runs your workflow anytime the project event occurs. 多个活动类型会触发此事件。 For information about the REST API, see "Projects."
注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。
Webhook event payload Activity types GITHUB_SHAGITHUB_REFproject- created
- updated
- closed
- reopened
- edited
- deleted
Last commit on default branch Default branch
默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。
For example, you can run a workflow when a project has been created or deleted.
on:
project:
types: [created, deleted]
project_card
Runs your workflow anytime the project_card event occurs. 多个活动类型会触发此事件。 For information about the REST API, see "Project cards."
注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。
Webhook event payload Activity types GITHUB_SHAGITHUB_REFproject_card- created
- moved
- converted to an issue
- edited
- deleted Last commit on default branch Default branch
默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。
For example, you can run a workflow when a project card has been opened or deleted.
on:
project_card:
types: [created, deleted]
project_column
Runs your workflow anytime the project_column event occurs. 多个活动类型会触发此事件。 For information about the REST API, see "Project columns."
注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。
Webhook event payload Activity types GITHUB_SHAGITHUB_REFproject_column- created
- updated
- moved
- deleted Last commit on default branch Default branch
默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。
For example, you can run a workflow when a project column has been created or deleted.
on:
project_column:
types: [created, deleted]
public
Runs your workflow anytime someone makes a private repository public, which triggers the public event. For information about the REST API, see "Edit repositories."
注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。
Webhook event payload Activity types GITHUB_SHAGITHUB_REFpublicn/a Last commit on default branch Default branch
For example, you can run a workflow when the public event occurs.
on:
public
pull_request
Runs your workflow anytime the pull_request event occurs. 多个活动类型会触发此事件。 For information about the REST API, see "Pull requests."
Notes:
- By default, a workflow only runs when a
pull_request's activity type is opened, synchronize, or reopened. To trigger workflows for more activity types, use the types keyword.
- Workflows will not run on
pull_request activity if the pull request has a merge conflict. The merge conflict must be resolved first.
Webhook event payload Activity types GITHUB_SHAGITHUB_REFpull_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 Last merge commit on the GITHUB_REF branch PR merge branch refs/pull/:prNumber/merge
You extend or limit the default activity types using the types keyword. For more information, see "Workflow syntax for GitHub Actions."
For example, you can run a workflow when a pull request has been assigned, opened, synchronize, or reopened.
on:
pull_request:
types: [assigned, opened, synchronize, reopened]
复刻的仓库的拉取请求事件
注:如果从复刻仓库打开拉取请求,工作流程不会在私有基础仓库上运行。
当创建一个从复刻仓库到基础仓库的拉取请求时,GitHub 发送 pull_request 事件到基础仓库,而在复刻仓库上不发生拉取请求事件。
默认情况下,工作流程不在复刻仓库上运行。 您必须在复刻仓库的 Actions(操作)选项卡中启用 GitHub Actions。
当贡献者第一次向公共仓库提交拉取请求时,拥有写入权限的维护者可能需要批准拉取请求上运行的工作流程。 更多信息请参阅“批准公共复刻中的工作流程运行”。
除了 GITHUB_TOKEN 以外,从复刻的仓库触发工作流程时密码不会传递给运行程序。 对复刻仓库中 GITHUB_TOKEN 的权限是只读的。 更多信息请参阅“使用 GITHUB_TOKEN 验证身份”。
注意:由 Dependabot 拉取请求触发的工作流程被视为来自复刻的仓库,也受到这些限制。
pull_request_review
Runs your workflow anytime the pull_request_review event occurs. 多个活动类型会触发此事件。 For information about the REST API, see "Pull request reviews."
Webhook event payload Activity types GITHUB_SHAGITHUB_REFpull_request_review- submitted
- edited
- dismissed Last merge commit on the GITHUB_REF branch PR merge branch refs/pull/:prNumber/merge
默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。
For example, you can run a workflow when a pull request review has been edited or dismissed.
on:
pull_request_review:
types: [edited, dismissed]
复刻的仓库的拉取请求事件
注:如果从复刻仓库打开拉取请求,工作流程不会在私有基础仓库上运行。
当创建一个从复刻仓库到基础仓库的拉取请求时,GitHub 发送 pull_request 事件到基础仓库,而在复刻仓库上不发生拉取请求事件。
默认情况下,工作流程不在复刻仓库上运行。 您必须在复刻仓库的 Actions(操作)选项卡中启用 GitHub Actions。
当贡献者第一次向公共仓库提交拉取请求时,拥有写入权限的维护者可能需要批准拉取请求上运行的工作流程。 更多信息请参阅“批准公共复刻中的工作流程运行”。
除了 GITHUB_TOKEN 以外,从复刻的仓库触发工作流程时密码不会传递给运行程序。 对复刻仓库中 GITHUB_TOKEN 的权限是只读的。 更多信息请参阅“使用 GITHUB_TOKEN 验证身份”。
注意:由 Dependabot 拉取请求触发的工作流程被视为来自复刻的仓库,也受到这些限制。
pull_request_review_comment
Runs your workflow anytime a comment on a pull request's unified diff is modified, which triggers the pull_request_review_comment event. 多个活动类型会触发此事件。 For information about the REST API, see Review comments.
Webhook event payload Activity types GITHUB_SHAGITHUB_REFpull_request_review_comment- created
- edited
- deleted Last merge commit on the GITHUB_REF branch PR merge branch refs/pull/:prNumber/merge
默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。
For example, you can run a workflow when a pull request review comment has been created or deleted.
on:
pull_request_review_comment:
types: [created, deleted]
复刻的仓库的拉取请求事件
注:如果从复刻仓库打开拉取请求,工作流程不会在私有基础仓库上运行。
当创建一个从复刻仓库到基础仓库的拉取请求时,GitHub 发送 pull_request 事件到基础仓库,而在复刻仓库上不发生拉取请求事件。
默认情况下,工作流程不在复刻仓库上运行。 您必须在复刻仓库的 Actions(操作)选项卡中启用 GitHub Actions。
当贡献者第一次向公共仓库提交拉取请求时,拥有写入权限的维护者可能需要批准拉取请求上运行的工作流程。 更多信息请参阅“批准公共复刻中的工作流程运行”。
除了 GITHUB_TOKEN 以外,从复刻的仓库触发工作流程时密码不会传递给运行程序。 对复刻仓库中 GITHUB_TOKEN 的权限是只读的。 更多信息请参阅“使用 GITHUB_TOKEN 验证身份”。
注意:由 Dependabot 拉取请求触发的工作流程被视为来自复刻的仓库,也受到这些限制。
pull_request_target
This event runs in the context of the base of the pull request, rather than in the merge commit as the pull_request event does. This prevents executing unsafe workflow code from the head of the pull request that could alter your repository or steal any secrets you use in your workflow. This event allows you to do things like create workflows that label and comment on pull requests based on the contents of the event payload.
Warning: The pull_request_target event is granted a read/write repository token and can access secrets, even when it is triggered from a fork. Although the workflow runs in the context of the base of the pull request, you should make sure that you do not check out, build, or run untrusted code from the pull request with this event. Additionally, any caches share the same scope as the base branch, and to help prevent cache poisoning, you should not save the cache if there is a possibility that the cache contents were altered. For more information, see "Keeping your GitHub Actions and workflows secure: Preventing pwn requests" on the GitHub Security Lab website.
Webhook event payload Activity types GITHUB_SHAGITHUB_REFpull_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 Last commit on the PR base branch PR base branch
By default, a workflow only runs when a pull_request_target's activity type is opened, synchronize, or reopened. To trigger workflows for more activity types, use the types keyword. For more information, see "Workflow syntax for GitHub Actions."
For example, you can run a workflow when a pull request has been assigned, opened, synchronize, or reopened.
on:
pull_request_target:
types: [assigned, opened, synchronize, reopened]
push
Note: The webhook payload available to GitHub Actions does not include the added, removed, and modified attributes in the commit object. You can retrieve the full commit object using the REST API. For more information, see "Get a commit".
Runs your workflow when someone pushes to a repository branch, which triggers the push event.
Webhook event payload Activity types GITHUB_SHAGITHUB_REFpushn/a Commit pushed, unless deleting a branch (when it's the default branch) Updated ref
For example, you can run a workflow when the push event occurs.
on:
push
registry_package
Runs your workflow anytime a package is published or updated. For more information, see "Managing packages with GitHub Packages."
Webhook event payload Activity types GITHUB_SHAGITHUB_REFregistry_package- published
- updated Commit of the published package Branch or tag of the published package
默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。
For example, you can run a workflow when a package has been published.
on:
registry_package:
types: [published]
release
Note: The release event is not triggered for draft releases.
Runs your workflow anytime the release event occurs. 多个活动类型会触发此事件。 For information about the REST API, see "Releases."
Webhook event payload Activity types GITHUB_SHAGITHUB_REFrelease- published
- unpublished
- created
- edited
- deleted
- prereleased
- released Last commit in the tagged release Tag of release
默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。
For example, you can run a workflow when a release has been published.
on:
release:
types: [published]
Note: The prereleased type will not trigger for pre-releases published from draft releases, but the published type will trigger. If you want a workflow to run when stable and pre-releases publish, subscribe to published instead of released and prereleased.
status
Runs your workflow anytime the status of a Git commit changes, which triggers the status event. For information about the REST API, see Statuses.
注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。
Webhook event payload Activity types GITHUB_SHAGITHUB_REFstatusn/a Last commit on default branch n/a
For example, you can run a workflow when the status event occurs.
on:
status
watch
Runs your workflow anytime the watch event occurs. 多个活动类型会触发此事件。 For information about the REST API, see "Starring."
注:仅当工作流程文件在默认分支上时,此事件才会触发工作流程运行。
Webhook event payload Activity types GITHUB_SHAGITHUB_REFwatch- started Last commit on default branch Default branch
默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。
For example, you can run a workflow when someone stars a repository, which is the started activity type that triggers the watch event.
on:
watch:
types: [started]
workflow_run
当请求或完成工作流程运行时,将发生此事件,并允许您基于另一个工作流程的完成结果执行工作流程。 无论上一个工作流程的结果如何,工作流程运行都会被触发。
例如,如果 pull_request 工作流程生成构件,您可以创建一个使用 workflow_run 来分析结果的新工作流程,并向原始拉取请求添加注释。
由 workflow_run 事件启动的工作流程能够访问密钥和写入令牌,即使以前的工作流程不能访问也一样。 这在以前的工作流程有意未获权限的情况下很有用,但您需要在以后的工作流程中采取特权行动。
Notes:
-
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: A → B → C → D → E → F), workflows E and F will not be run.
Webhook event payload Activity types GITHUB_SHAGITHUB_REFworkflow_run- completed
- requested Last commit on default branch Default branch
默认情况下,所有活动类型都会触发一个工作流程。 您可以使用 types(类型) 关键词将工作流程限制为针对特定活动类型。 更多信息请参阅“GitHub Actions 的工作流程语法”。
If you need to filter branches from this event, you can use branches or branches-ignore.
In this example, a workflow is configured to run after the separate "Run Tests" workflow completes.
on:
workflow_run:
workflows: ["Run Tests"]
branches: [main]
types:
- completed
- requested
To run a workflow job conditionally based on the result of the previous workflow run, you can use the jobs.<job_id>.if or jobs.<job_id>.steps[*].if conditional combined with the conclusion of the previous run. For example:
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:
...
Triggering new workflows using a personal access token
使用仓库的 GITHUB_TOKEN 代表 GitHub Actions 应用程序执行任务时,GITHUB_TOKEN 触发的事件不会创建新的工作流程运行。 这可以防止意外创建递归工作流程运行。 例如,如果工作流程运行使用仓库的 GITHUB_TOKEN 推送代码,则即使仓库包含配置为在 push 事件发生时运行的工作流程,新工作流程也不会运行。 For more information, see "Authenticating with the GITHUB_TOKEN."
If you would like to trigger a workflow from a workflow run, you can trigger the event using a personal access token. You'll need to create a personal access token and store it as a secret. To minimize your GitHub Actions usage costs, ensure that you don't create recursive or unintended workflow runs. For more information on storing a personal access token as a secret, see "Creating and storing encrypted secrets."