Skip to content
This repository has been archived by the owner on May 31, 2022. It is now read-only.

Release Process

Josh Cummings edited this page Aug 10, 2020 · 3 revisions

Perform a Milestone, RC or GA Release

NOTE: This release process uses the spring-build-conventions Gradle plug-in.

Process Overview

  1. Update dependencies
  2. Update release version
  3. Build Locally
  4. Push the release commit
  5. Tag the release
  6. Update to next development version
  7. Update Release Notes on GitHub
  8. Close / Create Milestone

Detailed Steps

1. Update dependencies

  • Dependencies are declared in gradle/dependency-management.gradle
  • Update Spring Framework and Spring Data at a minimum
  • Then find dependencies that need updating by running the update-dependencies.sh script:
./scripts/update-dependencies.sh

Prerequisites: The build directory has to exist to store the file build/updates.txt. This directory gets created when a new build is run, but is not present on a fresh git clone.

2. Update release version

  • Update the version number in gradle.properties for the release, for example, 2.4.0-M1, 2.4.0-RC1, 2.3.0.RELEASE

3. Build Locally

  • Run the build locally with:
./gradlew check

4. Push the release commit

  • Push the release commit and Jenkins will build and deploy the artifacts
  • If you are pushing to Maven Central, then you can get notified when it's uploaded by running the following:
./scripts/release/wait-for-done.sh 2.3.0.RELEASE

5. Tag the release

  • Tag the release and then push the tag
git tag 2.4.0-RC1
git push origin 2.4.0-RC1

6. Update to next development version

  • Update release version to next -SNAPSHOT version and then push

7. Update Release Notes on GitHub

wget https://github.com/spring-io/github-release-notes-generator/releases/download/v0.0.2/github-release-notes-generator.jar
  • Generate the release notes
java -jar github-release-notes-generator.jar \
    --releasenotes.github.organization=spring-projects \
    --releasenotes.github.repository=spring-security-oauth2-boot \
    $MILESTONE release-notes

Note that $MILESTONE is something like 2.2.1 or 2.4.0-M1. This will create a file on your filesystem called release-notes.

  • Copy the release notes to your clipboard (your mileage may vary with the following command)
cat release-notes | xclip -selection clipboard
  • Create the release on GitHub, associate it with the tag, and paste the generated notes

8. Close / Create Milestone

  • In GitHub Milestones, create a new milestone for the next release version
  • Move any open issues from the existing milestone you just released to the new milestone
  • Close the milestone for the release.