Skip to content
Marc Philipp edited this page Sep 24, 2024 · 66 revisions

Preparations

  • Release @API Guardian and change apiguardian version in gradle/libs.versions.toml accordingly, if necessary.
  • Release ota4j and change opentest4j version in gradle/libs.versions.toml accordingly, if necessary.

Release

  • Change version, platformVersion, and vintageVersion in gradle.properties to the versions about to be released
  • Change release date in Release Notes
  • Change release date in README.MD
  • Commit with message "Release ${VERSION}"
  • Execute ./gradlew --no-build-cache --no-configuration-cache clean build publish closeSonatypeStagingRepository
  • Sanity check the actual contents of the generated Maven POMs
  • Update junit5-samples to use released version and create a branch for the released version (e.g. r5.0.0-M1) by running java src/Updater.java ${VERSION}
    • The branch must be the same as for the junit5 repo; otherwise, links in the User Guide will be broken.
    • Run java src/Builder.java to ensure there's no error reported.
    • Update the snapshot version in the snapshot-specific build files to match the release that's currently being worked on.
  • Ensure the artifacts in the staging repo can be consumed using Gradle and Maven
  • Release staging repo on Nexus
  • Tag current commit (e.g. r5.0.0-M1)
  • Publish Javadoc and User Guide to GitHub pages
    • For GA releases: ./gradlew --no-build-cache --no-configuration-cache -Pdocumentation.replaceCurrentDocs clean gitPublishPush
    • For milestones/RCs: ./gradlew --no-build-cache --no-configuration-cache clean gitPublishPush
  • Sanity check that the generated PDF for the User Guide is not corrupt
  • Change version, platformVersion, and vintageVersion properties in gradle.properties in main to new development versions and commit with message "Back to snapshots for further development" or similar
  • If this is a major release, update the security policy and commit with message "Update security policy to reflect 5.x release" or similar
  • Create release notes for the subsequent release from the template, if applicable
  • Push main and all tags to GitHub
    • For patch releases: Include the release notes of the patch release on main
  • Edit release description on GitHub: Link to User Guide and Javadoc for current version
  • Close milestone in GitHub issues
  • Drink some beer until release is on Maven central 🍻
VERSION=5.11.0-M1
URL=https://repo1.maven.org/maven2/org/junit/jupiter/junit-jupiter-api/$VERSION/junit-jupiter-api-$VERSION.pom
until curl --output /dev/null --silent --head --fail $URL; do
    printf '.'
    sleep 5
done
notify-send -u critical -i software-update-available "Release $VERSION published"
  • Update JBang catalog
  • Push samples release branch and main, if applicable, to GitHub
  • Tweet about the new release from junitteam