From 2d98b072f4dc868a055d1b218dd36e189310d1dd Mon Sep 17 00:00:00 2001 From: Jifei Wang Date: Mon, 25 May 2026 18:54:29 +0800 Subject: [PATCH] fix(e2e): Using --kubeconfig parameter first (#1902) Signed-off-by: Jifei Wang --- hack/e2e-test.sh | 1 + test/e2e/node/test_node.go | 9 +++++++-- test/e2e/pod/test_pod.go | 4 +++- test/utils/common.go | 40 ++++++++++++++++++++++++-------------- 4 files changed, 36 insertions(+), 18 deletions(-) diff --git a/hack/e2e-test.sh b/hack/e2e-test.sh index 6261cbf2f..27c086343 100755 --- a/hack/e2e-test.sh +++ b/hack/e2e-test.sh @@ -21,6 +21,7 @@ set -x E2E_TYPE=${1:-"pullrequest"} KUBE_CONF=${2:-"${HOME}/.kube/config"} +export KUBE_CONF REPO_ROOT=$(dirname "${BASH_SOURCE[0]}")/.. cd "${REPO_ROOT}" diff --git a/test/e2e/node/test_node.go b/test/e2e/node/test_node.go index 95fc3c6ad..1a6a586bd 100644 --- a/test/e2e/node/test_node.go +++ b/test/e2e/node/test_node.go @@ -25,15 +25,20 @@ import ( "github.com/onsi/ginkgo/v2" "github.com/onsi/gomega" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/kubernetes" "github.com/Project-HAMi/HAMi/test/utils" ) var _ = ginkgo.Describe("[Node] Node E2E Tests", ginkgo.Ordered, func() { - var clientSet = utils.GetClientSet() - var nodeName string + var ( + clientSet *kubernetes.Clientset + nodeName string + ) ginkgo.BeforeAll(func() { + clientSet = utils.GetClientSet() + // Get all nodes in the cluster nodes, err := utils.GetNodes(clientSet) gomega.Expect(err).NotTo(gomega.HaveOccurred()) diff --git a/test/e2e/pod/test_pod.go b/test/e2e/pod/test_pod.go index 284f359f5..744a429d9 100644 --- a/test/e2e/pod/test_pod.go +++ b/test/e2e/pod/test_pod.go @@ -41,12 +41,14 @@ var _ = ginkgo.Describe("Pod E2E Tests", ginkgo.Ordered, func() { ) var ( - clientSet = utils.GetClientSet() + clientSet *kubernetes.Clientset newPod *corev1.Pod nodeName string ) ginkgo.BeforeAll(func() { + clientSet = utils.GetClientSet() + var err error nodeName, err = utils.GetGPUNode(clientSet) gomega.Expect(err).NotTo(gomega.HaveOccurred()) diff --git a/test/utils/common.go b/test/utils/common.go index 3b67cf6f8..44288b1ec 100644 --- a/test/utils/common.go +++ b/test/utils/common.go @@ -22,6 +22,7 @@ import ( "math/rand" "os" "os/exec" + "path/filepath" "strconv" "time" @@ -33,14 +34,31 @@ import ( var kubeConfig string func init() { - flag.StringVar(&kubeConfig, "kubeconfig", defaultKubeConfigPath(), "Path to the kubeConfig file") + flag.StringVar(&kubeConfig, "kubeconfig", "", "Path to the kubeConfig file") } -func defaultKubeConfigPath() string { - configPath := os.Getenv("KUBE_CONF") - if configPath == "" { - klog.Fatalf("Environment variable KUBE_CONF is not set or empty. Please set it to a valid kubeconfig file path.") +// resolveKubeConfigPath picks kubeconfig in order: --kubeconfig flag, KUBE_CONF, ~/.kube/config. +func resolveKubeConfigPath() string { + if kubeConfig != "" { + return validateKubeConfigPath(kubeConfig) } + if configPath := os.Getenv("KUBE_CONF"); configPath != "" { + kubeConfig = validateKubeConfigPath(configPath) + return kubeConfig + } + home, err := os.UserHomeDir() + if err == nil { + defaultPath := filepath.Join(home, ".kube", "config") + if _, err := os.Stat(defaultPath); err == nil { + kubeConfig = defaultPath + return kubeConfig + } + } + klog.Fatalf("kubeconfig not set: pass --kubeconfig, set KUBE_CONF, or place config at ~/.kube/config") + return "" +} + +func validateKubeConfigPath(configPath string) string { if _, err := os.Stat(configPath); os.IsNotExist(err) { klog.Fatalf("Kubeconfig file does not exist at path: %s", configPath) } @@ -48,19 +66,11 @@ func defaultKubeConfigPath() string { } func DefaultKubeConfigPath() string { - configPath := os.Getenv("KUBE_CONF") - if configPath == "" { - klog.Fatalf("Environment variable KUBE_CONF is not set or empty. Please set it to a valid kubeconfig file path.") - } - - if _, err := os.Stat(configPath); os.IsNotExist(err) { - klog.Fatalf("lalala Kubeconfig file does not exist at path: %s, error is %s", configPath, err) - } - return configPath + return resolveKubeConfigPath() } func GetClientSet() *kubernetes.Clientset { - config, err := clientcmd.BuildConfigFromFlags("", kubeConfig) + config, err := clientcmd.BuildConfigFromFlags("", resolveKubeConfigPath()) if err != nil { klog.Fatalf("Failed to load kubeConfig: %v", err) }