diff --git a/hack/jenkins/e2e.sh b/hack/jenkins/e2e.sh deleted file mode 100755 index 2e9ac5bb34e..00000000000 --- a/hack/jenkins/e2e.sh +++ /dev/null @@ -1,230 +0,0 @@ -#!/bin/bash - -# Copyright 2015 The Kubernetes Authors All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Sets up environment variables for an e2e test specified in JOB_NAME, then -# runs e2e-runner.sh. - -set -o errexit -set -o nounset -set -o pipefail - -echo "--------------------------------------------------------------------------------" -echo "Initial Environment:" -printenv | sort -echo "--------------------------------------------------------------------------------" - -# Nothing should want Jenkins $HOME -export HOME=${WORKSPACE} - -# Set environment variables based on provider -if [[ ${JOB_NAME} =~ ^kubernetes-.*-gce ]]; then - export KUBERNETES_PROVIDER="gce" - export E2E_MIN_STARTUP_PODS="1" - export KUBE_GCE_ZONE="us-central1-f" - export FAIL_ON_GCP_RESOURCE_LEAK="true" -elif [[ ${JOB_NAME} =~ ^kubernetes-.*-gke ]]; then - export KUBERNETES_PROVIDER="gke" - export ZONE="us-central1-f" - # By default, GKE tests run against the GKE test endpoint using CI Cloud SDK. - # Release jobs (e.g. prod, staging, and test) override these two variables. - export CLOUDSDK_BUCKET="gs://cloud-sdk-build/testing/staging" - export CLOUDSDK_API_ENDPOINT_OVERRIDES_CONTAINER="https://test-container.sandbox.googleapis.com/" - export FAIL_ON_GCP_RESOURCE_LEAK="true" -elif [[ ${JOB_NAME} =~ ^kubernetes-.*-aws ]]; then - export KUBERNETES_PROVIDER="aws" - export E2E_MIN_STARTUP_PODS="1" - export KUBE_AWS_ZONE="us-west-2a" - export MASTER_SIZE="m3.medium" - export NODE_SIZE="m3.medium" - export NUM_NODES="3" -fi - -# Set environment variables based on upgrade jobs -if [[ ${JOB_NAME} =~ ^kubernetes-upgrade ]]; then - # Upgrade jobs bounce back and forth between versions; just force - # it to always get the tars of the version it wants to test. - export JENKINS_FORCE_GET_TARS="y" - export FAIL_ON_GCP_RESOURCE_LEAK="false" - if [[ "${KUBERNETES_PROVIDER}" == "gce" ]]; then - export NUM_NODES=5 - fi - if [[ "${JOB_NAME}" =~ step1 ]]; then - export E2E_TEST="false" - export E2E_DOWN="false" - elif [[ "${JOB_NAME}" =~ step2 ]]; then - export E2E_OPT="--check_version_skew=false" - export E2E_UP="false" - export E2E_DOWN="false" - export GINKGO_TEST_ARGS="--ginkgo.focus=Kubectl" - elif [[ "${JOB_NAME}" =~ step3 ]]; then - export E2E_OPT="--check_version_skew=false" - export E2E_UP="false" - export E2E_DOWN="false" - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Feature:Upgrade\].*upgrade-master" - elif [[ "${JOB_NAME}" =~ step4 ]]; then - export E2E_OPT="--check_version_skew=false" - export E2E_UP="false" - export E2E_DOWN="false" - elif [[ "${JOB_NAME}" =~ step5 ]]; then - export E2E_OPT="--check_version_skew=false" - export E2E_UP="false" - export E2E_DOWN="false" - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Feature:Upgrade\].*upgrade-cluster" - elif [[ "${JOB_NAME}" =~ step6 ]]; then - export E2E_OPT="--check_version_skew=false" - export E2E_UP="false" - export E2E_DOWN="false" - elif [[ "${JOB_NAME}" =~ step7 ]]; then - # TODO(15011): these really shouldn't be (very) version skewed, but - # because we have to get ci/latest again, it could get slightly out of - # whack. - export E2E_OPT="--check_version_skew=false" - export E2E_UP="false" - fi -fi - -# Define environment variables based on the Jenkins project name. -# NOTE: Not all jobs are defined here. The hack/jenkins/e2e.sh in master and -# release branches defines relevant jobs for that particular version of -# Kubernetes. -case ${JOB_NAME} in - - # PR builder - - # Runs a subset of tests on GCE in parallel. Run against all pending PRs. - kubernetes-pull-build-test-e2e-gce) - # XXX Not a unique project - export E2E_NAME="e2e-gce-${NODE_NAME}-${EXECUTOR_NUMBER}" - export GINKGO_PARALLEL="y" - # This list should match the list in kubernetes-e2e-gce. - export GINKGO_TEST_ARGS="--ginkgo.skip=\[Slow\]|\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:.+\]" - export FAIL_ON_GCP_RESOURCE_LEAK="false" - export PROJECT="kubernetes-jenkins-pull" - # Override GCE defaults - export NUM_NODES="6" - ;; - - # Upgrade jobs - - # kubernetes-upgrade-gke-1.0-master - # - # Test upgrades from the latest release-1.0 build to the latest master build. - # - # Configurations for step1, step4, and step6 live in the release-1.0 branch. - - kubernetes-upgrade-gke-1.0-master-step2-kubectl-e2e-new) - export E2E_NAME="upgrade-gke-1-0-master" - export PROJECT="kubernetes-jenkins-gke-upgrade" - ;; - - kubernetes-upgrade-gke-1.0-master-step3-upgrade-master) - export E2E_NAME="upgrade-gke-1-0-master" - export PROJECT="kubernetes-jenkins-gke-upgrade" - ;; - - kubernetes-upgrade-gke-1.0-master-step5-upgrade-cluster) - export E2E_NAME="upgrade-gke-1-0-master" - export PROJECT="kubernetes-jenkins-gke-upgrade" - ;; - - kubernetes-upgrade-gke-1.0-master-step7-e2e-new) - export E2E_NAME="upgrade-gke-1-0-master" - export PROJECT="kubernetes-jenkins-gke-upgrade" - ;; - - # kubernetes-upgrade-gke-1.1-master - # - # Test upgrades from the latest release-1.1 build to the latest master build. - # - # Configurations for step1, step4, and step6 live in the release-1.1 branch. - - kubernetes-upgrade-gke-1.1-master-step2-kubectl-e2e-new) - export E2E_NAME="upgrade-gke-1-1-master" - export PROJECT="kubernetes-jenkins-gke-upgrade" - ;; - - kubernetes-upgrade-gke-1.1-master-step3-upgrade-master) - export E2E_NAME="upgrade-gke-1-1-master" - export PROJECT="kubernetes-jenkins-gke-upgrade" - ;; - - kubernetes-upgrade-gke-1.1-master-step5-upgrade-cluster) - export E2E_NAME="upgrade-gke-1-1-master" - export PROJECT="kubernetes-jenkins-gke-upgrade" - ;; - - kubernetes-upgrade-gke-1.1-master-step7-e2e-new) - export E2E_NAME="upgrade-gke-1-1-master" - export PROJECT="kubernetes-jenkins-gke-upgrade" - ;; - - # kubernetes-upgrade-gce-1.1-master - # - # Test upgrades from the latest release-1.1 build to the latest master build. - # - # Configurations for step1, step4, and step6 live in the release-1.1 branch. - - kubernetes-upgrade-gce-1.1-master-step2-kubectl-e2e-new) - export E2E_NAME="upgrade-gce-1-1-master" - export PROJECT="k8s-jkns-gce-upgrade" - ;; - - kubernetes-upgrade-gce-1.1-master-step3-upgrade-master) - export E2E_NAME="upgrade-gce-1-1-master" - export PROJECT="k8s-jkns-gce-upgrade" - ;; - - kubernetes-upgrade-gce-1.1-master-step5-upgrade-cluster) - export E2E_NAME="upgrade-gce-1-1-master" - export PROJECT="k8s-jkns-gce-upgrade" - ;; - - kubernetes-upgrade-gce-1.1-master-step7-e2e-new) - export E2E_NAME="upgrade-gce-1-1-master" - export PROJECT="k8s-jkns-gce-upgrade" - ;; -esac - -# Assume we're upping, testing, and downing a cluster -export E2E_UP="${E2E_UP:-true}" -export E2E_TEST="${E2E_TEST:-true}" -export E2E_DOWN="${E2E_DOWN:-true}" - -# Skip gcloud update checking -export CLOUDSDK_COMPONENT_MANAGER_DISABLE_UPDATE_CHECK=true - -# AWS variables -export KUBE_AWS_INSTANCE_PREFIX=${E2E_NAME:-'jenkins-e2e'} - -# GCE variables -export INSTANCE_PREFIX=${E2E_NAME:-'jenkins-e2e'} -export KUBE_GCE_NETWORK=${E2E_NAME:-'jenkins-e2e'} -export KUBE_GCE_INSTANCE_PREFIX=${E2E_NAME:-'jenkins-e2e'} -export GCE_SERVICE_ACCOUNT=$(gcloud auth list 2> /dev/null | grep active | cut -f3 -d' ') - -# GKE variables -export CLUSTER_NAME=${E2E_NAME:-'jenkins-e2e'} -export KUBE_GKE_NETWORK=${E2E_NAME:-'jenkins-e2e'} - -# Get golang into our PATH so we can run e2e.go -export PATH=${PATH}:/usr/local/go/bin - -# If we are on PR Jenkins merging into master, use the local e2e.sh. Otherwise, use the latest on github. -if [[ "${ghprbTargetBranch:-}" == "master" ]]; then - source "hack/jenkins/e2e-runner.sh" -else - source <(curl -fsS --retry 3 "https://raw.githubusercontent.com/kubernetes/kubernetes/master/hack/jenkins/e2e-runner.sh") -fi diff --git a/hack/jenkins/job-configs/kubernetes-upgrades.yaml b/hack/jenkins/job-configs/kubernetes-upgrades.yaml index d0702629b57..2b9d9f2cd1e 100644 --- a/hack/jenkins/job-configs/kubernetes-upgrades.yaml +++ b/hack/jenkins/job-configs/kubernetes-upgrades.yaml @@ -1,3 +1,10 @@ +# These configs rely on the fact that previous branches will overwrite any +# environment variables that they need. Currently, 1.0 and 1.1 jobs use the +# old e2e.sh script on their branches. To turn up new upgrade jobs from these +# releases, you will need to fiddle with e2e.sh on their branches. For all +# branches after those, you will simply need to add a new entry in one of the +# projects below. + - job-template: name: 'kubernetes-upgrade-{provider}-{version-old}-{version-new}' disabled: false @@ -56,7 +63,14 @@ daysToKeep: 7 builders: - shell: | - curl -fsS --retry 3 "https://raw.githubusercontent.com/kubernetes/kubernetes/{branch}/hack/jenkins/e2e.sh" | bash - + # per-provider variables + {provider-env} + # per-upgrade-flow variables, such as project name + {project-env} + # per-step variables, such as whether to run tests + {job-env} + {post-env} + {runner} properties: - mail-watcher publishers: @@ -84,7 +98,14 @@ daysToKeep: 7 builders: - shell: | - curl -fsS --retry 3 "https://raw.githubusercontent.com/kubernetes/kubernetes/{branch}/hack/jenkins/e2e.sh" | bash - + # per-provider variables + {provider-env} + # per-upgrade-flow variables, such as project name + {project-env} + # per-step variables, such as whether to run tests + {job-env} + {post-env} + {runner} properties: - mail-watcher publishers: @@ -109,72 +130,121 @@ jobs: - 'kubernetes-upgrade-{provider}-{version-old}-{version-new}' - 'kubernetes-upgrade-{provider}-{version-old}-{version-new}-step1-deploy': - branch: '{branch-old}' + runner: '{runner-old}' + job-env: | + export E2E_TEST="false" + export E2E_DOWN="false" - 'kubernetes-upgrade-{provider}-{version-old}-{version-new}-{step}': step: 'step2-kubectl-e2e-new' - branch: '{branch-new}' description: 'Run {version-new} kubectl tests against the cluster running {version-old}.' + job-env: | + export E2E_OPT="--check_version_skew=false" + export E2E_UP="false" + export E2E_DOWN="false" + export GINKGO_TEST_ARGS="--ginkgo.focus=Kubectl" - 'kubernetes-upgrade-{provider}-{version-old}-{version-new}-{step}': step: 'step3-upgrade-master' - branch: '{branch-new}' description: 'Upgrade the master from {version-old} to {version-new}.' + job-env: | + export E2E_OPT="--check_version_skew=false" + export E2E_UP="false" + export E2E_DOWN="false" + export GINKGO_TEST_ARGS="--ginkgo.focus=\[Feature:Upgrade\].*upgrade-master" - 'kubernetes-upgrade-{provider}-{version-old}-{version-new}-{step}': step: 'step4-e2e-old' - branch: '{branch-old}' + runner: '{runner-old}' description: 'Run {version-old} e2e tests against the cluster with master at {version-new} and nodes still at {version-old}.' + job-env: | + export E2E_OPT="--check_version_skew=false" + export E2E_UP="false" + export E2E_DOWN="false" - 'kubernetes-upgrade-{provider}-{version-old}-{version-new}-{step}': step: 'step5-upgrade-cluster' - branch: '{branch-new}' description: 'Upgrade the nodes from {version-old} to {version-new}.' + job-env: | + export E2E_OPT="--check_version_skew=false" + export E2E_UP="false" + export E2E_DOWN="false" + export GINKGO_TEST_ARGS="--ginkgo.focus=\[Feature:Upgrade\].*upgrade-cluster" - 'kubernetes-upgrade-{provider}-{version-old}-{version-new}-{step}': step: 'step6-e2e-old' - branch: '{branch-old}' + runner: '{runner-old}' description: 'Run {version-old} e2e tests against the cluster with master and nodes at {version-new}.' + job-env: | + export E2E_OPT="--check_version_skew=false" + export E2E_UP="false" + export E2E_DOWN="false" - 'kubernetes-upgrade-{provider}-{version-old}-{version-new}-{step}': step: 'step7-e2e-new' - branch: '{branch-new}' description: 'Run {version-new} e2e tests against the cluster with master and nodes at {version-new}.' + job-env: | + # TODO(15011): these really shouldn't be (very) version skewed, but + # because we have to get ci/latest again, it could get slightly out of + # whack. + export E2E_OPT="--check_version_skew=false" + export E2E_UP="false" - project: name: 'upgrade-gke' + provider-env: | + {gke-provider-env} + export JENKINS_FORCE_GET_TARS="y" + export FAIL_ON_GCP_RESOURCE_LEAK="false" jobs: - '{provider}-{version-old}-{version-new}-upgrades': provider: 'gke' version-old: '1.1' version-new: 'master' - branch-old: 'release-1.1' - branch-new: 'master' + runner-old: curl -fsS --retry 3 "https://raw.githubusercontent.com/kubernetes/kubernetes/release-1.1/hack/jenkins/e2e.sh" | bash - + runner-new: curl -fsS --retry 3 "https://raw.githubusercontent.com/kubernetes/kubernetes/master/hack/jenkins/e2e-runner.sh" | bash - + project-env: | + export E2E_NAME="upgrade-gke-1-1-master" + export PROJECT="kubernetes-jenkins-gke-upgrade" - '{provider}-{version-old}-{version-new}-upgrades': provider: 'gke' version-old: '1.0' version-new: 'master' - branch-old: 'release-1.0' - branch-new: 'master' + runner-old: curl -fsS --retry 3 "https://raw.githubusercontent.com/kubernetes/kubernetes/release-1.0/hack/jenkins/e2e.sh" | bash - + runner-new: curl -fsS --retry 3 "https://raw.githubusercontent.com/kubernetes/kubernetes/master/hack/jenkins/e2e-runner.sh" | bash - + project-env: | + export E2E_NAME="upgrade-gke-1-0-master" + export PROJECT="kubernetes-jenkins-gke-upgrade" - '{provider}-{version-old}-{version-new}-upgrades': provider: 'gke' version-old: '1.0' version-new: 'current-release' - branch-old: 'release-1.0' - branch-new: 'release-1.1' + runner-old: curl -fsS --retry 3 "https://raw.githubusercontent.com/kubernetes/kubernetes/release-1.0/hack/jenkins/e2e.sh" | bash - + runner-new: curl -fsS --retry 3 "https://raw.githubusercontent.com/kubernetes/kubernetes/release-1.1/hack/jenkins/e2e-runner.sh" | bash - + project-env: '' - '{provider}-{version-old}-{version-new}-upgrades': provider: 'gke' version-old: 'stable' version-new: 'current-release' - branch-old: 'release-1.1' - branch-new: 'release-1.1' + runner-old: curl -fsS --retry 3 "https://raw.githubusercontent.com/kubernetes/kubernetes/release-1.1/hack/jenkins/e2e.sh" | bash - + runner-new: curl -fsS --retry 3 "https://raw.githubusercontent.com/kubernetes/kubernetes/release-1.1/hack/jenkins/e2e-runner.sh" | bash - + project-env: '' - project: name: 'upgrade-gce' + provider-env: | + {gce-provider-env} + export NUM_NODES=5 + export JENKINS_FORCE_GET_TARS="y" + export FAIL_ON_GCP_RESOURCE_LEAK="false" jobs: - '{provider}-{version-old}-{version-new}-upgrades': provider: 'gce' version-old: '1.1' version-new: 'master' - branch-old: 'release-1.1' - branch-new: 'master' + runner-old: curl -fsS --retry 3 "https://raw.githubusercontent.com/kubernetes/kubernetes/release-1.1/hack/jenkins/e2e.sh" | bash - + runner-new: curl -fsS --retry 3 "https://raw.githubusercontent.com/kubernetes/kubernetes/master/hack/jenkins/e2e-runner.sh" | bash - + project-env: | + export E2E_NAME="upgrade-gce-1-1-master" + export PROJECT="kubernetes-jenkins-gce-upgrade" - '{provider}-{version-old}-{version-new}-upgrades': provider: 'gce' version-old: 'stable' version-new: 'current-release' - branch-old: 'release-1.1' - branch-new: 'release-1.1' + runner-old: curl -fsS --retry 3 "https://raw.githubusercontent.com/kubernetes/kubernetes/release-1.1/hack/jenkins/e2e.sh" | bash - + runner-new: curl -fsS --retry 3 "https://raw.githubusercontent.com/kubernetes/kubernetes/release-1.1/hack/jenkins/e2e-runner.sh" | bash - + project-env: ''