-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Release process for v5
❗ Heads-up: The release process is different between milestones and GAs, so execute only the process that corresponds to the type of the release you are about to publish❗
- In the branch to release (
5.0.x
,5.1.x
, etc), update the mainpom.xml
with release versions of Spring snapshot dependencies and upgrade other dependencies if needed. Here is an example: d594be1d. Make sure dependencies versions align with those used by the Spring Boot version that will consume the current release. - Run a full build with
./mvnw clean verify
- Commit and push the changes in
pom.xml
with a message like:Prepare release 5.0.5
- Go to Github Actions: https://github.com/spring-projects/spring-batch/actions.
- Run the "Artifactory Staging" workflow from the branch to release ❗and provide the version to release.
- Do a smoke test with the staged jars in http://repo.spring.io/libs-staging-local/org/springframework/batch. check the integrity of the artifacts to see if jars are not corrupted or empty, etc.
❗ Heads-up: The "Artifactory Staging" workflow is designed to be idempotent (it has no git side effects). If something is wrong with the staged release, the same workflow can be re-run with the same version and a new release will override the corrupted one on the staging repository.❗
- Go to Github Actions: https://github.com/spring-projects/spring-batch/actions.
- Run the "Maven Central Release" workflow from the
main
branch ❗ and provide the version to release. This will download the artifacts from the Artifactory staging repository, sign them with GPG and upload them to Maven Central.
None of the previous Github Actions changes the version in the code and pushes the changes to the upstream repository. The version change is done manually on purpose. At this point, the release should have been staged, tested and promoted to Maven Central. It is now safe to change the version in the code and push it to the upstream repository. From the root directory of the project, run the following commands (change the version number accordingly):
$./mvnw versions:set -DgenerateBackupPoms=false -DnewVersion=5.0.5
$git commit -a -m "Release version 5.0.5"
$git tag -a v5.0.5 -m "Release version 5.0.5"
$./mvnw versions:set -DgenerateBackupPoms=false -DnewVersion=5.0.6-SNAPSHOT
$git commit -a -m "Next development version"
$git push upstream 5.0.x
$git push upstream v5.0.5
NB: The "v" prefix in the tag name is important, see https://github.com/spring-projects/spring-batch/issues/4183.
- Go to Github Actions: https://github.com/spring-projects/spring-batch/actions.
- Run the "Documentation Upload" workflow from the branch to release ❗and provide the version to release. This will generate a distribution of the documentation (java docs and XSDs) and upload it to the documentation server where needed.
The reference documentation should be automatically generated and published with the Antora-based process that is triggered automatically on every new release or tag. In case of any issue, the reference documentation can be re-generated by running the Deploy Docs
action from the docs-build
branch and by specifying the tag to reprocess (ex v5.1.3
).
- Go to Github Actions: https://github.com/spring-projects/spring-batch/actions.
- Run the "Artifactory Milestone Release" workflow by providing the milestone version to release. This will deploy the milestone release to https://repo.spring.io/libs-milestone-local/org/springframework/batch
Check uploaded jars in http://repo.spring.io/libs-milestone-local/org/springframework/batch and do a smoke test with the deployed milestone version: check the integrity of the artifacts to see if jars are not corrupted or empty, etc.
❗ Heads-up: The "Artifactory Milestone Release" workflow is designed to be idempotent (it has no git side effects). If something is wrong with the milestone release, the same workflow can be re-run with the same version and a new milestone will override the corrupted one on the milestone repository. ❗
None of the previous Github Actions changes the version in the code and pushes the changes to the upstream repository. The version change is done manually on purpose. At this point, the release should have been staged, tested and promoted to Artifactory. It is now safe to change the version in the code and push it to the upstream repository. From the root directory of the project, run the following commands (change the version number accordingly):
$./mvnw versions:set -DgenerateBackupPoms=false -DnewVersion=5.2.0-M1
$git commit -a -m "Release version 5.2.0-M1"
$git tag -a v5.2.0-M1 -m "Release version 5.2.0-M1"
$./mvnw versions:set -DgenerateBackupPoms=false -DnewVersion=5.2.0-SNAPSHOT
$git commit -a -m "Next development version"
$git push upstream main
$git push upstream v5.2.0-M1
NB: The "v" prefix in the tag name is important, see https://github.com/spring-projects/spring-batch/issues/4183.
- Go to Github Actions: https://github.com/spring-projects/spring-batch/actions.
- Run the "Documentation Upload" workflow from the
main
branch and provide the milestone version to release. This will generate a distribution of the documentation (java docs and XSDs) and upload it to the documentation server where needed.
The reference documentation should be automatically generated and published with the Antora-based process that is triggered automatically on every new release or tag. In case of any issue, the reference documentation can be re-generated by running the Deploy Docs
action from the docs-build
branch and by specifying the tag to reprocess (ex v5.1.3
).
- Generate the release notes with the Generate Release notes action. You need to specify the milestone version (for example
5.0.5
) and the version of the Github Changelog Generator (for example0.0.8
). Copy the generated content from the action's log, amend it as needed and use the result to create a release on Github. Heads-up: Add "Dependency upgrades" and "Full changelog" sections to the release notes, those are not generated by the "Github Changelog Generator" tool. - Update the project's page on Contentful with the latest release/snapshot versions.
- Write a release announcement blog post.
- Tweet about the release using the
@SpringBatch
handle. - Post a message in the
#spring-release
slack channel. - Close the GitHub milestone of the release
- Update Spring dependencies to next snapshot versions in
pom.xml
. Here is an example: 4dda48df. - Update the "Latest news" section in the main
README.md
with the link to the release announcement's blog post.