Project: Fluvio (App Definition and Development / Streaming & Messaging)
File: RELEASE.md

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 This is a mostly manual workflow Create a with the `release_checklist.md` template Prior to releasing, the release manager should check the following: Review Fluvio website: Review the "Getting Started" docs. [ ] https://www.fluvio.io/docs/get-started/linux/ [ ] https://www.fluvio.io/docs/get-started/mac/ [ ] https://www.fluvio.io/docs/get-started/raspberry/ [ ] https://www.fluvio.io/docs/get-started/cloud/ Sample code is correct (API docs are correct) [ ] https://www.fluvio.io/api/official/rust/examples/ [ ] https://www.fluvio.io/api/official/python/examples/ [ ] https://www.fluvio.io/api/official/node/examples/ [ ] https://www.fluvio.io/api/official/java/examples/ Review rest of doc to ensure they are up to date. [ ] https://www.fluvio.io/docs/ Other dependent repos: 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 This workflow will: Create 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 https://hub.docker.com/r/infinyon/fluvio Publish fluvio artifacts to AWS S3 (via `fluvio package`) for installer Publish all public crates in the `crates` directory and any dependencies 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

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 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 was `0.10.1` then version should be bump to `0.10.2-dev-1`. Update `CHANGELOG.md` file for next release [ ] Add Platform version section (matching value as `VERSION` file) with a release date of `UNRELEASED` to `CHANGELOG.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 as `YYYY-MM-dd`) in `CHANGELOG.md`. Create PR with the `?template=release_template.md` PR template and link the to close. Close the release milestone after the PR CI completes. This is located on the page. Announce the release on Discord (`#announcements` channel) and Twitter ( 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 ``` 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` and `fluvio-run` artifacts s3://packages.fluvio.io/v1/packages/fluvio/fluvio/<VERSION> s3://packages.fluvio.io/v1/packages/fluvio/fluvio-run/<VERSION> 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