github.com/verrazzano/verrazzano@v1.7.1/tools/psr/tests/pkg/secrets/pipeline_secrets.go (about)

     1  // Copyright (c) 2022, Oracle and/or its affiliates.
     2  // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
     3  
     4  package secrets
     5  
     6  import (
     7  	"fmt"
     8  	"k8s.io/apimachinery/pkg/api/errors"
     9  	"os"
    10  
    11  	"github.com/verrazzano/verrazzano/pkg/log/vzlog"
    12  	"github.com/verrazzano/verrazzano/tests/e2e/pkg"
    13  )
    14  
    15  const (
    16  	//PipelineImagePullSecName Image pull secr env var name for pipeline
    17  	PipelineImagePullSecName = "IMAGE_PULL_SECRET"
    18  	//PipelineRegistryKey Docker registry env var name for pipeline
    19  	PipelineRegistryKey = "DOCKER_REGISTRY"
    20  	//PipelineDockerUserKey Docker user env var name for pipeline
    21  	PipelineDockerUserKey = "DOCKER_CREDS_USR"
    22  	//PipelineDockerPswKey Docker credential env var name for pipeline
    23  	PipelineDockerPswKey = "DOCKER_CREDS_PSW"
    24  
    25  	//DefaultImagePullSecName Default image pull sec name
    26  	DefaultImagePullSecName = "verrazzano-container-registry"
    27  )
    28  
    29  // CreateOrUpdatePipelineImagePullSecret Creates an image pull secret for a Pipeline test run if the variable
    30  // "IMAGE_PULL_SECRET" is defined.
    31  //
    32  // If IMAGE_PULL_SECRET is defined, the secret is created from the following env vars:
    33  // - DOCKER_REGISTRY (defaults to "ghcr.io")
    34  // - DOCKER_CREDS_USR
    35  // - DOCKER_CREDS_PSW
    36  func CreateOrUpdatePipelineImagePullSecret(log vzlog.VerrazzanoLogger, namespace string, kubeconfigPath string) error {
    37  	pullSecretName := os.Getenv(PipelineImagePullSecName)
    38  	if pullSecretName == "" {
    39  		log.Infof("Image pull secret not defined, skipping secret creation")
    40  		return nil
    41  	}
    42  	registryName := os.Getenv(PipelineRegistryKey)
    43  	if registryName == "" {
    44  		registryName = "ghcr.io"
    45  		log.Infof("Image registry not defined, using default %s", registryName)
    46  	}
    47  	registryUser := os.Getenv(PipelineDockerUserKey)
    48  	if registryName == "" {
    49  		return fmt.Errorf("registry user %s not defined", PipelineDockerUserKey)
    50  	}
    51  	registryPwd := os.Getenv(PipelineDockerPswKey)
    52  	if registryName == "" {
    53  		return fmt.Errorf("registry cred %s not defined", PipelineDockerPswKey)
    54  	}
    55  	_, err := pkg.CreateDockerSecretInCluster(namespace, pullSecretName, registryName, registryUser, registryPwd, kubeconfigPath)
    56  	if err != nil && !errors.IsAlreadyExists(err) {
    57  		return err
    58  	}
    59  	return nil
    60  }