Skip to content

Latest commit

 

History

History
178 lines (122 loc) · 5.25 KB

RELEASE.adoc

File metadata and controls

178 lines (122 loc) · 5.25 KB

Update Dependencies

Ensure you have no changes in your local repository. Change to a new branch. For example:

$ git checkout -b 5.5.0-RC1-dependencies

Review the rules in build.gradle to ensure the rules make sense. For example, we should not allow major version updates in a patch release. Also ensure that all of the exclusions still make sense.

The following Gradle command will update your dependencies creating a commit for each dependency update. The first invocation of the command will take quite a while (~20 minutes depending on internet speed) to run because it is indexing all the versions of all the dependencies.

$ ./gradlew updateDependencies

Review the commits to ensure that the updated dependency versions make sense for this release. For example, we should not perform a major version update for a patch release.

$ git log

If any of the versions don’t make sense, update build.gradle to ensure that the version is excluded.

Run all the checks:

$ ./gradlew check

If they don’t work, you can run a git bisect to discover what broke the build. Fix any commits that broke the build.

Check out the original brach:

$ git checkout -

The following command will update the dependencies again but this time creating a ticket for each update and placing Closes gh-<number> in the commit. Replacing the following values:

<github-personal-access-token> - Replace with a GitHub personal access token that has a scope of public_repo <next-version> - Replace with the title of the milestone you are releasing now (i.e. 5.5.0-RC1)

$ ./gradlew updateDependencies -PupdateMode=GITHUB_ISSUE -PgitHubAccessToken=<github-personal-access-token> -PnextVersion=<next-version>

Apply any fixes from your previous branch that were necessary.

Check All Issues are Closed

Check that all issues are closed for the milestone https://github.com/spring-projects/spring-security/milestones

Update Release Version

Update the version number in gradle.properties for the release, for example 5.5.0-M1, 5.5.0-RC1, 5.5.0

Build Locally

Run the build using

$ ./gradlew check

Push the Release Commit

Push the commit and GitHub actions 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 5.5.0

Announce the release on Slack

  • Announce via Slack on #spring-release, including the keyword spring-security-announcing in the message. Something like:

spring-security-announcing 5.5.0 is available.

Tag the release

  • Tag the release and then push the tag

git tag 5.4.0-RC1
git push origin 5.4.0-RC1

7. Update to Next Development Version

  • Update gradle.properties version to next SNAPSHOT version and then push

8. Update version on project page

The following command will update https://spring.io/projects/spring-security#learn with the new release version using the following parameters

<github-personal-access-token> - Replace with a GitHub personal access token that has a scope of public_repo <next-version> - Replace with the milestone you are releasing now (i.e. 5.5.0-RC1) <previous-version> - Replace with the previous release which will be removed from the listed versions (i.e. 5.5.0-M3)

$ ./gradlew saganCreateRelease saganDeleteRelease -PgitHubAccessToken=<github-personal-access-token> -PnextVersion=<next-version> -PpreviousVersion=<previous-version>

9. Update Release Notes on GitHub

wget https://github.com/spring-io/github-changelog-generator/releases/download/v0.0.6/github-changelog-generator.jar
  • Generate the release notes

java -jar github-changelog-generator.jar \
    --changelog.repository=spring-projects/spring-security
    --spring.config.location=scripts/release/release-notes-sections.yml \
    $MILESTONE release-notes

Note 1: $MILESTONE is something like 5.2.1 or 5.3.0-M1.
Note 2: The location scripts/release/release-notes-sections.yml is relative to the spring-security repo.
Note 3: 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

10. 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.

11. Announce the release on other channels