# Long Term Support Policy

WRT: https://github.com/external-secrets/external-secrets/issues/2044

We want to provide security patches and critical bug fixes in a timely manner to our users.
To do so, we offer long-term support for our latest two (N, N-1) software releases.
We aim for a 2-3 month **minor** release cycle, i.e. a given release is supported for about 4-6 months.

We want to cover the following cases:

- weekly image rebuilds to update OS dependencies
- weekly go dependency updates
- backport bug fixes on demand

Note: features cut off on a minor release will not be backported to older releases.

## Automatic Updates

We have set up a Github Action (GHA) which will automatically update the `go.mod` dependencies once per week or on request.
The GHA will make the necessary code changes and opens a PR. Once approved and merged into `main` or `release-x.y` our build pipelines
will build and push the artifact to ghcr.

## Manual Updates

Bug Fixes will be merged onto each release branch individually.
This is achieved by creating separate PRs from a corresponding branch of the release
(e.g. bug fixes targeting `release-1.0` should be created from `release-1.0` branch).
Once approved and merged into `main` or `release-x.y`, ou build pipeline will build and push the artifact to ghcr

## Process

### Branch Management

When a new **minor release** is cut and merged into `main`, we must branch off to `release-{major}.{minor}`.
This is the long-lived release branch that will get dependency updates and bug fixes.
In case we do a `patch` release we **must also merge** into the correct `release-{major}.{minor}` branch.

### Release Issue Template

We'll have a release issue template that gives the release lead a task list to work through all the steps needed to create a release.

#### Release Preparation Tasks

- [ ] ask in `#external-secrets-dev` if we're ready for a release cut-off or if something needs to get urgently in
- [ ] docs: [stability & support page](https://external-secrets.io/latest/introduction/stability-support/) is up to date
  - [ ] version table
  - [ ] Provider Stability and Support table
  - [ ] Provider Feature Support table
- [ ] docs: update [roadmap page](https://external-secrets.io/latest/contributing/roadmap/)
- [ ] tidy up [Project Board](https://github.com/orgs/external-secrets/projects/2)
  - [ ] move issues to next milestone
  - [ ] close milestone

#### Release Execution

- [ ] Follow the [Release Process guide](https://external-secrets.io/latest/contributing/release/)

#### After Release Tasks

- [ ] Announce release on `#external-secrets` in Slack
