工作流触发器与事件
探索可触发 GitHub Actions 工作流的各种事件,例如推送、拉取请求和计划事件
工作流触发器与事件 是 CoddyKit 上的免费 CI/CD with GitHub Actions & DevOps Pipelines 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 CI/CD with GitHub Actions & DevOps Pipelines 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 CI/CD with GitHub Actions & DevOps Pipelines 课程共包含 4 节课。
什么会启动工作流
GitHub Actions 中的工作流不会自行运行。它们需要一个启动信号!这个信号称为触发器。
触发器是特定的事件,用于告诉 GitHub Actions:“嘿,有事情发生了!是时候运行这个工作流了。”理解触发器是有效自动化开发流程的关键。
“on”关键字
在您的工作流文件中(即 .github/workflows 目录中的 .yml 文件),您可以使用 on 关键字定义触发器。
这一部分会告诉 GitHub Actions 工作流何时执行。您可以指定一个或多个事件。
name: My First Triggered Workflow
on:
push: # This workflow will run on every push event
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Run a simple command
run: echo "Workflow triggered!"
响应代码推送
push事件是最常见的触发器之一。每当代码被推送到您的仓库时,它就会触发,无论是新的提交还是合并。
默认情况下,push触发器会对所有分支运行。
on: push
jobs:
greeting:
runs-on: ubuntu-latest
steps:
- name: Say Hello
run: echo "Code was pushed!"
定向处理推送
您可以进一步限制 push 触发器,使其仅在特定分支上发生推送,或仅在特定文件路径中的内容发生更改时运行。这有助于优化工作流。
branches:仅在向特定分支名称推送时运行。paths:仅在指定目录中的文件发生更改时运行。
on:
push:
branches:
- main
- 'feature/*' # Glob pattern for feature branches
paths:
- 'src/**' # Only if changes in src/ directory
jobs:
build:
runs-on: ubuntu-latest
steps:
- run: echo "Push to relevant branch/path detected!"
自动化拉取请求检查
pull_request事件会在拉取请求创建、同步(向 PR 分支推送新的提交)或重新打开时触发。
它非常适合在更改合并到主代码库之前运行测试、代码检查或代码审查等自动化检查。
on: pull_request
jobs:
pr_check:
runs-on: ubuntu-latest
steps:
- name: PR opened/updated
run: echo "A pull request was opened or updated!"
特定的 PR 操作
您可以通过指定 types 进一步限制 pull_request 触发器。这样,您的工作流就只会响应与拉取请求相关的特定操作。
opened:创建新的拉取请求时。synchronize:向 PR 的分支推送新提交时。reopened:重新打开已关闭的拉取请求时。
on:
pull_request:
types: [opened, synchronize, reopened] # Run only on these PR actions
jobs:
pr_review:
runs-on: ubuntu-latest
steps:
- run: echo "PR action: ${{ github.event.action }}"
基于时间的触发器
schedule 事件允许您使用cron 语法在特定时间运行工作流。这非常适合每日报告、清理任务或定期检查。
Cron 语法使用五个星号,分别表示:minute hour day-of-month month day-of-week。
on:
schedule:
- cron: '0 0 * * *' # Run daily at midnight UTC
- cron: '0 12 * * 1-5' # Run at 12 PM UTC, Mon-Fri
jobs:
scheduled_task:
runs-on: ubuntu-latest
steps:
- run: echo "Scheduled workflow running!"
手动运行工作流
有时您需要手动运行工作流,例如进行部署或执行特定的维护任务。workflow_dispatch 事件可以实现这一点。
存在此触发器时,该工作流的 GitHub 界面中会出现一个“运行工作流”按钮,允许您按需触发工作流。
on: workflow_dispatch
jobs:
manual_task:
runs-on: ubuntu-latest
steps:
- run: echo "This workflow was triggered manually!"
超越基础知识
虽然 push、pull_request、schedule 和 workflow_dispatch 最为常见,但 GitHub Actions 还提供许多其他事件触发器。
workflow_call:用于创建可复用的工作流。repository_dispatch:用于通过 API 调用从外部系统触发工作流。- 还有许多针对特定 GitHub 事件的触发器(例如
issues、release、fork)。
触发器挑战
您需要设置一个工作流,使其每周五 UTC 时间下午 5 点自动生成一份周报,无论是否有代码更改。对于此任务,最合适的触发器事件是什么?
触发器复习
您对 GitHub Actions 触发器的探索做得很好!您已经了解到,工作流可以由各种事件启动:
push:用于处理推送到仓库的更改。pull_request:用于处理与拉取请求相关的操作。schedule:用于使用 cron 执行基于时间的定期任务。workflow_dispatch:用于从界面或 API 手动执行。
选择正确的触发器,是构建高效 CI/CD 流水线的第一步!
常见问题解答
「工作流触发器与事件」课时是免费的吗?
是的 — 「工作流触发器与事件」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 CI/CD with GitHub Actions & DevOps Pipelines 课程的其余内容,请升级到 CoddyKit PRO。 CI/CD with GitHub Actions & DevOps Pipelines 课程共包含 4 节课。
「工作流触发器与事件」这节课中我会学到什么?
探索可触发 GitHub Actions 工作流的各种事件,例如推送、拉取请求和计划事件 你通过在浏览器中直接运行的动手代码来练习 CI/CD with GitHub Actions & DevOps Pipelines,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 CI/CD with GitHub Actions & DevOps Pipelines 需要有经验吗?
无需任何先前经验。CoddyKit 上的 CI/CD with GitHub Actions & DevOps Pipelines 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「工作流触发器与事件」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 CI/CD with GitHub Actions & DevOps Pipelines 课中编写并运行代码吗?
能。每节 CI/CD with GitHub Actions & DevOps Pipelines 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。