docs/contribution/releases/troubleshooting.md
This page provides guidance for troubleshooting and recovering from issues that may arise during the WooCommerce release process. It covers common scenarios, recommended actions, and best practices to help ensure releases are handled smoothly and any problems are resolved efficiently.
:::tip
@woo-core-release in #woo-core-releases is the point of contact for release-process questions in general, not just the scenarios below. Use it for escalations, second opinions, or anything this doc doesn't answer.
:::
⚠️ Do not re-run any workflows until you understand the cause of the failure. Re-running without fixing the root issue can make things more complicated.
Backport the updated tools/monorepo-utils/dist/index.js from trunk to the release branch and re-run the workflow. This happens on the rare occasions that file (a committed build artifact) is updated on trunk, making the two branches diverge during the workflow's checkout.
During the release process, you may encounter CI test failures on release-related PRs. These failures sometimes occur because test fixes were merged to trunk but not backported to the release branch before it was cut.
Note that a failing check that is not required and is clearly unrelated to the change (for example, a comparison job that references code only present on trunk) does not have to block merging a release-related PR. When in doubt, ask in the release Slack channel before merging over a failure.
The workflow checks two criteria: open PRs based on the release branch, and open PRs carrying the release milestone (on any base branch). Draft PRs are ignored, so switching a PR to draft is a quick way to bypass the check temporarily. The workflow's error message lists the offending PRs: merge the ones that belong in the release, and close stale or redundant ones (including auto-generated backport PRs whose changes are already on the release branch).
If, after downloading and unzipping the generated artifact, something seems off (e.g., missing files, incorrect changelog, or version mismatch), this usually means:
Before you try to build the version again:
release/X.Y branch (either in the GitHub UI or locally after pulling the latest changes).Once you know which step failed, re-run only that step as described in the Building & Publishing guide. Make sure to run skipped workflows in the correct order and double-check all configuration (version number, release type, etc.) before proceeding.
When this workflow fails, it reports the state of the SVN side in the run summary; check it before doing anything else. Two things worth knowing:
E175013: Access to '/!svn/me' forbidden means invalid SVN credentials: update the SVN credentials secret from the secret store and re-run.For RC and stable releases, deploying to our staging environment and monitoring for errors is required before the release is made publicly available. If a serious bug is detected during this monitoring period, follow these steps:
-rc.2 if the bug was detected during -rc.1, or x.y.2 if detected while monitoring x.y.1) by running the Release: Create Tracking Issue workflow. Do not reuse the existing tracking issue. The new issue is automatically nested under the [X.Y] Release tracking parent in Linear.If a severe regression or bug is discovered (e.g., checkout failure or unrecoverable data loss):
Release: Update stable tag workflow, making sure to check the Revert option to allow downgrading.Stable tag in readme.txt on trunk and the affected release branches, and the next build and upload will fail if the stable tag doesn't match SVN.This is usually not a problem:
Stable tag in the readme.txt on WordPress.org's SVN trunk controls what the updater offers. The readme.txt bundled inside a released ZIP always shows the previous version as stable: that's expected, since published releases are frozen and can't be edited.Remember to not plan the patch release too close to the weekend.
In general, avoid releasing after Tuesday, especially close to a weekend.
Even if a patch is ready and seems to fix the problem, it's hard to be sure there aren't other hidden issues and a rushed release late in the week means most of the team won't be available to monitor or respond to problems.
As a rule of thumb, when in doubt, consider to delay the release by a week for confidence.