This describes the release process of the engines and SDKs.
The release process is make up of two parts:
- The release of the engines
- The release of the SDKs
The engine is released first because the SDKs depend on the engine.
The entire process is made up of a series of GitHub Actions workflows that are triggered by a GitHub release.
We use release-please to generate the CHANGELOG and create the GitHub releases for the engine only.
The FFI engine is released first because the SDKs depend on the engine.
The FFI engine gets built for each supported platform and is published to the GitHub release.
Releasing the engine is a three-step process:
- Create a new release in the flipt-engine-ffi package by merging a change to the
main
branch that would trigger a release via conventional commits. - Wait for the release-please workflow to complete. This will create a new release and tag for the engine.
- The
package-ffi-engine
workflow will run, building the engine for each supported platform and publishing the artifacts to the GitHub release.
Releasing each SDK is a two to three-step process:
- Update the SDK to the new version that you want to release (i.e. update the version in
package.json
for Node,pyproject.toml
for Python,flipt_client.gemspec
for Ruby). - Commit and tag the SDK with the new version using the naming convention
flipt-client-{language}-{version}
(i.e.flipt-client-node-v0.1.0
). - Push the tag to
origin
. This will trigger the appropriate GitHub Action to build, package, and publish the SDK.
Note: In the future we can potentially automate the tagging/pushing of the SDKs via a GitHub Action or script.
- Update the
flipt-client-node
version inflipt-client-node/package.json
and runnpm install
- Update the
flipt-client-python
version inflipt-client-python/pyproject.toml
- Update the
flipt-client-ruby
version inflipt-client-ruby/lib/flipt_client/version.rb
- Update the
flipt-client-java
version inflipt-client-java/build.gradle
- Update the
flipt-client-dart
version inflipt-client-dart/pubspec.yaml
- Tag each SDK with the new version and push the tags to
origin
Releasing the flipt-client-browser
SDK is a three to four-step process:
- Update the
flipt-engine-wasm
dependency inflipt-client-browser/src
(if necessary). - Update the
flipt-client-browser
version inflipt-client-browser/package.json
and runnpm install
- Commit and tag the SDK with the new version using the naming convention
flipt-client-browser-v{version}
(i.e.flipt-client-browser-v0.1.0
). - Push the tag to
origin
. This will trigger the appropriate GitHub Action to build, package, and publish the SDK.