diff --git a/.release-please-manifest.json b/.release-please-manifest.json index c3e01e1e..21fa4455 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.53.0" + ".": "0.54.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 127017d1..40be9489 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,50 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.54.0](https://github.com/ConfigButler/gitops-reverser/compare/v0.53.0...v0.54.0) (2026-10-25) + + +### ⚠ BREAKING CHANGES + +* **api:** who may use a GitProvider, a GitBranch or a KubeProvider is a list of grants on that object: GitProvider.spec.allowedGitBranches (replaces spec.allowedBranches), GitBranch.spec.allowedGitTargets, and KubeProvider.spec.allowedGitTargets and spec.allowedApplierClaims (replace ClusterProvider spec.accessFrom and spec.allowCrossNamespace). Each grant names its consumers in a required consumerNamespaces block (from: Same, Names, Selector or All). On a GitBranch or a KubeProvider an omitted list admits the object's own namespace; a GitProvider's list has no default, so omitted it admits no GitBranch. See docs/UPGRADING.md, "Grants say who may use a provider or a branch". +* **applier:** rename FluxTrigger/ArgoCDTrigger to FluxClaim/ArgoCDClaim ([#438](https://github.com/ConfigButler/gitops-reverser/issues/438)) +* **applier:** hold an Argo CD Application's automated sync off, as a suspend ([#437](https://github.com/ConfigButler/gitops-reverser/issues/437)) +* one GitReceiver for many repositories ([#432](https://github.com/ConfigButler/gitops-reverser/issues/432)) +* replace ClusterProvider with a namespaced KubeProvider ([#430](https://github.com/ConfigButler/gitops-reverser/issues/430)) +* hold a repository branch with a GitBranch ([#429](https://github.com/ConfigButler/gitops-reverser/issues/429)) +* a repository branch has one branch worker, keyed by the repository's URL and the branch, so an https and an SSH spelling of one repository are one branch. The GitBranch holding the branch decides which GitProvider's credential pushes it, and a GitProvider in another namespace is shared through the grants on it (spec.allowedGitBranches) and the GitBranch's spec.gitProviderRef.namespace, never copied. See docs/UPGRADING.md, "GitBranch holds a repository branch" and "Grants say who may use a provider or a branch". +* FluxTrigger spec.quietPeriod and status.source.prefetch are removed. An apply no longer waits for a quiet branch: the branch worker publishes what is pending, then applies. Server-side apply and kubectl's strict field validation reject a manifest that still sets spec.quietPeriod; a client with field validation off drops the field without an error. Remove spec.quietPeriod from FluxTrigger manifests before upgrading. + +### Features + +* answer the gitops-api team's open asks ([#445](https://github.com/ConfigButler/gitops-reverser/issues/445)) ([be991b8](https://github.com/ConfigButler/gitops-reverser/commit/be991b8cf254bf4f62dcc46bbb1da3957ed5116d)) +* **api:** an omitted GitBranch or KubeProvider grant list admits the object's own namespace ([#442](https://github.com/ConfigButler/gitops-reverser/issues/442)) ([0579999](https://github.com/ConfigButler/gitops-reverser/commit/057999994a349751d81b94f595230dd2b9837f8e)) +* **api:** explicit access grants between providers, branches and their users ([#441](https://github.com/ConfigButler/gitops-reverser/issues/441)) ([1c4fade](https://github.com/ConfigButler/gitops-reverser/commit/1c4fade43d29c746605a86d4df04c48945004cce)) +* **applier:** hold an Argo CD Application's automated sync off, as a suspend ([#437](https://github.com/ConfigButler/gitops-reverser/issues/437)) ([dec7056](https://github.com/ConfigButler/gitops-reverser/commit/dec7056b5d6df87f03392b3b83d011bb1e592d27)) +* hold a repository branch with a GitBranch ([#429](https://github.com/ConfigButler/gitops-reverser/issues/429)) ([17c0c96](https://github.com/ConfigButler/gitops-reverser/commit/17c0c969b48e3d6aad89a15a1d6d3ce68bc5a330)) +* one branch worker per repository branch, whatever GitProvider names it ([#428](https://github.com/ConfigButler/gitops-reverser/issues/428)) ([c49803f](https://github.com/ConfigButler/gitops-reverser/commit/c49803f396149aec2f7e9103f3e107746a7d1448)) +* one GitReceiver for many repositories ([#432](https://github.com/ConfigButler/gitops-reverser/issues/432)) ([6ae6272](https://github.com/ConfigButler/gitops-reverser/commit/6ae62722d6547246af6879d7bf5ea19489c9a878)) +* recognize the applier's own writes, and flush before applying ([#425](https://github.com/ConfigButler/gitops-reverser/issues/425)) ([2d98259](https://github.com/ConfigButler/gitops-reverser/commit/2d982594a0916379720f59603e5b2014b5df1db7)) +* replace ClusterProvider with a namespaced KubeProvider ([#430](https://github.com/ConfigButler/gitops-reverser/issues/430)) ([5d7d5f8](https://github.com/ConfigButler/gitops-reverser/commit/5d7d5f8802194c18eab35f6290dc288c961425e6)) + + +### Bug Fixes + +* **attribution:** credit a removal by what caused it, never by the watch's selector ([#431](https://github.com/ConfigButler/gitops-reverser/issues/431)) ([a52caca](https://github.com/ConfigButler/gitops-reverser/commit/a52caca2acaa9aac6bbac68d3fa7a996dcb19240)) +* **controller:** publish a refreshed status.remote when the floor lifts, and time the bi-directional loop ([#424](https://github.com/ConfigButler/gitops-reverser/issues/424)) ([3f00e09](https://github.com/ConfigButler/gitops-reverser/commit/3f00e098077af896d4853978eb58ed8d9697536f)) +* **git:** hold a live edit made while a GitTarget's render fidelity is pending, instead of dropping it ([#443](https://github.com/ConfigButler/gitops-reverser/issues/443)) ([1bc9790](https://github.com/ConfigButler/gitops-reverser/commit/1bc9790497d47c81a9f01628743e6b70a1f14b88)) + + +### Documentation + +* **api:** CRD description proposal, its review, and its implementation ([#448](https://github.com/ConfigButler/gitops-reverser/issues/448)) ([9ca1178](https://github.com/ConfigButler/gitops-reverser/commit/9ca117829cb0fe5cc8c2cad82c9dbe4c92a3fdca)) +* close the release gate in the TODO ([#444](https://github.com/ConfigButler/gitops-reverser/issues/444)) ([f4ae056](https://github.com/ConfigButler/gitops-reverser/commit/f4ae056cb60e8bad72a3e2079d343ed948ab3f7d)) + + +### Code Refactoring + +* **applier:** rename FluxTrigger/ArgoCDTrigger to FluxClaim/ArgoCDClaim ([#438](https://github.com/ConfigButler/gitops-reverser/issues/438)) ([efc0203](https://github.com/ConfigButler/gitops-reverser/commit/efc0203551820dd44a95c33f9aa5b7b8c87adb5c)) + ## [0.53.0](https://github.com/ConfigButler/gitops-reverser/compare/v0.52.0...v0.53.0) (2026-10-20) diff --git a/charts/gitops-reverser/Chart.yaml b/charts/gitops-reverser/Chart.yaml index 70ed117e..f9a7803b 100644 --- a/charts/gitops-reverser/Chart.yaml +++ b/charts/gitops-reverser/Chart.yaml @@ -4,8 +4,8 @@ description: >- A Kubernetes controller for two-way GitOps synchronization - reverse sync from Kubernetes to Git type: application -version: 0.53.0 -appVersion: 0.53.0 +version: 0.54.0 +appVersion: 0.54.0 keywords: - gitops - kubernetes diff --git a/charts/gitops-reverser/values.yaml b/charts/gitops-reverser/values.yaml index 5def3889..e255e890 100644 --- a/charts/gitops-reverser/values.yaml +++ b/charts/gitops-reverser/values.yaml @@ -13,7 +13,7 @@ deploymentStrategy: image: repository: ghcr.io/configbutler/gitops-reverser pullPolicy: IfNotPresent - tag: 0.53.0 # x-release-please-version + tag: 0.54.0 # x-release-please-version imagePullSecrets: [] nameOverride: ""