Work In Progress: nothing yet strictly defined, writing ides to share and define consensus on how we'll do in the future

Context

ASF has tasked the Tooling comittee to build ATR platform to ease release process and clarify dist publication, which will permit later to get more checks on releases based on new regulation requirements.

With ATR Alpha2 announced in October '25, and expected Beta in Jan '26, it's a great time to see how our release process for our 80 subprojects will work with ATR.

As-Is before ATR

Maven release process https://maven.apache.org/developers/release/index.html

For the build and vote:

 mvn release:prepare && release:perform 

prepare everything, with the release plugin doing the Git tag and checkout to target/checkout and running the final build command from this fresh checkout:

 mvn -Papache-release deploy

The Apache source release archive(s) can be found in the output in a location that depends on every sub-project, eventually in the staged content in repository.apache.org:

To Be

After the release build, ATR is used to gather the release content to be voted against, manages the vote (with emails and/or ATR UI), its success or failure, and if successful the publication to release dist area.

ATR alpha 1 testing

Can be tested manually at https://release-test.apache.org/ , which in alpha phase does not publish or send anything to official routes: no risk involved in playing "as if a release was being voted against"

  • Select a Maven subproject
  • "start a new release" (again, test env, this won't mess anything)
  • define release version
  • compose the content of the release, by uploading or providing links:
  • "Start voting"
  • ...

There is also a tutorial with screenshots provided by ATR https://release-test.apache.org/tutorial

ATR Alpha 2 testing TODO

Manually composing the release with UI won't scale with Maven's 80 subprojects and details for each sub-project => trying to test a little bit of scripting and configuration to organise release content preparation:

project's structurebinaries origin after buildtarget in dist/maven areatarget in ATR downloads/maven

Maven 3 & 4

= source+bin (zip + tar.gz) distribution

apache-maven/target/*-bin.*
*-src-*
/maven/maven-<major>/<version>/binaries/maven-<version>-bin.zip*
maven-<version>-bin.tar.gz*
source/maven-<version>-src.zip*
maven-<version>-src.tar.gz*
/maven-<major>/<version>/

mvnd

= source + native binaries distribution

https://github.com/apache/maven-mvnd/releases
/maven/mvnd/<version>/mvnd-<version>-src.zip*
mvnd-<version>-src.tar.gz*
mvnd-<version>-<os>-<arch>.zip*
                     mvnd-<version>-<os>-<arch>.tar.gz*
mnvd/<version>/

Maven plugins, shared, doxia, ...

= dist directory contains releases for many projects

release = xxx.zip + .zip.asc + .zip.sha512

target/*-source-release.zip*
/maven/archetype/maven-archetype-*-<version>-source-release.zip*
/maven/doxia/doxia-*-<version>-source-release.zip*
/maven/plugins/maven-*-plugin-<version>-source-release.zip*
/maven/pom/*-<version>-source-release.zip*
/maven/reporting/maven-reporting-*-<version>-source-release.zip*
/maven/resolver/maven-resolver-*-<version>-source-release.zip*
/maven/shared/maven-*-<version>-source-release.zip*
/maven/skins/maven-*-skin-<version>-source-release.zip*
archetype/
doxia/
plugins/
pom/
reporting/
resolver/
shared/
skins/

jxr, enforcer, ...

= dist directory contains releases for one project

release = xxx.zip + .zip.asc + .zip.sha512

target/*-source-release.zip*
/maven/<id>/*-<version>-source-release.zip*
<id>/

(like previous, but only 1 project in it)

notice: eventually many versions

Test can be scripted using the atr command from ATR client https://github.com/apache/tooling-releases-client , that is easier to use for scripts than bare REST API https://release-test.apache.org/api/docs

11/2025 Test of basic release process with ATR based on old releases

  • build code to produce  source-release.zip* files, or download content from past archives
git clone https://github.com/apache/maven-parent.git
cd maven-parent
v=45
git checkout maven-parent-$v
mvn -Papache-release clean verify                    # use package to skip .asc and .sha512 creation, or deploy to also send to repository.apache.org
ls -la target/*.zip*

or in 1 line with params:

 p=maven-parent ; v=45 ; git checkout $p-$v ; mvn -Papache-release -DskipTests verify ; atr release start $p $v ; for f in target/$p-$v-source-release.zip* ; do atr upload $p $v $(basename $f) $f; done ; echo https://release-test.apache.org/compose/$p/$v
atr release start maven-parent $v
for f in target/*-$v-source-release.zip* ; do atr upload maven-parent $v $(basename $f) $f; done
echo https://release-test.apache.org/compose/maven-parent/$v

at distribute step, can define the path in distribution area = /pom

as of Nov 3 2025, "preserve download files" for the project has to be disabled, as it prevents publishing releases in the same directory: see https://github.com/apache/tooling-trusted-releases/issues/282 for better error message if preserve fails the distribution step

2/2026 release for Apache Resource Bundles 1.8

= source code https://github.com/apache/maven-apache-resources, svn:dist/release https://dist.apache.org/repos/dist/release/maven/resources/, archive https://archive.apache.org/dist/maven/resources/, website https://maven.apache.org/apache-resource-bundles/

ATR project = https://release-test.apache.org/projects/maven-apache-resources, "start vote template" updated to contain to add our classical content from usual vote like https://lists.apache.org/thread/w7ybx2k5thmzpkqgzpw6v50rf3zbv2g0

before doing new 1.8 release on real dev@maven mailing list, trying 1.7 using content available in svn:dist/release (upload svn path resources) with vote to user-tests@tooling.apache.org and also result


  • No labels