diff --git a/hack/verify-prerelease-lifecycle-tags.sh b/hack/verify-prerelease-lifecycle-tags.sh new file mode 100755 index 00000000000..c52edeab569 --- /dev/null +++ b/hack/verify-prerelease-lifecycle-tags.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash + +# Copyright 2020 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. + +# This script verifies whether codes follow golang convention. +# Usage: `hack/verify-prerelease-lifecycle-tags.sh`. + +set -o errexit +set -o nounset +set -o pipefail + +KUBE_ROOT=$(dirname "${BASH_SOURCE[0]}")/.. +source "${KUBE_ROOT}/hack/lib/init.sh" + +kube::golang::verify_go_version + +cd "${KUBE_ROOT}" +if git --no-pager grep -L '// +k8s:prerelease-lifecycle-gen=true' -- 'staging/src/k8s.io/api/**/*beta*/doc.go'; then + echo "!!! Some beta packages doc.go do not include prerelease-lifecycle tags." + echo "To fix these errors, add '// +k8s:prerelease-lifecycle-gen=true' to doc.go and" + echo "add '// +k8s:prerelease-lifecycle-gen:introduced=1.' to every type that embeds metav1.TypeMeta" + exit 1 +fi + +if git --no-pager grep -L '// +k8s:prerelease-lifecycle-gen=true' -- 'staging/src/k8s.io/kube-aggregator/pkg/apis/**/*beta*/doc.go'; then + echo "!!! Some beta packages doc.go do not include prerelease-lifecycle tags." + echo "To fix these errors, add '// +k8s:prerelease-lifecycle-gen=true' to doc.go and" + echo "add '// +k8s:prerelease-lifecycle-gen:introduced=1.' to every type that embeds metav1.TypeMeta" + exit 1 +fi + +if git --no-pager grep -L '// +k8s:prerelease-lifecycle-gen=true' -- 'staging/src/k8s.io/apiextensions-apisever/pkg/apis/**/*beta*/doc.go'; then + echo "!!! Some beta packages doc.go do not include prerelease-lifecycle tags." + echo "To fix these errors, add '// +k8s:prerelease-lifecycle-gen=true' to doc.go and" + echo "add '// +k8s:prerelease-lifecycle-gen:introduced=1.' to every type that embeds metav1.TypeMeta" + exit 1 +fi diff --git a/staging/src/k8s.io/api/authentication/v1beta1/types.go b/staging/src/k8s.io/api/authentication/v1beta1/types.go index 6adae4e0bbb..121b3461811 100644 --- a/staging/src/k8s.io/api/authentication/v1beta1/types.go +++ b/staging/src/k8s.io/api/authentication/v1beta1/types.go @@ -28,7 +28,6 @@ import ( // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // +k8s:prerelease-lifecycle-gen:introduced=1.4 // +k8s:prerelease-lifecycle-gen:deprecated=1.19 -// +k8s:prerelease-lifecycle-gen:removed=1.22 // +k8s:prerelease-lifecycle-gen:replacement=authentication.k8s.io,v1,TokenReview // TokenReview attempts to authenticate a token to a known user. diff --git a/staging/src/k8s.io/api/authorization/v1beta1/types.go b/staging/src/k8s.io/api/authorization/v1beta1/types.go index 21718531585..c62b5ea2137 100644 --- a/staging/src/k8s.io/api/authorization/v1beta1/types.go +++ b/staging/src/k8s.io/api/authorization/v1beta1/types.go @@ -28,7 +28,6 @@ import ( // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // +k8s:prerelease-lifecycle-gen:introduced=1.2 // +k8s:prerelease-lifecycle-gen:deprecated=1.19 -// +k8s:prerelease-lifecycle-gen:removed=1.22 // +k8s:prerelease-lifecycle-gen:replacement=authorization.k8s.io,v1,SubjectAccessReview // SubjectAccessReview checks whether or not a user or group can perform an action. @@ -51,7 +50,6 @@ type SubjectAccessReview struct { // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // +k8s:prerelease-lifecycle-gen:introduced=1.2 // +k8s:prerelease-lifecycle-gen:deprecated=1.19 -// +k8s:prerelease-lifecycle-gen:removed=1.22 // +k8s:prerelease-lifecycle-gen:replacement=authorization.k8s.io,v1,SelfSubjectAccessReview // SelfSubjectAccessReview checks whether or the current user can perform an action. Not filling in a @@ -75,7 +73,6 @@ type SelfSubjectAccessReview struct { // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // +k8s:prerelease-lifecycle-gen:introduced=1.2 // +k8s:prerelease-lifecycle-gen:deprecated=1.19 -// +k8s:prerelease-lifecycle-gen:removed=1.22 // +k8s:prerelease-lifecycle-gen:replacement=authorization.k8s.io,v1,LocalSubjectAccessReview // LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. @@ -205,7 +202,6 @@ type SubjectAccessReviewStatus struct { // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // +k8s:prerelease-lifecycle-gen:introduced=1.8 // +k8s:prerelease-lifecycle-gen:deprecated=1.19 -// +k8s:prerelease-lifecycle-gen:removed=1.22 // +k8s:prerelease-lifecycle-gen:replacement=authorization.k8s.io,v1,SelfSubjectRulesReview // SelfSubjectRulesReview enumerates the set of actions the current user can perform within a namespace. diff --git a/staging/src/k8s.io/api/autoscaling/v2beta1/types.go b/staging/src/k8s.io/api/autoscaling/v2beta1/types.go index 0d1f49fea46..d76e879678a 100644 --- a/staging/src/k8s.io/api/autoscaling/v2beta1/types.go +++ b/staging/src/k8s.io/api/autoscaling/v2beta1/types.go @@ -375,7 +375,6 @@ type ExternalMetricStatus struct { // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // +k8s:prerelease-lifecycle-gen:introduced=1.8 // +k8s:prerelease-lifecycle-gen:deprecated=1.22 -// +k8s:prerelease-lifecycle-gen:removed=1.25 // +k8s:prerelease-lifecycle-gen:replacement=autoscaling,v2beta2,HorizontalPodAutoscaler // HorizontalPodAutoscaler is the configuration for a horizontal pod @@ -401,7 +400,6 @@ type HorizontalPodAutoscaler struct { // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // +k8s:prerelease-lifecycle-gen:introduced=1.8 // +k8s:prerelease-lifecycle-gen:deprecated=1.22 -// +k8s:prerelease-lifecycle-gen:removed=1.25 // +k8s:prerelease-lifecycle-gen:replacement=autoscaling,v2beta2,HorizontalPodAutoscalerList // HorizontalPodAutoscaler is a list of horizontal pod autoscaler objects. diff --git a/staging/src/k8s.io/api/autoscaling/v2beta2/types.go b/staging/src/k8s.io/api/autoscaling/v2beta2/types.go index cd1f77b1d30..6e5b8f68c11 100644 --- a/staging/src/k8s.io/api/autoscaling/v2beta2/types.go +++ b/staging/src/k8s.io/api/autoscaling/v2beta2/types.go @@ -28,7 +28,6 @@ import ( // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // +k8s:prerelease-lifecycle-gen:introduced=1.12 // +k8s:prerelease-lifecycle-gen:deprecated=1.22 -// +k8s:prerelease-lifecycle-gen:removed=1.25 // HorizontalPodAutoscaler is the configuration for a horizontal pod // autoscaler, which automatically manages the replica count of any resource @@ -472,7 +471,6 @@ type MetricValueStatus struct { // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // +k8s:prerelease-lifecycle-gen:introduced=1.12 // +k8s:prerelease-lifecycle-gen:deprecated=1.22 -// +k8s:prerelease-lifecycle-gen:removed=1.25 // HorizontalPodAutoscalerList is a list of horizontal pod autoscaler objects. type HorizontalPodAutoscalerList struct { diff --git a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/BUILD b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/BUILD index edf5205e485..0dd6540b5d2 100644 --- a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/BUILD +++ b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/BUILD @@ -14,7 +14,6 @@ go_library( "register.go", "types.go", "zz_generated.deepcopy.go", - "zz_generated.prerelease-lifecycle.go", ], importmap = "k8s.io/kubernetes/vendor/k8s.io/kube-aggregator/pkg/apis/apiregistration", importpath = "k8s.io/kube-aggregator/pkg/apis/apiregistration", diff --git a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/doc.go b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/doc.go index 271b2f5914b..394bcbc8ef8 100644 --- a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/doc.go +++ b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/doc.go @@ -16,7 +16,6 @@ limitations under the License. // +k8s:deepcopy-gen=package // +groupName=apiregistration.k8s.io -// +k8s:prerelease-lifecycle-gen=true // Package apiregistration is the internal version of the API. package apiregistration // import "k8s.io/kube-aggregator/pkg/apis/apiregistration" diff --git a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/types.go b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/types.go index 1502edf75fd..c5e2a76c0c2 100644 --- a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/types.go +++ b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/types.go @@ -19,10 +19,6 @@ package apiregistration import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -// +k8s:prerelease-lifecycle-gen:introduced=1.7 -// +k8s:prerelease-lifecycle-gen:deprecated=1.19 -// +k8s:prerelease-lifecycle-gen:removed=1.22 -// +k8s:prerelease-lifecycle-gen:replacement=apiregistration.k8s.io,v1,APIServiceList // APIServiceList is a list of APIService objects. type APIServiceList struct { @@ -133,10 +129,6 @@ type APIServiceStatus struct { // +genclient // +genclient:nonNamespaced // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -// +k8s:prerelease-lifecycle-gen:introduced=1.7 -// +k8s:prerelease-lifecycle-gen:deprecated=1.19 -// +k8s:prerelease-lifecycle-gen:removed=1.22 -// +k8s:prerelease-lifecycle-gen:replacement=apiregistration.k8s.io,v1,APIService // APIService represents a server for a particular GroupVersion. // Name must be "version.group". diff --git a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/BUILD b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/BUILD index 9fe4cd5d6dc..64268ab5f9e 100644 --- a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/BUILD +++ b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/BUILD @@ -16,6 +16,7 @@ go_library( "zz_generated.conversion.go", "zz_generated.deepcopy.go", "zz_generated.defaults.go", + "zz_generated.prerelease-lifecycle.go", ], importmap = "k8s.io/kubernetes/vendor/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1", importpath = "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1", diff --git a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/doc.go b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/doc.go index b8877cc2cd8..2d5a6e44e9b 100644 --- a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/doc.go +++ b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/doc.go @@ -20,6 +20,7 @@ limitations under the License. // +k8s:openapi-gen=true // +groupName=apiregistration.k8s.io // +k8s:defaulter-gen=TypeMeta +// +k8s:prerelease-lifecycle-gen=true // Package v1beta1 contains the API Registration API, which is responsible for // registering an API `Group`/`Version` with another kubernetes like API server. diff --git a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/types.go b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/types.go index 8f01f7136bc..25686e9dd17 100644 --- a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/types.go +++ b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/types.go @@ -19,6 +19,9 @@ package v1beta1 import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:prerelease-lifecycle-gen:introduced=1.7 +// +k8s:prerelease-lifecycle-gen:deprecated=1.19 +// +k8s:prerelease-lifecycle-gen:replacement=apiregistration.k8s.io,v1,APIServiceList // APIServiceList is a list of APIService objects. type APIServiceList struct { @@ -138,6 +141,9 @@ type APIServiceStatus struct { // +genclient // +genclient:nonNamespaced // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:prerelease-lifecycle-gen:introduced=1.7 +// +k8s:prerelease-lifecycle-gen:deprecated=1.19 +// +k8s:prerelease-lifecycle-gen:replacement=apiregistration.k8s.io,v1,APIService // APIService represents a server for a particular GroupVersion. // Name must be "version.group". diff --git a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/zz_generated.prerelease-lifecycle.go b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/zz_generated.prerelease-lifecycle.go similarity index 99% rename from staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/zz_generated.prerelease-lifecycle.go rename to staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/zz_generated.prerelease-lifecycle.go index 370893c5105..bdf90cfdced 100644 --- a/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/zz_generated.prerelease-lifecycle.go +++ b/staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/zz_generated.prerelease-lifecycle.go @@ -18,7 +18,7 @@ limitations under the License. // Code generated by prerelease-lifecycle-gen. DO NOT EDIT. -package apiregistration +package v1beta1 import ( schema "k8s.io/apimachinery/pkg/runtime/schema"