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.xmland 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.xmlwhich 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.xmland 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
masterbranch, a GitHub Actions workflow deploys it automatically to Sonatype asX.Y-SNAPSHOT.- We omit the
Zpart for simplicity. (See this for Maven version comparison.)
- We omit the
-
Whenever a notable change is made into the
masterbranch, incrementZinoxygen-addon.xmland 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
Zinoxygen-addon.xml. - Notify the XML Slack channel of the upcoming
X.Yrelease. (Ignore theZpart for simplicity.) - After a while, increment
Zand release it:- Write
X.Y.Z(without-SNAPSHOT) tooxygen-addon.xmlandpom.xml. - Push
vX.Y.Zgit tag and publishvX.Y.ZGitHub release.
- Write
- Announce the availability of
vX.Y. (Ignore theZpart 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.