Before each release, we will publish a Snapshot version of it and use it to create a pre-release on Github Release page
During a period of ~2 weeks, consumers will be able to test it and report bugs that can be fixed before it’s considered stable.
Using the Github pre-release feature will allow Spark users to be notified that a new release is being prepared and test against it. For example, they could set up hooks to post the changelog in their monitoring Slack channel or trigger a CI build to validate that this new release doesn’t break their build.
- Create a draft release with a
*.*.*-SNAPSHOT
version tag. - Click on
Generate release notes
to automatically add all the merged pull requests from this diff and contributors of this release. - Remove logs from
@dependabot
except if they mention big version upgrades for libraries used by our consumers (like Compose or Kotlin). - Reformat the changelog to be as close as possible to the format we describe in the CHANGELOG STYLE GUIDE.
- If we’re satisfied with the draft, release it but make sure
⚠️ Set as a pre-release
is checked. - Wait at least 2 weeks for feedback from consumers on the stability of this release.
- If we need to create a fix from feedbacks, then this cycle repeats.
- Otherwise, follow the stable release process
- Update the
version
in gradle.properties to a non-SNAPSHOT
. - Update CHANGELOG.md
- Add the new version section and move the unreleased changes into it.
- Update the links at the end of the page.
- Commit and push the changes to a new PR
git commit -am "chore: prepare version X.Y.X" git push
- Once the PR is merged, tag the release on the
main
branchgit fetch git tag X.Y.Z origin/main git push origin X.Y.Z
- Wait for the publishing workflow to build and publish the release.
- Update the
version
in gradle.properties to the nextSNAPSHOT
version. - Commit and push the changes to a new PR
git commit -am "chore: prepare next development version"
- Go to Sonatype Nexus to promote (docs & detailed steps)
close
then wait till it completesrelease
the artifact
- Trigger the manual workflow with the version tag.
- Draft a new release with the version tag, add the corresponding CHANGELOG.md entries, and publish it when ready.
Hotfixes can sometimes be a bit tricky to do right. Please follow these steps carefully:
- Create the hotfix remote branch (the
hotfix
prefix is important)git branch hotfix/X.Y.Z+1 refs/tags/X.Y.Z git push origin hotfix/X.Y.Z+1
- Create a local hotfix PR branch
git switch --create patch-hotfix-X.Y.Z+1 refs/tags/X.Y.Z
- Commit the necessary changes and open a PR targeting the hotfix branch.
- Once the PR is merged, you can continue with the regular release process described above.
- Finally, merge these changes back to the main branch with a new PR
git merge --no-ff refs/tags/X.Y.Z+1