You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@struts.apache.org by "lukaszlenart (via GitHub)" <gi...@apache.org> on 2026/08/14 08:12:24 UTC
[PR] docs(skills): add releasing-struts, the end-to-end release runbook [struts]
lukaszlenart opened a new pull request, #1844:
URL: https://github.com/apache/struts/pull/1844
Stacked on #1843 — base retargets to `main` automatically when that merges. Only the second commit is new here.
### Why
The only end-to-end description of the release process is the cwiki page [Building Struts 2 — Normal release](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=27832970), last revised in **2017**. It is still right about JIRA, the release plugin, Nexus and `dist.apache.org`, and wrong about everything downstream:
| It says | Reality |
|---|---|
| Branches `develop` / `master` | `main` and `support/struts-6-x-x` |
| Tag `STRUTS_2_3_x` | `STRUTS_X_Y_Z` |
| Export the wiki to `/docs` | No longer part of the site |
| Docker Jekyll, commit `content/`, `svn co .../production/struts` | The site builds from a PR to `apache/struts-site` |
| `people.apache.org`, `announce.md`, `downloads.html` | Dead host; files are `announce-YYYY.md` and `download.cgi` |
The four existing skills cover the paperwork. Nothing covered the mechanics, the ordering, or the last mile — the GA `[ANN]` mail, CVE registration, the site update, post-release follow-through.
### What this adds
`releasing-struts/SKILL.md` — the spine. Seven phases, each with a gate that someone other than the release manager can verify, cross-referencing `creating-version-notes`, `creating-release-vote-mail` and `creating-security-bulletins` rather than restating them. Covers the two-line rule, why the version number cannot come from the pom, and the ordering constraint between a release and its advisories.
`releasing-struts/release-runbook.md` — the commands. **Every step is marked ✔ verified against the 7.3.0 / 6.11.0 run or ⚠ unverified**, the latter meaning carried over from the cwiki page and not confirmed. Nexus close/release and the `svn mv` promotion are the main ⚠ items; whoever runs the next release should correct them in place.
Plus a one-line pointer to the spine from the two skills that sit inside it.
### Corrections found while verifying
- **Releases are cut on a `release/X.Y.Z-RC1` branch off the line, not on `main`.** The `[maven-release-plugin]` commits live on `release/7.3.0-RC1` and `release/6.11.0-RC1`; `main` still reads `7.2.2-SNAPSHOT` after 7.3.0 shipped. A failed vote is a deleted branch, not a revert.
- **The BOM needs no version sync** — `bom/pom.xml` inherits through `<parent>`, and the `struts-version.version` property the cwiki tells you to check no longer exists.
- **The GA `[ANN]` mail** goes `To: user@` with `Cc: announce@, announcements@struts` — `dev@` is not on it.
### Follow-up
The cwiki page should be trimmed to a pointer at this skill, so there aren't two documents that disagree. Not done here — that's a wiki edit, not a repo change.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@struts.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] docs(skills): add releasing-struts, and configure the release plugin in the pom [struts]
Posted by "lukaszlenart (via GitHub)" <gi...@apache.org>.
lukaszlenart commented on code in PR #1844:
URL: https://github.com/apache/struts/pull/1844#discussion_r3782758361
##########
.claude/skills/releasing-struts/release-runbook.md:
##########
@@ -0,0 +1,262 @@
+# Release Runbook
+
+The commands, in order. [`SKILL.md`](SKILL.md) holds the sequence, the gates and the judgement;
+this file is what you type.
+
+**Provenance.** Everything marked ✔ was verified against the repository, a completed release
+(7.3.0 / 6.11.0, August 2026), or the release manager's scripts. Everything marked
+**⚠ unverified** is carried over from the 2017 cwiki page and has *not* been confirmed against a
+current run — check it before relying on it, and correct this file when you do.
+
+**The scripts.** Phases 3 and 5 ship with this skill, in [`scripts/`](scripts):
+
+| Script | Phase | What it does |
+|---|---|---|
+| [`stage-assemblies.sh`](scripts/stage-assemblies.sh) | 3 | Closed staging repo → `dist/dev`, renamed and re-hashed |
+| [`promote-dist.sh`](scripts/promote-dist.sh) | 5 | `dist/dev` → `dist/release` |
+
+Both take `$VERSION` from the environment and refuse to run without it. They are ports of the
+release manager's local toolbox (`~/Projects/Apache/minatour/bin/`), unchanged in behaviour
+apart from `set -eu`, the `$VERSION` guard, tolerant hash cleanup and an explicit svn commit
+message — each deviation is listed in the script's own header.
+
+A third script in that toolbox, `update-struts2-draft-docs.sh`, exports Confluence into the
+retired svn production site. **It is dead and is deliberately not ported.** Do not run it.
+
+---
+
+## Phase 1 — Prepare
+
+✔ Two lines, two releases:
+
+| Line | Branch | Build check that must pass |
+|---|---|---|
+| 7.x | `main` | `Build and Test (JDK 17)` |
+| 6.x | `support/struts-6-x-x` | `Build and Test (8)` |
+
+Both branches are protected in `.asf.yaml` and must be green before you start.
+
+```bash
+git checkout main && git pull --ff-only
+mvn clean install -DskipAssembly
Review Comment:
It would be good to check on which version of JDK we are before running the build - if version is wrong, let's ask user what to do or how to switch to proper JDK version. Each local env can be configured in different way, user-specific way
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@struts.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] docs(skills): add releasing-struts, and configure the release plugin in the pom [struts]
Posted by "sonarqubecloud[bot] (via GitHub)" <gi...@apache.org>.
sonarqubecloud[bot] commented on PR #1844:
URL: https://github.com/apache/struts/pull/1844#issuecomment-5291958399
## [](https://sonarcloud.io/dashboard?id=apache_struts&pullRequest=1844) **Quality Gate passed**
Issues
 [0 New issues](https://sonarcloud.io/project/issues?id=apache_struts&pullRequest=1844&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0 Accepted issues](https://sonarcloud.io/project/issues?id=apache_struts&pullRequest=1844&issueStatuses=ACCEPTED)
Measures
 [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=apache_struts&pullRequest=1844&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=apache_struts&pullRequest=1844&metric=new_coverage&view=list)
 [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=apache_struts&pullRequest=1844&metric=new_duplicated_lines_density&view=list)
<!-- sqra-placement-anchor -->
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=apache_struts&pullRequest=1844)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@struts.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] docs(skills): add releasing-struts, the end-to-end release runbook [struts]
Posted by "sonarqubecloud[bot] (via GitHub)" <gi...@apache.org>.
sonarqubecloud[bot] commented on PR #1844:
URL: https://github.com/apache/struts/pull/1844#issuecomment-5291197692
## [](https://sonarcloud.io/dashboard?id=apache_struts&pullRequest=1844) **Quality Gate passed**
Issues
 [0 New issues](https://sonarcloud.io/project/issues?id=apache_struts&pullRequest=1844&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0 Accepted issues](https://sonarcloud.io/project/issues?id=apache_struts&pullRequest=1844&issueStatuses=ACCEPTED)
Measures
 [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=apache_struts&pullRequest=1844&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=apache_struts&pullRequest=1844&metric=new_coverage&view=list)
 [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=apache_struts&pullRequest=1844&metric=new_duplicated_lines_density&view=list)
<!-- sqra-placement-anchor -->
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=apache_struts&pullRequest=1844)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@struts.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] docs(skills): add releasing-struts, and configure the release plugin in the pom [struts]
Posted by "lukaszlenart (via GitHub)" <gi...@apache.org>.
lukaszlenart merged PR #1844:
URL: https://github.com/apache/struts/pull/1844
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@struts.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] docs(skills): add releasing-struts, and configure the release plugin in the pom [struts]
Posted by "sonarqubecloud[bot] (via GitHub)" <gi...@apache.org>.
sonarqubecloud[bot] commented on PR #1844:
URL: https://github.com/apache/struts/pull/1844#issuecomment-5291993846
## [](https://sonarcloud.io/dashboard?id=apache_struts&pullRequest=1844) **Quality Gate passed**
Issues
 [0 New issues](https://sonarcloud.io/project/issues?id=apache_struts&pullRequest=1844&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0 Accepted issues](https://sonarcloud.io/project/issues?id=apache_struts&pullRequest=1844&issueStatuses=ACCEPTED)
Measures
 [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=apache_struts&pullRequest=1844&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=apache_struts&pullRequest=1844&metric=new_coverage&view=list)
 [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=apache_struts&pullRequest=1844&metric=new_duplicated_lines_density&view=list)
<!-- sqra-placement-anchor -->
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=apache_struts&pullRequest=1844)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@struts.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] docs(skills): add releasing-struts, and configure the release plugin in the pom [struts]
Posted by "sonarqubecloud[bot] (via GitHub)" <gi...@apache.org>.
sonarqubecloud[bot] commented on PR #1844:
URL: https://github.com/apache/struts/pull/1844#issuecomment-5292193764
## [](https://sonarcloud.io/dashboard?id=apache_struts&pullRequest=1844) **Quality Gate passed**
Issues
 [0 New issues](https://sonarcloud.io/project/issues?id=apache_struts&pullRequest=1844&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0 Accepted issues](https://sonarcloud.io/project/issues?id=apache_struts&pullRequest=1844&issueStatuses=ACCEPTED)
Measures
 [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=apache_struts&pullRequest=1844&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=apache_struts&pullRequest=1844&metric=new_coverage&view=list)
 [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=apache_struts&pullRequest=1844&metric=new_duplicated_lines_density&view=list)
<!-- sqra-placement-anchor -->
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=apache_struts&pullRequest=1844)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@struts.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] docs(skills): add releasing-struts, and configure the release plugin in the pom [struts]
Posted by "sonarqubecloud[bot] (via GitHub)" <gi...@apache.org>.
sonarqubecloud[bot] commented on PR #1844:
URL: https://github.com/apache/struts/pull/1844#issuecomment-5291945402
## [](https://sonarcloud.io/dashboard?id=apache_struts&pullRequest=1844) **Quality Gate passed**
Issues
 [0 New issues](https://sonarcloud.io/project/issues?id=apache_struts&pullRequest=1844&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0 Accepted issues](https://sonarcloud.io/project/issues?id=apache_struts&pullRequest=1844&issueStatuses=ACCEPTED)
Measures
 [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=apache_struts&pullRequest=1844&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=apache_struts&pullRequest=1844&metric=new_coverage&view=list)
 [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=apache_struts&pullRequest=1844&metric=new_duplicated_lines_density&view=list)
<!-- sqra-placement-anchor -->
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=apache_struts&pullRequest=1844)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@struts.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] docs(skills): add releasing-struts, and configure the release plugin in the pom [struts]
Posted by "sonarqubecloud[bot] (via GitHub)" <gi...@apache.org>.
sonarqubecloud[bot] commented on PR #1844:
URL: https://github.com/apache/struts/pull/1844#issuecomment-5291966759
## [](https://sonarcloud.io/dashboard?id=apache_struts&pullRequest=1844) **Quality Gate passed**
Issues
 [0 New issues](https://sonarcloud.io/project/issues?id=apache_struts&pullRequest=1844&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0 Accepted issues](https://sonarcloud.io/project/issues?id=apache_struts&pullRequest=1844&issueStatuses=ACCEPTED)
Measures
 [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=apache_struts&pullRequest=1844&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=apache_struts&pullRequest=1844&metric=new_coverage&view=list)
 [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=apache_struts&pullRequest=1844&metric=new_duplicated_lines_density&view=list)
<!-- sqra-placement-anchor -->
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=apache_struts&pullRequest=1844)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@struts.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] docs(skills): add releasing-struts, and configure the release plugin in the pom [struts]
Posted by "lukaszlenart (via GitHub)" <gi...@apache.org>.
lukaszlenart commented on code in PR #1844:
URL: https://github.com/apache/struts/pull/1844#discussion_r3782748785
##########
.claude/skills/releasing-struts/release-runbook.md:
##########
@@ -0,0 +1,262 @@
+# Release Runbook
+
+The commands, in order. [`SKILL.md`](SKILL.md) holds the sequence, the gates and the judgement;
+this file is what you type.
+
+**Provenance.** Everything marked ✔ was verified against the repository, a completed release
+(7.3.0 / 6.11.0, August 2026), or the release manager's scripts. Everything marked
+**⚠ unverified** is carried over from the 2017 cwiki page and has *not* been confirmed against a
+current run — check it before relying on it, and correct this file when you do.
+
+**The scripts.** Phases 3 and 5 ship with this skill, in [`scripts/`](scripts):
+
+| Script | Phase | What it does |
+|---|---|---|
+| [`stage-assemblies.sh`](scripts/stage-assemblies.sh) | 3 | Closed staging repo → `dist/dev`, renamed and re-hashed |
+| [`promote-dist.sh`](scripts/promote-dist.sh) | 5 | `dist/dev` → `dist/release` |
+
+Both take `$VERSION` from the environment and refuse to run without it. They are ports of the
+release manager's local toolbox (`~/Projects/Apache/minatour/bin/`), unchanged in behaviour
+apart from `set -eu`, the `$VERSION` guard, tolerant hash cleanup and an explicit svn commit
+message — each deviation is listed in the script's own header.
+
+A third script in that toolbox, `update-struts2-draft-docs.sh`, exports Confluence into the
+retired svn production site. **It is dead and is deliberately not ported.** Do not run it.
Review Comment:
remove this, one this PR is merged I will remove the whole "minatour" folder
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@struts.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] docs(skills): add releasing-struts, and configure the release plugin in the pom [struts]
Posted by "lukaszlenart (via GitHub)" <gi...@apache.org>.
lukaszlenart commented on code in PR #1844:
URL: https://github.com/apache/struts/pull/1844#discussion_r3782715441
##########
.claude/skills/releasing-struts/SKILL.md:
##########
@@ -0,0 +1,140 @@
+---
+name: releasing-struts
+description: Use when running or planning an Apache Struts release on any maintenance line (6.x, 7.x) - cutting the tag, staging artifacts, opening the vote, promoting, updating the site and announcing - or when asked what the next step in a release is.
+---
+
+# Releasing Struts
+
+## Overview
+
+A release is seven phases with a gate between each. Most of the *writing* is already covered by
+other skills; this one owns the **order, the gates, and the mechanics** — and it is the only
+place that covers the last mile after the vote passes.
+
+**Core principle:** a phase is finished when its gate is verifiable by someone other than you.
+"I ran the command" is not a gate; "the URL resolves" is.
+
+[`release-runbook.md`](release-runbook.md) holds the commands. This page holds the sequence and
+the judgement.
+
+## The phases
+
+| # | Phase | Gate before moving on |
+|---|---|---|
+| 1 | Prepare | Branch green, versions decided, BOM in sync |
+| 2 | Cut | Tag pushed, artifacts in a **closed** Nexus staging repo |
+| 3 | Stage | Assemblies in `dist/dev`, Version Notes page live, `[TEST]` mail sent |
+| 4 | Vote | 72 h elapsed, three binding `+1`, result mail sent |
+| 5 | Promote | Nexus repo released, `dist/dev` → `dist/release`, 24 h rsync waited |
+| 6 | Publish | Site PR merged, GitHub release un-flagged, `[ANN]` mail delivered |
+| 7 | Advisories | Bulletins public, CVE records filled, advisory mails delivered |
+
+Phase 7 only exists when the release carries a security fix, and it is **strictly after** phase
+6 — see *Security work is a separate clock* below.
+
+## Which skill owns which artifact
+
+Cross-references, not copies. Do not restate what these settle:
+
+- **`creating-version-notes`** — the Version Notes page, its Staging Repository block, the
+ Migration Guide entry, the GitHub release notes, and the `[TEST]` mail. All of phase 3's
+ paperwork.
+- **`creating-release-vote-mail`** — the `[VOTE]` mail. All of phase 4's paperwork.
+- **`creating-security-bulletins`** — the S2-XXX page, what may be disclosed and when,
+ publication, and the advisory mails. All of phase 7.
Review Comment:
This isn't really true, that skill can be used early in the process, or even separately. It doesn't have to be used in phase 7 only, yet phase 7 should follow it if needed
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@struts.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] docs(skills): add releasing-struts, and configure the release plugin in the pom [struts]
Posted by "lukaszlenart (via GitHub)" <gi...@apache.org>.
lukaszlenart commented on code in PR #1844:
URL: https://github.com/apache/struts/pull/1844#discussion_r3782771537
##########
.claude/skills/releasing-struts/release-runbook.md:
##########
@@ -0,0 +1,262 @@
+# Release Runbook
+
+The commands, in order. [`SKILL.md`](SKILL.md) holds the sequence, the gates and the judgement;
+this file is what you type.
+
+**Provenance.** Everything marked ✔ was verified against the repository, a completed release
+(7.3.0 / 6.11.0, August 2026), or the release manager's scripts. Everything marked
+**⚠ unverified** is carried over from the 2017 cwiki page and has *not* been confirmed against a
+current run — check it before relying on it, and correct this file when you do.
+
+**The scripts.** Phases 3 and 5 ship with this skill, in [`scripts/`](scripts):
+
+| Script | Phase | What it does |
+|---|---|---|
+| [`stage-assemblies.sh`](scripts/stage-assemblies.sh) | 3 | Closed staging repo → `dist/dev`, renamed and re-hashed |
+| [`promote-dist.sh`](scripts/promote-dist.sh) | 5 | `dist/dev` → `dist/release` |
+
+Both take `$VERSION` from the environment and refuse to run without it. They are ports of the
+release manager's local toolbox (`~/Projects/Apache/minatour/bin/`), unchanged in behaviour
+apart from `set -eu`, the `$VERSION` guard, tolerant hash cleanup and an explicit svn commit
+message — each deviation is listed in the script's own header.
+
+A third script in that toolbox, `update-struts2-draft-docs.sh`, exports Confluence into the
+retired svn production site. **It is dead and is deliberately not ported.** Do not run it.
+
+---
+
+## Phase 1 — Prepare
+
+✔ Two lines, two releases:
+
+| Line | Branch | Build check that must pass |
+|---|---|---|
+| 7.x | `main` | `Build and Test (JDK 17)` |
+| 6.x | `support/struts-6-x-x` | `Build and Test (8)` |
+
+Both branches are protected in `.asf.yaml` and must be green before you start.
+
+```bash
+git checkout main && git pull --ff-only
+mvn clean install -DskipAssembly
+```
+
+Then:
+
+- Decide the version number from semver impact. Do not read it off the `-SNAPSHOT`.
+- ✔ Confirm `struts-master` (currently `15`) and `struts-annotations` are released versions, not
+ snapshots. The root pom's `<parent>` must not point at a snapshot.
+- ✔ The BOM needs no version sync. `bom/pom.xml` inherits the root version through its
+ `<parent>` and declares members as `${project.version}`. The cwiki's
+ `struts-version.version` property no longer exists — ignore that step.
+- Review JIRA: every issue fixed since the last tag has a fix version; nothing unresolved carries
+ this one.
+- ⚠ unverified: the cwiki's "omnibus ticket" step. The 7.3.0 and 6.11.0 runs show no such ticket
+ — treat it as abandoned unless the PMC says otherwise.
+
+## Phase 2 — Cut
+
+✔ **Cut from a release branch, not from the line branch.** Both August 2026 releases were built
+on `release/X.Y.Z-RC1` branched off the line:
+
+```bash
+git checkout -b release/7.3.0-RC1 main # or off support/struts-6-x-x for 6.x
+git push -u origin release/7.3.0-RC1
+```
+
+The two `[maven-release-plugin]` commits land there and **`main` is never touched** — which is
+why the root pom still said `7.2.2-SNAPSHOT` after 7.3.0 shipped, and why the pom is worthless
+as a source for the release number.
+
+✔ `maven-release-plugin` 3.3.1, driven interactively, on that branch:
+
+```bash
+mvn release:prepare
+```
+
+✔ No flags. `autoVersionSubmodules` is configured in the root pom, along with the ASF parent's
+`useReleaseProfile=false`, `goals=deploy` and `releaseProfiles=apache-release`. If you find
+yourself passing `-D` to the release plugin, the setting belongs in the pom instead — a flag
+that has to be remembered is a flag that will be forgotten.
+
+✔ **At the SCM tag prompt, type `STRUTS_X_Y_Z`.** The plugin's default would be
+`struts2-parent-X.Y.Z`; every Struts tag in history is the underscore form, and the GitHub
+release, the Version Notes and the site all assume it.
+
+This one cannot move into the pom: `tagNameFormat` interpolates `@{project.version}` and has no
+string functions, so the best it could produce is `STRUTS_7.3.0`. The prompt stays.
+
+Dry run first if you want one — add `-DdryRun=true`, then `mvn release:clean` before the real
+run. On failure, re-run the same command: `-Dresume` defaults to true and it picks up where it
+stopped.
+
+✔ The result is two commits on the release branch,
+`[maven-release-plugin] prepare release STRUTS_X_Y_Z` and
+`[maven-release-plugin] prepare for next development iteration`, plus the tag.
+
+```bash
+mvn release:perform
+```
+
+✔ `retryFailedDeploymentCount=10` is configured on `maven-deploy-plugin` in the root pom, not
+passed here. It has to be in the pom to work at all: `release:perform` forks a fresh Maven
+build, and that fork does not inherit `-D` properties from the outer invocation — the flag the
+cwiki tells you to pass was doing nothing.
+
+⚠ unverified: the fallback for re-running `perform` elsewhere —
+`git checkout STRUTS_X_Y_Z && mvn javadoc:javadoc deploy -DperformRelease=true -Papache-release`.
+
+**Then close the staging repository** at <https://repository.apache.org/> — Staging Repositories
+→ select → Close. ⚠ unverified in detail, but the gate is checkable: the artifacts must resolve
+under
Review Comment:
This supposed to be user action, inform the user to close the staging repository and then continue
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@struts.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] docs(skills): add releasing-struts, and configure the release plugin in the pom [struts]
Posted by "lukaszlenart (via GitHub)" <gi...@apache.org>.
lukaszlenart commented on code in PR #1844:
URL: https://github.com/apache/struts/pull/1844#discussion_r3782745263
##########
.claude/skills/releasing-struts/release-runbook.md:
##########
@@ -0,0 +1,262 @@
+# Release Runbook
+
+The commands, in order. [`SKILL.md`](SKILL.md) holds the sequence, the gates and the judgement;
+this file is what you type.
+
+**Provenance.** Everything marked ✔ was verified against the repository, a completed release
+(7.3.0 / 6.11.0, August 2026), or the release manager's scripts. Everything marked
+**⚠ unverified** is carried over from the 2017 cwiki page and has *not* been confirmed against a
+current run — check it before relying on it, and correct this file when you do.
+
+**The scripts.** Phases 3 and 5 ship with this skill, in [`scripts/`](scripts):
+
+| Script | Phase | What it does |
+|---|---|---|
+| [`stage-assemblies.sh`](scripts/stage-assemblies.sh) | 3 | Closed staging repo → `dist/dev`, renamed and re-hashed |
+| [`promote-dist.sh`](scripts/promote-dist.sh) | 5 | `dist/dev` → `dist/release` |
+
+Both take `$VERSION` from the environment and refuse to run without it. They are ports of the
+release manager's local toolbox (`~/Projects/Apache/minatour/bin/`), unchanged in behaviour
Review Comment:
It isn't needed to reference "minatour" anymore and this only lives locally on my computer
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@struts.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org