发布流程
WooCommerce 的发布流程由一系列 GitHub Actions 工作流支持,这些工作流可以自动化重复性任务、强制执行流程规范,并发送通知。本网页提供了所有与发布相关的流程的参考,并按触发方式进行组织。
所有工作流都定义在 .github/workflows/ 目录中。
计划任务
这些工作流每天自动运行。
| 工作流 | 计划 | 执行内容 | 执行时机 |
|---|---|---|---|
| Release: 作业 | 每天 18:00 UTC | 检查 发布日历,分配发布负责人,并为每个周期中的每个发布创建父级跟踪问题,以及每个子问题的子问题。为每个子问题调用 Create Tracking Issue。 | 在特性冻结前 ~8 周。 |
| Release: 强制特性冻结 | 每天 18:00 UTC | 检查 发布日历,从 trunk 创建发布分支,将 trunk 更新到下一个开发版本,发布一个开发版本,清理旧的里程碑,并发送 Slack 通知。调用 Bump version number 和 Build ZIP file。 | 在特性冻结日期。 |
| Release: 特性亮点通知 | 每天 09:00 UTC | 检查 发布日历,并向团队发送 Slack 提醒,告知即将到来的特性冻结截止日期。 | 在特性冻结前 ~1 周。 |
| Release: 打开问题警告 | 每天 18:00 UTC | 检查 发布日历,查找发布里程碑中未关闭的项目,并通过 Slack 通知列出这些项目及其负责人。 | 在发布日期前 72 小时内。 |
| Nightly builds | 每天 00:00 UTC | 从 trunk 构建一个夜间 ZIP 文件,并将其上传到 GitHub 发布版本。 每天运行,与发布日历无关。 | 每天。 |
事件驱动的工作流
这些工作流由 GitHub 事件自动触发,例如拉取请求合并、发布版本或标记问题。
代码选取和回溯
| 工作流程 | 触发器 | 功能描述 |
|---|---|---|
| 将里程碑 PR 代码选取到发布分支 | PR 关闭或在 trunk 上标记里程碑 | 从 trunk 中选取代码,并将其应用到 release/x.y 分支,匹配 PR 的里程碑。 使用 shared-cherry-pick 实现核心逻辑。 |
| 代码选取到冻结的发布版本 | PR 在 release/x.y 分支上合并,并且带有 cherry pick to frozen release 标签 | 从 release/x.y 分支选取代码,并将其应用到下一个(冻结的)release/x.y 分支。 使用 shared-cherry-pick 实现核心逻辑。 |
| 代码选取到主干 | PR 在 release/x.y 分支上合并,并且带有 cherry pick to trunk 标签 | 从 release/x.y 分支选取代码,并将其回溯到 trunk。 使用 shared-cherry-pick 实现核心逻辑。 |
| 如果存在代码选取冲突,则阻止合并 | cherry-pick-* 分支上的 PR 事件 | 如果存在 cherry pick has conflicts 标签,则 CI 构建失败,防止 PR 在冲突解决和标签移除之前被合并。 |
里程碑管理
| 工作流程 | 触发器 | 功能描述 |
|---|---|---|
| 自动为发布 PR 添加里程碑 | PR 打开或重新打开在 release/x.y 分支上 | 为目标 release 分支的 PR 自动分配相应的里程碑。 |
| 合并时自动分配里程碑 | PR 在 trunk 上关闭 | 为合并到 trunk 且尚未分配里程碑的 PR 分配里程碑。 |
发布事件和验证
| 工作流程 | 触发器 | 功能 |
|---|---|---|
| Release: Release events proxy | 已发布或预发布版本 | 委托给 release-new-release-published 以执行发布后的操作:发送 Slack 通知,更新全局变更日志(针对稳定版本),并为 beta 版本调用 Generate Number of Commits and Contributors。 |
| Release checks run | 已发布或编辑的版本 | 对已发布的版本运行 CI 测试套件。 此外,还会在预定时间 nightly 运行。 |
带有 code freeze exception、point release request、Approved 或 Rejected 标签的问题 |
手动工作流程
这些工作流程由发布负责人在发布过程中触发。 它们是 构建和发布指南 和发布跟踪问题中引用的工作流程。
构建和发布
| 工作流程 | 功能 |
|---|---|
| Release: Bump version number | 更新插件文件中版本号,并针对发布分支创建 PR。 |
| Release: Compile changelog | 编译变更日志条目,并针对 trunk 和发布分支创建 PR。 |
| Release: Build ZIP file | 构建发布 ZIP 文件,并可选地创建草稿 GitHub 发布版本。 |
| Release: Upload release to WordPress.org | 将发布 ZIP 文件上传到 WordPress.org SVN。 |
| Release: Update stable tag | 更新 WordPress.org 上的稳定标签,并创建 PR 以将其同步到仓库。 |
跟踪和分析
| 工作流程 | 功能描述 |
|---|---|
| Release: Create Tracking Issue | 为特定的版本创建 Linear 跟踪问题,使用 .linear/ 目录中的 模板。 |
| Release: Generate Number of Commits and Contributors | 生成 发布 统计信息(提交 数值、贡献者 列表)并 发送 Slack 通知。 |
| Release: analyze trends (CFEs and PRRs) | 创建 GitHub 问题,请求对 代码 冻结异常和点 发布 请求进行 AI 分析,用于一个里程碑。 |