docs: rewrite the release guidelines as the current release process - #324
Merged
Conversation
The Release Process section described a process that has not been run in years: an Ant "release" target, Cactus tests, a test build posted to svn.apache.org/struts/, and a release plan on wiki.apache.org. The only end-to-end description of how a release is actually made was the cwiki page "Building Struts 2 - Normal release", last revised in 2017, which is right about JIRA, the release plugin, Nexus and dist.apache.org and wrong about everything downstream from there. Replace it with the seven-phase process the 7.3.0 and 6.11.0 releases were made with - prepare, cut, stage, vote, promote, publish, advisories - each with a gate that someone other than the release manager can verify, and with the commands needed at each step. Notably: releases are cut on a release/X.Y.Z-RC1 branch rather than on the line branch, the maven-release-plugin takes no command-line flags now that they live in the pom, the SCM tag prompt needs STRUTS_X_Y_Z typed by hand, and the site update is a pull request rather than an svn commit to a production checkout that no longer exists. Drop the Coding Conventions and Clarifications sections in favour of a pointer to the coding standards page, which covers the same ground and is maintained. This page is now the source of truth for the process; the cwiki pages will be replaced with pointers to it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Staged site is ready at https://struts.staged.apache.org/ |
This was referenced Aug 14, 2026
lukaszlenart
added a commit
to apache/struts
that referenced
this pull request
Aug 14, 2026
…lines The release process is now documented at struts.apache.org/release-guidelines.html (apache/struts-site#324, #325), and the cwiki pages the skill warned about are stubs pointing there. The skill was still treating "Building Struts 2 - Normal release" as a live trap and carrying a near-complete second copy of the process in release-runbook.md - two sources of truth that would drift on the next release. Cut the runbook down to what the site page cannot carry: where a step is the release manager's to take rather than the agent's (closing and releasing the Nexus staging repository), why the STRUTS_X_Y_Z tag prompt cannot move into the pom, the text/plain contract on the [ANN] mail, and the scripts this skill ships. Everything else is a link. SKILL.md keeps the gates and the judgement, and now says corrections belong in a struts-site PR rather than here. Two fixes that predate the port: the phase 1 gate said "BOM in sync" while the runbook said the BOM needs no sync, and the runbook told you never to run the staging script from a checkout and then gave a checkout-relative invocation. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
lukaszlenart
added a commit
to apache/struts
that referenced
this pull request
Aug 14, 2026
…lines (#1848) The release process is now documented at struts.apache.org/release-guidelines.html (apache/struts-site#324, #325), and the cwiki pages the skill warned about are stubs pointing there. The skill was still treating "Building Struts 2 - Normal release" as a live trap and carrying a near-complete second copy of the process in release-runbook.md - two sources of truth that would drift on the next release. Cut the runbook down to what the site page cannot carry: where a step is the release manager's to take rather than the agent's (closing and releasing the Nexus staging repository), why the STRUTS_X_Y_Z tag prompt cannot move into the pom, the text/plain contract on the [ANN] mail, and the scripts this skill ships. Everything else is a link. SKILL.md keeps the gates and the judgement, and now says corrections belong in a struts-site PR rather than here. Two fixes that predate the port: the phase 1 gate said "BOM in sync" while the runbook said the BOM needs no sync, and the runbook told you never to run the staging script from a checkout and then gave a checkout-relative invocation. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
source/release-guidelines.mddescribed a release process nobody has run in years — an Antreleasetarget, Cactus tests, a test build posted tosvn.apache.org/struts/, a release plan onwiki.apache.org. The only end-to-end description of how a release is actually made was the cwiki page Building Struts 2 — Normal release, last revised in 2017, which is still right about JIRA, the release plugin, Nexus anddist.apache.organd wrong about everything downstream:develop/mastermainandsupport/struts-6-x-xSTRUTS_2_3_xSTRUTS_X_Y_Z/docscontent/,svn co .../production/strutsapache/struts-sitepeople.apache.org,announce.md,downloads.htmlannounce-YYYY.md,releases.mdanddownload.cgiThe page
Seven phases — prepare, cut, stage, vote, promote, publish, advisories — each with a gate someone other than the release manager can verify, and the commands needed at each step. It is written to be followable on its own, so there is one document rather than two that disagree.
Content comes from the
releasing-strutsskill added in apache/struts#1844, which was itself verified against the 7.3.0 and 6.11.0 runs. The things most likely to surprise a release manager working from the old page:release/X.Y.Z-RC1branch off the line, not on the line branch. A failed vote is a deleted branch, not a revert — andmainstill read7.2.2-SNAPSHOTafter 7.3.0 shipped, so the pom is worthless as a source for the release number.mvn release:prepare/release:performtake no command-line flags any more;autoVersionSubmodulesandretryFailedDeploymentCountlive in the pom.STRUTS_X_Y_Zby hand.content/commit, no production svn checkout.[ANN]mail goesTo: user@withCc: announce@, announcements@struts, and must be plain text from an@apache.orgidentity.The Coding Conventions and Clarifications sections are dropped in favour of a pointer to Coding standards, which covers the same ground and is maintained. The page keeps its URL, its nav entry and the incoming link from
builds.md.Verified
bundle exec jekyll buildis clean; all seven phase anchors resolve from the generated ToC, the eight alert callouts render, and every internal link (coding-standards,builds,bylaws,security,security/,download.cgi) points at a page that exists.Follow-up — cwiki
Once this merges, these pages get replaced with pointers at
https://struts.apache.org/release-guidelines.html(stubs rather than deletions, so the inbound links and search results keep working), and the Contributors Guide links get updated:Version Notes and Migration Guide pages stay on the wiki — those are per-release artifacts, not process docs.
Still needs porting, and deliberately not invented here:
apache/struts-masteris a git repository now, so the 2012 svn instructions are stale, and the current process has not been verified by anyone recently.7.0.0-M1-style), which the "fast track" page half-covered.🤖 Generated with Claude Code