diff --git a/Jenkinsfile b/Jenkinsfile index e36a2c70db9..85321d100ed 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -168,8 +168,8 @@ def cloud(Map args = [:]) { def k8sTest(Map args = [:]) { def versions = args.versions - node(args.label) { - versions.each{ v -> + versions.each{ v -> + node(args.label) { stage("${args.context} ${v}"){ withEnv(["K8S_VERSION=${v}", "KIND_VERSION=v0.7.0", "KUBECONFIG=${env.WORKSPACE}/kubecfg"]){ withGithubNotify(context: "${args.context} ${v}") { @@ -177,7 +177,19 @@ def k8sTest(Map args = [:]) { retryWithSleep(retries: 2, seconds: 5, backoff: true){ sh(label: "Install kind", script: ".ci/scripts/install-kind.sh") } retryWithSleep(retries: 2, seconds: 5, backoff: true){ sh(label: "Install kubectl", script: ".ci/scripts/install-kubectl.sh") } try { - sh(label: "Setup kind", script: ".ci/scripts/kind-setup.sh") + // Add some environmental resilience when setup does not work the very first time. + def i = 0 + retryWithSleep(retries: 3, seconds: 5, backoff: true){ + try { + sh(label: "Setup kind", script: ".ci/scripts/kind-setup.sh") + } catch(err) { + i++ + sh(label: 'Delete cluster', script: 'kind delete cluster') + if (i > 2) { + error("Setup kind failed with error '${err.toString()}'") + } + } + } sh(label: "Integration tests", script: "MODULE=kubernetes make -C metricbeat integration-tests") sh(label: "Deploy to kubernetes",script: "make -C deploy/kubernetes test") } finally {