diff --git a/hack/jenkins/gotest-dockerized.sh b/hack/jenkins/gotest-dockerized.sh index c1ac1def4cb..2ea9ecf5418 100755 --- a/hack/jenkins/gotest-dockerized.sh +++ b/hack/jenkins/gotest-dockerized.sh @@ -20,6 +20,8 @@ set -o pipefail set -o xtrace export REPO_DIR=${REPO_DIR:-$(pwd)} +export HOST_ARTIFACTS_DIR=${WORKSPACE}/_artifacts +mkdir -p "${HOST_ARTIFACTS_DIR}" # Run the kubekins container, mapping in docker (so we can launch containers), # the repo directory, and the artifacts output directory. @@ -42,5 +44,6 @@ docker run --rm=true \ -e "KUBE_FORCE_VERIFY_CHECKS=${KUBE_FORCE_VERIFY_CHECKS:-}" \ -e "KUBE_VERIFY_GIT_BRANCH=${KUBE_VERIFY_GIT_BRANCH:-}" \ -e "REPO_DIR=${REPO_DIR}" \ + -e "HOST_ARTIFACTS_DIR=${HOST_ARTIFACTS_DIR}" \ -i gcr.io/google_containers/kubekins-test:0.9 \ bash -c "cd kubernetes && ./hack/jenkins/test-dockerized.sh" diff --git a/hack/jenkins/test-dockerized.sh b/hack/jenkins/test-dockerized.sh index d4da6a2574e..d4642a33a39 100755 --- a/hack/jenkins/test-dockerized.sh +++ b/hack/jenkins/test-dockerized.sh @@ -42,6 +42,7 @@ export KUBE_RACE=-race export KUBE_COVER="n" # Produce a JUnit-style XML test report for Jenkins. export KUBE_JUNIT_REPORT_DIR=${WORKSPACE}/artifacts +export ARTIFACTS_DIR=${WORKSPACE}/artifacts # Save the verbose stdout as well. export KUBE_KEEP_VERBOSE_TEST_OUTPUT=y export KUBE_TIMEOUT='-timeout 300s' diff --git a/hack/verify-jenkins-job-configs.sh b/hack/verify-jenkins-job-configs.sh new file mode 100755 index 00000000000..5a8025d0664 --- /dev/null +++ b/hack/verify-jenkins-job-configs.sh @@ -0,0 +1,42 @@ +#!/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"