Release Workflow - xspec/xspec GitHub Wiki
This is the workflow for releasing a new version of XSpec:
-
Prepare the release
- Write release notes (draft). Most of the content is from a private generator, if AirQuick is available to run it (see comment). The New Contributors section comes from GitHub automated release notes; insert this section under "Merged Pull Requests" heading.
- Create a pull request incrementing the version (without
-SNAPSHOT
) ofpom.xml
and the Oxygen add-on and merge it intomaster
-
Release it
-
Deploy the XSpec artifact to Maven Central
- This step must be done immediately before publishing the release so that we can fix any error in
pom.xml
which can be found only by deploying the artifact. - Actual deployment to Sonatype is performed automatically by a GitHub Actions workflow.
- This step must be done immediately before publishing the release so that we can fix any error in
-
Publish the release at Releases page
-
Promote the release
-
-
Prepare the next development
- Close the milestone related to the release
- Create the milestone for the next release
-
Start the next development
- Create a pull request incrementing the version (with
-SNAPSHOT
) ofpom.xml
and merge it intomaster
- Create a pull request incrementing the version (with
Version scheme
The version number consists of three parts, X.Y.Z
. Use the Z
part for pre-releasing:
-
Whenever a commit is made into the
master
branch, a GitHub Actions workflow deploys it automatically to Sonatype asX.Y-SNAPSHOT
.- We omit the
Z
part for simplicity. (See this for Maven version comparison.)
- We omit the
-
Whenever a notable change is made into the
master
branch, incrementZ
inoxygen-addon.xml
and update the add-on changelog.- Do not push a git tag. Do not publish a GitHub pre-release. Do not announce it.
-
When we want to release a stable version, perform this procedure:
- Increment
Z
inoxygen-addon.xml
. - Notify the XML Slack channel of the upcoming
X.Y
release. (Ignore theZ
part for simplicity.) - After a while, increment
Z
and release it:- Write
X.Y.Z
(without-SNAPSHOT
) tooxygen-addon.xml
andpom.xml
. - Push
vX.Y.Z
git tag and publishvX.Y.Z
GitHub release.
- Write
- Announce the availability of
vX.Y
. (Ignore theZ
part for simplicity.)
- Increment
Here's an example timeline:
master branch commit timeline |
Oxygen add-on release (oxygen-addon.xml) | Maven deployment (pom.xml) | git tag | GitHub Release | Release Announcement | |
---|---|---|---|---|---|---|
Bump Maven version to start the next development | (unreleased) | 2.0-SNAPSHOT |
(none) | (none) | (none) | |
...trivial or under-the-hood changes... | (unreleased) | 2.0-SNAPSHOT |
(none) | (none) | (none) | |
Notable feature or fix | (unreleased) | 2.0-SNAPSHOT |
(none) | (none) | (none) | |
Release to Oxygen add-on channel | 2.0.0 |
2.0-SNAPSHOT |
(none) | (none) | (none) | |
...trivial or under-the-hood changes... | (unreleased) | 2.0-SNAPSHOT |
(none) | (none) | (none) | |
Notable feature or fix | (unreleased) | 2.0-SNAPSHOT |
(none) | (none) | (none) | |
Release to Oxygen add-on channel | 2.0.1 |
2.0-SNAPSHOT |
(none) | (none) | (none) | |
...trivial or under-the-hood changes... | (unreleased) | 2.0-SNAPSHOT |
(none) | (none) | (none) | |
Notable feature or fix | (unreleased) | 2.0-SNAPSHOT |
(none) | (none) | (none) | |
Release to Oxygen add-on channel | 2.0.2 |
2.0-SNAPSHOT |
(none) | (none) | (none) | |
...trivial or under-the-hood changes... | (unreleased) | 2.0-SNAPSHOT |
(none) | (none) | (none) | |
Release to Oxygen add-on channel (Stable Release Candidate) | 2.0.3 |
2.0-SNAPSHOT |
(none) | (none) | (none) | |
Stable Release | 2.0.4 |
2.0.4 |
v2.0.4 |
v2.0.4 |
v2.0 |
|
Bump Maven version to start the next development | (unreleased) | 2.1-SNAPSHOT |
(none) | (none) | (none) | |
...trivial or under-the-hood changes... | (unreleased) | 2.1-SNAPSHOT |
(none) | (none) | (none) | |
Notable feature or fix | (unreleased) | 2.1-SNAPSHOT |
(none) | (none) | (none) | |
Release to Oxygen add-on channel | 2.1.0 |
2.1-SNAPSHOT |
(none) | (none) | (none) | |
...trivial or under-the-hood changes... | (unreleased) | 2.1-SNAPSHOT |
(none) | (none) | (none) | |
Notable feature or fix | (unreleased) | 2.1-SNAPSHOT |
(none) | (none) | (none) | |
Release to Oxygen add-on channel | 2.1.1 |
2.1-SNAPSHOT |
(none) | (none) | (none) | |
...trivial or under-the-hood changes... | (unreleased) | 2.1-SNAPSHOT |
(none) | (none) | (none) | |
Release to Oxygen add-on channel (Stable Release Candidate) | 2.1.2 |
2.1-SNAPSHOT |
(none) | (none) | (none) | |
Stable Release | 2.1.3 |
2.1.3 |
v2.1.3 |
v2.1.3 |
v2.1 |
Updating Oxygen add-on
See the latest comment in oxygen-addon.xml
.