General Notes
-
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 release process
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.
🍃 Pre-Release tasks
-
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 (CLI:
$ 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 (CLI:
$ prepare-it $trainIteration
) -
🚥 Continue withBuild and distribute the release
🌿 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 |
|
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 withPost-release tasks
🍀 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
Appendix
One Time Setup
Infrastructure requirements
-
Ensure you have the credentials for
buildmaster
accounts on https://repo.spring.io.
Both are available in the Spring/Pivotal Last Pass repository.
Prepare local configuration and credentials
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.
After that, run the verify local
command ($ verify local
) to verify your local settings (authentication, correct Maven, Java, and GPG setup).
See application-local.template
for details.
spring-data-release-cli
Detailed commands performed by 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 |
|
Update versions in Projects Service. |
|
Create list of docs for release announcements |
|
Utilities
Java and Maven Versions used in the Container
Java and Maven versions are installed via SDKman during the Dockerfile
build. See ci/java-tools.properties
for further details.
GitHub Labels
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
Dependency Upgrade
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
CI Properties Distribution
To distribute ci/pipeline.properties
across all modules use:
$ infra distribute ci-properties $trainIteration
Broken Link Report
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