diff --git a/.gitignore b/.gitignore index beea0662db..4c620903e9 100644 --- a/.gitignore +++ b/.gitignore @@ -61,6 +61,6 @@ www/master/shared/config/development.json # Karma output www/test_out -# precommit temporary directories created by ./hack/verify-gendocs.sh and ./hack/lib/util.sh +# precommit temporary directories created by ./hack/verify-generated-docs.sh and ./hack/lib/util.sh _tmp/ doc_tmp/ diff --git a/.travis.yml b/.travis.yml index 770f7f3332..90bcffe051 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,7 +17,7 @@ script: - ./hack/verify-description.sh - PATH=$GOPATH/bin:$PATH ./hack/verify-generated-conversions.sh - PATH=$GOPATH/bin:$PATH ./hack/verify-generated-deep-copies.sh - - PATH=$GOPATH/bin:./third_party/etcd:$PATH ./hack/verify-gendocs.sh + - PATH=$GOPATH/bin:./third_party/etcd:$PATH ./hack/verify-generated-docs.sh - PATH=$GOPATH/bin:./third_party/etcd:$PATH ./hack/verify-swagger-spec.sh - PATH=$GOPATH/bin:./third_party/etcd:$PATH ./hack/verify-linkcheck.sh - godep go test ./cmd/mungedocs diff --git a/build/versionize-docs.sh b/build/versionize-docs.sh index 9c96e59c96..d65fc77dd6 100755 --- a/build/versionize-docs.sh +++ b/build/versionize-docs.sh @@ -71,5 +71,5 @@ done # Update API descriptions to match this version. $SED -ri -e "s|(releases.k8s.io)/[^/]+|\1/${NEW_VERSION}|" pkg/api/v[0-9]*/types.go -${KUBE_ROOT}/hack/run-gendocs.sh +${KUBE_ROOT}/hack/update-generated-docs.sh ${KUBE_ROOT}/hack/update-swagger-spec.sh diff --git a/docs/devel/development.md b/docs/devel/development.md index 2929f28103..294f825a2c 100644 --- a/docs/devel/development.md +++ b/docs/devel/development.md @@ -345,7 +345,7 @@ See [conformance-test.sh](http://releases.k8s.io/HEAD/hack/conformance-test.sh). ## Regenerating the CLI documentation ```sh -hack/run-gendocs.sh +hack/update-generated-docs.sh ``` diff --git a/hack/after-build/README.md b/hack/after-build/README.md new file mode 100644 index 0000000000..4930a40665 --- /dev/null +++ b/hack/after-build/README.md @@ -0,0 +1,4 @@ +These should be called only by a script (or a user) who knows that the binaries are built and correct. Normal users should just have the versions in ../ which should just always do a build. + + +[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/hack/after-build/README.md?pixel)]() diff --git a/hack/after-build/update-generated-conversions.sh b/hack/after-build/update-generated-conversions.sh new file mode 100755 index 0000000000..318ef754a8 --- /dev/null +++ b/hack/after-build/update-generated-conversions.sh @@ -0,0 +1,57 @@ +#!/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. + +set -o errexit +set -o nounset +set -o pipefail + +KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../.. +source "${KUBE_ROOT}/hack/lib/init.sh" + +kube::golang::setup_env + +genconversion=$(kube::util::find-binary "genconversion") + +function generate_version() { + local version=$1 + local TMPFILE="/tmp/conversion_generated.$(date +%s).go" + + echo "Generating for version ${version}" + + sed 's/YEAR/2015/' hack/boilerplate/boilerplate.go.txt > "$TMPFILE" + cat >> "$TMPFILE" <> "$TMPFILE" + + cat >> "$TMPFILE" < $TMPFILE + cat >> $TMPFILE <> "$TMPFILE" <&2 - exit 1 -fi - kube::util::gen-doc "${gendocs}" "${KUBE_ROOT}" "docs/user-guide/kubectl/" '###### Auto generated by spf13/cobra' kube::util::gen-doc "${genman}" "${KUBE_ROOT}" "docs/man/man1" kube::util::gen-doc "${genbashcomp}" "${KUBE_ROOT}" "contrib/completions/bash/" diff --git a/hack/after-build/update-swagger-spec.sh b/hack/after-build/update-swagger-spec.sh new file mode 100755 index 0000000000..d8f13bb622 --- /dev/null +++ b/hack/after-build/update-swagger-spec.sh @@ -0,0 +1,75 @@ +#!/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. + +# Script to fetch latest swagger spec. +# Puts the updated spec at swagger-spec/ + +set -o errexit +set -o nounset +set -o pipefail + +KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../.. +SWAGGER_ROOT_DIR="${KUBE_ROOT}/api/swagger-spec" +source "${KUBE_ROOT}/hack/lib/init.sh" + +function cleanup() +{ + [[ -n ${APISERVER_PID-} ]] && kill ${APISERVER_PID} 1>&2 2>/dev/null + + kube::etcd::cleanup + + kube::log::status "Clean up complete" +} + +trap cleanup EXIT SIGINT + +kube::golang::setup_env + +apiserver=$(kube::util::find-binary "kube-apiserver") + +ETCD_HOST=${ETCD_HOST:-127.0.0.1} +ETCD_PORT=${ETCD_PORT:-4001} +API_PORT=${API_PORT:-8050} +API_HOST=${API_HOST:-127.0.0.1} +KUBELET_PORT=${KUBELET_PORT:-10250} + +kube::etcd::start + +# Start kube-apiserver +kube::log::status "Starting kube-apiserver" +KUBE_API_VERSIONS="v1" "${KUBE_OUTPUT_HOSTBIN}/kube-apiserver" \ + --address="127.0.0.1" \ + --public-address-override="127.0.0.1" \ + --port="${API_PORT}" \ + --etcd-servers="http://${ETCD_HOST}:${ETCD_PORT}" \ + --public-address-override="127.0.0.1" \ + --kubelet-port=${KUBELET_PORT} \ + --runtime-config=api/v1 \ + --service-cluster-ip-range="10.0.0.0/24" >/dev/null 2>&1 & +APISERVER_PID=$! + +kube::util::wait_for_url "http://127.0.0.1:${API_PORT}/healthz" "apiserver: " + +SWAGGER_API_PATH="http://127.0.0.1:${API_PORT}/swaggerapi/" +kube::log::status "Updating " ${SWAGGER_ROOT_DIR} +curl -fs ${SWAGGER_API_PATH} > ${SWAGGER_ROOT_DIR}/resourceListing.json +curl -fs ${SWAGGER_API_PATH}version > ${SWAGGER_ROOT_DIR}/version.json +curl -fs ${SWAGGER_API_PATH}api > ${SWAGGER_ROOT_DIR}/api.json +curl -fs ${SWAGGER_API_PATH}api/v1 > ${SWAGGER_ROOT_DIR}/v1.json + +kube::log::status "SUCCESS" + +# ex: ts=2 sw=2 et filetype=sh diff --git a/hack/after-build/verify-generated-conversions.sh b/hack/after-build/verify-generated-conversions.sh new file mode 100755 index 0000000000..b9dafa1701 --- /dev/null +++ b/hack/after-build/verify-generated-conversions.sh @@ -0,0 +1,47 @@ +#!/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. + +set -o errexit +set -o nounset +set -o pipefail + +KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../.. +source "${KUBE_ROOT}/hack/lib/init.sh" + +kube::golang::setup_env + +APIROOT="${KUBE_ROOT}/pkg/api" +TMP_APIROOT="${KUBE_ROOT}/_tmp/api" +_tmp="${KUBE_ROOT}/_tmp" + +mkdir -p "${_tmp}" +cp -a "${APIROOT}" "${TMP_APIROOT}" + +"${KUBE_ROOT}/hack/update-generated-conversions.sh" +echo "diffing ${APIROOT} against freshly generated conversions" +ret=0 +diff -Naupr -I 'Auto generated by' "${APIROOT}" "${TMP_APIROOT}" || ret=$? +cp -a ${TMP_APIROOT} "${KUBE_ROOT}/pkg" +rm -rf "${_tmp}" +if [[ $ret -eq 0 ]] +then + echo "${APIROOT} up to date." +else + echo "${APIROOT} is out of date. Please run hack/update-generated-conversions.sh" + exit 1 +fi + +# ex: ts=2 sw=2 et filetype=sh diff --git a/hack/after-build/verify-generated-deep-copies.sh b/hack/after-build/verify-generated-deep-copies.sh new file mode 100755 index 0000000000..16a91baebc --- /dev/null +++ b/hack/after-build/verify-generated-deep-copies.sh @@ -0,0 +1,49 @@ +#!/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. + +set -o errexit +set -o nounset +set -o pipefail + +KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../.. +source "${KUBE_ROOT}/hack/lib/init.sh" + +kube::golang::setup_env + +gendeepcopy=$(kube::util::find-binary "gendeepcopy") + +APIROOT="${KUBE_ROOT}/pkg/api" +TMP_APIROOT="${KUBE_ROOT}/_tmp/api" +_tmp="${KUBE_ROOT}/_tmp" + +mkdir -p "${_tmp}" +cp -a "${APIROOT}" "${TMP_APIROOT}" + +"${KUBE_ROOT}/hack/update-generated-deep-copies.sh" +echo "diffing ${APIROOT} against freshly generated deep copies" +ret=0 +diff -Naupr -I 'Auto generated by' "${APIROOT}" "${TMP_APIROOT}" || ret=$? +cp -a ${TMP_APIROOT} "${KUBE_ROOT}/pkg" +rm -rf "${_tmp}" +if [[ $ret -eq 0 ]] +then + echo "${APIROOT} up to date." +else + echo "${APIROOT} is out of date. Please run hack/update-generated-deep-copies.sh" + exit 1 +fi + +# ex: ts=2 sw=2 et filetype=sh diff --git a/hack/verify-gendocs.sh b/hack/after-build/verify-generated-docs.sh similarity index 79% rename from hack/verify-gendocs.sh rename to hack/after-build/verify-generated-docs.sh index e2a6981744..04a6d4e36c 100755 --- a/hack/verify-gendocs.sh +++ b/hack/after-build/verify-generated-docs.sh @@ -18,7 +18,7 @@ set -o errexit set -o nounset set -o pipefail -KUBE_ROOT=$(dirname "${BASH_SOURCE}")/.. +KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../.. source "${KUBE_ROOT}/hack/lib/init.sh" kube::golang::setup_env @@ -29,16 +29,6 @@ genman=$(kube::util::find-binary "genman") genbashcomp=$(kube::util::find-binary "genbashcomp") mungedocs=$(kube::util::find-binary "mungedocs") -if [[ ! -x "$gendocs" || ! -x "$genman" || ! -x "$genbashcomp" || ! -x "$mungedocs" ]]; then - { - echo "It looks as if you don't have a compiled gendocs, genman, genbashcomp or mungedocs binary" - echo - echo "If you are running from a clone of the git repo, please run" - echo "'./hack/build-go.sh cmd/gendocs cmd/genman cmd/genbashcomp cmd/mungedocs'." - } >&2 - exit 1 -fi - DOCROOT="${KUBE_ROOT}/docs/" EXAMPLEROOT="${KUBE_ROOT}/examples/" TMP_DOCROOT="${KUBE_ROOT}/_tmp/docs/" @@ -51,7 +41,7 @@ cp -a "${DOCROOT}" "${TMP_DOCROOT}" # links will be distorted. --verify means that it will not make changes. "${mungedocs}" "--verify=true" "--root-dir=${DOCROOT}" && ret=0 || ret=$? if [[ $ret -eq 1 ]]; then - echo "${DOCROOT} is out of date. Please run hack/run-gendocs.sh" + echo "${DOCROOT} is out of date. Please run hack/update-generated-docs.sh" exit 1 fi if [[ $ret -gt 1 ]]; then @@ -61,7 +51,7 @@ fi "${mungedocs}" "--verify=true" "--root-dir=${EXAMPLEROOT}" && ret=0 || ret=$? if [[ $ret -eq 1 ]]; then - echo "${EXAMPLEROOT} is out of date. Please run hack/run-gendocs.sh" + echo "${EXAMPLEROOT} is out of date. Please run hack/update-generated-docs.sh" exit 1 fi if [[ $ret -gt 1 ]]; then @@ -85,7 +75,7 @@ if [[ $ret -eq 0 ]] then echo "${DOCROOT} up to date." else - echo "${DOCROOT} is out of date. Please run hack/run-gendocs.sh" + echo "${DOCROOT} is out of date. Please run hack/update-generated-docs.sh" exit 1 fi @@ -99,7 +89,7 @@ if [ $ret -eq 0 ] then echo "${COMPROOT} up to date." else - echo "${COMPROOT} is out of date. Please run hack/run-gendocs.sh" + echo "${COMPROOT} is out of date. Please run hack/update-generated-docs.sh" echo "If you did not make a change to kubectl or its dependencies," echo "run 'make clean' and retry this command." exit 1 diff --git a/hack/after-build/verify-linkcheck.sh b/hack/after-build/verify-linkcheck.sh new file mode 100755 index 0000000000..c3865bcd74 --- /dev/null +++ b/hack/after-build/verify-linkcheck.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# Copyright 2014 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. + +set -o errexit +set -o nounset +set -o pipefail + +KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../.. +source "${KUBE_ROOT}/hack/lib/init.sh" + +kube::golang::setup_env +linkcheck=$(kube::util::find-binary "linkcheck") + +TYPEROOT="${KUBE_ROOT}/pkg/api/" +"${linkcheck}" "--root-dir=${TYPEROOT}" "--repo-root=${KUBE_ROOT}" "--file-suffix=types.go" "--prefix=http://releases.k8s.io/HEAD" && ret=0 || ret=$? +if [[ $ret -eq 1 ]]; then + echo "links in ${TYPEROOT} is out of date." + exit 1 +fi +if [[ $ret -gt 1 ]]; then + echo "Error running linkcheck" + exit 1 +fi + +# ex: ts=2 sw=2 et filetype=sh diff --git a/hack/after-build/verify-swagger-spec.sh b/hack/after-build/verify-swagger-spec.sh new file mode 100755 index 0000000000..b633b5ffb1 --- /dev/null +++ b/hack/after-build/verify-swagger-spec.sh @@ -0,0 +1,49 @@ +#!/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. + +set -o errexit +set -o nounset +set -o pipefail + +KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../.. +source "${KUBE_ROOT}/hack/lib/init.sh" + +kube::golang::setup_env + +apiserver=$(kube::util::find-binary "kube-apiserver") + +SPECROOT="${KUBE_ROOT}/api/swagger-spec" +TMP_SPECROOT="${KUBE_ROOT}/_tmp/swagger-spec" +_tmp="${KUBE_ROOT}/_tmp" + +mkdir -p "${_tmp}" +cp -a "${SPECROOT}" "${TMP_SPECROOT}" + +"${KUBE_ROOT}/hack/update-swagger-spec.sh" +echo "diffing ${SPECROOT} against freshly generated swagger spec" +ret=0 +diff -Naupr -I 'Auto generated by' "${SPECROOT}" "${TMP_SPECROOT}" || ret=$? +cp -a ${TMP_SPECROOT} "${KUBE_ROOT}/api" +rm -rf "${_tmp}" +if [[ $ret -eq 0 ]] +then + echo "${SPECROOT} up to date." +else + echo "${SPECROOT} is out of date. Please run hack/update-swagger-spec.sh" + exit 1 +fi + +# ex: ts=2 sw=2 et filetype=sh diff --git a/hack/update-generated-conversions.sh b/hack/update-generated-conversions.sh index f76aeafe11..b5d19ca441 100755 --- a/hack/update-generated-conversions.sh +++ b/hack/update-generated-conversions.sh @@ -23,31 +23,8 @@ source "${KUBE_ROOT}/hack/lib/init.sh" kube::golang::setup_env -function generate_version() { - local version=$1 - local TMPFILE="/tmp/conversion_generated.$(date +%s).go" +"${KUBE_ROOT}/hack/build-go.sh" cmd/genconversion - echo "Generating for version ${version}" +"${KUBE_ROOT}/hack/after-build/update-generated-conversions.sh" "$@" - sed 's/YEAR/2015/' hack/boilerplate/boilerplate.go.txt > $TMPFILE - cat >> $TMPFILE <> $TMPFILE - - cat >> $TMPFILE < $TMPFILE - cat >> $TMPFILE <&2 2>/dev/null +kube::golang::setup_env - kube::etcd::cleanup - - kube::log::status "Clean up complete" -} - -trap cleanup EXIT SIGINT - -kube::log::status "Building apiserver" "${KUBE_ROOT}/hack/build-go.sh" cmd/kube-apiserver -ETCD_HOST=${ETCD_HOST:-127.0.0.1} -ETCD_PORT=${ETCD_PORT:-4001} -API_PORT=${API_PORT:-8050} -API_HOST=${API_HOST:-127.0.0.1} -KUBELET_PORT=${KUBELET_PORT:-10250} +"${KUBE_ROOT}/hack/after-build/update-swagger-spec.sh" "$@" -kube::etcd::start - -# Start kube-apiserver -kube::log::status "Starting kube-apiserver" -KUBE_API_VERSIONS="v1" "${KUBE_OUTPUT_HOSTBIN}/kube-apiserver" \ - --address="127.0.0.1" \ - --public-address-override="127.0.0.1" \ - --port="${API_PORT}" \ - --etcd-servers="http://${ETCD_HOST}:${ETCD_PORT}" \ - --public-address-override="127.0.0.1" \ - --kubelet-port=${KUBELET_PORT} \ - --runtime-config=api/v1 \ - --service-cluster-ip-range="10.0.0.0/24" >/dev/null 2>&1 & -APISERVER_PID=$! - -kube::util::wait_for_url "http://127.0.0.1:${API_PORT}/healthz" "apiserver: " - -SWAGGER_API_PATH="http://127.0.0.1:${API_PORT}/swaggerapi/" -kube::log::status "Updating " ${SWAGGER_ROOT_DIR} -curl -fs ${SWAGGER_API_PATH} > ${SWAGGER_ROOT_DIR}/resourceListing.json -curl -fs ${SWAGGER_API_PATH}version > ${SWAGGER_ROOT_DIR}/version.json -curl -fs ${SWAGGER_API_PATH}api > ${SWAGGER_ROOT_DIR}/api.json -curl -fs ${SWAGGER_API_PATH}api/v1 > ${SWAGGER_ROOT_DIR}/v1.json - -kube::log::status "SUCCESS" +# ex: ts=2 sw=2 et filetype=sh diff --git a/hack/verify-generated-conversions.sh b/hack/verify-generated-conversions.sh index 5c0bb2efa2..4cda423580 100755 --- a/hack/verify-generated-conversions.sh +++ b/hack/verify-generated-conversions.sh @@ -23,37 +23,8 @@ source "${KUBE_ROOT}/hack/lib/init.sh" kube::golang::setup_env -genconversion=$(kube::util::find-binary "genconversion") +"${KUBE_ROOT}/hack/build-go.sh" cmd/genconversion -if [[ ! -x "$genconversion" ]]; then - { - echo "It looks as if you don't have a compiled conversion binary" - echo - echo "If you are running from a clone of the git repo, please run" - echo "'./hack/build-go.sh cmd/genconversion'." - } >&2 - exit 1 -fi - -APIROOT="${KUBE_ROOT}/pkg/api" -TMP_APIROOT="${KUBE_ROOT}/_tmp/api" -_tmp="${KUBE_ROOT}/_tmp" - -mkdir -p "${_tmp}" -cp -a "${APIROOT}" "${TMP_APIROOT}" - -"${KUBE_ROOT}/hack/update-generated-conversions.sh" -echo "diffing ${APIROOT} against freshly generated conversions" -ret=0 -diff -Naupr -I 'Auto generated by' "${APIROOT}" "${TMP_APIROOT}" || ret=$? -cp -a ${TMP_APIROOT} "${KUBE_ROOT}/pkg" -rm -rf "${_tmp}" -if [[ $ret -eq 0 ]] -then - echo "${APIROOT} up to date." -else - echo "${APIROOT} is out of date. Please run hack/update-generated-conversions.sh" - exit 1 -fi +"${KUBE_ROOT}/hack/after-build/verify-generated-conversions.sh" "$@" # ex: ts=2 sw=2 et filetype=sh diff --git a/hack/verify-generated-deep-copies.sh b/hack/verify-generated-deep-copies.sh index 373fc7670b..678c265288 100755 --- a/hack/verify-generated-deep-copies.sh +++ b/hack/verify-generated-deep-copies.sh @@ -23,37 +23,8 @@ source "${KUBE_ROOT}/hack/lib/init.sh" kube::golang::setup_env -genconversion=$(kube::util::find-binary "gendeepcopy") +"${KUBE_ROOT}/hack/build-go.sh" cmd/gendeepcopy -if [[ ! -x "$genconversion" ]]; then - { - echo "It looks as if you don't have a compiled conversion binary" - echo - echo "If you are running from a clone of the git repo, please run" - echo "'./hack/build-go.sh cmd/gendeepcopy'." - } >&2 - exit 1 -fi - -APIROOT="${KUBE_ROOT}/pkg/api" -TMP_APIROOT="${KUBE_ROOT}/_tmp/api" -_tmp="${KUBE_ROOT}/_tmp" - -mkdir -p "${_tmp}" -cp -a "${APIROOT}" "${TMP_APIROOT}" - -"${KUBE_ROOT}/hack/update-generated-deep-copies.sh" -echo "diffing ${APIROOT} against freshly generated deep copies" -ret=0 -diff -Naupr -I 'Auto generated by' "${APIROOT}" "${TMP_APIROOT}" || ret=$? -cp -a ${TMP_APIROOT} "${KUBE_ROOT}/pkg" -rm -rf "${_tmp}" -if [[ $ret -eq 0 ]] -then - echo "${APIROOT} up to date." -else - echo "${APIROOT} is out of date. Please run hack/update-generated-deep-copies.sh" - exit 1 -fi +"${KUBE_ROOT}/hack/after-build/verify-generated-deep-copies.sh" "$@" # ex: ts=2 sw=2 et filetype=sh diff --git a/hack/verify-generated-docs.sh b/hack/verify-generated-docs.sh new file mode 100755 index 0000000000..6a31075c03 --- /dev/null +++ b/hack/verify-generated-docs.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +# Copyright 2014 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. + +set -o errexit +set -o nounset +set -o pipefail + +KUBE_ROOT=$(dirname "${BASH_SOURCE}")/.. +source "${KUBE_ROOT}/hack/lib/init.sh" + +kube::golang::setup_env + +"${KUBE_ROOT}/hack/build-go.sh" cmd/gendocs cmd/genman cmd/genbashcomp cmd/mungedocs + +"${KUBE_ROOT}/hack/after-build/verify-generated-docs.sh" "$@" + +# ex: ts=2 sw=2 et filetype=sh diff --git a/hack/verify-linkcheck.sh b/hack/verify-linkcheck.sh index b758179bec..c111f9e35d 100755 --- a/hack/verify-linkcheck.sh +++ b/hack/verify-linkcheck.sh @@ -22,25 +22,9 @@ KUBE_ROOT=$(dirname "${BASH_SOURCE}")/.. source "${KUBE_ROOT}/hack/lib/init.sh" kube::golang::setup_env -linkcheck=$(kube::util::find-binary "linkcheck") -if [[ ! -x "$linkcheck" ]]; then - { - echo "It looks as if you don't have a compiled linkcheck binary" - echo - echo "If you are running from a clone of the git repo, please run" - echo "'./hack/build-go.sh cmd/linkcheck'." - } >&2 - exit 1 -fi +"${KUBE_ROOT}/hack/build-go.sh" cmd/linkcheck -TYPEROOT="${KUBE_ROOT}/pkg/api/" -"${linkcheck}" "--root-dir=${TYPEROOT}" "--repo-root=${KUBE_ROOT}" "--file-suffix=types.go" "--prefix=http://releases.k8s.io/HEAD" && ret=0 || ret=$? -if [[ $ret -eq 1 ]]; then - echo "links in ${TYPEROOT} is out of date." - exit 1 -fi -if [[ $ret -gt 1 ]]; then - echo "Error running linkcheck" - exit 1 -fi +"${KUBE_ROOT}/hack/after-build/verify-linkcheck.sh" "$@" + +# ex: ts=2 sw=2 et filetype=sh diff --git a/hack/verify-swagger-spec.sh b/hack/verify-swagger-spec.sh index 1857614fd6..0fcd252030 100755 --- a/hack/verify-swagger-spec.sh +++ b/hack/verify-swagger-spec.sh @@ -23,25 +23,8 @@ source "${KUBE_ROOT}/hack/lib/init.sh" kube::golang::setup_env -SPECROOT="${KUBE_ROOT}/api/swagger-spec" -TMP_SPECROOT="${KUBE_ROOT}/_tmp/swagger-spec" -_tmp="${KUBE_ROOT}/_tmp" +"${KUBE_ROOT}/hack/build-go.sh" cmd/kube-apiserver -mkdir -p "${_tmp}" -cp -a "${SPECROOT}" "${TMP_SPECROOT}" - -"${KUBE_ROOT}/hack/update-swagger-spec.sh" -echo "diffing ${SPECROOT} against freshly generated swagger spec" -ret=0 -diff -Naupr -I 'Auto generated by' "${SPECROOT}" "${TMP_SPECROOT}" || ret=$? -cp -a ${TMP_SPECROOT} "${KUBE_ROOT}/api" -rm -rf "${_tmp}" -if [[ $ret -eq 0 ]] -then - echo "${SPECROOT} up to date." -else - echo "${SPECROOT} is out of date. Please run hack/update-swagger-spec.sh" - exit 1 -fi +"${KUBE_ROOT}/hack/after-build/verify-swagger-spec.sh" "$@" # ex: ts=2 sw=2 et filetype=sh diff --git a/hooks/pre-commit b/hooks/pre-commit index fa6a6882a8..f802980949 100755 --- a/hooks/pre-commit +++ b/hooks/pre-commit @@ -4,8 +4,6 @@ readonly reset=$(tput sgr0) readonly red=$(tput bold; tput setaf 1) readonly green=$(tput bold; tput setaf 2) -KUBE_HOOKS_DIR="$(dirname "$(test -L "$0" && echo "$(dirname $0)/$(readlink "$0")" || echo "$0")")" - exit_code=0 echo -ne "Checking that it builds... " @@ -60,7 +58,7 @@ files_need_description=() # Check API schema definitions for field descriptions for file in $(git diff --cached --name-only --diff-filter ACM | egrep "pkg/api/v.[^/]*/types\.go" | grep -v "third_party"); do # Check for files with fields without description tags - descriptionless=$(hack/verify-description.sh "${file}") + descriptionless=$(hack/after-build/verify-description.sh "${file}") if [[ "$descriptionless" != "" ]]; then files_need_description+=("${file}") fi @@ -80,7 +78,7 @@ fi echo "${reset}" echo -ne "Checking for links in API descriptions... " -if ! hack/verify-linkcheck.sh > /dev/null; then +if ! hack/after-build/verify-linkcheck.sh > /dev/null; then echo "${red}ERROR!" echo "Some links in pkg/api/.*types.go are outdated. They require a manual fix." exit_code=1 @@ -90,11 +88,11 @@ fi echo "${reset}" echo -ne "Checking for docs that need updating... " -if ! hack/verify-gendocs.sh > /dev/null; then +if ! hack/after-build/verify-generated-docs.sh > /dev/null; then echo "${red}ERROR!" echo "Some docs are out of sync between CLI and markdown." echo "To regenerate docs, run:" - echo " hack/run-gendocs.sh" + echo " hack/update-generated-docs.sh" exit_code=1 else echo "${green}OK" @@ -102,7 +100,7 @@ fi echo "${reset}" echo -ne "Checking for conversions that need updating... " -if ! hack/verify-generated-conversions.sh > /dev/null; then +if ! hack/after-build/verify-generated-conversions.sh > /dev/null; then echo "${red}ERROR!" echo "Some conversions functions need regeneration." echo "To regenerate conversions, run:" @@ -114,7 +112,7 @@ fi echo "${reset}" echo -ne "Checking for deep-copies that need updating... " -if ! hack/verify-generated-deep-copies.sh > /dev/null; then +if ! hack/after-build/verify-generated-deep-copies.sh > /dev/null; then echo "${red}ERROR!" echo "Some deep-copy functions need regeneration." echo "To regenerate deep-copies, run:" @@ -126,7 +124,7 @@ fi echo "${reset}" echo -ne "Checking for swagger spec that need updating... " -if ! hack/verify-swagger-spec.sh > /dev/null; then +if ! hack/after-build/verify-swagger-spec.sh > /dev/null; then echo "${red}ERROR!" echo "Swagger spec needs to be updated." echo "To regenerate the spec, run:" diff --git a/shippable.yml b/shippable.yml index c36402bab6..c712401fcc 100644 --- a/shippable.yml +++ b/shippable.yml @@ -32,7 +32,7 @@ install: - PATH=$GOPATH/bin:$PATH godep go install ./... - PATH=$GOPATH/bin:$PATH ./hack/verify-generated-conversions.sh - PATH=$GOPATH/bin:$PATH ./hack/verify-generated-deep-copies.sh - - PATH=$GOPATH/bin:./third_party/etcd:$PATH ./hack/verify-gendocs.sh + - PATH=$GOPATH/bin:./third_party/etcd:$PATH ./hack/verify-generated-docs.sh - PATH=$GOPATH/bin:./third_party/etcd:$PATH ./hack/verify-swagger-spec.sh - PATH=$GOPATH/bin:./third_party/etcd:$PATH ./hack/verify-linkcheck.sh