-
Notifications
You must be signed in to change notification settings - Fork 613
Release instructions (for committers)
Eclipse Collections project follows Semantic Versioning, as described in the guidelines for contributing. You should not need to change version numbers in pom files. This is taken care of by the Jenkins release build.
Pre-requisites
- Prepare release notes ("RELEASE_NOTE_DRAFT.md") and create PR for review
- Subscribe to PMC
- Sonatype Permissions
The release workflow involves the below steps:
Reference: https://www.eclipse.org/projects/handbook/#release-review
- Create a release in project page
- Send an email to EMC to create the release review, make it public and schedule a review. Example. They will create a GitLab issue. Example
- Initiate PMC review by sending an email to PMC. Example
- Initiate IP review from the project page. It will create an IPZilla. Example
Once steps from 1 through 4 are done and complete then follow the below steps:
-
Trigger Jenkins Release build. Refer to one of the variants of the release: Regular Release, Service Release
-
Trigger Jenkins Deploy builds to push to Sonatype: Sonatype Deploy
-
Trigger Jenkins Deploy builds to publish artifacts to p2 Repo: Publish p2 Repo
-
Trigger Jenkins Javadoc builds to create Javadoc: Javadoc
-
Trigger Jenkins build for the new version: Start a new release
Jenkins Build: release
NEW_VERSION
: The version number for this release, e.g. 7.0.0
, 7.1.0
This build will invoke the steps below internally (assuming NEW_VERSION
is 7.1.0
).
- Clone
master
from GitHub. - Update version number in the pom files, e.g. from
7.1.0-SNAPSHOT
to7.1.0
. - Commit and push the version number changes to
master
. - Tag the previous commit, e.g. annotated tag
7.1.0
.
Jenkins Build: service-release
NEW_VERSION
: The version number for this release, e.g. 7.0.1
, 7.0.2
SERVICE_RELEASE_BRANCH
: The name of the branch for the current service release, e.g. 7.0.x
This build will invoke the steps below internally (assuming NEW_VERSION
is 7.0.1
and SERVICE_RELEASE_BRANCH is 7.0.x
).
- Clone branch from GitHub, e.g.
7.0.x
. - Update version number in the pom files, e.g. from
7.0.1-SNAPSHOT
to7.0.1
. - Commit and push the version number changes to branch, e.g.
7.0.x
. - Tag the previous commit, e.g. annotated tag
7.0.1
.
Jenkins Build: deploy build for the new tag.
This build will invoke the steps below internally.
- Clone the annotated tag.
- Run the build (clean, install)
- Sign the jar
- Deploy to Sonatype
Jenkins Build: publish-p2-repo build for the new tag.
This build will invoke the steps below internally.
- Clone the annotated tag.
- Run the build (clean, install)
- Create a zip artifact
- Create a folder with the release tag in
/home/data/httpd/download.eclipse.org/collections
- Move the zip artifact to the folder
Jenkins Build: Javadoc build for the new tag.
This build will invoke the steps below internally.
- Clone the annotated tag.
- Run the build (clean, install, javadoc)
- javadocs will be available in workspace
Sonatype Repo: Sonatype Repo search for eclipse-collections.
You need permissions to perform this step. Refer to How to get Sonatype Permissions
- Once deploy to Sonatype finishes, go to Sonatype Repo and search for eclipse-collections. Sometimes it can take a while for the artifacts to be available on Sonatype.
- Verify the artifacts and the contents. Generally check the version numbers, if jars, javadoc, etc are present. Maven Central is immutable so be careful.
- Close the artifact
- Release and drop the Repo
- Sonatype will push the artifacts to Maven Central. It takes up to 6 hours for the artifacts to be available
- Once the Javadoc build finishes download the Javadoc artifacts from the workspace.
- Add it to the Eclipse Collections Website repo. It is hosted at the Eclipse Foundation. Repo Link:
[ssh://<EclipseId>@git.eclipse.org:29418/www.eclipse.org/collections]
- Update all the index.html using the site folder in the Eclipse Collections GitHub Repo as reference.
- Commit and push
- Changes should reflect within a few minutes. Do a hard refresh of the website on your browser to verify.
Jenkins Build: new-version
NEXT_VERSION
: The planned next release version number, e.g. 7.1.0
, 8.0.0
. No need to add -SNAPSHOT
which is appended by the job automatically.
RELEASE_BRANCH
: Default is master
. Use a branch name for service releases, e.g. 7.1.x
, 8.0.x
.
This build will invoke the steps below internally (assuming NEW_VERSION
is 8.0.0
).
- Clone
master
from GitHub. - Update version number in the pom files, e.g. from
7.1.0
to8.0.0-SNAPSHOT
. - Commit and push the version number changes to
master
.
- Open releases page on GitHub
- Click on "Draft a new release"
- Choose an existing tag (latest release)
- Add the release version or tag (example 11.0.0 or 10.4.0) for "Release title"
- Copy raw contents from "RELEASE_NOTE_DRAFT.md" and paste them into the description box
- Review the changes (ensure formatting looks good, no typos, and release notes are accurate), click on "Save draft"
- Preview changes from the releases page
- Click on the release version. Scroll down and click on "Publish release"
- Create an id in Sonatype by visiting the Jira. Click on Sign up for Account.
- After you have created the id, ask another committer to raise a Jira to get permission. Example
- Once permissions are created you are set for OSS Sonatype
Eclipse Collections