Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package flux2-cli for openSUSE:Factory checked in at 2026-04-22 16:58:01 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/flux2-cli (Old) and /work/SRC/openSUSE:Factory/.flux2-cli.new.11940 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "flux2-cli" Wed Apr 22 16:58:01 2026 rev:31 rq:1348598 version:2.8.6 Changes: -------- --- /work/SRC/openSUSE:Factory/flux2-cli/flux2-cli.changes 2026-04-14 17:51:50.288266351 +0200 +++ /work/SRC/openSUSE:Factory/.flux2-cli.new.11940/flux2-cli.changes 2026-04-22 16:58:36.897564246 +0200 @@ -1,0 +2,6 @@ +Tue Apr 21 15:47:07 UTC 2026 - Johannes Kastl <[email protected]> + +- Update to version 2.8.6: + * Update toolkit components by @fluxcdbot in #5857 + +------------------------------------------------------------------- Old: ---- flux2-cli-2.8.5.obscpio New: ---- flux2-cli-2.8.6.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ flux2-cli.spec ++++++ --- /var/tmp/diff_new_pack.DjbM1E/_old 2026-04-22 16:58:38.285621686 +0200 +++ /var/tmp/diff_new_pack.DjbM1E/_new 2026-04-22 16:58:38.289621851 +0200 @@ -20,16 +20,16 @@ # check these versions on updates # see flux2/manifests/bases/*/kustomization.yaml -%define helm_controller_version v1.5.3 -%define image_automation_controller_version v1.1.1 +%define helm_controller_version v1.5.4 +%define image_automation_controller_version v1.1.2 %define image_reflector_controller_version v1.1.1 -%define kustomize_controller_version v1.8.3 -%define notification_controller_version v1.8.3 -%define source_controller_version v1.8.2 +%define kustomize_controller_version v1.8.4 +%define notification_controller_version v1.8.4 +%define source_controller_version v1.8.3 %define source_watcher_version v2.1.1 Name: flux2-cli -Version: 2.8.5 +Version: 2.8.6 Release: 0 Summary: CLI for Flux2CD License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.DjbM1E/_old 2026-04-22 16:58:38.389625989 +0200 +++ /var/tmp/diff_new_pack.DjbM1E/_new 2026-04-22 16:58:38.393626155 +0200 @@ -3,7 +3,7 @@ <param name="url">https://github.com/fluxcd/flux2</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v2.8.5</param> + <param name="revision">v2.8.6</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.DjbM1E/_old 2026-04-22 16:58:38.425627479 +0200 +++ /var/tmp/diff_new_pack.DjbM1E/_new 2026-04-22 16:58:38.429627645 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/fluxcd/flux2</param> - <param name="changesrevision">5adad89dcce7b79f20274ae8e112bcec7bd46764</param></service></servicedata> + <param name="changesrevision">04acaec6161ac4fb1a82ffafa88901c03271d34f</param></service></servicedata> (No newline at EOF) ++++++ flux2-cli-2.8.5.obscpio -> flux2-cli-2.8.6.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flux2-cli-2.8.5/cmd/flux/create_receiver.go new/flux2-cli-2.8.6/cmd/flux/create_receiver.go --- old/flux2-cli-2.8.5/cmd/flux/create_receiver.go 2026-04-07 19:29:07.000000000 +0200 +++ new/flux2-cli-2.8.6/cmd/flux/create_receiver.go 2026-04-21 12:41:44.000000000 +0200 @@ -30,6 +30,7 @@ notificationv1 "github.com/fluxcd/notification-controller/api/v1" "github.com/fluxcd/pkg/apis/meta" + "github.com/fluxcd/flux2/v2/internal/flags" "github.com/fluxcd/flux2/v2/internal/utils" ) @@ -49,7 +50,7 @@ } type receiverFlags struct { - receiverType string + receiverType flags.ReceiverType secretRef string events []string resources []string @@ -58,7 +59,7 @@ var receiverArgs receiverFlags func init() { - createReceiverCmd.Flags().StringVar(&receiverArgs.receiverType, "type", "", "") + createReceiverCmd.Flags().Var(&receiverArgs.receiverType, "type", receiverArgs.receiverType.Description()) createReceiverCmd.Flags().StringVar(&receiverArgs.secretRef, "secret-ref", "", "") createReceiverCmd.Flags().StringSliceVar(&receiverArgs.events, "event", []string{}, "also accepts comma-separated values") createReceiverCmd.Flags().StringSliceVar(&receiverArgs.resources, "resource", []string{}, "also accepts comma-separated values") @@ -109,7 +110,7 @@ Labels: sourceLabels, }, Spec: notificationv1.ReceiverSpec{ - Type: receiverArgs.receiverType, + Type: receiverArgs.receiverType.String(), Events: receiverArgs.events, Resources: resources, SecretRef: meta.LocalObjectReference{ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flux2-cli-2.8.5/cmd/flux/create_secret.go new/flux2-cli-2.8.6/cmd/flux/create_secret.go --- old/flux2-cli-2.8.5/cmd/flux/create_secret.go 2026-04-07 19:29:07.000000000 +0200 +++ new/flux2-cli-2.8.6/cmd/flux/create_secret.go 2026-04-21 12:41:44.000000000 +0200 @@ -56,6 +56,22 @@ } existing.StringData = secret.StringData + if secret.Annotations != nil { + if existing.Annotations == nil { + existing.Annotations = make(map[string]string) + } + for k, v := range secret.Annotations { + existing.Annotations[k] = v + } + } + if secret.Labels != nil { + if existing.Labels == nil { + existing.Labels = make(map[string]string) + } + for k, v := range secret.Labels { + existing.Labels[k] = v + } + } if err := kubeClient.Update(ctx, &existing); err != nil { return err } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flux2-cli-2.8.5/cmd/flux/create_secret_receiver.go new/flux2-cli-2.8.6/cmd/flux/create_secret_receiver.go --- old/flux2-cli-2.8.5/cmd/flux/create_secret_receiver.go 1970-01-01 01:00:00.000000000 +0100 +++ new/flux2-cli-2.8.6/cmd/flux/create_secret_receiver.go 2026-04-21 12:41:44.000000000 +0200 @@ -0,0 +1,134 @@ +/* +Copyright 2026 The Flux authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package main + +import ( + "context" + "fmt" + + "github.com/spf13/cobra" + corev1 "k8s.io/api/core/v1" + "sigs.k8s.io/yaml" + + notificationv1 "github.com/fluxcd/notification-controller/api/v1" + + "github.com/fluxcd/flux2/v2/internal/flags" + "github.com/fluxcd/flux2/v2/internal/utils" + "github.com/fluxcd/flux2/v2/pkg/manifestgen/sourcesecret" +) + +var createSecretReceiverCmd = &cobra.Command{ + Use: "receiver [name]", + Short: "Create or update a Kubernetes secret for a Receiver webhook", + Long: `The create secret receiver command generates a Kubernetes secret with +the token used for webhook payload validation and an annotation with the +computed webhook URL.`, + Example: ` # Create a receiver secret for a GitHub webhook + flux create secret receiver github-receiver \ + --namespace=my-namespace \ + --type=github \ + --hostname=flux.example.com \ + --export + + # Create a receiver secret for GCR with email claim + flux create secret receiver gcr-receiver \ + --namespace=my-namespace \ + --type=gcr \ + --hostname=flux.example.com \ + [email protected] \ + --export`, + RunE: createSecretReceiverCmdRun, +} + +type secretReceiverFlags struct { + receiverType flags.ReceiverType + token string + hostname string + emailClaim string + audienceClaim string +} + +var secretReceiverArgs secretReceiverFlags + +func init() { + createSecretReceiverCmd.Flags().Var(&secretReceiverArgs.receiverType, "type", secretReceiverArgs.receiverType.Description()) + createSecretReceiverCmd.Flags().StringVar(&secretReceiverArgs.token, "token", "", "webhook token used for payload validation and URL computation, auto-generated if not specified") + createSecretReceiverCmd.Flags().StringVar(&secretReceiverArgs.hostname, "hostname", "", "hostname for the webhook URL e.g. flux.example.com") + createSecretReceiverCmd.Flags().StringVar(&secretReceiverArgs.emailClaim, "email-claim", "", "IAM service account email, required for gcr type") + createSecretReceiverCmd.Flags().StringVar(&secretReceiverArgs.audienceClaim, "audience-claim", "", "custom OIDC token audience for gcr type, defaults to the webhook URL") + + createSecretCmd.AddCommand(createSecretReceiverCmd) +} + +func createSecretReceiverCmdRun(cmd *cobra.Command, args []string) error { + name := args[0] + + if secretReceiverArgs.receiverType == "" { + return fmt.Errorf("--type is required") + } + + if secretReceiverArgs.hostname == "" { + return fmt.Errorf("--hostname is required") + } + + if secretReceiverArgs.receiverType.String() == notificationv1.GCRReceiver && secretReceiverArgs.emailClaim == "" { + return fmt.Errorf("--email-claim is required for gcr receiver type") + } + + labels, err := parseLabels() + if err != nil { + return err + } + + opts := sourcesecret.Options{ + Name: name, + Namespace: *kubeconfigArgs.Namespace, + Labels: labels, + ReceiverType: secretReceiverArgs.receiverType.String(), + Token: secretReceiverArgs.token, + Hostname: secretReceiverArgs.hostname, + EmailClaim: secretReceiverArgs.emailClaim, + AudienceClaim: secretReceiverArgs.audienceClaim, + } + + secret, err := sourcesecret.GenerateReceiver(opts) + if err != nil { + return err + } + + if createArgs.export { + rootCmd.Println(secret.Content) + return nil + } + + ctx, cancel := context.WithTimeout(context.Background(), rootArgs.timeout) + defer cancel() + kubeClient, err := utils.KubeClient(kubeconfigArgs, kubeclientOptions) + if err != nil { + return err + } + var s corev1.Secret + if err := yaml.Unmarshal([]byte(secret.Content), &s); err != nil { + return err + } + if err := upsertSecret(ctx, kubeClient, s); err != nil { + return err + } + + logger.Actionf("receiver secret '%s' created in '%s' namespace", name, *kubeconfigArgs.Namespace) + return nil +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flux2-cli-2.8.5/cmd/flux/create_secret_receiver_test.go new/flux2-cli-2.8.6/cmd/flux/create_secret_receiver_test.go --- old/flux2-cli-2.8.5/cmd/flux/create_secret_receiver_test.go 1970-01-01 01:00:00.000000000 +0100 +++ new/flux2-cli-2.8.6/cmd/flux/create_secret_receiver_test.go 2026-04-21 12:41:44.000000000 +0200 @@ -0,0 +1,74 @@ +/* +Copyright 2026 The Flux authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package main + +import ( + "testing" +) + +func TestCreateReceiverSecret(t *testing.T) { + tests := []struct { + name string + args string + assert assertFunc + }{ + { + name: "missing type", + args: "create secret receiver test-secret --token=t --hostname=h", + assert: assertError("--type is required"), + }, + { + name: "invalid type", + args: "create secret receiver test-secret --type=invalid --token=t --hostname=h", + assert: assertError("invalid argument \"invalid\" for \"--type\" flag: receiver type 'invalid' is not supported, must be one of: generic, generic-hmac, github, gitlab, bitbucket, harbor, dockerhub, quay, gcr, nexus, acr, cdevents"), + }, + { + name: "missing hostname", + args: "create secret receiver test-secret --type=github --token=t", + assert: assertError("--hostname is required"), + }, + { + name: "gcr missing email-claim", + args: "create secret receiver test-secret --type=gcr --token=t --hostname=h", + assert: assertError("--email-claim is required for gcr receiver type"), + }, + { + name: "github receiver secret", + args: "create secret receiver receiver-secret --type=github --token=test-token --hostname=flux.example.com --namespace=my-namespace --export", + assert: assertGoldenFile("testdata/create_secret/receiver/secret-receiver.yaml"), + }, + { + name: "gcr receiver secret", + args: "create secret receiver gcr-secret --type=gcr --token=test-token --hostname=flux.example.com [email protected] --namespace=my-namespace --export", + assert: assertGoldenFile("testdata/create_secret/receiver/secret-receiver-gcr.yaml"), + }, + { + name: "gcr receiver secret with custom audience", + args: "create secret receiver gcr-secret --type=gcr --token=test-token --hostname=flux.example.com [email protected] --audience-claim=https://custom.audience.example.com --namespace=my-namespace --export", + assert: assertGoldenFile("testdata/create_secret/receiver/secret-receiver-gcr-audience.yaml"), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cmd := cmdTestCase{ + args: tt.args, + assert: tt.assert, + } + cmd.runTestCmd(t) + }) + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flux2-cli-2.8.5/cmd/flux/main_test.go new/flux2-cli-2.8.6/cmd/flux/main_test.go --- old/flux2-cli-2.8.5/cmd/flux/main_test.go 2026-04-07 19:29:07.000000000 +0200 +++ new/flux2-cli-2.8.6/cmd/flux/main_test.go 2026-04-21 12:41:44.000000000 +0200 @@ -456,6 +456,7 @@ secretGitArgs = NewSecretGitFlags() secretGitHubAppArgs = secretGitHubAppFlags{} secretProxyArgs = secretProxyFlags{} + secretReceiverArgs = secretReceiverFlags{} secretHelmArgs = secretHelmFlags{} secretTLSArgs = secretTLSFlags{} sourceBucketArgs = sourceBucketFlags{} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flux2-cli-2.8.5/cmd/flux/testdata/create_secret/receiver/secret-receiver-gcr-audience.yaml new/flux2-cli-2.8.6/cmd/flux/testdata/create_secret/receiver/secret-receiver-gcr-audience.yaml --- old/flux2-cli-2.8.5/cmd/flux/testdata/create_secret/receiver/secret-receiver-gcr-audience.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/flux2-cli-2.8.6/cmd/flux/testdata/create_secret/receiver/secret-receiver-gcr-audience.yaml 2026-04-21 12:41:44.000000000 +0200 @@ -0,0 +1,13 @@ +--- +apiVersion: v1 +kind: Secret +metadata: + annotations: + notification.toolkit.fluxcd.io/webhook: https://flux.example.com/hook/6d6c55e9affb9d1e0d101ce604ae4270880ec1ff24d1bd2d928fcd64243d21a4 + name: gcr-secret + namespace: my-namespace +stringData: + audience: https://custom.audience.example.com + email: [email protected] + token: test-token + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flux2-cli-2.8.5/cmd/flux/testdata/create_secret/receiver/secret-receiver-gcr.yaml new/flux2-cli-2.8.6/cmd/flux/testdata/create_secret/receiver/secret-receiver-gcr.yaml --- old/flux2-cli-2.8.5/cmd/flux/testdata/create_secret/receiver/secret-receiver-gcr.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/flux2-cli-2.8.6/cmd/flux/testdata/create_secret/receiver/secret-receiver-gcr.yaml 2026-04-21 12:41:44.000000000 +0200 @@ -0,0 +1,13 @@ +--- +apiVersion: v1 +kind: Secret +metadata: + annotations: + notification.toolkit.fluxcd.io/webhook: https://flux.example.com/hook/6d6c55e9affb9d1e0d101ce604ae4270880ec1ff24d1bd2d928fcd64243d21a4 + name: gcr-secret + namespace: my-namespace +stringData: + audience: https://flux.example.com/hook/6d6c55e9affb9d1e0d101ce604ae4270880ec1ff24d1bd2d928fcd64243d21a4 + email: [email protected] + token: test-token + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flux2-cli-2.8.5/cmd/flux/testdata/create_secret/receiver/secret-receiver.yaml new/flux2-cli-2.8.6/cmd/flux/testdata/create_secret/receiver/secret-receiver.yaml --- old/flux2-cli-2.8.5/cmd/flux/testdata/create_secret/receiver/secret-receiver.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/flux2-cli-2.8.6/cmd/flux/testdata/create_secret/receiver/secret-receiver.yaml 2026-04-21 12:41:44.000000000 +0200 @@ -0,0 +1,11 @@ +--- +apiVersion: v1 +kind: Secret +metadata: + annotations: + notification.toolkit.fluxcd.io/webhook: https://flux.example.com/hook/106120121d366c2f67e93200f6c1dbe938235eb588daa5e8c0516d3a77ac1dee + name: receiver-secret + namespace: my-namespace +stringData: + token: test-token + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flux2-cli-2.8.5/go.mod new/flux2-cli-2.8.6/go.mod --- old/flux2-cli-2.8.5/go.mod 2026-04-07 19:29:07.000000000 +0200 +++ new/flux2-cli-2.8.6/go.mod 2026-04-21 12:41:44.000000000 +0200 @@ -12,11 +12,11 @@ github.com/distribution/distribution/v3 v3.0.0 github.com/fluxcd/cli-utils v0.37.2-flux.1 github.com/fluxcd/go-git-providers v0.26.0 - github.com/fluxcd/helm-controller/api v1.5.3 - github.com/fluxcd/image-automation-controller/api v1.1.1 + github.com/fluxcd/helm-controller/api v1.5.4 + github.com/fluxcd/image-automation-controller/api v1.1.2 github.com/fluxcd/image-reflector-controller/api v1.1.1 - github.com/fluxcd/kustomize-controller/api v1.8.3 - github.com/fluxcd/notification-controller/api v1.8.3 + github.com/fluxcd/kustomize-controller/api v1.8.4 + github.com/fluxcd/notification-controller/api v1.8.4 github.com/fluxcd/pkg/apis/event v0.24.1 github.com/fluxcd/pkg/apis/meta v1.25.1 github.com/fluxcd/pkg/auth v0.38.4 @@ -31,7 +31,7 @@ github.com/fluxcd/pkg/ssh v0.24.0 github.com/fluxcd/pkg/tar v0.17.0 github.com/fluxcd/pkg/version v0.12.0 - github.com/fluxcd/source-controller/api v1.8.2 + github.com/fluxcd/source-controller/api v1.8.3 github.com/fluxcd/source-watcher/api/v2 v2.1.1 github.com/go-git/go-git/v5 v5.16.5 github.com/go-logr/logr v1.4.3 @@ -50,9 +50,9 @@ github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 github.com/spf13/cobra v1.10.2 github.com/theckman/yacspin v0.13.12 - golang.org/x/crypto v0.48.0 - golang.org/x/term v0.40.0 - golang.org/x/text v0.34.0 + golang.org/x/crypto v0.50.0 + golang.org/x/term v0.42.0 + golang.org/x/text v0.36.0 k8s.io/api v0.35.2 k8s.io/apiextensions-apiserver v0.35.2 k8s.io/apimachinery v0.35.2 @@ -242,10 +242,10 @@ go.opentelemetry.io/proto/otlp v1.9.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/net v0.50.0 // indirect + golang.org/x/net v0.53.0 // indirect golang.org/x/oauth2 v0.35.0 // indirect - golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.41.0 // indirect + golang.org/x/sync v0.20.0 // indirect + golang.org/x/sys v0.43.0 // indirect golang.org/x/time v0.14.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect google.golang.org/api v0.261.0 // indirect diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flux2-cli-2.8.5/go.sum new/flux2-cli-2.8.6/go.sum --- old/flux2-cli-2.8.5/go.sum 2026-04-07 19:29:07.000000000 +0200 +++ new/flux2-cli-2.8.6/go.sum 2026-04-21 12:41:44.000000000 +0200 @@ -174,16 +174,16 @@ github.com/fluxcd/gitkit v0.6.0/go.mod h1:svOHuKi0fO9HoawdK4HfHAJJseZDHHjk7I3ihnCIqNo= github.com/fluxcd/go-git-providers v0.26.0 h1:0DUsXc1nS9Fe4n8tXSEUCGemWzHShd66gmotayDPekw= github.com/fluxcd/go-git-providers v0.26.0/go.mod h1:VJDKUOhZwNAIqDF5iPtIpTr/annsDbKMkPpWiDMBdpo= -github.com/fluxcd/helm-controller/api v1.5.3 h1:ruLzuyTHjjE9A5B/U+Id2q7yHXXqSFTswdZ14xCS5So= -github.com/fluxcd/helm-controller/api v1.5.3/go.mod h1:lTgeUmtVYExMKp7mRDncsr4JwHTz3LFtLjRJZeR98lI= -github.com/fluxcd/image-automation-controller/api v1.1.1 h1:uiu7kjdVoW8/461HOemX6I7RcPornEzQliWgTg6LnWI= -github.com/fluxcd/image-automation-controller/api v1.1.1/go.mod h1:lkD/drkD6Wc+2SDjVj5KqfozEucTLFexWgby/5ft660= +github.com/fluxcd/helm-controller/api v1.5.4 h1:wbAwD+cSGBZEhT3qq1naBKkitdNbqRtWQUFNA3XTXOc= +github.com/fluxcd/helm-controller/api v1.5.4/go.mod h1:lTgeUmtVYExMKp7mRDncsr4JwHTz3LFtLjRJZeR98lI= +github.com/fluxcd/image-automation-controller/api v1.1.2 h1:Maa4qycz+iBCN/yJv9xNvuuj2IYihDAsSVwpHLhxkuk= +github.com/fluxcd/image-automation-controller/api v1.1.2/go.mod h1:lkD/drkD6Wc+2SDjVj5KqfozEucTLFexWgby/5ft660= github.com/fluxcd/image-reflector-controller/api v1.1.1 h1:4Bj1abzVnjj8+b/293kNeFMRJc+y2wO8Z12ReZ/gA0w= github.com/fluxcd/image-reflector-controller/api v1.1.1/go.mod h1:j4JSIocL42HQ77Veg1t60sApOy+lng8/cbXHXGSnfi0= -github.com/fluxcd/kustomize-controller/api v1.8.3 h1:Ux9AAOY0lkP6FgRg5/b/ITvRSy8lz6VBBaZ9bXmTLmI= -github.com/fluxcd/kustomize-controller/api v1.8.3/go.mod h1:c/mUPIffDDLg1EicXCJtX4N/rc+z5Zh0e/CXjhd7Dyc= -github.com/fluxcd/notification-controller/api v1.8.3 h1:edYpC/t4pNw/KQur189SRC1XtFNU597ooDTCrW90Xmw= -github.com/fluxcd/notification-controller/api v1.8.3/go.mod h1:ozgJGQPy0dG5eOsLZlwAr6n0q/y6+TWd1fGOtavlXJA= +github.com/fluxcd/kustomize-controller/api v1.8.4 h1:13+9CgxGj67Bn7wzFILw8S4r4urEgiLTODwjA4XU0mU= +github.com/fluxcd/kustomize-controller/api v1.8.4/go.mod h1:c/mUPIffDDLg1EicXCJtX4N/rc+z5Zh0e/CXjhd7Dyc= +github.com/fluxcd/notification-controller/api v1.8.4 h1:KhHHVhQNtQsY+cVm/Y/8vhhFfrEOxM2AL/8JF8LAjMg= +github.com/fluxcd/notification-controller/api v1.8.4/go.mod h1:ozgJGQPy0dG5eOsLZlwAr6n0q/y6+TWd1fGOtavlXJA= github.com/fluxcd/pkg/apis/acl v0.9.0 h1:wBpgsKT+jcyZEcM//OmZr9RiF8klL3ebrDp2u2ThsnA= github.com/fluxcd/pkg/apis/acl v0.9.0/go.mod h1:TttNS+gocsGLwnvmgVi3/Yscwqrjc17+vhgYfqkfrV4= github.com/fluxcd/pkg/apis/event v0.24.1 h1:TClVdn02aiq3sAl9BuzLjjTIxm3JJ83fJ9nchtBa4qg= @@ -220,8 +220,8 @@ github.com/fluxcd/pkg/tar v0.17.0/go.mod h1:b1xyIRYDD0ket4SV5u0UXYv+ZdN/O/HmIO5jZQdHQls= github.com/fluxcd/pkg/version v0.12.0 h1:MGbdbNf2D5wazMqAkNPn+Lh5j+oY0gxQJFTGyet5Hfc= github.com/fluxcd/pkg/version v0.12.0/go.mod h1:YHdg/78kzf+kCqS+SqSOiUxum5AjxlixiqwpX6AUZB8= -github.com/fluxcd/source-controller/api v1.8.2 h1:i0/6BeNCn+zRfX+gKh4PsFF2NBzBhwXt0wPImVlZObg= -github.com/fluxcd/source-controller/api v1.8.2/go.mod h1:HgZ6NSH1cyOE2jRoNwln1xEwr9ETvrLeiy1o4O04vQM= +github.com/fluxcd/source-controller/api v1.8.3 h1:WNEETjmp/YTZx5IMg9ewz2Wn8YzOVETeJJ0LIPivm40= +github.com/fluxcd/source-controller/api v1.8.3/go.mod h1:sio4t49RDx+S1etHRFAEEw8qfVuw0KKlOg8bRVlEYPM= github.com/fluxcd/source-watcher/api/v2 v2.1.1 h1:1LfT50ty+78MKKbschAZl28QbVqIyjaNq17KmW5wPJI= github.com/fluxcd/source-watcher/api/v2 v2.1.1/go.mod h1:6M1BzBGQRoIuSenSQlfJHwMVVobFPiNPxXqfN0IILc4= github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= @@ -619,15 +619,15 @@ golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= -golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= -golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI= +golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.32.0 h1:9F4d3PHLljb6x//jOyokMv3eX+YDeepZSEo3mFJy93c= -golang.org/x/mod v0.32.0/go.mod h1:SgipZ/3h2Ci89DlEtEXWUk/HteuRin+HHhN+WbNhguU= +golang.org/x/mod v0.34.0 h1:xIHgNUUnW6sYkcM5Jleh05DvLOtwc6RitGHbDk4akRI= +golang.org/x/mod v0.34.0/go.mod h1:ykgH52iCZe79kzLLMhyCUzhMci+nQj+0XkbXpNYtVjY= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -643,8 +643,8 @@ golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= -golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= -golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= +golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= +golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ= golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -656,8 +656,8 @@ golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= -golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -683,8 +683,8 @@ golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= +golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -694,8 +694,8 @@ golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= -golang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg= -golang.org/x/term v0.40.0/go.mod h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM= +golang.org/x/term v0.42.0 h1:UiKe+zDFmJobeJ5ggPwOshJIVt6/Ft0rcfrXZDLWAWY= +golang.org/x/term v0.42.0/go.mod h1:Dq/D+snpsbazcBG5+F9Q1n2rXV8Ma+71xEjTRufARgY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -706,8 +706,8 @@ golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= -golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= +golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= +golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -716,8 +716,8 @@ golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.41.0 h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc= -golang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg= +golang.org/x/tools v0.43.0 h1:12BdW9CeB3Z+J/I/wj34VMl8X+fEXBxVR90JeMX5E7s= +golang.org/x/tools v0.43.0/go.mod h1:uHkMso649BX2cZK6+RpuIPXS3ho2hZo4FVwfoy1vIk0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gomodules.xyz/jsonpatch/v2 v2.5.0 h1:JELs8RLM12qJGXU4u/TO3V25KW8GreMKl9pdkk14RM0= gomodules.xyz/jsonpatch/v2 v2.5.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flux2-cli-2.8.5/internal/flags/receiver_type.go new/flux2-cli-2.8.6/internal/flags/receiver_type.go --- old/flux2-cli-2.8.5/internal/flags/receiver_type.go 1970-01-01 01:00:00.000000000 +0100 +++ new/flux2-cli-2.8.6/internal/flags/receiver_type.go 2026-04-21 12:41:44.000000000 +0200 @@ -0,0 +1,68 @@ +/* +Copyright 2026 The Flux authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flags + +import ( + "fmt" + "strings" + + notificationv1 "github.com/fluxcd/notification-controller/api/v1" + + "github.com/fluxcd/flux2/v2/internal/utils" +) + +var supportedReceiverTypes = []string{ + notificationv1.GenericReceiver, + notificationv1.GenericHMACReceiver, + notificationv1.GitHubReceiver, + notificationv1.GitLabReceiver, + notificationv1.BitbucketReceiver, + notificationv1.HarborReceiver, + notificationv1.DockerHubReceiver, + notificationv1.QuayReceiver, + notificationv1.GCRReceiver, + notificationv1.NexusReceiver, + notificationv1.ACRReceiver, + notificationv1.CDEventsReceiver, +} + +type ReceiverType string + +func (r *ReceiverType) String() string { + return string(*r) +} + +func (r *ReceiverType) Set(str string) error { + if strings.TrimSpace(str) == "" { + return fmt.Errorf("no receiver type given, please specify %s", + r.Description()) + } + if !utils.ContainsItemString(supportedReceiverTypes, str) { + return fmt.Errorf("receiver type '%s' is not supported, must be one of: %s", + str, strings.Join(supportedReceiverTypes, ", ")) + } + *r = ReceiverType(str) + return nil +} + +func (r *ReceiverType) Type() string { + return strings.Join(supportedReceiverTypes, "|") +} + +func (r *ReceiverType) Description() string { + return "the receiver type" +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flux2-cli-2.8.5/manifests/bases/helm-controller/kustomization.yaml new/flux2-cli-2.8.6/manifests/bases/helm-controller/kustomization.yaml --- old/flux2-cli-2.8.5/manifests/bases/helm-controller/kustomization.yaml 2026-04-07 19:29:07.000000000 +0200 +++ new/flux2-cli-2.8.6/manifests/bases/helm-controller/kustomization.yaml 2026-04-21 12:41:44.000000000 +0200 @@ -1,8 +1,8 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: -- https://github.com/fluxcd/helm-controller/releases/download/v1.5.3/helm-controller.crds.yaml -- https://github.com/fluxcd/helm-controller/releases/download/v1.5.3/helm-controller.deployment.yaml +- https://github.com/fluxcd/helm-controller/releases/download/v1.5.4/helm-controller.crds.yaml +- https://github.com/fluxcd/helm-controller/releases/download/v1.5.4/helm-controller.deployment.yaml - account.yaml transformers: - labels.yaml diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flux2-cli-2.8.5/manifests/bases/image-automation-controller/kustomization.yaml new/flux2-cli-2.8.6/manifests/bases/image-automation-controller/kustomization.yaml --- old/flux2-cli-2.8.5/manifests/bases/image-automation-controller/kustomization.yaml 2026-04-07 19:29:07.000000000 +0200 +++ new/flux2-cli-2.8.6/manifests/bases/image-automation-controller/kustomization.yaml 2026-04-21 12:41:44.000000000 +0200 @@ -1,8 +1,8 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: -- https://github.com/fluxcd/image-automation-controller/releases/download/v1.1.1/image-automation-controller.crds.yaml -- https://github.com/fluxcd/image-automation-controller/releases/download/v1.1.1/image-automation-controller.deployment.yaml +- https://github.com/fluxcd/image-automation-controller/releases/download/v1.1.2/image-automation-controller.crds.yaml +- https://github.com/fluxcd/image-automation-controller/releases/download/v1.1.2/image-automation-controller.deployment.yaml - account.yaml transformers: - labels.yaml diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flux2-cli-2.8.5/manifests/bases/kustomize-controller/kustomization.yaml new/flux2-cli-2.8.6/manifests/bases/kustomize-controller/kustomization.yaml --- old/flux2-cli-2.8.5/manifests/bases/kustomize-controller/kustomization.yaml 2026-04-07 19:29:07.000000000 +0200 +++ new/flux2-cli-2.8.6/manifests/bases/kustomize-controller/kustomization.yaml 2026-04-21 12:41:44.000000000 +0200 @@ -1,8 +1,8 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: -- https://github.com/fluxcd/kustomize-controller/releases/download/v1.8.3/kustomize-controller.crds.yaml -- https://github.com/fluxcd/kustomize-controller/releases/download/v1.8.3/kustomize-controller.deployment.yaml +- https://github.com/fluxcd/kustomize-controller/releases/download/v1.8.4/kustomize-controller.crds.yaml +- https://github.com/fluxcd/kustomize-controller/releases/download/v1.8.4/kustomize-controller.deployment.yaml - account.yaml transformers: - labels.yaml diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flux2-cli-2.8.5/manifests/bases/notification-controller/kustomization.yaml new/flux2-cli-2.8.6/manifests/bases/notification-controller/kustomization.yaml --- old/flux2-cli-2.8.5/manifests/bases/notification-controller/kustomization.yaml 2026-04-07 19:29:07.000000000 +0200 +++ new/flux2-cli-2.8.6/manifests/bases/notification-controller/kustomization.yaml 2026-04-21 12:41:44.000000000 +0200 @@ -1,8 +1,8 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: -- https://github.com/fluxcd/notification-controller/releases/download/v1.8.3/notification-controller.crds.yaml -- https://github.com/fluxcd/notification-controller/releases/download/v1.8.3/notification-controller.deployment.yaml +- https://github.com/fluxcd/notification-controller/releases/download/v1.8.4/notification-controller.crds.yaml +- https://github.com/fluxcd/notification-controller/releases/download/v1.8.4/notification-controller.deployment.yaml - account.yaml transformers: - labels.yaml diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flux2-cli-2.8.5/manifests/bases/source-controller/kustomization.yaml new/flux2-cli-2.8.6/manifests/bases/source-controller/kustomization.yaml --- old/flux2-cli-2.8.5/manifests/bases/source-controller/kustomization.yaml 2026-04-07 19:29:07.000000000 +0200 +++ new/flux2-cli-2.8.6/manifests/bases/source-controller/kustomization.yaml 2026-04-21 12:41:44.000000000 +0200 @@ -1,8 +1,8 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: -- https://github.com/fluxcd/source-controller/releases/download/v1.8.2/source-controller.crds.yaml -- https://github.com/fluxcd/source-controller/releases/download/v1.8.2/source-controller.deployment.yaml +- https://github.com/fluxcd/source-controller/releases/download/v1.8.3/source-controller.crds.yaml +- https://github.com/fluxcd/source-controller/releases/download/v1.8.3/source-controller.deployment.yaml - account.yaml transformers: - labels.yaml diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flux2-cli-2.8.5/manifests/crds/kustomization.yaml new/flux2-cli-2.8.6/manifests/crds/kustomization.yaml --- old/flux2-cli-2.8.5/manifests/crds/kustomization.yaml 2026-04-07 19:29:07.000000000 +0200 +++ new/flux2-cli-2.8.6/manifests/crds/kustomization.yaml 2026-04-21 12:41:44.000000000 +0200 @@ -1,10 +1,10 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: -- https://github.com/fluxcd/source-controller/releases/download/v1.8.2/source-controller.crds.yaml -- https://github.com/fluxcd/kustomize-controller/releases/download/v1.8.3/kustomize-controller.crds.yaml -- https://github.com/fluxcd/helm-controller/releases/download/v1.5.3/helm-controller.crds.yaml -- https://github.com/fluxcd/notification-controller/releases/download/v1.8.3/notification-controller.crds.yaml +- https://github.com/fluxcd/source-controller/releases/download/v1.8.3/source-controller.crds.yaml +- https://github.com/fluxcd/kustomize-controller/releases/download/v1.8.4/kustomize-controller.crds.yaml +- https://github.com/fluxcd/helm-controller/releases/download/v1.5.4/helm-controller.crds.yaml +- https://github.com/fluxcd/notification-controller/releases/download/v1.8.4/notification-controller.crds.yaml - https://github.com/fluxcd/image-reflector-controller/releases/download/v1.1.1/image-reflector-controller.crds.yaml -- https://github.com/fluxcd/image-automation-controller/releases/download/v1.1.1/image-automation-controller.crds.yaml +- https://github.com/fluxcd/image-automation-controller/releases/download/v1.1.2/image-automation-controller.crds.yaml - https://github.com/fluxcd/source-watcher/releases/download/v2.1.1/source-watcher.crds.yaml diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flux2-cli-2.8.5/pkg/manifestgen/sourcesecret/options.go new/flux2-cli-2.8.6/pkg/manifestgen/sourcesecret/options.go --- old/flux2-cli-2.8.5/pkg/manifestgen/sourcesecret/options.go 2026-04-07 19:29:07.000000000 +0200 +++ new/flux2-cli-2.8.6/pkg/manifestgen/sourcesecret/options.go 2026-04-21 12:41:44.000000000 +0200 @@ -42,6 +42,12 @@ KnownHostsSecretKey = "known_hosts" BearerTokenKey = "bearerToken" TrustPolicyKey = "trustpolicy.json" + TokenSecretKey = "token" + EmailSecretKey = "email" + AudienceSecretKey = "audience" + + // WebhookURLAnnotation is the annotation key for the computed webhook URL. + WebhookURLAnnotation = "notification.toolkit.fluxcd.io/webhook" // Deprecated: Replaced by CACrtSecretKey, but kept for backwards // compatibility with deprecated TLS flags. @@ -82,6 +88,13 @@ GitHubAppInstallationID string GitHubAppPrivateKey string GitHubAppBaseURL string + + // Receiver options + ReceiverType string + Token string + Hostname string + EmailClaim string + AudienceClaim string } type VerificationCrt struct { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flux2-cli-2.8.5/pkg/manifestgen/sourcesecret/sourcesecret.go new/flux2-cli-2.8.6/pkg/manifestgen/sourcesecret/sourcesecret.go --- old/flux2-cli-2.8.5/pkg/manifestgen/sourcesecret/sourcesecret.go 2026-04-07 19:29:07.000000000 +0200 +++ new/flux2-cli-2.8.6/pkg/manifestgen/sourcesecret/sourcesecret.go 2026-04-21 12:41:44.000000000 +0200 @@ -18,7 +18,10 @@ import ( "bytes" + "crypto/rand" + "crypto/sha256" "encoding/base64" + "encoding/hex" "encoding/json" "fmt" "net" @@ -260,6 +263,59 @@ return secretToManifest(secret, options) } +func GenerateReceiver(options Options) (*manifestgen.Manifest, error) { + token := options.Token + if token == "" { + b := make([]byte, 32) + if _, err := rand.Read(b); err != nil { + return nil, fmt.Errorf("failed to generate random token: %w", err) + } + token = hex.EncodeToString(b) + } + + if options.Hostname == "" { + return nil, fmt.Errorf("hostname is required") + } + + // Compute the webhook path using the same algorithm as notification-controller. + // See: github.com/fluxcd/notification-controller/api/v1.Receiver.GetWebhookPath + digest := sha256.Sum256([]byte(token + options.Name + options.Namespace)) + webhookPath := fmt.Sprintf("/hook/%x", digest) + webhookURL := fmt.Sprintf("https://%s%s", options.Hostname, webhookPath) + + secret := &corev1.Secret{ + TypeMeta: metav1.TypeMeta{ + APIVersion: "v1", + Kind: "Secret", + }, + ObjectMeta: metav1.ObjectMeta{ + Name: options.Name, + Namespace: options.Namespace, + Labels: options.Labels, + Annotations: map[string]string{ + WebhookURLAnnotation: webhookURL, + }, + }, + StringData: map[string]string{ + TokenSecretKey: token, + }, + } + + if options.ReceiverType == "gcr" { + if options.EmailClaim == "" { + return nil, fmt.Errorf("email-claim is required for gcr receiver type") + } + secret.StringData[EmailSecretKey] = options.EmailClaim + if options.AudienceClaim != "" { + secret.StringData[AudienceSecretKey] = options.AudienceClaim + } else { + secret.StringData[AudienceSecretKey] = webhookURL + } + } + + return secretToManifest(secret, options) +} + func LoadKeyPairFromPath(path, password string) (*ssh.KeyPair, error) { if path == "" { return nil, nil ++++++ flux2-cli.obsinfo ++++++ --- /var/tmp/diff_new_pack.DjbM1E/_old 2026-04-22 16:58:40.513713885 +0200 +++ /var/tmp/diff_new_pack.DjbM1E/_new 2026-04-22 16:58:40.565716037 +0200 @@ -1,5 +1,5 @@ name: flux2-cli -version: 2.8.5 -mtime: 1775582947 -commit: 5adad89dcce7b79f20274ae8e112bcec7bd46764 +version: 2.8.6 +mtime: 1776768104 +commit: 04acaec6161ac4fb1a82ffafa88901c03271d34f ++++++ helm-controller.crds.yaml ++++++ --- /var/tmp/diff_new_pack.DjbM1E/_old 2026-04-22 16:58:40.893729610 +0200 +++ /var/tmp/diff_new_pack.DjbM1E/_new 2026-04-22 16:58:40.941731597 +0200 @@ -755,8 +755,11 @@ rollback has been performed. type: boolean force: - description: Force forces resource updates through a replacement - strategy. + description: |- + Force forces resource updates through a replacement strategy + that avoids 3-way merge conflicts on client-side apply. + This field is ignored for server-side apply (which always + forces conflicts with other field managers). type: boolean recreate: description: |- @@ -960,8 +963,11 @@ upgrade has been performed. type: boolean force: - description: Force forces resource updates through a replacement - strategy. + description: |- + Force forces resource updates through a replacement strategy + that avoids 3-way merge conflicts on client-side apply. + This field is ignored for server-side apply (which always + forces conflicts with other field managers). type: boolean preserveValues: description: |- ++++++ helm-controller.deployment.yaml ++++++ --- /var/tmp/diff_new_pack.DjbM1E/_old 2026-04-22 16:58:41.177741363 +0200 +++ /var/tmp/diff_new_pack.DjbM1E/_new 2026-04-22 16:58:41.245744177 +0200 @@ -28,7 +28,7 @@ valueFrom: fieldRef: fieldPath: metadata.namespace - image: fluxcd/helm-controller:v1.5.3 + image: fluxcd/helm-controller:v1.5.4 imagePullPolicy: IfNotPresent livenessProbe: httpGet: ++++++ image-automation-controller.deployment.yaml ++++++ --- /var/tmp/diff_new_pack.DjbM1E/_old 2026-04-22 16:58:41.673761889 +0200 +++ /var/tmp/diff_new_pack.DjbM1E/_new 2026-04-22 16:58:41.729764206 +0200 @@ -28,7 +28,7 @@ valueFrom: fieldRef: fieldPath: metadata.namespace - image: fluxcd/image-automation-controller:v1.1.1 + image: fluxcd/image-automation-controller:v1.1.2 imagePullPolicy: IfNotPresent livenessProbe: httpGet: ++++++ kustomize-controller.deployment.yaml ++++++ --- /var/tmp/diff_new_pack.DjbM1E/_old 2026-04-22 16:58:42.313788373 +0200 +++ /var/tmp/diff_new_pack.DjbM1E/_new 2026-04-22 16:58:42.357790194 +0200 @@ -28,7 +28,7 @@ valueFrom: fieldRef: fieldPath: metadata.namespace - image: fluxcd/kustomize-controller:v1.8.3 + image: fluxcd/kustomize-controller:v1.8.4 imagePullPolicy: IfNotPresent livenessProbe: httpGet: ++++++ notification-controller.crds.yaml ++++++ --- /var/tmp/diff_new_pack.DjbM1E/_old 2026-04-22 16:58:42.557798471 +0200 +++ /var/tmp/diff_new_pack.DjbM1E/_new 2026-04-22 16:58:42.597800125 +0200 @@ -928,8 +928,7 @@ to validate the payload authenticity. The Secret must contain a 'token' key. For GCR receivers, the Secret must also contain an 'email' key with the IAM service account email configured on the Pub/Sub push - subscription, and may optionally contain an 'audience' key with the - expected OIDC token audience. + subscription, and an 'audience' key with the expected OIDC token audience. properties: name: description: Name of the referent. ++++++ notification-controller.deployment.yaml ++++++ --- /var/tmp/diff_new_pack.DjbM1E/_old 2026-04-22 16:58:42.793808237 +0200 +++ /var/tmp/diff_new_pack.DjbM1E/_new 2026-04-22 16:58:42.837810058 +0200 @@ -60,7 +60,7 @@ valueFrom: fieldRef: fieldPath: metadata.namespace - image: fluxcd/notification-controller:v1.8.3 + image: fluxcd/notification-controller:v1.8.4 imagePullPolicy: IfNotPresent livenessProbe: httpGet: ++++++ source-controller.deployment.yaml ++++++ --- /var/tmp/diff_new_pack.DjbM1E/_old 2026-04-22 16:58:43.197824955 +0200 +++ /var/tmp/diff_new_pack.DjbM1E/_new 2026-04-22 16:58:43.233826445 +0200 @@ -50,7 +50,7 @@ fieldPath: metadata.namespace - name: TUF_ROOT value: /tmp/.sigstore - image: fluxcd/source-controller:v1.8.2 + image: fluxcd/source-controller:v1.8.3 imagePullPolicy: IfNotPresent livenessProbe: httpGet: ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/flux2-cli/vendor.tar.gz /work/SRC/openSUSE:Factory/.flux2-cli.new.11940/vendor.tar.gz differ: char 13, line 1
