-
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).
-
All release tickets are present (CLI:
$ tracker releasetickets $trainIteration
) -
Review open tickets for release.
-
Self-assign release tickets (CLI:
$ tracker prepare $trainIteration
) -
Announce release preparations to mailing list (https://groups.google.com/forum/#!forum/spring-data-dev)
-
🚥 Continue with
Build and publish the release
Action | Command |
---|---|
Check out this repository from GitHub |
|
Checkout the |
|
Edit |
|
Commit the change to this repository |
|
Switch to the |
|
Set the |
|
🚨 To trigger 🛣 the release |
|
Go to https://jenkins.spring.io/view/SpringData/job/spring-data-release-release/, Navigate to the |
Monitor the release process. |
After preparing and building (approx. 20 minutes), the Jenkins pipeline will pause, indicating it’s time to smoke test the staged release, and put up a prompt: Proceed or Abort.
🚨 If you click on Proceed, then it will continue on to the release conclude
/github push
/release distribute
phase.
-
For a Maven central release, go to https://s01.oss.sonatype.org/ and login.
-
After logging in, you will find a closed Spring Data Release repository.
-
Click the repository and then choose "Release".
-
-
For an artifactory release, the release will already have been staged and promoted, so there is nothing more to do.
-
🚥 Continue with
Post-release tasks
Background
The first CI phase includes: release prepare
and release build
and may take twenty minutes or so.
-
For a maven central release, you can visit https://s01.oss.sonatype.org/, login, and inspect the staged Spring Data Release. All the Spring Data modules will inside one repository.
-
For a milestone/RC release, you can visit https://repo.spring.io/. All the Spring Data modules will be there, each module a separate "build".
At this point in time, we don’t have official Spring Data Release smoke testing configured, so you can simply click Proceed if there were no issues.
For milestone/RC releases, Spring Data Release tools automatically promotes them in Artifactory, so if you have to delete a build, you’ll ALSO have to go and delete each module individually.
Action | Command |
---|---|
Finally, push the commit that changed |
|
Close release tickets. |
|
Create new release versions and tickets for upcoming version |
|
Update versions in Sagan. |
|
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. -
Ensure you have the credentials for https://oss.sonatype.org (to deploy and promote GA and service releases, need deployment permissions for
org.springframework.data
) insettings.xml
for server with idsonatype
.
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
. -
sagan.key
- Sagan authentication token. Must be a valid GitHub token. Can be the same asgit.password
when using a GitHub token as password.
After that, run the verify
command ($ verify
) to verify your settings (authentication,
correct Maven, Java, and GPG setup).
See application-local.template
for details.
Action | Command |
---|---|
All release tickets are present |
|
Self-assign release tickets |
|
Release the binaries |
|
|
|
Build the artefacts and push them to the appropriate maven repository |
|
|
|
Push the created commits to GitHub |
|
Push new maintenance branches if the release version was a GA release ( |
|
Distribute documentation and static resources from tag |
|
Post-release tasks |
|
Close JIRA tickets and GitHub release tickets. |
|
Create new release versions and tickets for upcoming version |
|
Update versions in Sagan. |
|
Create list of docs for release announcements |
|
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
ProjectDependencies
contains a per-project configuration of dependencies.
Workflow:
-
Check for dependency upgrades
$ dependency check $trainIteration
Reports upgradable dependencies for Build and Modules and
creates dependency-upgrade-build.properties
file.
Edit dependency-upgrade-build.properties
to specify the dependency version to upgrade.
Removing a line will omit that dependency upgrade.
-
Apply dependency upgrade with
$ dependency upgrade $trainIteration
. Applies dependency upgrades currently only to Spring Data Build. -
Report store-specific dependencies to Spring Boot’s current upgrade ticket (sample)
$ dependency report $trainIteration