1. update clientset, deepcopy using code-generator
2. add a dummy file tools.go to force "go mod vendor" to see code-generator as dependencies 3. add a script to update CRD 4. add a README to document CRD updating steps run go mod tidy update README
This commit is contained in:
34
hack/README.md
Normal file
34
hack/README.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# Scripts User Guide
|
||||
|
||||
This README documents:
|
||||
* What update-crd.sh and update-generated-code.sh do
|
||||
* When and how to use them
|
||||
|
||||
## update-generated-code.sh
|
||||
|
||||
This is the script to update clientset/informers/listers and API deepcopy code using [code-generator](https://github.com/kubernetes/code-generator).
|
||||
|
||||
Make sure to run this script after making changes to /pkg/apis/volumesnapshot/v1beta1/types.go.
|
||||
|
||||
To run this script, simply run: ./hack/update-generated-code.sh from the project root directory.
|
||||
|
||||
## update-crd.sh
|
||||
|
||||
This is the script to update CRD yaml files under ./config/crd/ based on types.go file.
|
||||
|
||||
Make sure to run this script after making changes to /pkg/apis/volumesnapshot/v1beta1/types.go.
|
||||
|
||||
Follow these steps to update the CRD:
|
||||
|
||||
* Run ./hack/update-crd.sh from root directory, new yaml files should have been created under ./config/crd/
|
||||
|
||||
* Replace `api-approved.kubernetes.io` annotation value in all yaml files in the metadata section with your PR.
|
||||
For example, `api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/YOUR-PULL-REQUEST-#"`
|
||||
|
||||
* Remove any metadata sections from the yaml file which does not belong to the generated type.
|
||||
For example, the following command will add a metadata section for a nested object, remove any newly added metadata sections. TODO(xiangqian): this is to make sure the generated CRD is compatible with apiextensions.k8s.io/v1. Once controller-gen supports generating CRD with apiextensions.k8s.io/v1, switch to use the correct version of controller-gen and remove the last step from this README.
|
||||
```bash
|
||||
./hack/update-crd.sh; git diff
|
||||
+ metadata:
|
||||
+ description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'
|
||||
```
|
22
hack/tools.go
Normal file
22
hack/tools.go
Normal file
@@ -0,0 +1,22 @@
|
||||
// +build tools
|
||||
|
||||
/*
|
||||
Copyright 2019 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 package contains code generation utilities
|
||||
// This package imports things required by build scripts, to force `go mod` to see them as dependencies
|
||||
package tools
|
||||
|
||||
import (
|
||||
_ "k8s.io/code-generator"
|
||||
)
|
45
hack/update-crd.sh
Executable file
45
hack/update-crd.sh
Executable file
@@ -0,0 +1,45 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright 2019 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
|
||||
|
||||
## find or download controller-gen
|
||||
CONTROLLER_GEN=$(which controller-gen)
|
||||
|
||||
if [ "$CONTROLLER_GEN" = "" ]
|
||||
then
|
||||
TMP_DIR=$(mktemp -d);
|
||||
cd $TMP_DIR;
|
||||
go mod init tmp;
|
||||
go get sigs.k8s.io/controller-tools/cmd/controller-gen@v0.2.4;
|
||||
rm -rf $TMP_DIR;
|
||||
CONTROLLER_GEN=$(which controller-gen)
|
||||
fi
|
||||
|
||||
if [ "$CONTROLLER_GEN" = "" ]
|
||||
then
|
||||
echo "ERROR: failed to get controller-gen";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
SCRIPT_ROOT=$(unset CDPATH && cd $(dirname "${BASH_SOURCE[0]}")/.. && pwd)
|
||||
|
||||
$CONTROLLER_GEN crd:trivialVersions=true,preserveUnknownFields=false paths=${SCRIPT_ROOT}/pkg/apis/volumesnapshot/v1beta1
|
||||
|
||||
# To use your own boilerplate text use:
|
||||
# --go-header-file ${SCRIPT_ROOT}/hack/custom-boilerplate.go.txt
|
@@ -19,15 +19,14 @@ set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
SCRIPT_ROOT=$(unset CDPATH && cd $(dirname "${BASH_SOURCE[0]}")/.. && pwd)
|
||||
#cd $ROOT
|
||||
#SCRIPT_ROOT=$(dirname ${BASH_SOURCE})/..
|
||||
|
||||
CODEGEN_PKG=${CODEGEN_PKG:-$(cd ${SCRIPT_ROOT}; ls -d -1 ./vendor/k8s.io/code-generator 2>/dev/null || echo ../code-generator)}
|
||||
|
||||
# generate the code with:
|
||||
# --output-base because this script should also be able to run inside the vendor dir of
|
||||
# k8s.io/kubernetes. The output-base is needed for the generators to output into the vendor dir
|
||||
# instead of the $GOPATH directly. For normal projects this can be dropped.
|
||||
${CODEGEN_PKG}/generate-groups.sh "deepcopy,client,informer,lister" \
|
||||
bash ${CODEGEN_PKG}/generate-groups.sh "deepcopy,client,informer,lister" \
|
||||
github.com/kubernetes-csi/external-snapshotter/pkg/client github.com/kubernetes-csi/external-snapshotter/pkg/apis \
|
||||
volumesnapshot:v1beta1 \
|
||||
--go-header-file ${SCRIPT_ROOT}/hack/boilerplate.go.txt
|
||||
|
Reference in New Issue
Block a user