This is an automated email from the ASF dual-hosted git repository. dashorst pushed a commit to branch wicket-10.x in repository https://gitbox.apache.org/repos/asf/wicket.git
commit acbb0cbdd53189f6b532dcb1c968a0e47b1f5626 Author: Martijn Dashorst <[email protected]> AuthorDate: Mon Oct 26 16:49:14 2026 +0100 Fix the release script failures found while releasing 9.25.0 build-versions.py gave every module the release and development version of Wicket itself. A module with a version line of its own, such as the experimental modules on 9.x and 8.x, is now released at that version without -SNAPSHOT and continues on the next one; a module that shares the project version keeps getting the versions from the command line. On 10.x every module shares the project version, so the output is unchanged here. release.sh: - Maven 3.9 uploads in parallel, which can split a release over several staging repositories. Uploads are sequential now, as on 9.x. - The tag signing passed the escaped quotes of its message to git as literal characters, failed with "too many arguments" and left the release tag unsigned. The quotes are plain now, and a failure stops the script. - gpg problems surfaced only in release:perform, after release:prepare had committed and tagged. The script now signs a test message before anything else, which also unlocks the key in the agent. - The default version was read before switching to wicket-10.x, so after a failed run it came from the build branch and suggested the next version. The script checks out wicket-10.x first. - The generated revert script lost the backslash of "-exec rm {} \;" and failed in find; it uses "-exec rm {} +" now. GitHub issue #1721 Generated-by: Claude Code (Claude Opus 5.5) --- build-versions.py | 22 +++++++++++++++++----- release.sh | 15 +++++++++++---- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/build-versions.py b/build-versions.py index d5a5e56df3..39dc91a7f0 100755 --- a/build-versions.py +++ b/build-versions.py @@ -9,7 +9,9 @@ # build-versions.py <release-version> <dev-version> # # This will generate a release.properties file that will release the -# release-version, and will continue development on dev-version. +# release-version, and will continue development on dev-version. A module +# with a version of its own, such as the experimental modules, is released +# at that version without -SNAPSHOT and continues on the next one. # # Example: # @@ -32,19 +34,29 @@ devVersion = sys.argv[2] relVersions = [] devVersions = [] -def addVersions(groupId, artifactId): - relVersions.append("project.rel." + groupId + "\\:" + artifactId + "=" + relVersion) - devVersions.append("project.dev." + groupId + "\\:" + artifactId + "=" + devVersion) +def ownVersions(version): + release = version[:-len("-SNAPSHOT")] if version.endswith("-SNAPSHOT") else version + parts = release.split(".") + parts[-1] = str(int(parts[-1]) + 1) + return release, ".".join(parts) + "-SNAPSHOT" + +def addVersions(groupId, artifactId, version): + rel, dev = (relVersion, devVersion) if version == projectVersion else ownVersions(version) + relVersions.append("project.rel." + groupId + "\\:" + artifactId + "=" + rel) + devVersions.append("project.dev." + groupId + "\\:" + artifactId + "=" + dev) def addModule(directory): pom = ET.parse(os.path.join(directory, "pom.xml")).getroot() groupId = pom.findtext("pom:groupId", namespaces=NS) or pom.findtext("pom:parent/pom:groupId", namespaces=NS) - addVersions(groupId, pom.findtext("pom:artifactId", namespaces=NS)) + version = pom.findtext("pom:version", namespaces=NS) or pom.findtext("pom:parent/pom:version", namespaces=NS) + addVersions(groupId, pom.findtext("pom:artifactId", namespaces=NS), version) for module in pom.iterfind(".//pom:modules/pom:module", NS): addModule(os.path.join(directory, module.text)) +projectVersion = ET.parse("pom.xml").getroot().findtext("pom:version", namespaces=NS) + addModule(".") for version in relVersions: diff --git a/release.sh b/release.sh index 84666baba0..cf82b03465 100755 --- a/release.sh +++ b/release.sh @@ -126,7 +126,7 @@ svn rm https://dist.apache.org/repos/dist/dev/wicket/$version -m "Release vote h mvn org.sonatype.plugins:nexus-staging-maven-plugin:LATEST:rc-drop -DstagingRepositoryId=$stagingrepoid -DnexusUrl=https://repository.apache.org -DserverId=apache.releases.https -Ddescription="Release vote has failed" # clean up remaining release files -find . -name "*.releaseBackup" -exec rm {} \\; +find . -name "*.releaseBackup" -exec rm {} + [ -f release.properties ] && rm release.properties EOF @@ -324,6 +324,12 @@ Java used to compile (from toolchain) is: $(getJdkToolchain) agentcount=`ps aux|grep gpg-agent|wc -l` +echo "Checking that gpg can sign" +echo "test" | gpg --clearsign > /dev/null || fail "gpg is unable to sign, check gpg-agent and pinentry" + +# the version to release comes from $GIT_BRANCH, not from a build branch left by a failed run +git checkout $GIT_BRANCH || fail "Unable to check out $GIT_BRANCH" + current_version=$(getProjectVersionFromPom) major_version=$(expr $current_version : '\(.*\)\..*\..*\-.*') minor_version=$(expr $current_version : '.*\.\(.*\)\..*\-.*') @@ -484,13 +490,13 @@ mvn -q clean -Pall # package and assemble the release echo "Prepare the release" -mvn --batch-mode release:prepare -X -l $log -DpreparationGoals="clean" -Dtag=$tag -Papache-release,release +mvn --batch-mode release:prepare -X -l $log -DpreparationGoals="clean" -Dtag=$tag -Daether.connector.basic.parallelPut=false -Papache-release,release if [ $? -ne 0 ] ; then fail "ERROR: mvn release:prepare was not successful" fi echo "Performing the release using Maven" -mvn -Dgpg.passphrase="$passphrase" -ff -l $log release:perform -DlocalCheckout=true -Dtag=$tag -Papache-release,release +mvn -Dgpg.passphrase="$passphrase" -ff -l $log release:perform -DlocalCheckout=true -Dtag=$tag -Daether.connector.basic.parallelPut=false -Papache-release,release if [ $? -ne 0 ] ; then fail "ERROR: mvn release:perform was not successful" fi @@ -621,7 +627,8 @@ git commit -m "Added post-release scripts and vote/release email templates" echo "Signing the release tag" git checkout $tag -git tag --sign --force --message \"Signed release tag for Apache Wicket $version\" $tag >> $log +git tag --sign --force --message "Signed release tag for Apache Wicket $version" $tag >> $log \ + || fail "Unable to sign the release tag $tag" git checkout $branch echo "Pushing build artifacts to the staging repository"
