-
Make sure to initially set-up your environment.
-
Use the command
help
to get a list of all commands in the release tools. -
After fixing a problem use
workspace cleanup
to clean-up any mess left behind by the previous step.
The Pre-Release tasks and Post-Release tasks phases of making a release (opening tickets/closing tickets) is still done manually.
The Build and publish the release phase is what’s covered by the CI server.
-
Ensure all work on CVEs potentially contained in the release is done (incl. backports etc.).
-
Upgrade dependencies in Spring Data Build parent pom (mind minor/major version rules).
-
Review open tickets for release:
$ tracker open-tickets $trainIteration
-
Announce release preparations to mailing list (https://groups.google.com/forum/#!forum/spring-data-dev)
-
Create release tag, verify the release can be built, and publish tags:
$ prepare-it $trainIteration
-
🚥 Continue with Build and distribute the release.
Action | Command |
---|---|
Open a terminal pointing to the release tools directory |
|
Checkout the |
|
Set the |
|
Edit |
|
Commit the change to this repository |
|
🚨 To trigger 🛣 the release |
|
Go to https://jenkins.spring.io/view/SpringData/job/spring-data-release/job/release, Navigate to the |
Monitor the release process. |
-
For a Maven central release, if the smoke test has passed, the repository will already have been released, so there is nothing more to do.
-
For an Artifactory release, if the smoke test has passed, the release will already have been staged and promoted, so there is nothing more to do.
-
🚥 Continue with Post-Release tasks.
Action | Command |
---|---|
Finally, push the commit that changed |
|
Close release tickets. |
|
Create new release versions and tickets for upcoming version |
|
Update versions in the Projects Service. |
|
Create list of docs for release announcements |
|
Announce release (Blog, Twitter) and notify downstream dependency projects as needed. |
N.A. |
Congratulations 🥳 You completed the release ❤️.
-
Ensure you have the credentials for
buildmaster
accounts on https://repo.spring.io.
Both are available in the Spring/Pivotal Last Pass repository.
-
Add an
application-local.properties
to the project root and add the following properties:-
git.username
- Your GitHub username. -
git.password
- Your GitHub Password (or API key with scopes:public_repo, read:org, repo:status, repo_deployment, user
when using 2FA). -
git.author
- Your full name (used for preparing commits). -
git.email
- Your email (used for preparing commits). -
maven.mavenHome
- Pointing to the location of your Maven installation. -
deployment.username
- Your Artifactory user. -
deployment.api-key
- The Artifactory API key to use for artifact promotion. -
deployment.password
- The encrypted Artifactory password.. -
gpg.keyname
- The GPG key name. -
gpg.passphrase
- The password of your GPG key. -
gpg.executable
- Path to your GPG executable, typically/usr/local/MacGPG2/bin/gpg2
or/usr/local/bin/gpg
. -
project-service.key
- Project Service authentication token. Must be a valid GitHub token. Can be the same asgit.password
when using a GitHub token as password.
-
(See application-local.template
for details)
-
Verify your local settings (authentication, correct Maven, Java, and GPG setup):
$ verify local
Action | Command |
---|---|
All release tickets are present |
|
Self-assign release tickets |
|
Prepare the release |
|
|
|
|
|
Build the release |
|
Build the artifacts from tag and push them to the appropriate maven repository. Also runs smoke tests, does Sonatype "release" if applicable, and does Artifactory "promote" if applicable. |
|
Distribute documentation and static resources from tag |
|
Push the created commits to GitHub |
|
Push new maintenance branches if the release version was a GA release ( |
|
Post-release tasks |
|
Close JIRA tickets and GitHub release tickets. |
|
Create new release versions and tickets for upcoming version |
|
Trigger Antora documentation build (once all artifacts have arrived at the final Maven repository) |
|
Update versions in Projects Service. |
|
Create list of docs for release announcements |
|
Java and Maven versions are installed via SDKman during the Dockerfile
build. See ci/java-tools.properties
for further details.
ProjectLabelConfiguration
contains a per-project configuration which labels should be present in a project. To apply that configuration (create or update), use:
$ github update labels $project [--commercial]
ProjectDependencies
contains a per-project configuration of dependencies.
To check for dependency upgrades:
$ dependency check $trainIteration
This generates two files that report upgradable dependencies for Spring Data Build and Spring Data modules, respectively:
-
dependency-upgrade-build.properties
-
Edit this file to specify the dependencies and their corresponding version to upgrade. Removing a line will omit that dependency upgrade.
-
Update
dependency.upgrade.count
value. -
Apply dependency upgrades to Spring Data Build:
$ dependency upgrade $trainIteration
-
-
dependency-upgrade-modules.properties
-
Open a ticket for each dependency upgrade in the corresponding module (sample).
-
Report store-specific dependencies to Spring Boot’s current upgrade ticket (sample).
To generate a dependency report:
$ dependency report $trainIteration
To upgrade Maven across all modules:
-
Check for the latest stable Maven version.
$ infra maven check $trainIteration
-
This generates a
dependency-upgrade-maven.properties
file that reports an upgradable version of Maven Wrapper, if it exists.
-
-
Apply Maven upgrade across all modules.
$ infra maven upgrade $trainIteration
To distribute ci/pipeline.properties
from Spring Data Build across all modules:
$ infra distribute ci-properties $trainIteration
Resolve external links in reference documentation and print their status.
$ docs check-links $trainIteration
Flag | Description |
---|---|
--local |
read the documentation from disk (target module workspace directory) |
--project |
only check links of a specific project (eg. |
--report |
only report errors of the given categories (ERROR,REDIRECT,OK). Default is ALL |
$ docs check-links Turing GA --report ERROR
$ docs check-links Turing SR1 --local true --project redis
Resolve external links of any web page (remote/local) and print their status.
$ check-links $url
Flag | Description |
---|---|
--report |
only report errors of the given categories (ERROR,REDIRECT,OK). Default is ALL |
$ check-links file:///usr/git/spring-data-mongodb/target/site/reference/html/index.html --report ERROR,REDIRECT