Merge pull request #29864 from wonderfly/correct-k8s-version

Automatic merge from submit-queue

e2e-runner: Fix the logic of pulling GCI builtin version of k8s

Apparently setting JENKINS_PUBLISHED_VERSION didn't work because it only worked
with `ci/latest`, `release/latest-1.3` or the like, whereas we wanted to pull
specific versions like `release/v1.3.3`. Added a function
`fetch_gci_version_tars` instead.

@spxtr Can you review? Hopefully this should get our QA tests passing.
This commit is contained in:
Kubernetes Submit Queue 2016-08-03 18:14:56 -07:00 committed by GitHub
commit b917ca0937

View File

@ -82,6 +82,17 @@ function fetch_server_version_tars() {
unset CLUSTER_API_VERSION unset CLUSTER_API_VERSION
} }
function fetch_gci_version_tars() {
if ! [[ "${JENKINS_USE_GCI_VERSION:-}" =~ ^[yY]$ ]]; then
echo "JENKINS_USE_GCI_VERSION must be set."
exit 1
fi
local -r gci_k8s_version="$(get_gci_k8s_version)"
echo "Using GCI builtin version: ${gci_k8s_version}"
fetch_tars_from_gcs "gs://${KUBE_GCS_RELEASE_BUCKET}/release" "${gci_k8s_version}"
unpack_binaries
}
# Use a published version like "ci/latest" (default), "release/latest", # Use a published version like "ci/latest" (default), "release/latest",
# "release/latest-1", or "release/stable" # "release/latest-1", or "release/stable"
function fetch_published_version_tars() { function fetch_published_version_tars() {
@ -179,35 +190,35 @@ function dump_cluster_logs() {
fi fi
} }
# GCI specific settings. # Figures out the builtin k8s version of a GCI image.
# Assumes: JENKINS_GCI_IMAGE_FAMILY function get_gci_k8s_version() {
function setup_gci_vars() { local -r image_description=$(gcloud compute images describe ${KUBE_GCE_MASTER_IMAGE} --project=${KUBE_GCE_MASTER_PROJECT})
local -r gci_staging_project=container-vm-image-staging
local -r image_info="$(gcloud compute images describe-from-family ${JENKINS_GCI_IMAGE_FAMILY} --project=${gci_staging_project} --format=json)"
local -r image_description="$(echo ${image_info} | jq -r '.description')"
local -r image_name="$(echo ${image_info} | jq -r '.name')"
if [[ "${JENKINS_USE_GCI_VERSION:-}" =~ ^[yY]$ ]]; then
# GCI QA jobs use the builtin k8s version.
# Staged GCI images all include versions in their image descriptions so we # Staged GCI images all include versions in their image descriptions so we
# extract builtin Kubernetes version from them. # extract builtin Kubernetes version from them.
local -r k8s_version_re='.*Kubernetes: ([0-9a-z.-]+),.*' local -r k8s_version_re='.*Kubernetes: ([0-9a-z.-]+),.*'
if [[ ${image_description} =~ ${k8s_version_re} ]]; then if [[ ${image_description} =~ ${k8s_version_re} ]]; then
export JENKINS_PUBLISHED_VERSION="release/${BASH_REMATCH[1]}" local -r gci_k8s_version="v${BASH_REMATCH[1]}"
else else
echo "Failed to determine builtin k8s version for image ${image_name}: ${image_description}" echo "Failed to determine builtin k8s version for image ${image_name}: ${image_description}"
exit 1 exit 1
fi fi
fi echo "${gci_k8s_version}"
}
export KUBE_GCE_MASTER_PROJECT="${gci_staging_project}" # GCI specific settings.
export KUBE_GCE_MASTER_IMAGE="${image_name}" # Assumes: JENKINS_GCI_IMAGE_FAMILY
export KUBE_MASTER_OS_DISTRIBUTION="gci" function setup_gci_vars() {
if [[ "${JENKINS_GCI_IMAGE_FAMILY}" == "gci-canary-test" ]]; then local -r gci_staging_project=container-vm-image-staging
# The family "gci-canary-test" is reserved for a special type of GCI images local -r image_name="$(gcloud compute images describe-from-family ${JENKINS_GCI_IMAGE_FAMILY} --project=${gci_staging_project} --format='value(name)')"
# that are used to continuously validate Docker releases.
export KUBE_GCI_DOCKER_VERSION="$(get_latest_docker_release)" export KUBE_GCE_MASTER_PROJECT="${gci_staging_project}"
fi export KUBE_GCE_MASTER_IMAGE="${image_name}"
export KUBE_MASTER_OS_DISTRIBUTION="gci"
if [[ "${JENKINS_GCI_IMAGE_FAMILY}" == "gci-canary-test" ]]; then
# The family "gci-canary-test" is reserved for a special type of GCI images
# that are used to continuously validate Docker releases.
export KUBE_GCI_DOCKER_VERSION="$(get_latest_docker_release)"
fi
} }
### Pre Set Up ### ### Pre Set Up ###
@ -293,6 +304,9 @@ elif [[ "${JENKINS_USE_SERVER_VERSION:-}" =~ ^[yY]$ ]]; then
# test what's running in GKE by default rather than some CI build. # test what's running in GKE by default rather than some CI build.
clean_binaries clean_binaries
fetch_server_version_tars fetch_server_version_tars
elif [[ "${JENKINS_USE_GCI_VERSION:-}" =~ ^[yY]$ ]]; then
clean_binaries
fetch_gci_version_tars
else else
# use JENKINS_PUBLISHED_VERSION, default to 'ci/latest', since that's # use JENKINS_PUBLISHED_VERSION, default to 'ci/latest', since that's
# usually what we're testing. # usually what we're testing.