github.com/redhat-appstudio/e2e-tests@v0.0.0-20240520140907-9709f6f59323/pkg/clients/tekton/signing_secret.go (about) 1 package tekton 2 3 import ( 4 "context" 5 6 corev1 "k8s.io/api/core/v1" 7 "k8s.io/apimachinery/pkg/api/errors" 8 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 9 ) 10 11 // CreateOrUpdateSigningSecret creates a signing secret if it doesn't exist, otherwise updates the existing one. 12 func (t *TektonController) CreateOrUpdateSigningSecret(publicKey []byte, name, namespace string) (err error) { 13 api := t.KubeInterface().CoreV1().Secrets(namespace) 14 ctx := context.Background() 15 16 expectedSecret := &corev1.Secret{ 17 ObjectMeta: metav1.ObjectMeta{Name: name}, 18 Data: map[string][]byte{"cosign.pub": publicKey}, 19 } 20 21 s, err := api.Get(ctx, name, metav1.GetOptions{}) 22 if err != nil { 23 if !errors.IsNotFound(err) { 24 return 25 } 26 if _, err = api.Create(ctx, expectedSecret, metav1.CreateOptions{}); err != nil { 27 return 28 } 29 } else { 30 if string(s.Data["cosign.pub"]) != string(publicKey) { 31 if _, err = api.Update(ctx, expectedSecret, metav1.UpdateOptions{}); err != nil { 32 return 33 } 34 } 35 } 36 return 37 }