github.com/argoproj/argo-cd/v3@v3.2.1/hack/k8s/main.go (about)

     1  package main
     2  
     3  import (
     4  	"context"
     5  	"os"
     6  	"os/exec"
     7  	"path/filepath"
     8  	"time"
     9  
    10  	"k8s.io/client-go/kubernetes"
    11  
    12  	"github.com/argoproj/argo-cd/v3/util/errors"
    13  
    14  	"github.com/argoproj/gitops-engine/pkg/utils/kube"
    15  	"sigs.k8s.io/controller-runtime/pkg/envtest"
    16  )
    17  
    18  func main() {
    19  	testEnv := envtest.Environment{
    20  		CRDDirectoryPaths: []string{filepath.Join("manifests", "crds")},
    21  	}
    22  	println("Starting K8S...")
    23  	cfg, err := testEnv.Start()
    24  
    25  	errors.CheckError(err)
    26  	kubeConfigPath := "/tmp/kubeconfig"
    27  	if len(os.Args) > 2 {
    28  		kubeConfigPath = os.Args[1]
    29  	}
    30  
    31  	println("Kubeconfig is available at " + kubeConfigPath)
    32  	errors.CheckError(kube.WriteKubeConfig(cfg, "default", kubeConfigPath))
    33  	client, err := kubernetes.NewForConfig(cfg)
    34  	errors.CheckError(err)
    35  
    36  	attempts := 5
    37  	interval := time.Second
    38  	for i := 0; i < attempts; i++ {
    39  		_, err = client.ServerVersion()
    40  		if err == nil {
    41  			break
    42  		}
    43  		time.Sleep(interval)
    44  	}
    45  	errors.CheckError(err)
    46  
    47  	cmd := exec.Command("kubectl", "apply", "-k", "manifests/base/config")
    48  	cmd.Env = []string{"KUBECONFIG=" + kubeConfigPath}
    49  	errors.CheckError(cmd.Run())
    50  	<-context.Background().Done()
    51  }