From df832d15cef5b4d6139826b487d1be68cd471199 Mon Sep 17 00:00:00 2001 From: Joe Finney Date: Thu, 28 Apr 2016 16:03:29 -0700 Subject: [PATCH 1/2] Remove Jenkins Job Builder scripts and configs. --- hack/jenkins/diff-job-config-patch.sh | 75 -- hack/jenkins/job-builder-image/Dockerfile | 47 - hack/jenkins/job-builder-image/Makefile | 19 - hack/jenkins/job-configs/global.yaml | 197 ---- .../jenkins-daily-maintenance.yaml | 64 -- .../kubernetes-update-jenkins-jobs.yaml | 17 - .../kubernetes-jenkins/kubernetes-build.yaml | 60 - .../kubernetes-jenkins/kubernetes-e2e.yaml | 1007 ----------------- .../kubernetes-kubemark.yaml | 150 --- .../kubernetes-jenkins/kubernetes-soak.yaml | 160 --- .../kubernetes-test-go.yaml | 89 -- .../kubernetes-test-history.yaml | 21 - .../kubernetes-update-jenkins-jobs.yaml | 16 - .../kubernetes-upgrades.yaml | 283 ----- .../kubernetes-jenkins/node-e2e.yaml | 160 --- .../kubernetes-jenkins/test-linkchecker.yaml | 36 - hack/jenkins/update-jobs.sh | 46 - hack/verify-jenkins-job-configs.sh | 42 - 18 files changed, 2489 deletions(-) delete mode 100755 hack/jenkins/diff-job-config-patch.sh delete mode 100644 hack/jenkins/job-builder-image/Dockerfile delete mode 100644 hack/jenkins/job-builder-image/Makefile delete mode 100644 hack/jenkins/job-configs/global.yaml delete mode 100644 hack/jenkins/job-configs/jenkins-daily-maintenance.yaml delete mode 100644 hack/jenkins/job-configs/kubernetes-jenkins-pull/kubernetes-update-jenkins-jobs.yaml delete mode 100644 hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-build.yaml delete mode 100644 hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-e2e.yaml delete mode 100644 hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-kubemark.yaml delete mode 100644 hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-soak.yaml delete mode 100644 hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-test-go.yaml delete mode 100644 hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-test-history.yaml delete mode 100644 hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-update-jenkins-jobs.yaml delete mode 100644 hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-upgrades.yaml delete mode 100644 hack/jenkins/job-configs/kubernetes-jenkins/node-e2e.yaml delete mode 100644 hack/jenkins/job-configs/kubernetes-jenkins/test-linkchecker.yaml delete mode 100755 hack/jenkins/update-jobs.sh delete mode 100755 hack/verify-jenkins-job-configs.sh diff --git a/hack/jenkins/diff-job-config-patch.sh b/hack/jenkins/diff-job-config-patch.sh deleted file mode 100755 index 5a37941c4fe..00000000000 --- a/hack/jenkins/diff-job-config-patch.sh +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/bash - -# Copyright 2016 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. - -# Uses the kubekins-job-builder Docker image to compute the differences in -# the Jenkins job config XML, comparing the current git branch against upstream -# master. The filename containing the diff is printed at the end, assuming -# everything parsed successfully. - -# Note: anecdotal evidence suggests this doesn't work correctly on OS X. -# If you find that there is no diff being generated, you may want to try setting -# OUTPUT_DIR to some directory in your home directory. - -# When running this script from inside Docker, you must set REPO_ROOT to point -# to the path to the repository on the host, and DOCKER_VOLUME_OUTPUT_DIR must -# point to the path of $OUTPUT_DIR on the host. This is due to the way volume -# mounts work in Docker-in-Docker. - -set -o errexit -set -o nounset -set -o pipefail - -readonly JOB_CONFIGS_ROOT="hack/jenkins/job-configs" -readonly JOB_BUILDER_IMAGE='gcr.io/google_containers/kubekins-job-builder:1' - -KUBE_ROOT=$(cd $(dirname "${BASH_SOURCE}")/../.. && pwd) -REPO_DIR=${REPO_DIR:-"${KUBE_ROOT}"} - -readonly output_dir=${OUTPUT_DIR:=$(mktemp -d -t JJB-XXXXX)} -readonly docker_volume_output_dir=${DOCKER_VOLUME_OUTPUT_DIR:="${output_dir}"} -readonly diff_file="${output_dir}/diff.txt" - -mkdir -p "${output_dir}/upstream" "${output_dir}/patch" - -echo "Saving output in ${output_dir}" - -readonly common_commands="\ - git describe --long --tags --abbrev=14 >/output/gitversion.txt && \ - git rev-parse --abbrev-ref HEAD >/output/gitbranch.txt && \ - jenkins-jobs test \ - '${JOB_CONFIGS_ROOT}:${JOB_CONFIGS_ROOT}/kubernetes-jenkins' \ - -o /output/kubernetes-jenkins && \ - jenkins-jobs test \ - '${JOB_CONFIGS_ROOT}:${JOB_CONFIGS_ROOT}/kubernetes-jenkins-pull' \ - -o /output/kubernetes-jenkins-pull" - -docker run --rm=true -i \ - -v "${docker_volume_output_dir}/upstream:/output" \ - "${JOB_BUILDER_IMAGE}" \ - bash -c "git checkout master && git pull && ${common_commands}" - -docker run --rm=true -i \ - -v "${docker_volume_output_dir}/patch:/output" \ - -v "${REPO_DIR}:/kubernetes:ro" \ - "${JOB_BUILDER_IMAGE}" \ - bash -c "${common_commands}" - -diff -ruN "${output_dir}/upstream" "${output_dir}/patch" >"${diff_file}" || true -if [[ -t 1 ]]; then # Attached to a terminal? - less "${diff_file}" -fi -echo -echo " *** Diff saved in ${diff_file} ***" diff --git a/hack/jenkins/job-builder-image/Dockerfile b/hack/jenkins/job-builder-image/Dockerfile deleted file mode 100644 index 5f253a2db4f..00000000000 --- a/hack/jenkins/job-builder-image/Dockerfile +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright 2016 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. - -# This docker image runs Jenkins Job Builder (JJB) for automatic job reconciliation. - -FROM ubuntu:14.04 -MAINTAINER Joe Finney - -RUN mkdir /build -WORKDIR /build - -# Dependencies for JJB -RUN apt-get update && apt-get install -y \ - wget \ - git \ - python-dev \ - python-pip \ - libyaml-dev \ - python-yaml -RUN pip install PyYAML python-jenkins -# Required since JJB supports python 2.6, which doesn't have ordereddict built-in. We have 2.7. -RUN wget https://pypi.python.org/packages/source/o/ordereddict/ordereddict-1.1.tar.gz \ - && tar -xvf ordereddict-1.1.tar.gz \ - && cd ordereddict-1.1 \ - && python setup.py install - -RUN git clone https://git.openstack.org/openstack-infra/jenkins-job-builder \ - && cd jenkins-job-builder \ - && python setup.py install - -# JJB configuration lives in /etc/jenkins_jobs/jenkins_jobs.ini -RUN mkdir -p /etc/jenkins_jobs - -WORKDIR / -RUN git clone https://github.com/kubernetes/kubernetes.git -WORKDIR kubernetes diff --git a/hack/jenkins/job-builder-image/Makefile b/hack/jenkins/job-builder-image/Makefile deleted file mode 100644 index dde94ebfa83..00000000000 --- a/hack/jenkins/job-builder-image/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 2016 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. - -TAG = 1 - -all: - docker build -t gcr.io/google_containers/kubekins-job-builder:$(TAG) . - gcloud docker push gcr.io/google_containers/kubekins-job-builder:$(TAG) diff --git a/hack/jenkins/job-configs/global.yaml b/hack/jenkins/job-configs/global.yaml deleted file mode 100644 index db04a591d52..00000000000 --- a/hack/jenkins/job-configs/global.yaml +++ /dev/null @@ -1,197 +0,0 @@ -# Mail Watcher Plugin alerts the specified address whenever a job config is updated or deleted. -- property: - name: mail-watcher - properties: - - raw: - xml: | - - cloud-kubernetes-team@google.com - - -- publisher: - name: gcs-uploader - publishers: - - postbuildscript: - builders: - - shell: | - mkdir -p _tmp - curl -fsS --retry 3 "https://raw.githubusercontent.com/kubernetes/kubernetes/master/hack/jenkins/upload-to-gcs.sh" > ./_tmp/upload-to-gcs.sh - chmod +x ./_tmp/upload-to-gcs.sh - - conditional-step: - condition-kind: current-status - condition-worst: SUCCESS - condition-best: SUCCESS - steps: - - shell: 'JENKINS_BUILD_FINISHED=SUCCESS ./_tmp/upload-to-gcs.sh' - - conditional-step: - condition-kind: current-status - condition-worst: UNSTABLE - condition-best: UNSTABLE - steps: - - shell: 'JENKINS_BUILD_FINISHED=UNSTABLE ./_tmp/upload-to-gcs.sh' - - conditional-step: - condition-kind: current-status - condition-worst: FAILURE - condition-best: FAILURE - steps: - - shell: 'JENKINS_BUILD_FINISHED=FAILURE ./_tmp/upload-to-gcs.sh' - - conditional-step: - condition-kind: current-status - condition-worst: ABORTED - condition-best: ABORTED - steps: - - shell: 'JENKINS_BUILD_FINISHED=ABORTED ./_tmp/upload-to-gcs.sh' - script-only-if-succeeded: False - script-only-if-failed: False - # Use the plugin for the build log, since it isn't available on Jenkins slaves. - - google-cloud-storage: - credentials-id: kubernetes-jenkins - uploads: - - build-log: - log-name: build-log.txt - storage-location: gs://kubernetes-jenkins/logs/$JOB_NAME/$BUILD_NUMBER - share-publicly: true - upload-for-failed-jobs: true - -# Default log parser rules. -- publisher: - name: log-parser - publishers: - - logparser: - parse-rules: /jenkins-master-data/log_parser_rules.txt - unstable-on-warning: false - fail-on-error: false - -# There is a junit JJB tag, but it doesn't handle the flaky-test-handler plugin. -- publisher: - name: junit-publisher - publishers: - - raw: - xml: | - - _artifacts/junit*.xml - true - - - - - - 100.0 - - -# Implements Docker Build and Publish Plugin -# https://wiki.jenkins-ci.org/display/JENKINS/CloudBees+Docker+Build+and+Publish+plugin -# From the docs: 'This plugin provides the ability to build projects with a Dockerfile, and publish the resultant -# tagged image (repo) to the docker registry.' -# -# repoName: docker registry repo name to publish the image -# dockerfilePath: workspace relative path to the 'Dockerfile' to build -# tag: Tag to apply to the built image -# credentialsId: Jenkins 'Username with password' credentials ID (hex string) to authenticate to docker registry. -# Found under http:/credentials -> "Advanced" -- builder: - name: docker-build-publish - builders: - - raw: - xml: | - - - - {credentialsId} - - {repoName} - true - true - {dockerfilePath} - false - false - {tag} - false - true - true - - - shell: | - #!/bin/bash - set -e - set -x - docker rmi -f {repoName}:{tag} - -# Default email recipients are set in Jenkins global config -- defaults: - name: global - disable_job: false - emails: '$DEFAULT_RECIPIENTS' - cron-string: 'H/30 * * * *' # Set a 30m floor to start jobs. - sq-cron-string: 'H/5 * * * *' # Lower floor to 5m for blocking jobs. - # How long to wait after sending TERM to send KILL (minutes) - kill-timeout: 15 - # Just to be safe, use the Jenkins timeout after a long time. - jenkins-timeout: 600 - # report-rc assumes that $rc is set to the exit status of the runner. - report-rc: | - if [[ ${{rc}} -eq 124 || ${{rc}} -eq 137 ]]; then - echo "Build timed out" >&2 - elif [[ ${{rc}} -ne 0 ]]; then - echo "Build failed" >&2 - fi - echo "Exiting with code: ${{rc}}" - exit ${{rc}} - branch: 'master' - job-env: '' - runner: bash <(curl -fsS --retry 3 "https://raw.githubusercontent.com/kubernetes/kubernetes/master/hack/jenkins/dockerized-e2e-runner.sh") - legacy-runner: bash <(curl -fsS --retry 3 "https://raw.githubusercontent.com/kubernetes/kubernetes/master/hack/jenkins/e2e-runner.sh") - old-runner-1-1: bash <(curl -fsS --retry 3 "https://raw.githubusercontent.com/kubernetes/kubernetes/release-1.1/hack/jenkins/e2e.sh") - # XXX This is a hack to run only the tests we care about, without importing all of the skip list vars from the v1.1 e2e.sh. - default-skip-list-1-1: Autoscaling\sSuite|resource\susage\stracking|Nodes|Etcd\sFailure|MasterCerts|experimental\sresource\susage\stracking|ServiceLoadBalancer|Shell|Daemon\sset|Deployment|Skipped|Restart\sshould\srestart\sall\snodes|Example|Reboot|ServiceLoadBalancer|DaemonRestart\sController\sManager|Daemon\sset\sshould\srun\sand\sstop\scomplex\sdaemon|Resource\susage\sof\ssystem\scontainers|allows\sscheduling\sof\spods\son\sa\sminion\safter\sit\srejoins\sthe\scluster - old-runner-1-0: bash <(curl -fsS --retry 3 "https://raw.githubusercontent.com/kubernetes/kubernetes/release-1.0/hack/jenkins/e2e.sh") - # XXX This is a hack to run only the tests we care about, without importing all of the skip list vars from the v1.0 e2e.sh. - default-skip-list-1-0: Skipped|Restart\sshould\srestart\sall\snodes|Example|Reboot|ServiceLoadBalancer|DaemonRestart\sController\sManager|Daemon\sset\sshould\srun\sand\sstop\scomplex\sdaemon|Resource\susage\sof\ssystem\scontainers|allows\sscheduling\sof\spods\son\sa\sminion\safter\sit\srejoins\sthe\scluster - provider-env: '' - gce-provider-env: | - export KUBERNETES_PROVIDER="gce" - export E2E_MIN_STARTUP_PODS="1" - export KUBE_GCE_ZONE="us-central1-f" - export FAIL_ON_GCP_RESOURCE_LEAK="true" - export CLOUDSDK_CORE_PRINT_UNHANDLED_TRACEBACKS="1" - gke-provider-env: | - 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-testing/ci/staging" - export CLOUDSDK_API_ENDPOINT_OVERRIDES_CONTAINER="https://test-container.sandbox.googleapis.com/" - export FAIL_ON_GCP_RESOURCE_LEAK="true" - aws-provider-env: | - 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" - post-env: | - # Nothing should want Jenkins $HOME - export HOME=${{WORKSPACE}} - - # 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" diff --git a/hack/jenkins/job-configs/jenkins-daily-maintenance.yaml b/hack/jenkins/job-configs/jenkins-daily-maintenance.yaml deleted file mode 100644 index 70a4855fbf6..00000000000 --- a/hack/jenkins/job-configs/jenkins-daily-maintenance.yaml +++ /dev/null @@ -1,64 +0,0 @@ -- job: - name: 'jenkins-daily-maintenance' - description: 'Run gcloud components update and clean Docker images. Test owner: spxtr.' - logrotate: - numToKeep: 200 - builders: - - shell: | - sudo chown -R jenkins:jenkins /usr/local/share/google - gcloud components update - gcloud components update alpha - gcloud components update beta - # Select only exited or dead containers that weren't created today. - # A sort of work-around for https://github.com/kubernetes/kubernetes/issues/24661 - containers_to_remove=($(docker ps -a -f 'status=exited' -f 'status=dead' --format='{{.CreatedAt}}\t{{.ID}}' | grep -v ^$(date +%Y-%m-%d) | cut -f2 || true)) - # Copied from http://blog.yohanliyanage.com/2015/05/docker-clean-up-after-yourself/ - docker rm -v "${containers_to_remove[@]:+${containers_to_remove[@]}}" || true - docker rmi $(docker images -q -f 'dangling=true') || true - docker run -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker:/var/lib/docker --rm martin/docker-cleanup-volumes - -- job: - name: 'jenkins-daily-maintenance-all' - description: 'Run jenkins-daily-maintenance on all nodes. Test owner: spxtr.' - logrotate: - numToKeep: 200 - builders: - # Run jenkins-daily-maintenance on all nodes. - - raw: - xml: | - - - - - - - - jenkins-daily-maintenance - ALWAYS - false - - - FAILURE - 2 - RED - true - - - UNSTABLE - 1 - YELLOW - true - - - FAILURE - 2 - RED - true - - - false - - - - triggers: - - timed: '@daily' diff --git a/hack/jenkins/job-configs/kubernetes-jenkins-pull/kubernetes-update-jenkins-jobs.yaml b/hack/jenkins/job-configs/kubernetes-jenkins-pull/kubernetes-update-jenkins-jobs.yaml deleted file mode 100644 index 158fa205b73..00000000000 --- a/hack/jenkins/job-configs/kubernetes-jenkins-pull/kubernetes-update-jenkins-jobs.yaml +++ /dev/null @@ -1,17 +0,0 @@ -- job: - name: kubernetes-update-jenkins-jobs - description: 'Update Jenkins jobs based on configs in https://github.com/kubernetes/kubernetes/tree/master/hack/jenkins/job-configs. Test owner: spxtr.' - logrotate: - daysToKeep: 7 - node: master - triggers: - - timed: 'H/15 * * * *' - builders: - - shell: | - curl -fsS https://raw.githubusercontent.com/kubernetes/kubernetes/master/hack/jenkins/update-jobs.sh > update-jobs.sh - chmod +x update-jobs.sh - ./update-jobs.sh "hack/jenkins/job-configs:hack/jenkins/job-configs/kubernetes-jenkins-pull" - publishers: - - email-ext: - recipients: spxtr@google.com - diff --git a/hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-build.yaml b/hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-build.yaml deleted file mode 100644 index 9119aeef051..00000000000 --- a/hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-build.yaml +++ /dev/null @@ -1,60 +0,0 @@ -- job-template: - name: 'kubernetes-{build}' - description: 'Grab the latest from GitHub, build. Test owner: Build Cop.' - node: 'build' - logrotate: - numToKeep: 200 - builders: - - shell: 'JENKINS_BUILD_STARTED=true bash <(curl -fsS --retry 3 "https://raw.githubusercontent.com/kubernetes/kubernetes/master/hack/jenkins/upload-to-gcs.sh")' - - shell: | - timeout -k {kill-timeout}m {timeout}m ./hack/jenkins/build.sh && rc=$? || rc=$? - {report-rc} - properties: - - mail-watcher - publishers: - - claim-build - - gcs-uploader - - log-parser - - email-ext: - recipients: $DEFAULT_RECIPIENTS, cloud-kubernetes-team@google.com - presend-script: $DEFAULT_PRESEND_SCRIPT - fail: true - fixed: true - send-to: - - culprits - - recipients - scm: - - git: - url: https://github.com/kubernetes/kubernetes - branches: - - '{branch}' - browser: githubweb - browser-url: https://github.com/kubernetes/kubernetes - wipe-workspace: false - skip-tag: true - triggers: - - pollscm: - cron: 'H/2 * * * *' - wrappers: - - timeout: - timeout: '{jenkins-timeout}' - fail: true - - timestamps - -- project: - name: kubernetes-builds - build: - - 'build': - branch: 'master' - timeout: 50 - - 'build-1.0': - branch: 'release-1.0' - timeout: 30 - - 'build-1.1': - branch: 'release-1.1' - timeout: 30 - - 'build-1.2': - branch: 'release-1.2' - timeout: 30 - jobs: - - 'kubernetes-{build}' diff --git a/hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-e2e.yaml b/hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-e2e.yaml deleted file mode 100644 index ee310c0011f..00000000000 --- a/hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-e2e.yaml +++ /dev/null @@ -1,1007 +0,0 @@ -# Common publishers shared by all e2e jobs. -- publisher: - name: e2e-publishers - publishers: - - claim-build - - junit-publisher - - gcs-uploader - - log-parser - - email-ext: - recipients: '{recipients}' - -# Common attributes/actions shared by all e2e jobs. -- e2e_job_defaults: &e2e_job_defaults - name: e2e_job_defaults - description: '{description} Test owner: {test-owner}.' - logrotate: - daysToKeep: 7 - jenkins_node: 'e2e' - disabled: '{obj:disable_job}' - builders: - - shell: | - {provider-env} - {job-env} - {post-env} - timeout -k {kill-timeout}m {timeout}m {runner} && rc=$? || rc=$? - if [[ ${{rc}} -ne 0 ]]; then - if [[ -x kubernetes/cluster/log-dump.sh && -d _artifacts ]]; then - echo "Dumping logs for any remaining nodes" - ./kubernetes/cluster/log-dump.sh _artifacts - fi - fi - {report-rc} - properties: - - mail-watcher - wrappers: - - ansicolor: - colormap: xterm - - timeout: - timeout: '{jenkins-timeout}' - fail: true - - timestamps - - workspace-cleanup - -# Template for most e2e test jobs. -- job-template: - name: 'kubernetes-e2e-{suffix}' - <<: *e2e_job_defaults - node: '{jenkins_node}' - triggers: - - reverse: - jobs: '{trigger-job}' - result: success - - timed: '{cron-string}' - publishers: - - e2e-publishers: - recipients: '{emails}' - -- project: - name: kubernetes-e2e-gce-master - trigger-job: 'kubernetes-build' - test-owner: 'Build Cop' - provider-env: '{gce-provider-env}' - suffix: - - 'gce': - cron-string: '{sq-cron-string}' - description: 'Runs all non-slow, non-serial, non-flaky, tests on GCE in parallel.' - timeout: 50 # See #21138 - job-env: | - # This is the *only* job that should publish the last green version. - export E2E_PUBLISH_GREEN_VERSION="true" - # This list should match the list in kubernetes-pull-build-test-e2e-gce. - export GINKGO_TEST_ARGS="--ginkgo.skip=\[Slow\]|\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:.+\]" - export GINKGO_PARALLEL="y" - export PROJECT="k8s-jkns-e2e-gce" - - 'gce-slow': - cron-string: '{sq-cron-string}' - description: 'Runs slow tests on GCE, sequentially.' - timeout: 150 # See #24072 - job-env: | - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Slow\] \ - --ginkgo.skip=\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:.+\]" - export GINKGO_PARALLEL="y" - export PROJECT="k8s-jkns-e2e-gce-slow" - - 'gce-serial': - description: 'Run [Serial], [Disruptive], tests on GCE.' - timeout: 300 - job-env: | - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Serial\]|\[Disruptive\] \ - --ginkgo.skip=\[Flaky\]|\[Feature:.+\]" - export PROJECT="kubernetes-jkns-e2e-gce-serial" - - 'gce-reboot': - description: 'Run [Feature:Reboot] tests on GCE.' - timeout: 180 - job-env: | - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Feature:Reboot\]" - export PROJECT="k8s-jkns-e2e-gce-ci-reboot" - - 'gce-autoscaling': - description: 'Run autoscaling E2E tests on GCE.' - # Issue: #23716 - disable_job: true - timeout: 210 - job-env: | - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Feature:ClusterSizeAutoscaling\]|\[Feature:InitialResources\] \ - --ginkgo.skip=\[Flaky\]" - export PROJECT="k8s-jnks-e2e-gce-autoscaling" - # Override GCE default for cluster size autoscaling purposes. - export ENABLE_CUSTOM_METRICS="true" - export KUBE_ENABLE_CLUSTER_MONITORING="googleinfluxdb" - export KUBE_ADMISSION_CONTROL="NamespaceLifecycle,InitialResources,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota" - - 'gce-flaky': - description: 'Run the flaky tests on GCE, sequentially.' - timeout: 180 - job-env: | - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Flaky\] \ - --ginkgo.skip=\[Feature:.+\]" - export PROJECT="k8s-jkns-e2e-gce-flaky" - - 'gce-scalability': - cron-string: '{sq-cron-string}' - description: 'Run the performance/scalability tests on GCE. A larger cluster is used.' - timeout: 120 - # TODO: Run this twice a day after we make kubemark-500 a blocking suite. - # cron-string: 'H H/12 * * *' - job-env: | - export E2E_NAME="e2e-scalability" - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Feature:Performance\] \ - --gather-resource-usage=true \ - --gather-metrics-at-teardown=true \ - --gather-logs-sizes=true \ - --output-print-type=json" - # Create a project k8s-jenkins-scalability-head and move this test there - export PROJECT="google.com:k8s-jenkins-scalability" - export FAIL_ON_GCP_RESOURCE_LEAK="false" - # Override GCE defaults. - export MASTER_SIZE="n1-standard-4" - export NODE_SIZE="n1-standard-2" - export NODE_DISK_SIZE="50GB" - export NUM_NODES="100" - export REGISTER_MASTER="true" - # Reduce logs verbosity - export TEST_CLUSTER_LOG_LEVEL="--v=2" - # TODO: Remove when we figure out the reason for occasional failures #19048 - export KUBELET_TEST_LOG_LEVEL="--v=4" - # Increase resync period to simulate production - export TEST_CLUSTER_RESYNC_PERIOD="--min-resync-period=12h" - # Increase delete collection parallelism - export TEST_CLUSTER_DELETE_COLLECTION_WORKERS="--delete-collection-workers=16" - - 'gce-examples': - description: 'Run E2E examples test on GCE.' - timeout: 90 - job-env: | - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Feature:Example\]" - export PROJECT="k8s-jkns-e2e-examples" - - 'gce-ubernetes-lite': - description: 'Run all non-flaky, non-slow, non-disruptive, non-feature tests on GCE, in parallel, and in a multi-zone (Ubernetes-lite) cluster.' - timeout: 150 - emails: '$DEFAULT_RECIPIENTS, quinton@google.com, justin@fathomdb.com' - test-owner: 'quinton' - job-env: | - export PROJECT="k8s-jkns-e2e-gce-ubelite" - export GINKGO_TEST_ARGS="--ginkgo.skip=\[Slow\]|\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:.+\]" - export GINKGO_PARALLEL="y" - export MULTIZONE="true" - export E2E_ZONES="us-central1-a us-central1-b us-central1-f" # Where the nodes reside. Master is in the first one. - export KUBE_GCE_ZONE="us-central1-a" # Where the master resides - hangover due to legacy scripts. - - 'gce-kubenet': - description: 'Run all non-flaky, non-slow, non-disruptive, non-feature tests on GCE using kubenet as network provider' - timeout: 120 - emails: 'mixia@google.com' - test-owner: 'mixia' - job-env: | - export PROJECT="k8s-jkns-e2e-gce-kubenet" - export GINKGO_TEST_ARGS="--ginkgo.skip=\[Slow\]|\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:.+\]" - export GINKGO_PARALLEL="y" - export NETWORK_PROVIDER="kubenet" - jobs: - - 'kubernetes-e2e-{suffix}' - -- project: - name: kubernetes-e2e-gke-master - trigger-job: 'kubernetes-build' - test-owner: 'Build Cop' - provider-env: '{gke-provider-env}' - suffix: - - 'gke': - cron-string: '{sq-cron-string}' - description: 'Runs all non-slow, non-serial, non-flaky, tests on GKE in parallel (against GKE test endpoint)' - timeout: 50 # See #21138 - job-env: | - export PROJECT="k8s-jkns-e2e-gke-ci" - export GINKGO_TEST_ARGS="--ginkgo.skip=\[Slow\]|\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:.+\]" - export GINKGO_PARALLEL="y" - - 'gke-slow': - cron-string: '{sq-cron-string}' - description: 'Run slow E2E tests on GKE using the latest successful build.' - timeout: 150 # See #24072 - job-env: | - export PROJECT="k8s-jkns-e2e-gke-slow" - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Slow\] \ - --ginkgo.skip=\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:.+\]" - export GINKGO_PARALLEL="y" - - 'gke-serial': - description: 'Run [Serial], [Disruptive] tests on GKE.' - timeout: 300 - job-env: | - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Serial\]|\[Disruptive\] \ - --ginkgo.skip=\[Flaky\]|\[Feature:.+\]" - export PROJECT="jenkins-gke-e2e-serial" - - 'gke-reboot': - description: 'Run [Feature:Reboot] tests on GKE using the latest successful build.' - timeout: 180 - job-env: | - export PROJECT="k8s-jkns-e2e-gke-ci-reboot" - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Feature:Reboot\]" - - 'gke-flaky': - description: | - Run flaky e2e tests using the following config:
- - provider: GKE
- - api proxy: staging
- - borg job: test
- - client (kubectl): ci/latest.txt
- - cluster (k8s): ci/latest.txt
- - tests: ci/latest.txt - timeout: 300 - job-env: | - export PROJECT="k8s-jkns-e2e-gke-ci-flaky" - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Flaky\] \ - --ginkgo.skip=\[Feature:.+\]" - - 'gke-multizone': - description: 'Run all non-flaky, non-slow, non-disruptive, non-feature tests on GKE, in parallel, and in a multi-zone (Ubernetes-lite) cluster.' - timeout: 150 - emails: '$DEFAULT_RECIPIENTS, cloud-kubernetes-alerts@google.com, arob@google.com, quinton@google.com' - job-env: | - export PROJECT="k8s-jkns-e2e-gke-multizone" - export GINKGO_TEST_ARGS="--ginkgo.skip=\[Slow\]|\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:.+\]" - export GINKGO_PARALLEL="y" - export ZONE="us-central1-f" - export ADDITIONAL_ZONES="us-central1-a,us-central1-b" - - 'gke-large-cluster': - description: 'Run all non-flaky, non-slow, non-disruptive, non-feature tests on GKE, in parallel on a large (1000 node) GKE cluster' - timeout: 300 - emails: 'zml@google.com' - cron-string: '' - trigger-job: '' - job-env: | - export PROJECT="gke-large-cluster-jenkins" - export GINKGO_TEST_ARGS="--ginkgo.skip=\[Slow\]|\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:.+\]" - export GINKGO_PARALLEL="y" - export ZONE="us-central1-b" - export NUM_NODES=1000 - export MACHINE_TYPE="n1-highmem-2" - export ALLOWED_NOTREADY_NODES="10" - jobs: - - 'kubernetes-e2e-{suffix}' - -- project: - name: kubernetes-e2e-gce-1-2 - trigger-job: 'kubernetes-build-1.2' - test-owner: 'Build Cop' - provider-env: | - {gce-provider-env} - export JENKINS_PUBLISHED_VERSION="ci/latest-1.2" - suffix: - - 'gce-release-1.2': - description: 'Runs all non-slow, non-serial, non-flaky, tests on GCE in parallel on the release-1.2 branch.' - timeout: 50 # See #21138 - job-env: | - export GINKGO_TEST_ARGS="--ginkgo.skip=\[Slow\]|\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:.+\]" - export GINKGO_PARALLEL="y" - export PROJECT="k8s-jkns-e2e-gce-1-2" - - 'gce-reboot-release-1.2': - description: 'Run [Feature:Reboot] tests on GCE on the release-1.2 branch.' - timeout: 180 - job-env: | - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Feature:Reboot\]" - export PROJECT="k8s-jkns-e2e-gce-reboot-1-2" - - 'gce-slow-release-1.2': - description: 'Runs slow tests on GCE, sequentially on the release-1.2 branch.' - timeout: 60 - job-env: | - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Slow\] \ - --ginkgo.skip=\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:.+\]" - export GINKGO_PARALLEL="y" - export PROJECT="k8s-jkns-e2e-gce-slow-1-2" - - 'gce-serial-release-1.2': - description: 'Run [Serial], [Disruptive], tests on GCE on the release-1.2 branch.' - timeout: 300 - job-env: | - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Serial\]|\[Disruptive\] \ - --ginkgo.skip=\[Flaky\]|\[Feature:.+\]" - export PROJECT="k8s-jkns-e2e-gce-serial-1-2" - - 'gce-ingress-release-1.2': - description: 'Run [Feature:Ingress] tests on GCE on the release-1.2 branch.' - timeout: 90 - emails: 'beeps@google.com' - test-owner: 'beeps' - job-env: | - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Feature:Ingress\]" - export PROJECT="kubernetes-ingress-1-2" - # TODO: Enable this when we've split 1.2 tests into another project. - export FAIL_ON_GCP_RESOURCE_LEAK="false" - - 'gce-scalability-release-1.2': - timeout: 120 - description: 'Run scalability E2E tests on GCE from the release-1.2 branch.' - # Run on Saturday 8 am - cron-string: 'H 8 * * 6' - job-env: | - export E2E_NAME="e2e-scalability-1-2" - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Feature:Performance\] \ - --gather-resource-usage=true \ - --gather-metrics-at-teardown=true \ - --gather-logs-sizes=true \ - --output-print-type=json" - # Use the 1.1 project for now, since it has quota. - # TODO: create a project k8s-e2e-gce-scalability-release and move this test there - export PROJECT="k8s-e2e-gce-scalability-1-1" - export FAIL_ON_GCP_RESOURCE_LEAK="false" - # Override GCE defaults. - export KUBE_GCE_ZONE="us-east1-b" - export MASTER_SIZE="n1-standard-4" - export NODE_SIZE="n1-standard-1" - export NODE_DISK_SIZE="50GB" - export NUM_NODES="100" - export REGISTER_MASTER="true" - # Reduce logs verbosity - export TEST_CLUSTER_LOG_LEVEL="--v=2" - # TODO: Remove when we figure out the reason for occasional failures #19048 - export KUBELET_TEST_LOG_LEVEL="--v=4" - # Increase resync period to simulate production - export TEST_CLUSTER_RESYNC_PERIOD="--min-resync-period=12h" - # Increase delete collection parallelism - export TEST_CLUSTER_DELETE_COLLECTION_WORKERS="--delete-collection-workers=16" - jobs: - - 'kubernetes-e2e-{suffix}' - -- project: - name: kubernetes-e2e-gke-1-2 - trigger-job: 'kubernetes-build-1.2' - test-owner: 'Build Cop' - provider-env: | - {gke-provider-env} - export JENKINS_PUBLISHED_VERSION="ci/latest-1.2" - suffix: - - 'gke-release-1.2': - description: 'Run E2E tests on GKE from the release-1.2 branch.' - timeout: 50 # See #21138 - job-env: | - export PROJECT="k8s-jkns-e2e-gke-1-2" - export GINKGO_TEST_ARGS="--ginkgo.skip=\[Slow\]|\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:.+\]" - export GINKGO_PARALLEL="y" - - 'gke-serial-release-1.2': - description: 'Run [Serial], [Disruptive] tests on GKE on the release-1.2 branch.' - timeout: 300 - job-env: | - export PROJECT="k8s-jkns-e2e-gke-serial-1-2" - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Serial\]|\[Disruptive\] \ - --ginkgo.skip=\[Flaky\]|\[Feature:.+\]" - - 'gke-slow-release-1.2': - description: 'Run slow E2E tests on GKE using the release-1.2 branch.' - timeout: 60 - job-env: | - export PROJECT="k8s-jkns-e2e-gke-slow-1-2" - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Slow\] \ - --ginkgo.skip=\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:.+\]" - export GINKGO_PARALLEL="y" - - 'gke-ingress-release-1.2': - description: 'Run [Feature:Ingress] tests on GKE on the release-1.2 branch.' - timeout: 90 - emails: 'beeps@google.com' - test-owner: 'beeps' - job-env: | - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Feature:Ingress\]" - export PROJECT="kubernetes-gke-ingress-1-2" - # TODO: Enable this when we've split 1.2 tests into another project. - export FAIL_ON_GCP_RESOURCE_LEAK="false" - jobs: - - 'kubernetes-e2e-{suffix}' - -- project: - name: kubernetes-e2e-gke-version-pinned - # TODO(spxtr) This should float with the current release, or something. - trigger-job: 'kubernetes-build-1.2' - test-owner: 'GKE on-call' - provider-env: | - {gke-provider-env} - suffix: - - 'gke-pre-release': - description: 'Run E2E tests on GKE test endpoint against the latest prerelease (alpha/beta).' - timeout: 480 - job-env: | - export PROJECT="k8s-jkns-e2e-gke-prerel" - export CLOUDSDK_BUCKET="gs://cloud-sdk-testing/rc" - export JENKINS_PUBLISHED_VERSION="release/latest" - - 'gke-test': - description: 'Run E2E tests on GKE test endpoint.' - timeout: 480 - job-env: | - export PROJECT="k8s-jkns-e2e-gke-test" - export CLOUDSDK_BUCKET="gs://cloud-sdk-testing/rc" - export JENKINS_USE_SERVER_VERSION="y" - - 'gke-subnet': - description: 'Run E2E tests on GKE test endpoint in a subnet.' - timeout: 480 - job-env: | - # auto-subnet manually created - if deleted, it will need to be recreated - # gcloud alpha compute networks create auto-subnet --mode auto - export E2E_NAME="auto-subnet" - export PROJECT="k8s-jkns-e2e-gke-subnet" - export CLOUDSDK_BUCKET="gs://cloud-sdk-testing/rc" - export JENKINS_USE_SERVER_VERSION="y" - - 'gke-staging': - description: 'Run E2E tests on GKE staging endpoint.' - timeout: 480 - job-env: | - export PROJECT="k8s-jkns-e2e-gke-staging" - export CLOUDSDK_BUCKET="gs://cloud-sdk-testing/rc" - export JENKINS_USE_SERVER_VERSION="y" - export CLOUDSDK_API_ENDPOINT_OVERRIDES_CONTAINER="https://staging-container.sandbox.googleapis.com/" - - 'gke-staging-parallel': - description: 'Run E2E tests on GKE staging endpoint in parallel.' - timeout: 80 - job-env: | - export PROJECT="k8s-e2e-gke-staging-parallel" - export CLOUDSDK_BUCKET="gs://cloud-sdk-testing/rc" - export JENKINS_USE_SERVER_VERSION="y" - export CLOUDSDK_API_ENDPOINT_OVERRIDES_CONTAINER="https://staging-container.sandbox.googleapis.com/" - export GINKGO_TEST_ARGS="--ginkgo.skip=\[Slow\]|\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:.+\]" - export GINKGO_PARALLEL="y" - - 'gke-prod': - description: 'Run E2E tests on GKE prod endpoint.' - timeout: 480 - job-env: | - export PROJECT="k8s-jkns-e2e-gke-prod" - export CLOUDSDK_BUCKET="gs://cloud-sdk-testing/rc" - export JENKINS_USE_SERVER_VERSION="y" - export CLOUDSDK_API_ENDPOINT_OVERRIDES_CONTAINER="https://container.googleapis.com/" - export ZONE="asia-east1-b" - - 'gke-prod-parallel': - description: 'Run E2E tests on GKE prod endpoint in parallel.' - timeout: 80 - job-env: | - export PROJECT="k8s-e2e-gke-prod-parallel" - export CLOUDSDK_BUCKET="gs://cloud-sdk-testing/rc" - export JENKINS_USE_SERVER_VERSION="y" - export CLOUDSDK_API_ENDPOINT_OVERRIDES_CONTAINER="https://container.googleapis.com/" - export GINKGO_TEST_ARGS="--ginkgo.skip=\[Slow\]|\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:.+\]" - export GINKGO_PARALLEL="y" - export ZONE="asia-east1-b" - jobs: - - 'kubernetes-e2e-{suffix}' - -- project: - name: kubernetes-e2e-gke-1.1 - trigger-job: 'kubernetes-build-1.1' - test-owner: 'Build Cop' - branch: 'release-1.1' - jenkins_node: 'master' - runner: '{old-runner-1-1}' - post-env: '' - suffix: - - 'gke-1.1': - timeout: 150 - description: 'Run E2E tests on GKE from the 1.1 release branch.' - cron-string: 'H */6 * * *' - jobs: - - 'kubernetes-e2e-{suffix}' - - -- project: - name: kubernetes-e2e-gce-1.1 - trigger-job: 'kubernetes-build-1.1' - test-owner: 'Build Cop' - branch: 'release-1.1' - jenkins_node: 'master' - runner: '{old-runner-1-1}' - post-env: '' - cron-string: 'H */6 * * *' - suffix: - - 'gce-release-1.1': - timeout: 175 - description: 'Run E2E tests on GCE from the current release branch.' - jobs: - - 'kubernetes-e2e-{suffix}' - -- project: - name: kubernetes-e2e-1.0 - trigger-job: 'kubernetes-build-1.0' - test-owner: 'Build Cop' - branch: 'release-1.0' - jenkins_node: 'master' - runner: '{old-runner-1-0}' - post-env: '' - cron-string: 'H */12 * * *' - suffix: - - 'gce-release-1.0': - timeout: 150 - description: 'Run E2E tests on GCE from the release-1.0 branch.' - jobs: - - 'kubernetes-e2e-{suffix}' - -- project: - name: kubernetes-e2e-features - trigger-job: 'kubernetes-build' - suffix: - - 'gke-ingress': - description: 'Run [Feature:Ingress] tests on GKE using the latest successful build.' - timeout: 90 - emails: 'beeps@google.com' - test-owner: 'beeps' - provider-env: '{gke-provider-env}' - job-env: | - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Feature:Ingress\]" - export PROJECT="kubernetes-gke-ingress" - # TODO: Enable this when we've split 1.2 tests into another project. - export FAIL_ON_GCP_RESOURCE_LEAK="false" - - 'gce-ingress': - description: 'Run [Feature:Ingress] tests on GCE.' - timeout: 90 - emails: 'beeps@google.com' - test-owner: 'beeps' - provider-env: '{gce-provider-env}' - job-env: | - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Feature:Ingress\]" - export PROJECT="kubernetes-ingress" - # TODO: Enable this when we've split 1.2 tests into another project. - export FAIL_ON_GCP_RESOURCE_LEAK="false" - - 'gce-flannel': - description: 'Run E2E tests on GCE using Flannel and the latest successful build. This suite is quarantined in a dedicated project because Flannel integration is experimental.' - disable_job: true # Issue #24520 - # We don't really care to enforce a timeout for flannel tests. Any performance issues will show up in the other GCE builders. - # This suite is to continuously check that flannel + Kubernetes works. - timeout: 120 - emails: 'beeps@google.com' - test-owner: 'beeps' - provider-env: '{gce-provider-env}' - job-env: | - # XXX Not a unique project - export E2E_NAME="e2e-flannel" - export PROJECT="kubernetes-flannel" - export FAIL_ON_GCP_RESOURCE_LEAK="false" - # Override GCE defaults. - export NETWORK_PROVIDER="flannel" - - 'gce-es-logging': - description: 'Run [Feature:Elasticsearch] tests on GCE using the latest successful build.' - timeout: 90 - emails: '$DEFAULT_RECIPIENTS, mixia@google.com' - test-owner: 'mixia' - provider-env: '{gce-provider-env}' - job-env: | - export PROJECT="kubernetes-es-logging" - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Feature:Elasticsearch\]" - export KUBE_LOGGING_DESTINATION="elasticsearch" - jobs: - - 'kubernetes-e2e-{suffix}' - -- project: - name: kubernetes-aws - test-owner: 'bburns' - emails: 'bburns@google.com' - cron-string: '@daily' - trigger-job: '' - timeout: 240 - jenkins_node: 'master' - runner: '{legacy-runner}' - provider-env: | - {aws-provider-env} - export GINKGO_TEST_ARGS="--ginkgo.skip=\[Slow\]|\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:.+\]" - export GINKGO_PARALLEL="y" - export PROJECT="k8s-jkns-e2e-aws" - export AWS_CONFIG_FILE='/var/lib/jenkins/.aws/credentials' - export AWS_SSH_KEY='/var/lib/jenkins/.ssh/kube_aws_rsa' - export KUBE_SSH_USER='admin' - # This is needed to be able to create PD from the e2e test - export AWS_SHARED_CREDENTIALS_FILE='/var/lib/jenkins/.aws/credentials' - suffix: - - 'aws': - description: 'Run e2e tests on AWS using the latest successful Kubernetes build.' - job-env: | - export E2E_NAME="e2e-aws-master" - - 'aws-release-1.2': - description: 'Run e2e tests on AWS using the latest successful 1.2 Kubernetes build.' - job-env: | - export E2E_NAME="e2e-aws-1-2" - export JENKINS_PUBLISHED_VERSION="ci/latest-1.2" - jobs: - - 'kubernetes-e2e-{suffix}' - -- project: - name: kubernetes-e2e-gce-enormous-cluster - test-owner: 'gmarek' - emails: 'gmarek@google.com' - # Run only on Sunday and Wednesday at 8 am MTV time. - cron-string: 'H 8 * * 0,4' - trigger-job: '' - description: 'Starts and deletes empty 1000 node cluster and runs Density 30 test on it. Does allow few Nodes to fail during startup.' - timeout: 480 - branch: 'master' - suffix: 'gce-enormous-cluster' - provider-env: '{gce-provider-env}' - job-env: | - # XXX Not a unique project - export E2E_NAME="e2e-enormous-cluster" - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Feature:Performance\]" - export PROJECT="kubernetes-scale" - export FAIL_ON_GCP_RESOURCE_LEAK="false" - # Override GCE defaults. - export NETWORK_PROVIDER="flannel" - # Temporarily switch of Heapster, as this will not schedule anywhere. - # TODO: Think of a solution to enable it. - export KUBE_ENABLE_CLUSTER_MONITORING="none" - export KUBE_GCE_ZONE="us-central1-c" - export MASTER_SIZE="n1-standard-32" - export NODE_SIZE="n1-standard-1" - export NODE_DISK_SIZE="50GB" - export NUM_NODES="1000" - export ALLOWED_NOTREADY_NODES="2" - # Reduce logs verbosity - export TEST_CLUSTER_LOG_LEVEL="--v=1" - export MAX_INSTANCES_PER_MIG="1000" - # Increase resync period to simulate production - export TEST_CLUSTER_RESYNC_PERIOD="--min-resync-period=12h" - # Increase delete collection parallelism - export TEST_CLUSTER_DELETE_COLLECTION_WORKERS="--delete-collection-workers=16" - jobs: - - 'kubernetes-e2e-{suffix}' - -# NOTE: From here on all jobs use Trusty as the image for master and/or nodes. -# Please add templates/groups/projects/jobs that use ContainerVm above/below -# this section (search "End of Trusty jobs" for the ending separator). -# -# This section contains three types of jobs (all run e2e tests on GCE): -# * Jobs that use a "green" Trusty image to test k8s continuous builds (hence -# the "ci" in job names). We use these to guard k8s and Trusty -# compatibility. -# * Jobs that use a released k8s version to test Trusty's continuous builds -# (dev, beta and stable). We use these to qualify Trusty image releases. -# * Jobs that run tests against GKE endpoints with Trusty images. We use these -# to soak Trusty release candidate before pushing to GKE production. - -# e2e test jobs that run on GCE with a "green" Trusty image and kubernetes' -# continuous builds (currently only targeting `master` and `release-1.2`). -- job-template: - name: 'kubernetes-e2e-gce-trusty-ci-{suffix}' - <<: *e2e_job_defaults - node: '{jenkins_node}' - triggers: - - reverse: - jobs: '{trigger-job}' - result: success - - timed: '{cron-string}' - publishers: - - e2e-publishers: - recipients: '{emails}' - - description-setter: - regexp: KUBE_GCE_MASTER_IMAGE=(.*) - - groovy-postbuild: - script: | - def trustyImageMatcher = manager.getLogMatcher("KUBE_GCE_MASTER_IMAGE=(.*)") - if(trustyImageMatcher?.matches()) manager.addShortText("Trusty Image: " + trustyImageMatcher.group(1) + "", "grey", "white", "0px", "white") - def k8sVersionMatcher = manager.getLogMatcher("Using\\spublished\\sversion\\s(.*)\\s\\(from.*") - if(k8sVersionMatcher?.matches()) manager.addShortText("
Kubernetes version: " + k8sVersionMatcher.group(1) + "", "grey", "white", "0px", "white") - -- project: - name: kubernetes-e2e-gce-trusty-ci-master - trigger-job: 'kubernetes-build' - test-owner: 'wonderfly@google.com' - emails: 'wonderfly@google.com,qzheng@google.com' - provider-env: | - {gce-provider-env} - export JENKINS_USE_TRUSTY_IMAGES="y" - suffix: - # TODO(wonderfly): For Trusty, we currently only run CI and slow tests. - # More test coverage under way. - - 'master': - description: 'Runs all non-slow, non-serial, non-flaky, tests on GCE with Trusty images in parallel on the master branch.' - timeout: 30 - job-env: | - export GINKGO_TEST_ARGS="--ginkgo.skip=\[Slow\]|\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:.+\]" - export GINKGO_PARALLEL="y" - export PROJECT="e2e-gce-trusty-ci-master" - - 'slow-master': - description: 'Runs slow tests on GCE with Trusty images, sequentially on the master branch.' - timeout: 60 - job-env: | - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Slow\] \ - --ginkgo.skip=\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:.+\]" - export GINKGO_PARALLEL="y" - export PROJECT="e2e-gce-trusty-ci-master-slow" - - 'serial-master': - description: 'Run [Serial], [Disruptive], tests on GCE, with Trusty images.' - timeout: 300 - job-env: | - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Serial\]|\[Disruptive\] \ - --ginkgo.skip=\[Flaky\]|\[Feature:.+\]" - export PROJECT="e2e-gce-trusty-ci-serial" - jobs: - - 'kubernetes-e2e-gce-trusty-ci-{suffix}' - -- project: - name: kubernetes-e2e-gce-trusty-ci-1-2 - trigger-job: 'kubernetes-build-1.2' - test-owner: 'wonderfly@google.com' - emails: 'wonderfly@google.com,qzheng@google.com' - provider-env: | - {gce-provider-env} - export JENKINS_PUBLISHED_VERSION="ci/latest-1.2" - export JENKINS_USE_TRUSTY_IMAGES="y" - suffix: - # TODO(wonderfly): For Trusty, we currently only run CI and slow tests. - # More test coverage under way. - - 'release-1.2': - description: 'Runs all non-slow, non-serial, non-flaky, tests on GCE with Trusty images in parallel on the release-1.2 branch.' - timeout: 30 - job-env: | - export GINKGO_TEST_ARGS="--ginkgo.skip=\[Slow\]|\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:.+\]" - export GINKGO_PARALLEL="y" - export PROJECT="e2e-gce-trusty-ci-1-2" - - 'slow-release-1.2': - description: 'Runs slow tests on GCE with Trusty images, sequentially on the release-1.2 branch.' - timeout: 60 - job-env: | - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Slow\] \ - --ginkgo.skip=\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:.+\]" - export GINKGO_PARALLEL="y" - export PROJECT="e2e-gce-trusty-ci-slow-1-2" - - 'serial-release-1.2': - description: 'Run [Serial], [Disruptive], tests on GCE, with Trusty images, on the release-1.2 branch.' - timeout: 300 - job-env: | - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Serial\]|\[Disruptive\] \ - --ginkgo.skip=\[Flaky\]|\[Feature:.+\]" - export PROJECT="e2e-gce-trusty-ci-serial-1-2" - jobs: - - 'kubernetes-e2e-gce-trusty-ci-{suffix}' - -# Template for e2e test jobs that run on GCE with a released k8s version and -# Trusty's continuous builds (dev only). -- job-template: - name: 'kubernetes-e2e-gce-trusty-dev-{suffix}' - <<: *e2e_job_defaults - node: '{jenkins_node}' - triggers: - - timed: 'H H/8 * * *' - publishers: - - e2e-publishers: - recipients: '{emails}' - - description-setter: - regexp: KUBE_GCE_MASTER_IMAGE=(.*) - - groovy-postbuild: - script: | - def trustyImageMatcher = manager.getLogMatcher("KUBE_GCE_MASTER_IMAGE=(.*)") - if(trustyImageMatcher?.matches()) manager.addShortText("Trusty Image: " + trustyImageMatcher.group(1) + "", "grey", "white", "0px", "white") - def k8sVersionMatcher = manager.getLogMatcher("Using\\spublished\\sversion\\s(.*)\\s\\(from.*") - if(k8sVersionMatcher?.matches()) manager.addShortText("
Kubernetes version: " + k8sVersionMatcher.group(1) + "", "grey", "white", "0px", "white") - -- project: - name: kubernetes-e2e-gce-trusty-dev - test-owner: 'wonderfly@google.com' - branch: 'release-1.2' - emails: 'wonderfly@google.com,qzheng@google.com' - provider-env: | - {gce-provider-env} - export JENKINS_PUBLISHED_VERSION="release/stable-1.2" - export JENKINS_USE_TRUSTY_IMAGES="y" - suffix: - - 'release': - description: 'Runs all non-slow, non-serial, non-flaky, tests on GCE with the latest Trusty build and the latest k8s 1.2 release.' - timeout: 30 - job-env: | - export GINKGO_TEST_ARGS="--ginkgo.skip=\[Slow\]|\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:.+\]" - export GINKGO_PARALLEL="y" - export PROJECT="k8s-e2e-gce-trusty-dev" - - 'slow': - description: 'Run slow E2E tests on GCE with the latest Trusty build with the latest k8s 1.2 release.' - timeout: 60 - job-env: | - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Slow\] \ - --ginkgo.skip=\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:.+\]" - export GINKGO_PARALLEL="y" - export PROJECT="k8s-e2e-gce-trusty-dev-slow" - - 'serial': - description: 'Run [Serial], [Disruptive], tests on GCE, with Trusty dev images and the latest k8s 1.2 release.' - timeout: 300 - job-env: | - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Serial\]|\[Disruptive\] \ - --ginkgo.skip=\[Flaky\]|\[Feature:.+\]" - export PROJECT="e2e-gce-trusty-dev-serial" - jobs: - - 'kubernetes-e2e-gce-trusty-dev-{suffix}' - -# Template for e2e test jobs that run on GCE with a released k8s version and -# Trusty's continuous builds (beta and stable only work with k8s 1.1). -- job-template: - name: 'kubernetes-e2e-gce-trusty-{suffix}' - <<: *e2e_job_defaults - node: '{jenkins_node}' - triggers: - # Trusty beta and stable images are built once per day. - - timed: '@daily' - publishers: - - e2e-publishers: - recipients: '{emails}' - - description-setter: - # In 1.1, only nodes run Trusty. - regexp: KUBE_GCE_MINION_IMAGE=(.*) - - groovy-postbuild: - script: | - def trustyImageMatcher = manager.getLogMatcher("KUBE_GCE_MINION_IMAGE=(.*)") - if(trustyImageMatcher?.matches()) manager.addShortText("Trusty Image: " + trustyImageMatcher.group(1) + "", "grey", "white", "0px", "white") - def k8sVersionMatcher = manager.getLogMatcher("Using\\spublished\\sversion\\s(.*)\\s\\(from.*") - if(k8sVersionMatcher?.matches()) manager.addShortText("
Kubernetes version: " + k8sVersionMatcher.group(1) + "", "grey", "white", "0px", "white") - -- project: - name: kubernetes-e2e-gce-trusty-1-1 - test-owner: 'wonderfly@google.com' - branch: 'release-1.1' - emails: 'wonderfly@google.com,qzheng@google.com' - jenkins_node: 'master' - runner: '{old-runner-1-1}' - post-env: '' - suffix: - - 'beta-release': - description: 'Runs all non-slow, non-serial, non-flaky, tests on GCE with the latest Trusty beta build and the latest k8s 1.1 release.' - timeout: 150 - - 'beta-slow': - description: 'Run slow E2E tests on GCE with the latest Trusty beta build with the latest k8s 1.1 release.' - timeout: 270 - - 'stable-release': - description: 'Runs all non-slow, non-serial, non-flaky, tests on GCE with the latest Trusty stable build and the latest k8s 1.1 release.' - timeout: 150 - - 'stable-slow': - description: 'Run slow E2E tests on GCE with the latest Trusty stable build with the latest k8s 1.1 release.' - timeout: 270 - jobs: - - 'kubernetes-e2e-gce-trusty-{suffix}' - -# Jobs that run e2e tests on GKE with Trusty as node image on the release-1.2 -# branch. Note that the variable "E2E_NAME" in all following jobs are set to -# have the "-trusty" suffix, which is required to start a GKE cluster with -# Trusty images. The variable "KUBE_OS_DISTRIBUTION" is set to "trusty" so that -# the OS dependendent test cases will use Trusty in their assertions. -- project: - name: kubernetes-e2e-gke-trusty - trigger-job: 'kubernetes-build-1.2' - test-owner: 'wonderfly@google.com' - provider-env: | - {gke-provider-env} - emails: 'wonderfly@google.com,qzheng@google.com' - suffix: - - 'gke-trusty-test': - description: 'Run E2E tests on GKE test endpoint.' - timeout: 480 - job-env: | - export PROJECT="kubekins-e2e-gke-trusty-test" - export CLOUDSDK_BUCKET="gs://cloud-sdk-testing/rc" - export JENKINS_USE_SERVER_VERSION="y" - export E2E_NAME="gke-e2e-test-trusty" - export KUBE_OS_DISTRIBUTION="trusty" - - 'gke-trusty-subnet': - description: 'Run E2E tests on GKE test endpoint in a subnet.' - timeout: 480 - job-env: | - # Subnetwork "jkns-gke-e2e-subnet-trusty" is manually created - - # if deleted, it will need to be recreated via - # `gcloud alpha compute networks create jkns-gke-e2e-subnet-trusty --mode auto` - export PROJECT="k8s-e2e-gke-trusty-subnet" - export CLOUDSDK_BUCKET="gs://cloud-sdk-testing/rc" - export JENKINS_USE_SERVER_VERSION="y" - export E2E_NAME="gke-e2e-subnet-trusty" - export KUBE_OS_DISTRIBUTION="trusty" - - 'gke-trusty-staging': - description: 'Run E2E tests on GKE staging endpoint.' - timeout: 480 - job-env: | - export PROJECT="e2e-gke-trusty-staging" - export CLOUDSDK_BUCKET="gs://cloud-sdk-testing/rc" - export JENKINS_USE_SERVER_VERSION="y" - export CLOUDSDK_API_ENDPOINT_OVERRIDES_CONTAINER="https://staging-container.sandbox.googleapis.com/" - export E2E_NAME="gke-e2e-staging-trusty" - export KUBE_OS_DISTRIBUTION="trusty" - - 'gke-trusty-staging-parallel': - description: 'Run E2E tests on GKE staging endpoint in parallel.' - timeout: 80 - job-env: | - export PROJECT="e2e-gke-trusty-staging-p" - export CLOUDSDK_BUCKET="gs://cloud-sdk-testing/rc" - export JENKINS_USE_SERVER_VERSION="y" - export CLOUDSDK_API_ENDPOINT_OVERRIDES_CONTAINER="https://staging-container.sandbox.googleapis.com/" - export GINKGO_TEST_ARGS="--ginkgo.skip=\[Slow\]|\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:.+\]" - export GINKGO_PARALLEL="y" - export E2E_NAME="gke-e2e-staging-pa-trusty" - export KUBE_OS_DISTRIBUTION="trusty" - - 'gke-trusty-prod': - # Failing constantly due to a known issue (tracked internally). - disable_job: true - description: 'Run E2E tests on GKE prod endpoint.' - timeout: 480 - job-env: | - export PROJECT="kubekins-e2e-gke-trusty-prod" - export CLOUDSDK_BUCKET="gs://cloud-sdk-testing/rc" - export JENKINS_USE_SERVER_VERSION="y" - export KUBE_GCE_ZONE="asia-east1-b" - export E2E_NAME="gke-e2e-prod-trusty" - export KUBE_OS_DISTRIBUTION="trusty" - - 'gke-trusty-prod-parallel': - # Failing constantly due to a known issue (tracked internally). - disable_job: true - description: 'Run E2E tests on GKE prod endpoint in parallel.' - timeout: 80 - job-env: | - export PROJECT="e2e-gke-trusty-prod-p" - export CLOUDSDK_BUCKET="gs://cloud-sdk-testing/rc" - export JENKINS_USE_SERVER_VERSION="y" - export GINKGO_TEST_ARGS="--ginkgo.skip=\[Slow\]|\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:.+\]" - export GINKGO_PARALLEL="y" - export KUBE_GCE_ZONE="asia-east1-b" - export E2E_NAME="gke-e2e-prod-pa-trusty" - export KUBE_OS_DISTRIBUTION="trusty" - jobs: - - 'kubernetes-e2e-{suffix}' - -# End of Trusty jobs - -- project: - name: kubernetes-e2e-gke-upgrades-experimental - trigger-job: 'kubernetes-build' - test-owner: 'ihmccreery' - emails: 'ihmccreery@google.com' - provider-env: '{gke-provider-env}' - suffix: - - 'gke-1.1-1.2-kubectl-skew': - description: 'Deploys a cluster at v1.1 and runs the v1.2 Kubectl tests.' - timeout: 120 - job-env: | - export PROJECT="kube-jks-gke-upg-experimental" - export E2E_NAME="gke-1-1-1-2-ctl-skew" - export JENKINS_PUBLISHED_VERSION="ci/latest-1.1" - export GINKGO_TEST_ARGS="--ginkgo.focus=Kubectl" - export JENKINS_PUBLISHED_TEST_VERSION="ci/latest-1.2" - export GINKGO_PARALLEL="y" - export E2E_OPT="--check_version_skew=false" - # In v1.1, NUM_MINIONS defaults to 2, so we have to override to 3 here. NUM_MINIONS - # was changed to NUM_NODES in v1.2, but we don't need to override for v1.2+. - export NUM_MINIONS=3 - # Similarly, in v1.1, MINION_SIZE defaults to 'n1-standard-1', so we need to - # override it here (specifically for HPA tests). MINION_SIZE was changed to - # NODE_SIZE in v1.2, but we don't need to override for v1.2+. - export MINION_SIZE='n1-standard-2' - - 'gke-1.1-1.2-upgrade-master': - description: 'Deploys a cluster at v1.1, upgrades its master to v1.2, and runs v1.1 tests against it.' - timeout: 300 - job-env: | - export PROJECT="kube-jks-gke-upg-experimental" - export E2E_NAME="gke-1-1-1-2-upg-mas" - export JENKINS_PUBLISHED_VERSION="ci/latest-1.1" - export E2E_UPGRADE_TEST="true" - export JENKINS_PUBLISHED_TEST_VERSION="ci/latest-1.2" - export GINKGO_UPGRADE_TEST_ARGS="--ginkgo.focus=\[Feature:MasterUpgrade\] --upgrade-target=ci/latest-1.2" - export JENKINS_USE_OLD_TESTS="true" - export E2E_OPT="--check_version_skew=false" - export GINKGO_TEST_ARGS="--ginkgo.skip={default-skip-list-1-1}" - # In v1.1, NUM_MINIONS defaults to 2, so we have to override to 3 here. NUM_MINIONS - # was changed to NUM_NODES in v1.2, but we don't need to override for v1.2+. - export NUM_MINIONS=3 - # Similarly, in v1.1, MINION_SIZE defaults to 'n1-standard-1', so we need to - # override it here (specifically for HPA tests). MINION_SIZE was changed to - # NODE_SIZE in v1.2, but we don't need to override for v1.2+. - export MINION_SIZE='n1-standard-2' - - 'gke-1.1-1.2-upgrade-cluster': - description: 'Deploys a cluster at v1.1, upgrades the cluster to v1.2, and runs v1.1 tests against it.' - timeout: 300 - job-env: | - export PROJECT="kube-jks-gke-upg-experimental" - export E2E_NAME="gke-1-1-1-2-upg-clu" - export JENKINS_PUBLISHED_VERSION="ci/latest-1.1" - export E2E_UPGRADE_TEST="true" - export JENKINS_PUBLISHED_TEST_VERSION="ci/latest-1.2" - export GINKGO_UPGRADE_TEST_ARGS="--ginkgo.focus=\[Feature:ClusterUpgrade\] --upgrade-target=ci/latest-1.2" - export JENKINS_USE_OLD_TESTS="true" - export E2E_OPT="--check_version_skew=false" - export GINKGO_TEST_ARGS="--ginkgo.skip={default-skip-list-1-1}" - # In v1.1, NUM_MINIONS defaults to 2, so we have to override to 3 here. NUM_MINIONS - # was changed to NUM_NODES in v1.2, but we don't need to override for v1.2+. - export NUM_MINIONS=3 - # Similarly, in v1.1, MINION_SIZE defaults to 'n1-standard-1', so we need to - # override it here (specifically for HPA tests). MINION_SIZE was changed to - # NODE_SIZE in v1.2, but we don't need to override for v1.2+. - export MINION_SIZE='n1-standard-2' - - 'gke-1.1-1.2-upgrade-cluster-new': - description: 'Deploys a cluster at v1.1, upgrades the cluster to v1.2, and runs v1.2 tests against it.' - timeout: 600 - job-env: | - export PROJECT="kube-jks-gke-upg-experimental" - export E2E_NAME="gke-1-1-1-2-upg-clu-new" - export JENKINS_PUBLISHED_VERSION="ci/latest-1.1" - export E2E_UPGRADE_TEST="true" - export JENKINS_PUBLISHED_TEST_VERSION="ci/latest-1.2" - export GINKGO_UPGRADE_TEST_ARGS="--ginkgo.focus=\[Feature:ClusterUpgrade\] --upgrade-target=ci/latest-1.2" - export E2E_OPT="--check_version_skew=false" - # In v1.1, NUM_MINIONS defaults to 2, so we have to override to 3 here. NUM_MINIONS - # was changed to NUM_NODES in v1.2, but we don't need to override for v1.2+. - export NUM_MINIONS=3 - # Similarly, in v1.1, MINION_SIZE defaults to 'n1-standard-1', so we need to - # override it here (specifically for HPA tests). MINION_SIZE was changed to - # NODE_SIZE in v1.2, but we don't need to override for v1.2+. - export MINION_SIZE='n1-standard-2' - jobs: - - 'kubernetes-e2e-{suffix}' diff --git a/hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-kubemark.yaml b/hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-kubemark.yaml deleted file mode 100644 index 43e0c214681..00000000000 --- a/hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-kubemark.yaml +++ /dev/null @@ -1,150 +0,0 @@ -- job-template: - name: 'kubernetes-kubemark-{suffix}' - description: '{description} Test owner: gmarek' - logrotate: - daysToKeep: 7 - node: 'e2e' - builders: - - shell: | - {provider-env} - {job-env} - {post-env} - timeout -k {kill-timeout}m {timeout}m {runner} && rc=$? || rc=$? - {report-rc} - properties: - - mail-watcher - publishers: - - claim-build - - junit-publisher - - gcs-uploader - - log-parser - - email-ext: - recipients: "gmarek@google.com" - triggers: - - reverse: - jobs: 'kubernetes-build' - result: success - - timed: '{cron-string}' - wrappers: - - ansicolor: - colormap: xterm - - timeout: - timeout: '{jenkins-timeout}' - fail: true - - timestamps - - workspace-cleanup - -- project: - name: kubernetes-kubemark - provider-env: '{gce-provider-env}' - suffix: - - '5-gce': - description: 'Run minimal Kubemark to make sure it is not broken.' - timeout: 60 - cron-string: '{sq-cron-string}' - job-env: | - export E2E_NAME="kubemark-5" - export PROJECT="k8s-jenkins-kubemark" - export E2E_TEST="false" - export USE_KUBEMARK="true" - export KUBEMARK_TESTS="starting\s30\spods\sper\snode" - export KUBEMARK_TEST_ARGS="--gather-resource-usage=true" - # Override defaults to be independent from GCE defaults and set kubemark parameters - export NUM_NODES="1" - export MASTER_SIZE="n1-standard-1" - export NODE_SIZE="n1-standard-2" - export KUBE_GCE_ZONE="us-central1-f" - export KUBEMARK_MASTER_SIZE="n1-standard-1" - export KUBEMARK_NUM_NODES="5" - # The kubemark scripts build a Docker image - export JENKINS_ENABLE_DOCKER_IN_DOCKER="y" - - '100-gce': - description: 'Run small-ish kubemark cluster to continuously run performance experiments' - timeout: 240 - cron-string: 'H H/6 * * *' - job-env: | - export E2E_NAME="kubemark-100" - export PROJECT="k8s-jenkins-kubemark" - export E2E_TEST="false" - export USE_KUBEMARK="true" - export KUBEMARK_TESTS="\[Feature:Performance\]" - export CREATE_SERVICES="true" - # Override defaults to be independent from GCE defaults and set kubemark parameters - export NUM_NODES="3" - export MASTER_SIZE="n1-standard-2" - export NODE_SIZE="n1-standard-4" - export KUBE_GCE_ZONE="us-central1-f" - export KUBEMARK_MASTER_SIZE="n1-standard-4" - export KUBEMARK_NUM_NODES="100" - # The kubemark scripts build a Docker image - export JENKINS_ENABLE_DOCKER_IN_DOCKER="y" - - 'high-density-100-gce': - description: 'Run Kubemark high-density (100 pods/node) test on a fake 100 node cluster.' - timeout: 160 - cron-string: 'H 20 * * 6' - job-env: | - export E2E_NAME="kubemark-100pods" - export PROJECT="k8s-jenkins-kubemark" - export E2E_TEST="false" - export USE_KUBEMARK="true" - export KUBEMARK_TESTS="\[Feature:HighDensityPerformance\]" - export KUBEMARK_TEST_ARGS="--gather-resource-usage=true" - # Override defaults to be independent from GCE defaults and set kubemark parameters - export NUM_NODES="3" - export MASTER_SIZE="n1-standard-2" - export NODE_SIZE="n1-standard-4" - export KUBE_GCE_ZONE="us-east1-d" - export KUBEMARK_MASTER_SIZE="n1-standard-4" - export KUBEMARK_NUM_NODES="100" - # The kubemark scripts build a Docker image - export JENKINS_ENABLE_DOCKER_IN_DOCKER="y" - - '500-gce': - description: 'Run Kubemark test on a fake 500 node cluster to test for regressions on bigger clusters' - timeout: 300 - cron-string: '@hourly' - job-env: | - # XXX Not a unique project - export E2E_NAME="kubemark-500" - export PROJECT="kubernetes-scale" - export E2E_TEST="false" - export USE_KUBEMARK="true" - export KUBEMARK_TESTS="\[Feature:Performance\]" - export KUBEMARK_TEST_ARGS="--gather-resource-usage=true" - export FAIL_ON_GCP_RESOURCE_LEAK="false" - # Override defaults to be independent from GCE defaults and set kubemark parameters - export NUM_NODES="6" - export MASTER_SIZE="n1-standard-4" - export NODE_SIZE="n1-standard-8" - export KUBE_GCE_ZONE="us-central1-f" - export KUBEMARK_MASTER_SIZE="n1-standard-16" - export KUBEMARK_NUM_NODES="500" - # The kubemark scripts build a Docker image - export JENKINS_ENABLE_DOCKER_IN_DOCKER="y" - - 'gce-scale': - description: 'Run Density test on Kubemark in very large cluster. Currently only scheduled to run every 12 hours so as not to waste too many resources.' - # 12h - load tests take really, really, really long time. - timeout: 720 - cron-string: 'H H/12 * * *' - job-env: | - # XXX Not a unique project - export E2E_NAME="kubemark-1000" - export PROJECT="kubernetes-scale" - export E2E_TEST="false" - export USE_KUBEMARK="true" - export KUBEMARK_TESTS="\[Feature:Performance\]" - export KUBEMARK_TEST_ARGS="--gather-resource-usage=true" - export FAIL_ON_GCP_RESOURCE_LEAK="false" - # Override defaults to be independent from GCE defaults and set kubemark parameters - # We need 11 so that we won't hit max-pods limit (set to 100). TODO: do it in a nicer way. - export NUM_NODES="11" - export MASTER_SIZE="n1-standard-4" - # Note: can fit about 17 hollow nodes per core so NUM_NODES x - # cores_per_node should be set accordingly. - export NODE_SIZE="n1-standard-8" - export KUBEMARK_MASTER_SIZE="n1-standard-16" - export KUBEMARK_NUM_NODES="1000" - export KUBE_GCE_ZONE="us-central1-f" - # The kubemark scripts build a Docker image - export JENKINS_ENABLE_DOCKER_IN_DOCKER="y" - jobs: - - 'kubernetes-kubemark-{suffix}' diff --git a/hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-soak.yaml b/hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-soak.yaml deleted file mode 100644 index 6b8b2682dea..00000000000 --- a/hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-soak.yaml +++ /dev/null @@ -1,160 +0,0 @@ -- job-template: - name: 'kubernetes-soak-weekly-deploy-{suffix}' - description: '{deploy-description} Test owner: {test-owner}' - logrotate: - daysToKeep: 14 - node: 'master' - builders: - - shell: | - {provider-env} - {soak-deploy} - {job-env} - {post-env} - timeout -k {kill-timeout}m 90m {legacy-runner} && rc=$? || rc=$? - {report-rc} - properties: - - build-blocker: - use-build-blocker: true - blocking-jobs: - - 'kubernetes-soak-continuous-e2e-{suffix}' - publishers: - - email-ext - - gcs-uploader - triggers: - - timed: 'H 0 * * 2' - wrappers: - - ansicolor: - colormap: xterm - - timeout: - timeout: '{jenkins-timeout}' - fail: true - - timestamps - - workspace-cleanup - -- job-template: - name: 'kubernetes-soak-continuous-e2e-{suffix}' - description: '{e2e-description} Test Owner: {test-owner}' - workspace: '/var/lib/jenkins/jobs/kubernetes-soak-weekly-deploy-{suffix}/workspace' - logrotate: - daysToKeep: 7 - node: 'master' - builders: - - shell: | - {provider-env} - {soak-continuous} - {job-env} - {post-env} - timeout -k {kill-timeout}m 360m {legacy-runner} && rc=$? || rc=$? - {report-rc} - properties: - - build-blocker: - use-build-blocker: true - blocking-jobs: - - 'kubernetes-soak-weekly-deploy-{suffix}' - queue-scanning: ALL - publishers: - - claim-build - - email-ext - - gcs-uploader - - junit-publisher - - log-parser - triggers: - - timed: '{cron-string}' - wrappers: - - ansicolor: - colormap: xterm - - timeout: - timeout: '{jenkins-timeout}' - fail: true - - timestamps - -- project: - name: soak - test-owner: 'Build Cop' - soak-deploy: | - export FAIL_ON_GCP_RESOURCE_LEAK="false" - export E2E_TEST="false" - export E2E_DOWN="false" - soak-continuous: | - export JENKINS_USE_EXISTING_BINARIES="y" - export FAIL_ON_GCP_RESOURCE_LEAK="false" - export E2E_UP="false" - export E2E_DOWN="false" - # Clear out any orphaned namespaces in case previous run was interrupted. - export E2E_CLEAN_START="true" - # TODO: Remove when we figure out #22166 and other docker potential slowness. - export DOCKER_TEST_LOG_LEVEL="--log-level=warn" - # We should be testing the reliability of a long-running cluster. The - # [Disruptive] tests kill/restart components or nodes in the cluster, - # defeating the purpose of a soak cluster. (#15722) - export GINKGO_TEST_ARGS="--ginkgo.skip=\[Disruptive\]|\[Flaky\]|\[Feature:.+\]" - suffix: - - 'gce': - deploy-description: | - Deploy Kubernetes to soak cluster using the latest successful - Kubernetes build every week.
- If a kubernetes-soak-continuous-e2e-gce build is running, - this deployment build will be blocked and remain in the queue - until the test run is complete.
- e2e-description: | - Assumes Kubernetes soak cluster is already deployed.
- If a kubernetes-soak-weekly-deploy-gce build is enqueued, - builds will be blocked and remain in the queue until the - deployment is complete.
- branch: 'master' - provider-env: '{gce-provider-env}' - job-env: | - export PROJECT="k8s-jkns-gce-soak" - - 'gce-2': - deploy-description: Clone of kubernetes-soak-weekly-deploy-gce. - e2e-description: Clone of kubernetes-soak-continuous-e2e-gce. - branch: 'master' - provider-env: '{gce-provider-env}' - job-env: | - export HAIRPIN_MODE="hairpin-veth" - export PROJECT="k8s-jkns-gce-soak-2" - - 'gce-1.2': - deploy-description: | - Deploy Kubernetes to soak cluster using the latest successful - release-1.2 Kubernetes build every week.
- If a kubernetes-soak-continuous-e2e-gce-1.2 build is running, - this deployment build will be blocked and remain in the queue - until the test run is complete.
- e2e-description: | - Assumes Kubernetes soak cluster is already deployed.
- If a kubernetes-soak-weekly-deploy-gce-1.2 build is enqueued, - builds will be blocked and remain in the queue until the - deployment is complete.
- provider-env: '{gce-provider-env}' - job-env: | - export PROJECT="k8s-jkns-gce-soak-1-2" - export JENKINS_PUBLISHED_VERSION="ci/latest-1.2" - - 'gke': - deploy-description: | - Deploy Kubernetes to a GKE soak cluster using the staging GKE - Kubernetes build every week.
- If a kubernetes-soak-continuous-e2e-gke build is running, this - deployment build will be blocked and remain in the queue until - the test run is complete.
- Current Settings:
- - provider: GKE
- - apiary: staging
- - borg job: staging
- - client (kubectl): release/stable.txt
- - cluster (k8s): release/stable.txt
- - tests: release/stable.txt
- e2e-description: | - Assumes Kubernetes GKE soak cluster is already deployed.
- If a kubernetes-soak-weekly-deploy-gke build is enqueued, - builds will be blocked and remain in the queue until the - deployment is complete.
- branch: 'master' - provider-env: '{gke-provider-env}' - job-env: | - export PROJECT="k8s-jkns-gke-soak" - # Need at least n1-standard-2 nodes to run kubelet_perf tests - export MACHINE_TYPE="n1-standard-2" - export E2E_OPT="--check_version_skew=false" - jobs: - - 'kubernetes-soak-weekly-deploy-{suffix}' - - 'kubernetes-soak-continuous-e2e-{suffix}' diff --git a/hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-test-go.yaml b/hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-test-go.yaml deleted file mode 100644 index 329ab56d3b7..00000000000 --- a/hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-test-go.yaml +++ /dev/null @@ -1,89 +0,0 @@ -- job-template: - name: 'kubernetes-test-{suffix}' - description: | - Grab the latest from GitHub, then run unit and integration tests.
- Test Owner: Build Cop - logrotate: - numToKeep: 200 - node: unittest - builders: - - shell: 'JENKINS_BUILD_STARTED=true bash <(curl -fsS --retry 3 "https://raw.githubusercontent.com/kubernetes/kubernetes/master/hack/jenkins/upload-to-gcs.sh")' - - shell: | - export KUBE_FORCE_VERIFY_CHECKS='y' - export KUBE_VERIFY_GIT_BRANCH='{branch}' - timeout -k {kill-timeout}m {timeout}m ./hack/jenkins/gotest-dockerized.sh && rc=$? || rc=$? - {report-rc} - publishers: - - claim-build - - gcs-uploader - - log-parser - - email-ext - - xunit: - thresholds: - - failed: - unstable: 0 - unstablenew: 0 - failure: - failurenew: - - skipped: - unstable: - unstablenew: - failure: - failurenew: - types: - - junit: - pattern: '_artifacts/**.xml' - deleteoutput: false - scm: - - git: - url: https://github.com/kubernetes/kubernetes - branches: - - '{branch}' - browser: githubweb - browser-url: https://github.com/kubernetes/kubernetes - wipe-workspace: false - skip-tag: true - triggers: - - pollscm: - cron: 'H/2 * * * *' - - timed: '{cron-string}' - wrappers: - - ansicolor: - colormap: xterm - - timeout: - timeout: '{jenkins-timeout}' - fail: true - - timestamps - - raw: - xml: | - - - - * - INCLUDE - - - true - - sudo rm -rf %s - - -- project: - name: kubernetes-test-go - suffix: - - 'go': - branch: 'master' - cron-string: '{sq-cron-string}' - timeout: 100 - - 'go-release-1.2': - branch: 'release-1.2' - # Every 3 hours - cron-string: 'H H/3 * * *' - timeout: 100 - - 'go-release-1.1': - branch: 'release-1.1' - # Every 6 hours - cron-string: 'H H/12 * * *' - timeout: 60 - jobs: - - 'kubernetes-test-{suffix}' diff --git a/hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-test-history.yaml b/hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-test-history.yaml deleted file mode 100644 index 628ce355d1a..00000000000 --- a/hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-test-history.yaml +++ /dev/null @@ -1,21 +0,0 @@ -- job: - name: kubernetes-test-summary - description: 'Create a daily test summary and upload to GCS. Test owner: spxtr.' - triggers: - # Run every night at midnight at a random minute. - - timed: 'H 0 * * *' - scm: - - git: - url: https://www.github.com/kubernetes/kubernetes - branches: - - master - browser: githubweb - browser-url: https://github.com/kubernetes/kubernetes - skip-tag: true - builders: - - shell: | - cd hack/jenkins/test-history - ./gen_history http://jenkins-master:8080/ - publishers: - - email-ext: - recipients: spxtr@google.com diff --git a/hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-update-jenkins-jobs.yaml b/hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-update-jenkins-jobs.yaml deleted file mode 100644 index fd2868ad943..00000000000 --- a/hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-update-jenkins-jobs.yaml +++ /dev/null @@ -1,16 +0,0 @@ -- job: - name: kubernetes-update-jenkins-jobs - description: 'Update Jenkins jobs based on configs in https://github.com/kubernetes/kubernetes/tree/master/hack/jenkins/job-configs. Test owner: spxtr.' - logrotate: - daysToKeep: 7 - triggers: - - timed: 'H/15 * * * *' - builders: - - shell: | - curl -fsS https://raw.githubusercontent.com/kubernetes/kubernetes/master/hack/jenkins/update-jobs.sh > update-jobs.sh - chmod +x update-jobs.sh - ./update-jobs.sh "hack/jenkins/job-configs:hack/jenkins/job-configs/kubernetes-jenkins" - publishers: - - email-ext: - recipients: spxtr@google.com - diff --git a/hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-upgrades.yaml b/hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-upgrades.yaml deleted file mode 100644 index 34cf0f5f666..00000000000 --- a/hack/jenkins/job-configs/kubernetes-jenkins/kubernetes-upgrades.yaml +++ /dev/null @@ -1,283 +0,0 @@ -# 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 - description: 'Upgrade multijob from {version-old} to {version-new}. Test owner: ihmccreery.' - project-type: multijob - triggers: - - timed: '@hourly' - node: 'master' - builders: - # TODO(ihmccreery) In theory, we could get ourselves into trouble by - # editing these things in the middle of a run. Jenkins Job Builder - # would delete jobs, and they'd leave resources lying around. We - # should either (1) make this not a multi-job, or (2) add a script here - # to update these jobs only at the beginning of a multijob run. - # - # This pain would also pretty much disappear with #18119, too. - - multijob: - name: Deploy - condition: SUCCESSFUL - projects: - - name: 'kubernetes-upgrade-{provider}-{version-old}-{version-new}-step1-deploy' - - multijob: - name: Kubectl Test New - condition: COMPLETED - projects: - - name: 'kubernetes-upgrade-{provider}-{version-old}-{version-new}-step2-kubectl-e2e-new' - - multijob: - name: Upgrade Master - condition: COMPLETED - projects: - - name: 'kubernetes-upgrade-{provider}-{version-old}-{version-new}-step3-upgrade-master' - - multijob: - name: Test Old - condition: COMPLETED - projects: - - name: 'kubernetes-upgrade-{provider}-{version-old}-{version-new}-step4-e2e-old' - - multijob: - name: Upgrade Cluster - condition: COMPLETED - projects: - - name: 'kubernetes-upgrade-{provider}-{version-old}-{version-new}-step5-upgrade-cluster' - - multijob: - name: Test Old - condition: COMPLETED - projects: - - name: 'kubernetes-upgrade-{provider}-{version-old}-{version-new}-step6-e2e-old' - - multijob: - name: Test New - condition: COMPLETED - projects: - - name: 'kubernetes-upgrade-{provider}-{version-old}-{version-new}-step7-e2e-new' - -- job-template: - name: 'kubernetes-upgrade-{provider}-{version-old}-{version-new}-step1-deploy' - description: 'Deploy a cluster at {version-old} to be tested and upgraded to {version-new}. Test owner: ihmccreery.' - logrotate: - daysToKeep: 7 - node: 'master' - builders: - - shell: | - # 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} - timeout -k {kill-timeout}m 60m {runner} && rc=$? || rc=$? - {report-rc} - properties: - - mail-watcher - publishers: - - claim-build - # No junit-publisher, since we're not running any tests - - gcs-uploader - - log-parser - - email-ext: - recipients: 'ihmccreery@google.com' - wrappers: - - ansicolor: - colormap: xterm - - timeout: - timeout: '{jenkins-timeout}' - fail: true - - timestamps - - workspace-cleanup - -- job-template: - name: 'kubernetes-upgrade-{provider}-{version-old}-{version-new}-{step}' - description: '{description} Test owner: ihmccreery.' - # Use the same workspace as step1 - workspace: /var/lib/jenkins/jobs/kubernetes-upgrade-{provider}-{version-old}-{version-new}-step1-deploy/workspace/ - logrotate: - daysToKeep: 7 - node: 'master' - builders: - - shell: | - # 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} - timeout -k {kill-timeout}m 300m {runner} && rc=$? || rc=$? - {report-rc} - properties: - - mail-watcher - publishers: - - claim-build - - junit-publisher - - gcs-uploader - - log-parser - - email-ext: - recipients: 'ihmccreery@google.com' - wrappers: - - ansicolor: - colormap: xterm - - timeout: - timeout: '{jenkins-timeout}' - fail: true - - timestamps - # Don't clean the workspace; we want to keep configs intact across steps in the multijob - -- job-group: - name: '{provider}-{version-old}-{version-new}-upgrades' - jobs: - - 'kubernetes-upgrade-{provider}-{version-old}-{version-new}' - - 'kubernetes-upgrade-{provider}-{version-old}-{version-new}-step1-deploy': - runner: '{runner-old}' - job-env: | - export E2E_TEST="false" - export E2E_DOWN="false" - export JENKINS_PUBLISHED_VERSION="ci/latest-{version-old}" - - 'kubernetes-upgrade-{provider}-{version-old}-{version-new}-{step}': - step: 'step2-kubectl-e2e-new' - runner: '{runner-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 JENKINS_PUBLISHED_VERSION="ci/latest-{version-new}" - export GINKGO_TEST_ARGS="--ginkgo.focus=Kubectl" - - 'kubernetes-upgrade-{provider}-{version-old}-{version-new}-{step}': - step: 'step3-upgrade-master' - runner: '{runner-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 JENKINS_PUBLISHED_VERSION="ci/latest-{version-new}" - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Feature:MasterUpgrade\] --upgrade-target=ci/latest-{version-new}" - - 'kubernetes-upgrade-{provider}-{version-old}-{version-new}-{step}': - step: 'step4-e2e-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" - export JENKINS_PUBLISHED_VERSION="ci/latest-{version-old}" - - 'kubernetes-upgrade-{provider}-{version-old}-{version-new}-{step}': - step: 'step5-upgrade-cluster' - runner: '{runner-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 JENKINS_PUBLISHED_VERSION="ci/latest-{version-new}" - export GINKGO_TEST_ARGS="--ginkgo.focus=\[Feature:NodeUpgrade\] --upgrade-target=ci/latest-{version-new}" - - 'kubernetes-upgrade-{provider}-{version-old}-{version-new}-{step}': - step: 'step6-e2e-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" - export JENKINS_PUBLISHED_VERSION="ci/latest-{version-old}" - - 'kubernetes-upgrade-{provider}-{version-old}-{version-new}-{step}': - step: 'step7-e2e-new' - runner: '{runner-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" - export JENKINS_PUBLISHED_VERSION="ci/latest-{version-new}" - -- project: - name: 'upgrade-gke' - provider: 'gke' - provider-env: | - {gke-provider-env} - export JENKINS_TOLERATE_DIRTY_WORKSPACE="y" - export FAIL_ON_GCP_RESOURCE_LEAK="false" - jobs: - - '{provider}-{version-old}-{version-new}-upgrades': - version-old: '1.0' - version-new: '1.2' - 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-1-2" - export PROJECT="kubernetes-jenkins-gke-upgrade" - - '{provider}-{version-old}-{version-new}-upgrades': - version-old: '1.1' - version-new: '1.2' - 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-1-2" - export PROJECT="kubernetes-jenkins-gke-upgrade" - - '{provider}-{version-old}-{version-new}-upgrades': - version-old: '1.1' - version-new: '1.3' - 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-1-3" - export PROJECT="kubernetes-jenkins-gke-upgrade" - - '{provider}-{version-old}-{version-new}-upgrades': - version-old: '1.2' - version-new: '1.3' - runner-old: curl -fsS --retry 3 "https://raw.githubusercontent.com/kubernetes/kubernetes/master/hack/jenkins/e2e-runner.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-2-1-3" - export PROJECT="kubernetes-jenkins-gke-upgrade" - -- project: - name: 'upgrade-gce' - provider: 'gce' - provider-env: | - {gce-provider-env} - export NUM_NODES=5 - export JENKINS_TOLERATE_DIRTY_WORKSPACE="y" - export FAIL_ON_GCP_RESOURCE_LEAK="false" - jobs: - - '{provider}-{version-old}-{version-new}-upgrades': - version-old: '1.0' - version-new: '1.2' - 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-gce-1-0-1-2" - export PROJECT="kubernetes-jenkins-gce-upgrade" - - '{provider}-{version-old}-{version-new}-upgrades': - version-old: '1.1' - version-new: '1.2' - 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-1-2" - export PROJECT="kubernetes-jenkins-gce-upgrade" - - '{provider}-{version-old}-{version-new}-upgrades': - version-old: '1.1' - version-new: '1.3' - 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-1-3" - export PROJECT="kubernetes-jenkins-gce-upgrade" - - '{provider}-{version-old}-{version-new}-upgrades': - version-old: '1.2' - version-new: '1.3' - runner-old: curl -fsS --retry 3 "https://raw.githubusercontent.com/kubernetes/kubernetes/master/hack/jenkins/e2e-runner.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-2-1-3" - export PROJECT="kubernetes-jenkins-gce-upgrade" diff --git a/hack/jenkins/job-configs/kubernetes-jenkins/node-e2e.yaml b/hack/jenkins/job-configs/kubernetes-jenkins/node-e2e.yaml deleted file mode 100644 index 0a47e010667..00000000000 --- a/hack/jenkins/job-configs/kubernetes-jenkins/node-e2e.yaml +++ /dev/null @@ -1,160 +0,0 @@ -# Job template to checkout source from github to $WORKSPACE/go/src/{gitbasedir} and build + publish a docker image. -# - Tags the docker image with 'canary'. -# - Job is executed daily and when changes are found polling github (every 5m). -# - Console output is published to google cloud storage. -# -# gitproject: name of the project - for display purposes only -# owner: owner to be notified for job failures. test results are published to owner email -# repoName: github repo to checkout e.g. kubernetes/kubernetes or google/cadvisor. Must match the docker image repo name where the image will be published. -# gitbasedir: directory under $WORKSPACE/go/src to checkout source repo to - e.g. k8s.io/kubernetes or github.com/google/cadvisor -# dockerfilePath: workspace relative path to the 'Dockerfile' to build -- job-template: - name: '{gitproject}-dockercanarybuild-ci' - disabled: '{obj:disable_job}' - description: 'Build and push {gitproject} docker image.
Test Owner: {owner}.' - node: 'node' - logrotate: - numToKeep: 200 - builders: - - docker-build-publish: - repoName: '{repoName}' - dockerfilePath: 'go/src/{gitbasedir}/{dockerfilePath}' - tag: 'canary' - credentialsId: '1f361efb-5b85-4f61-91a7-4ec7fb2a5c23' - publishers: - - claim-build - - gcs-uploader - - log-parser - - email-ext: - recipients: '{owner}' - scm: - - git: - url: 'https://github.com/{repoName}' - browser: githubweb - browser-url: 'https://github.com/{repoName}' - branches: - - 'master' - skip-tag: true - basedir: 'go/src/{gitbasedir}' - triggers: - - pollscm: - cron: 'H/5 * * * *' - - timed: '@daily' - wrappers: - - ansicolor: - colormap: xterm - - timeout: - timeout: 30 - fail: true - - timestamps - -# Job template to checkout source from github to $WORKSPACE/go/src/{gitbasedir}, setup go environment variables, and execute a -# shell script. -# - Job is executed daily and when changes are found polling github (every 5m). -# - Console output is published to google cloud storage. -# -# gitproject: name of the project - for display purposes only -# owner: owner to be notified for job failures. test results are published to owner email -# repoName: github repo to checkout e.g. kubernetes/kubernetes or google/cadvisor -# gitbasedir: directory under $WORKSPACE/go/src to checkout source repo to - e.g. k8s.io/kubernetes or github.com/google/cadvisor -# shell: bash command to execute from gitbasedir. should be a single script such as {gitproject}-jenkins.sh -- job-template: - name: '{gitproject}-gce-e2e-ci' - description: '{gitproject} continuous e2e tests.
Test Owner: {owner}.' - disabled: '{obj:disable_job}' - node: 'node' - logrotate: - numToKeep: 200 - builders: - - shell: | - #!/bin/bash - set -e - set -x - cd go/src/{gitbasedir} - {shell} - publishers: - - claim-build - - gcs-uploader - - log-parser - - email-ext: - recipients: '{owner}' - scm: - - git: - url: 'https://github.com/{repoName}' - browser: githubweb - browser-url: 'https://github.com/{repoName}' - branches: - - 'master' - skip-tag: true - basedir: 'go/src/{gitbasedir}' - triggers: - - pollscm: - cron: 'H/5 * * * *' - - timed: 'H/30 * * * *' - wrappers: - - ansicolor: - colormap: xterm - - timeout: - timeout: 90 - fail: true - - timestamps - - inject: - properties-content: | - GOROOT=/usr/local/go - GOPATH=$WORKSPACE/go - PATH=$PATH:$GOROOT/bin:$WORKSPACE/go/bin - - workspace-cleanup - -- project: - name: node-docker-canary-build - repoName: 'google/cadvisor' - gitproject: - - 'cadvisor': - repoName: 'google/cadvisor' - gitbasedir: 'github.com/google/cadvisor' - dockerfilePath: 'deploy/canary/Dockerfile' - owner: 'stclair@google.com' - - 'heapster': - repoName: 'kubernetes/heapster' - gitbasedir: 'k8s.io/heapster' - dockerfilePath: 'deploy/docker/canary/Dockerfile' - owner: 'pszczesniak@google.com' - jobs: - - '{gitproject}-dockercanarybuild-ci' - wrappers: - - workspace-cleanup - -- project: - name: node-gce-e2e - repoName: 'google/cadvisor' - gitproject: - - 'cadvisor': - repoName: 'google/cadvisor' - gitbasedir: 'github.com/google/cadvisor' - owner: 'stclair@google.com' - shell: | - go get -u github.com/tools/godep - - ./build/presubmit.sh - godep go build -tags test github.com/google/cadvisor/integration/runner - ./runner --logtostderr --test-retry-count=8 --test-retry-whitelist=integration/runner/retrywhitelist.txt \ - --ssh-options "-i /home/jenkins/.ssh/google_compute_engine -o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes -o CheckHostIP=no -o StrictHostKeyChecking=no" \ - e2e-cadvisor-ubuntu-trusty \ - e2e-cadvisor-coreos-beta \ - e2e-cadvisor-container-vm-v20151215 \ - e2e-cadvisor-container-vm-v20160127 \ - e2e-cadvisor-rhel-7 - - 'heapster': - repoName: 'kubernetes/heapster' - gitbasedir: 'k8s.io/heapster' - owner: 'pszczesniak@google.com' - shell: 'make test-unit test-integration' - disable_job: true # Issue #23538 - - 'kubelet': - cron-string: '{sq-cron-string}' - repoName: 'kubernetes/kubernetes' - gitbasedir: 'k8s.io/kubernetes' - owner: 'pwittroc@google.com' - shell: 'test/e2e_node/jenkins/e2e-node-jenkins.sh test/e2e_node/jenkins/jenkins-ci.properties' - jobs: - - '{gitproject}-gce-e2e-ci' diff --git a/hack/jenkins/job-configs/kubernetes-jenkins/test-linkchecker.yaml b/hack/jenkins/job-configs/kubernetes-jenkins/test-linkchecker.yaml deleted file mode 100644 index db97c324053..00000000000 --- a/hack/jenkins/job-configs/kubernetes-jenkins/test-linkchecker.yaml +++ /dev/null @@ -1,36 +0,0 @@ -- job: - name: 'kubernetes-test-linkchecker' - description: | - Grab the latest from GitHub, then run hack/verify-linkcheck.sh.
- Test Owner: Build Cop - disable_job: true # Issue #23162 - logrotate: - numToKeep: 200 - builders: - - shell: | - export PATH=${PATH}:/usr/local/go/bin - ./hack/verify-linkcheck.sh - publishers: - - claim-build - - gcs-uploader - - email-ext: - recipients: 'xuchao@google.com' - scm: - - git: - url: https://github.com/kubernetes/kubernetes - branches: - - 'master' - browser: githubweb - browser-url: https://github.com/kubernetes/kubernetes - wipe-workspace: false - skip-tag: true - triggers: - - timed: '@daily' - wrappers: - - ansicolor: - colormap: xterm - - timeout: - timeout: 60 - fail: true - - timestamps - - workspace-cleanup diff --git a/hack/jenkins/update-jobs.sh b/hack/jenkins/update-jobs.sh deleted file mode 100755 index 5adf23ba361..00000000000 --- a/hack/jenkins/update-jobs.sh +++ /dev/null @@ -1,46 +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. - -# Update all Jenkins jobs in a folder specified in $1. It can be the union of -# multiple folders separated with a colon, like with the PATH variable. - -if [[ $# -eq 1 ]]; then - config_dir=$1 -else - echo "Usage: $0 " >&2 - exit 1 -fi - -# Run the container if it isn't present. -if ! docker inspect job-builder &> /dev/null; then - # jenkins_jobs.ini contains administrative credentials for Jenkins. - # Store it in the workspace of the Jenkins job that calls this script. - if [[ -e jenkins_jobs.ini ]]; then - docker run -idt \ - --net host \ - --name job-builder \ - --restart always \ - gcr.io/google_containers/kubekins-job-builder:1 - docker cp jenkins_jobs.ini job-builder:/etc/jenkins_jobs - else - echo "jenkins_jobs.ini not found in workspace" >&2 - exit 1 - fi -fi - -docker exec job-builder git checkout master -docker exec job-builder git pull -docker exec job-builder jenkins-jobs update ${config_dir} diff --git a/hack/verify-jenkins-job-configs.sh b/hack/verify-jenkins-job-configs.sh deleted file mode 100755 index 5a8025d0664..00000000000 --- a/hack/verify-jenkins-job-configs.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash - -# Copyright 2016 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. - -# Tests the Jenkins job configs and computes a diff of any changes when there -# have been local changes of the configs. - -set -o errexit -set -o nounset -set -o pipefail - -KUBE_ROOT=$(dirname "${BASH_SOURCE}")/.. -source "${KUBE_ROOT}/hack/lib/init.sh" - -readonly branch=${1:-${KUBE_VERIFY_GIT_BRANCH:-master}} -if ! [[ ${KUBE_FORCE_VERIFY_CHECKS:-} =~ ^[yY]$ ]] && \ - ! kube::util::has_changes_against_upstream_branch "${branch}" 'hack/jenkins/job-configs/'; then - exit 0 -fi - -# By using ARTIFACTS_DIR, we can write the diff out to the artifacts directory -# (and then up to GCS) when running on Jenkins. -export OUTPUT_DIR="${ARTIFACTS_DIR:+${ARTIFACTS_DIR}/jjb}" -# When running inside Docker (e.g. on Jenkins) we'll need to reference the -# host's artifacts directory for the Docker-in-Docker volume mount to work. -export DOCKER_VOLUME_OUTPUT_DIR="${HOST_ARTIFACTS_DIR:+${HOST_ARTIFACTS_DIR}/jjb}" - -# This script should pass, assuming the configs are not broken. Diffs won't -# cause failures. -"${KUBE_ROOT}/hack/jenkins/diff-job-config-patch.sh" From 60d50d7253a9adb030b24d30dffef1974920cb2d Mon Sep 17 00:00:00 2001 From: Joe Finney Date: Mon, 2 May 2016 11:52:27 -0700 Subject: [PATCH 2/2] Update Jenkins README to point to test-infra. --- hack/jenkins/README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/hack/jenkins/README.md b/hack/jenkins/README.md index 2f1d462da12..fc285153e91 100644 --- a/hack/jenkins/README.md +++ b/hack/jenkins/README.md @@ -82,9 +82,11 @@ or not the job is healthy. New jobs should be specified as YAML files to be processed by [Jenkins Job Builder](http://docs.openstack.org/infra/jenkins-job-builder/). The YAML files -live in `job-configs` and its subfolders. Jenkins runs Jenkins Job Builder -in a Docker container defined in `job-builder-image`, and triggers it using -`update-jobs.sh`. Jenkins Job Builder uses a config file called +live in `jenkins/job-configs` and its subfolders **in the +[kubernetes/test-infra repository](https://github.com/kubernetes/test-infra)**. +Jenkins runs Jenkins Job Builder in a Docker container defined in +`job-builder-image`, and triggers it using `update-jobs.sh`. Jenkins Job Builder +uses a config file called [jenkins_jobs.ini](http://docs.openstack.org/infra/jenkins-job-builder/execution.html) which contains the location and credentials of the Jenkins server.