From 2e0d7fb92bada0e18b3947fef8f4266a72284c42 Mon Sep 17 00:00:00 2001 From: chrislovecnm Date: Thu, 1 Mar 2018 18:25:20 -0700 Subject: [PATCH] Adding script to test that apimachinery is up to date Added a bash script to run a make target that tests that apimachinery is up to date. I updated the existing make target so that we can pass in a flag which enables validation only, and not generation. --- Makefile | 29 +++++++++++++++++++---------- hack/verify-apimachinery.sh | 27 +++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 10 deletions(-) create mode 100755 hack/verify-apimachinery.sh diff --git a/Makefile b/Makefile index 4a43d90ff1..993fe72331 100644 --- a/Makefile +++ b/Makefile @@ -40,6 +40,7 @@ UID:=$(shell id -u) GID:=$(shell id -g) TESTABLE_PACKAGES:=$(shell egrep -v "k8s.io/kops/cloudmock|k8s.io/kops/vendor" hack/.packages) BAZEL_OPTIONS?= +API_OPTIONS?= # See http://stackoverflow.com/questions/18136918/how-to-get-current-relative-directory-of-your-makefile MAKEDIR:=$(strip $(shell dirname "$(realpath $(lastword $(MAKEFILE_LIST)))")) @@ -571,18 +572,26 @@ apimachinery: apimachinery-codegen goimports .PHONY: apimachinery-codegen apimachinery-codegen: sh -c hack/make-apimachinery.sh - ${GOPATH}/bin/conversion-gen --skip-unsafe=true --input-dirs k8s.io/kops/pkg/apis/kops/v1alpha1 --v=0 --output-file-base=zz_generated.conversion - ${GOPATH}/bin/conversion-gen --skip-unsafe=true --input-dirs k8s.io/kops/pkg/apis/kops/v1alpha2 --v=0 --output-file-base=zz_generated.conversion - ${GOPATH}/bin/deepcopy-gen --input-dirs k8s.io/kops/pkg/apis/kops --v=0 --output-file-base=zz_generated.deepcopy - ${GOPATH}/bin/deepcopy-gen --input-dirs k8s.io/kops/pkg/apis/kops/v1alpha1 --v=0 --output-file-base=zz_generated.deepcopy - ${GOPATH}/bin/deepcopy-gen --input-dirs k8s.io/kops/pkg/apis/kops/v1alpha2 --v=0 --output-file-base=zz_generated.deepcopy - ${GOPATH}/bin/defaulter-gen --input-dirs k8s.io/kops/pkg/apis/kops/v1alpha1 --v=0 --output-file-base=zz_generated.defaults - ${GOPATH}/bin/defaulter-gen --input-dirs k8s.io/kops/pkg/apis/kops/v1alpha2 --v=0 --output-file-base=zz_generated.defaults + ${GOPATH}/bin/conversion-gen ${API_OPTIONS} --skip-unsafe=true --input-dirs k8s.io/kops/pkg/apis/kops/v1alpha1 --v=0 --output-file-base=zz_generated.conversion \ + --go-header-file "hack/boilerplate/boilerplate.go.txt" + ${GOPATH}/bin/conversion-gen ${API_OPTIONS} --skip-unsafe=true --input-dirs k8s.io/kops/pkg/apis/kops/v1alpha2 --v=0 --output-file-base=zz_generated.conversion \ + --go-header-file "hack/boilerplate/boilerplate.go.txt" + ${GOPATH}/bin/deepcopy-gen ${API_OPTIONS} --input-dirs k8s.io/kops/pkg/apis/kops --v=0 --output-file-base=zz_generated.deepcopy \ + --go-header-file "hack/boilerplate/boilerplate.go.txt" + ${GOPATH}/bin/deepcopy-gen ${API_OPTIONS} --input-dirs k8s.io/kops/pkg/apis/kops/v1alpha1 --v=0 --output-file-base=zz_generated.deepcopy \ + ${GOPATH}/bin/deepcopy-gen ${API_OPTIONS} --input-dirs k8s.io/kops/pkg/apis/kops/v1alpha2 --v=0 --output-file-base=zz_generated.deepcopy \ + --go-header-file "hack/boilerplate/boilerplate.go.txt" + ${GOPATH}/bin/defaulter-gen ${API_OPTIONS} --input-dirs k8s.io/kops/pkg/apis/kops/v1alpha1 --v=0 --output-file-base=zz_generated.defaults \ + --go-header-file "hack/boilerplate/boilerplate.go.txt" + ${GOPATH}/bin/defaulter-gen ${API_OPTIONS} --input-dirs k8s.io/kops/pkg/apis/kops/v1alpha2 --v=0 --output-file-base=zz_generated.defaults \ + --go-header-file "hack/boilerplate/boilerplate.go.txt" #go install github.com/ugorji/go/codec/codecgen # codecgen works only if invoked from directory where the file is located. #cd pkg/apis/kops/ && ~/k8s/bin/codecgen -d 1234 -o types.generated.go instancegroup.go cluster.go - ${GOPATH}/bin/client-gen --input-base k8s.io/kops/pkg/apis/ --input="kops/,kops/v1alpha1,kops/v1alpha2" --clientset-path k8s.io/kops/pkg/client/clientset_generated/ - ${GOPATH}/bin/client-gen --clientset-name="clientset" --input-base k8s.io/kops/pkg/apis/ --input="kops/,kops/v1alpha1,kops/v1alpha2" --clientset-path k8s.io/kops/pkg/client/clientset_generated/ + ${GOPATH}/bin/client-gen ${API_OPTIONS} --input-base k8s.io/kops/pkg/apis/ --input="kops/,kops/v1alpha1,kops/v1alpha2" --clientset-path k8s.io/kops/pkg/client/clientset_generated/ \ + --go-header-file "hack/boilerplate/boilerplate.go.txt" + ${GOPATH}/bin/client-gen ${API_OPTIONS} --clientset-name="clientset" --input-base k8s.io/kops/pkg/apis/ --input="kops/,kops/v1alpha1,kops/v1alpha2" --clientset-path k8s.io/kops/pkg/client/clientset_generated/ \ + --go-header-file "hack/boilerplate/boilerplate.go.txt" # ----------------------------------------------------- @@ -715,4 +724,4 @@ bazel-version-dist: bazel-crossbuild-nodeup bazel-crossbuild-kops bazel-protokub .PHONY: bazel-upload bazel-upload: bazel-version-dist # Upload kops to S3 - aws s3 sync --acl public-read ${BAZELUPLOAD}/ ${S3_BUCKET} \ No newline at end of file + aws s3 sync --acl public-read ${BAZELUPLOAD}/ ${S3_BUCKET} diff --git a/hack/verify-apimachinery.sh b/hack/verify-apimachinery.sh new file mode 100755 index 0000000000..010bba2da5 --- /dev/null +++ b/hack/verify-apimachinery.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash +# Copyright 2016 The Kubernetes Authors. +# +# 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 + +KOPS_ROOT=$(git rev-parse --show-toplevel) + +export API_OPTIONS="--verify-only" +if make apimachinery-codegen; then + echo "apimachinery is up to date" +else + echo "\n TEST FAILED - apimachinery is not up to date please run 'make apimachinery'" +fi