From fa89150c95a760f38a979a22934be600347c7ca3 Mon Sep 17 00:00:00 2001 From: Ryan Richard Date: Tue, 1 Mar 2022 13:30:47 -0800 Subject: [PATCH] copy shell script changes from PR #1040 to release-0.12 --- hack/lib/update-codegen.sh | 36 ++++++++++++++++++++++++------------ hack/update.sh | 22 ++++++++++++++++------ 2 files changed, 40 insertions(+), 18 deletions(-) diff --git a/hack/lib/update-codegen.sh b/hack/lib/update-codegen.sh index 8005511a7..8a101f21d 100755 --- a/hack/lib/update-codegen.sh +++ b/hack/lib/update-codegen.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright 2020-2021 the Pinniped contributors. All Rights Reserved. +# Copyright 2020-2022 the Pinniped contributors. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 set -euo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" @@ -8,16 +8,20 @@ KUBE_VERSIONS=("$@") BASE_PKG="go.pinniped.dev" export GO111MODULE="on" +# Note that you can change this value to 10 to debug the Kubernetes code generator shell scripts used below. +debug_level="${CODEGEN_LOG_LEVEL:-1}" + # If we're not running in a container, assume that we want to loop over and run each build # in a container. if [[ -z "${CONTAINED:-}" ]]; then for kubeVersion in "${KUBE_VERSIONS[@]}"; do # CODEGEN_IMAGE is the container image to use when running - CODEGEN_IMAGE="projects.registry.vmware.com/pinniped/k8s-code-generator-$(echo "$kubeVersion" | cut -d"." -f1-2):latest" + CODEGEN_IMAGE="ghcr.io/pinniped-ci-bot/k8s-code-generator-$(echo "$kubeVersion" | cut -d"." -f1-2):latest" echo "generating code for ${kubeVersion} using ${CODEGEN_IMAGE}..." docker run --rm \ --env CONTAINED=1 \ + --env CODEGEN_LOG_LEVEL="$debug_level" \ --volume "${ROOT}:/work" \ --workdir "/work" \ "${CODEGEN_IMAGE}" \ @@ -83,6 +87,10 @@ require ( ) EOF +# Generate a go.sum without changing the go.mod by running go mod download. +echo "running go mod download in ${OUTPUT_DIR}/apis/go.mod to generate a go.sum file..." +(cd "${OUTPUT_DIR}/apis" && go mod download all 2>&1 | sed "s|^|go-mod-download > |") + # Make the generated client code its own Go module. echo "generating ${OUTPUT_DIR}/client/go.mod..." mkdir client @@ -98,33 +106,37 @@ require ( k8s.io/api ${KUBE_MODULE_VERSION} k8s.io/apimachinery ${KUBE_MODULE_VERSION} k8s.io/client-go ${KUBE_MODULE_VERSION} - k8s.io/apimachinery ${KUBE_MODULE_VERSION} + ${BASE_PKG}/generated/${KUBE_MINOR_VERSION}/apis v0.0.0 ) replace ${BASE_PKG}/generated/${KUBE_MINOR_VERSION}/apis => ../apis EOF +# Generate a go.sum without changing the go.mod by running go mod download. +echo "running go mod download in ${OUTPUT_DIR}/client/go.mod to generate a go.sum file..." +(cd "${OUTPUT_DIR}/client" && go mod download all 2>&1 | sed "s|^|go-mod-download > |") + # Generate API-related code for our public API groups echo "generating API-related code for our public API groups..." (cd apis && bash "${GOPATH}/src/k8s.io/code-generator/generate-groups.sh" \ - deepcopy \ + "deepcopy" \ "${BASE_PKG}/generated/${KUBE_MINOR_VERSION}/apis" \ "${BASE_PKG}/generated/${KUBE_MINOR_VERSION}/apis" \ "supervisor/config:v1alpha1 supervisor/idp:v1alpha1 concierge/config:v1alpha1 concierge/authentication:v1alpha1 concierge/login:v1alpha1 concierge/identity:v1alpha1" \ - --go-header-file "${ROOT}/hack/boilerplate.go.txt" 2>&1 | sed "s|^|gen-api > |" + --go-header-file "${ROOT}/hack/boilerplate.go.txt" -v "$debug_level" 2>&1 | sed "s|^|gen-api > |" ) # Generate API-related code for our internal API groups echo "generating API-related code for our internal API groups..." (cd apis && bash "${GOPATH}/src/k8s.io/code-generator/generate-internal-groups.sh" \ - deepcopy,defaulter,conversion \ + "deepcopy,defaulter,conversion" \ "${BASE_PKG}/generated/${KUBE_MINOR_VERSION}/client/concierge" \ "${BASE_PKG}/generated/${KUBE_MINOR_VERSION}/apis" \ "${BASE_PKG}/generated/${KUBE_MINOR_VERSION}/apis" \ "concierge/login:v1alpha1 concierge/identity:v1alpha1" \ - --go-header-file "${ROOT}/hack/boilerplate.go.txt" 2>&1 | sed "s|^|gen-int-api > |" + --go-header-file "${ROOT}/hack/boilerplate.go.txt" -v "$debug_level" 2>&1 | sed "s|^|gen-int-api > |" ) @@ -136,19 +148,19 @@ echo "tidying ${OUTPUT_DIR}/apis/go.mod..." echo "generating client code for our public API groups..." (cd client && bash "${GOPATH}/src/k8s.io/code-generator/generate-groups.sh" \ - client,lister,informer \ + "client,lister,informer" \ "${BASE_PKG}/generated/${KUBE_MINOR_VERSION}/client/concierge" \ "${BASE_PKG}/generated/${KUBE_MINOR_VERSION}/apis" \ "concierge/config:v1alpha1 concierge/authentication:v1alpha1 concierge/login:v1alpha1 concierge/identity:v1alpha1" \ - --go-header-file "${ROOT}/hack/boilerplate.go.txt" 2>&1 | sed "s|^|gen-client > |" + --go-header-file "${ROOT}/hack/boilerplate.go.txt" -v "$debug_level" 2>&1 | sed "s|^|gen-client > |" ) - (cd client && +(cd client && bash "${GOPATH}/src/k8s.io/code-generator/generate-groups.sh" \ - client,lister,informer \ + "client,lister,informer" \ "${BASE_PKG}/generated/${KUBE_MINOR_VERSION}/client/supervisor" \ "${BASE_PKG}/generated/${KUBE_MINOR_VERSION}/apis" \ "supervisor/config:v1alpha1 supervisor/idp:v1alpha1" \ - --go-header-file "${ROOT}/hack/boilerplate.go.txt" 2>&1 | sed "s|^|gen-client > |" + --go-header-file "${ROOT}/hack/boilerplate.go.txt" -v "$debug_level" 2>&1 | sed "s|^|gen-client > |" ) # Tidy up the .../client module diff --git a/hack/update.sh b/hack/update.sh index f66fdc22a..6b0cbca40 100755 --- a/hack/update.sh +++ b/hack/update.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright 2020-2021 the Pinniped contributors. All Rights Reserved. +# Copyright 2020-2022 the Pinniped contributors. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 set -euo pipefail @@ -11,17 +11,27 @@ ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )/.." && pwd )" xargs -n 1 -P 8 "$ROOT/hack/lib/update-codegen.sh" < "${ROOT}/hack/lib/kube-versions.txt" # Copy the latest version into a ./generated/latest directory so we can depend on it without nested modules. -LATEST_VERSION="$(head -1 < "${ROOT}/hack/lib/kube-versions.txt" | cut -d"." -f1-2)" +LATEST_MINOR_VERSION="$(head -1 < "${ROOT}/hack/lib/kube-versions.txt" | cut -d"." -f1-2)" LATEST_ROOT="$ROOT/generated/latest" rm -rf "$LATEST_ROOT" -cp -r "$ROOT/generated/$LATEST_VERSION/" "$LATEST_ROOT" +cp -r "$ROOT/generated/$LATEST_MINOR_VERSION/" "$LATEST_ROOT" find "$LATEST_ROOT" \( -name "go.mod" -or -name "go.sum" -or -name "README.adoc" \) -delete rm -r "$LATEST_ROOT/crds" -find "$LATEST_ROOT" -type f -print0 | xargs -0 sed -i '' -e "s|go.pinniped.dev/generated/$LATEST_VERSION|go.pinniped.dev/generated/latest|g" +if [[ "$(uname -s)" == "Linux" ]]; then + # docker on linux preserves the root ownership of the output files of update-codegen.sh, + # so chown the files before editing them. + sudo chown -R "$(id --user)" generated + sudo chgrp -R "$(id --group)" generated + # sed on Linux uses -i'' (no space in between). + find "$LATEST_ROOT" -type f -print0 | xargs -0 sed -i'' -e "s|go.pinniped.dev/generated/$LATEST_MINOR_VERSION|go.pinniped.dev/generated/latest|g" +else + # sed on MacOS uses -i '' (with space in between). + find "$LATEST_ROOT" -type f -print0 | xargs -0 sed -i '' -e "s|go.pinniped.dev/generated/$LATEST_MINOR_VERSION|go.pinniped.dev/generated/latest|g" +fi # Copy each CRD yaml to the app which should cause it to be installed. -cp "$ROOT"/generated/1.20/crds/*.supervisor.*.yaml "$ROOT/deploy/supervisor" -cp "$ROOT"/generated/1.20/crds/*.concierge.*.yaml "$ROOT/deploy/concierge" +cp "$ROOT"/generated/"$LATEST_MINOR_VERSION"/crds/*.supervisor.*.yaml "$ROOT/deploy/supervisor" +cp "$ROOT"/generated/"$LATEST_MINOR_VERSION"/crds/*.concierge.*.yaml "$ROOT/deploy/concierge" # Tidy. "$ROOT/hack/module.sh" tidy