docs/contribution/releases/workflows.md
The WooCommerce release process is supported by a set of GitHub Actions workflows that automate repetitive tasks, enforce process guardrails, and send notifications. This page provides a reference of all release-related workflows, organized by how they are triggered.
All workflows are defined in the .github/workflows/ directory.
These workflows run automatically on a daily schedule.
| Workflow | Schedule | What it does | When it acts |
|---|---|---|---|
| Release: Assignment | Daily at 18:00 UTC | Checks the release calendar, assigns the release lead, and creates the parent tracking issue with sub-issues for each release in the cycle. Calls Create Tracking Issue for each sub-issue. | ~8 weeks before feature freeze. |
| Release: Enforce Feature Freeze | Daily at 18:00 UTC | Checks the release calendar and creates the release branch from trunk, bumps trunk to the next dev version, publishes a dev release, cleans up old milestones, and sends Slack notifications. Calls Bump version number and Build ZIP file. | On the feature freeze date. |
| Release: Feature highlight notification | Daily at 09:00 UTC | Checks the release calendar and sends a Slack reminder to teams about the upcoming feature freeze deadline. | ~1 week before feature freeze. |
| Release: Open Issue Warning | Daily at 18:00 UTC | Checks the release calendar and looks for open items in release milestones, sending a Slack notification listing them with assignees. | Within 72 hours of a release date. |
| Nightly builds | Daily at 00:00 UTC | Builds a nightly ZIP from trunk and uploads it to a GitHub release. Runs every day, independent of the release calendar. | Every day. |
These workflows are triggered automatically by GitHub events such as pull requests being merged, releases being published, or issues being labeled.
| Workflow | Trigger | What it does |
|---|---|---|
| Cherry-pick Milestoned PRs to Release Branches | PR closed or milestoned on trunk | Cherry-picks from trunk to the release/x.y branch matching the PR milestone. Uses shared-cherry-pick for the core logic. |
| Cherry-pick to Frozen Release | PR merged on a release/x.y branch with the cherry pick to frozen release label | Cherry-picks from a release/x.y branch to the next (frozen) release/x.y branch. Uses shared-cherry-pick for the core logic. |
| Cherry Pick to Trunk | PR merged on a release/x.y branch with the cherry pick to trunk label | Cherry-picks from a release/x.y branch back to trunk. Uses shared-cherry-pick for the core logic. |
| Block merge if cherry-pick conflicts exist | PR events on cherry-pick-* branches | Fails CI when the cherry pick has conflicts label is present, preventing the PR from being merged until conflicts are resolved and the label is removed. |
| Workflow | Trigger | What it does |
|---|---|---|
| Auto-Add Milestone to Release PRs | PR opened or reopened on a release/x.y branch | Assigns the matching milestone to PRs targeting a release branch. |
| Auto-assign milestone on merge | PR closed on trunk | Assigns a milestone to PRs merged to trunk that don't already have one. |
| Workflow | Trigger | What it does |
|---|---|---|
| Release: Release events proxy | Release published or prereleased | Delegates to release-new-release-published to run post-release actions: sends Slack notifications, updates the global changelog for stable releases, and calls Generate Number of Commits and Contributors for beta releases. |
| Release checks run | Release published or edited | Runs the CI test suite against published releases. Also runs nightly on a schedule. |
Issue labeled with code freeze exception, point release request, Approved, or Rejected |
These workflows are triggered by the release lead during the release process. They are the workflows referenced in the building and publishing guide and in the release tracking issues.
| Workflow | What it does |
|---|---|
| Release: Bump version number | Updates version numbers across plugin files and creates a PR against the release branch. |
| Release: Compile changelog | Compiles changelog entries and creates PRs against both trunk and the release branch. |
| Release: Build ZIP file | Builds the release ZIP and optionally creates a draft GitHub release. |
| Release: Upload release to WordPress.org | Uploads the release ZIP to WordPress.org SVN. |
| Release: Update stable tag | Updates the stable tag on WordPress.org and creates PRs to sync it in the repository. |
| Workflow | What it does |
|---|---|
| Release: Create Tracking Issue | Creates a Linear tracking issue for a specific release version using the templates in .linear/. |
| Release: Generate Number of Commits and Contributors | Generates release statistics (commit count, contributors list) and sends a Slack notification. |
| Release: analyze trends (CFEs and PRRs) | Creates GitHub issues requesting AI analysis of Code Freeze Exceptions and Point Release Requests for a milestone. |