The full process for releasing Fluvio consists of 3 separate workflows, which are detailed below in their own sections:
In the event that a release needs to be un-released, please follow the Release recovery process
This is a mostly manual workflow
Create a new issue with the release_checklist.md
template
Prior to releasing, the release manager should check the following:
Review Fluvio website:
- Review the "Quickstart" docs.
- Review docs for key changes to ensure they are up to date.
Other dependent repos:
- Update
infinyon/fluvio-smartmodule-template
if needed.
This is a mostly automated workflow
Send a message in the Infinyon Slack #dev
channel to let the team know release is about to occur.
The team should understand that No PR merges unrelated to release should occur during this time
Run the release.yml
Github Actions workflow
This workflow will:
- Create Github Release for the current version (w/ Release notes derived from
CHANGELOG.md
) - Create a git tag on the commit in Fluvio repo that was just released
- Push Fluvio docker image release tags to Docker Hub
- Publish fluvio artifacts to AWS S3 (via
fluvio package
) for installer - Publish all public crates in the
crates
directoryfluvio
and any dependenciesfluvio-smartmodule
and any dependencies- The rest of the crates w/ a version number that isn't
v0.0.0
If any steps fail in release.yml
, try to run it a 2nd time before asking in #dev
.
This workflow has been written to be idempotent. It will only perform work if necessary. (Even if run multiple times!)
Release the connector for the new version of Fluvio in: https://github.com/infinyon/fluvio-connectors.
If there is no major changes in the connector, then only patch or minor version should be updated.
This is a mostly manual workflow
After performing the release, the release manager should do the following in order to prepare for the next release and announce the current release to the community:
-
The automated workflow created an issue called [Release Checklist]: VERSION. Add that issue to the corresponding milestone
-
Update files in Fluvio repo, open PR (with the
?template=release_template.md
PR template) and merge- Update
VERSION
file for next release- Minor version bump the version in the
VERSION
file with-dev-1
. For example, if release was0.10.1
then version should be bump to0.10.2-dev-1
.
- Minor version bump the version in the
- Update
CHANGELOG.md
file for next release- Add Platform version section (matching value as
VERSION
file) with a release date ofUNRELEASED
toCHANGELOG.md
at top of file (but under the# Release Notes
header)## Platform Version X.Y.Z - UNRELEASED
- For version just released, replace
UNRELEASED
date with current date (format asYYYY-MM-dd
) inCHANGELOG.md
.
- Add Platform version section (matching value as
- Create PR with the
?template=release_template.md
PR template and link the previously created release tracking issue to close.
- Update
-
Close the release milestone after the PR CI completes. This is located on the milestones page.
-
Announce the release on Discord (
#announcements
channel) and Twitter (@fluvio_io
user).- Discord announcement Template:
- Aim to announce ~3 features max. If we have more, point out that release notes includes more)
Fluvio vX.Y.Z is out! 🎉 This release includes: * (Changelog feature 1) * (Changelog feature 2) * (Changelog feature 3) Link to full release notes 📋 https://github.com/infinyon/fluvio/releases/tag/vX.Y.Z
- Discord announcement Template:
-
Send another message in Infinyon Slack to let the team know that release is complete (so we can merge PRs again!)
This is a completely manual workflow
In the event that the release automation fails, there is manual cleanup required before re-running the automation.
- Docker Hub
- Delete the image tag corresponding to the release VERSION
- S3
- Delete the version directory for
fluvio
andfluvio-run
artifacts - s3://packages.fluvio.io/v1/packages/fluvio/fluvio/
- s3://packages.fluvio.io/v1/packages/fluvio/fluvio-run/
- Delete the version directory for
- Github Releases
- Delete the latest release with a version number (probably the top-most)
- Delete any DRAFT releases
fluvio install fluvio-package
fluvio package tag fluvio:x.y.z --tag=stable --force
- Remove last entry in fluvio-run meta.json
- s3://packages.fluvio.io/v1/packages/fluvio/fluvio-run/meta.json
- This should be a regular release tag (x.y.z), not a dev tag (x.y.z+gitcommit)
- Confirm that the installation script works
curl -fsS https://hub.infinyon.cloud/install/install.sh | bash
- Update third party crates