ESO and the ESO Helm Chart have two distinct lifecycles and can be released independently. Helm Chart releases are named external-secrets-x.y.z.
The external-secrets project is released on a as-needed basis. Feel free to open a issue to request a release.
External Secrets Operator uses a multi-module structure with the following modules:
/apis - CRD types and interfaces/runtime - Shared utilities/providers/v1/* - Individual provider modules/generators/v1/* - Individual generator modules/ (root) - Main module with controllers and binaryAll modules share the same version tag. When releasing version v0.x.y, a single git tag is created that applies to all modules in the repository. Go's module system automatically handles this, and consumers can reference any module using the same version tag.
For example:
require (
github.com/external-secrets/external-secrets/apis v0.10.0
github.com/external-secrets/external-secrets/runtime v0.10.0
github.com/external-secrets/external-secrets/providers/v1/aws v0.10.0
)
Important: When updating dependencies that consume ESO modules, ensure all module references use the same version to maintain compatibility.
When doing a release it's best to start with with the "Create Release" issue template, it has a checklist to go over.
⚠️ Note: when releasing multiple versions, make sure to first release the "old" version, then the newer version.
Otherwise the latest documentation will point to the older version. Also avoid to release both versions at the same time to avoid race conditions in the CI pipeline (updating docs, GitHub Release, helm chart release).
Create Release Action to create a new release, pass in the desired version number to release.
branch to execute the action: use main when creating a new release.release.yml workflow which also promotes the container image.version and/or appVersion in Chart.yaml and run make helm.docs helm.update.appversion helm.test.update docs.update test.crds.update/ok-to-test-managed commands for all cloud providersThe following things are updated with those commands:
The branch to create this release should be release-chart-x.y.z. Though be aware that release branches are immutable.
This means that if there is anything that needs to be fixed, a new branch will need to be created.
Also, keep an eye on main so nothing is merged while the chart branch is running the e2e tests. If that happens,
the chart PR CANNOT be merged because we don't allow not up-to-date pull requests to be merged. And you can't update
because the branch is immutable.