From eb061311cc6e4c89d0949e76573d1ce8010439ff Mon Sep 17 00:00:00 2001 From: Tuomo Tanskanen Date: Fri, 28 Jun 2024 12:41:26 +0300 Subject: [PATCH] fix hack scripts to run locally again Fix hack scripts to run locally again. We have some Git permissions issues, formatting issues, deprecated linters, bad Go configs, custom mount points etc. Now it should be cleaner, runs on Linux and Mac equally (zsh can't handle "${@}" for example)... Signed-off-by: Tuomo Tanskanen --- hack/generate.sh | 46 ++++++++++++++++++++++---------------------- hack/golint.sh | 20 ------------------- hack/gomod.sh | 1 + hack/manifestlint.sh | 31 ++++++++++++++--------------- hack/markdownlint.sh | 1 + hack/shellcheck.sh | 21 ++++++++++---------- hack/unit.sh | 29 ---------------------------- 7 files changed, 52 insertions(+), 97 deletions(-) delete mode 100755 hack/golint.sh delete mode 100755 hack/unit.sh diff --git a/hack/generate.sh b/hack/generate.sh index 6f1f1d23c7..be63e970d2 100755 --- a/hack/generate.sh +++ b/hack/generate.sh @@ -2,35 +2,35 @@ # Ignore the rule that says we should always quote variables, because # in this script we *do* want globbing. -# shellcheck disable=SC2086 +# shellcheck disable=SC2086,SC2292 set -eux -IS_CONTAINER=${IS_CONTAINER:-false} -ARTIFACTS=${ARTIFACTS:-/tmp} +IS_CONTAINER="${IS_CONTAINER:-false}" +ARTIFACTS="${ARTIFACTS:-/tmp}" CONTAINER_RUNTIME="${CONTAINER_RUNTIME:-podman}" if [ "${IS_CONTAINER}" != "false" ]; then - eval "$(go env)" - cd "${GOPATH}"/src/github.com/metal3-io/baremetal-operator - export XDG_CACHE_HOME="/tmp/.cache" + # we need to tell git its OK to use dir owned by someone else + git config --global safe.directory /workdir + export XDG_CACHE_HOME="/tmp/.cache" - INPUT_FILES="$(git ls-files config) $(git ls-files | grep zz_generated)" - cksum $INPUT_FILES > "$ARTIFACTS/lint.cksums.before" - export VERBOSE="--verbose" - make generate manifests - cksum $INPUT_FILES > "$ARTIFACTS/lint.cksums.after" - diff "$ARTIFACTS/lint.cksums.before" "$ARTIFACTS/lint.cksums.after" + INPUT_FILES="$(git ls-files config) $(git ls-files | grep zz_generated)" + cksum ${INPUT_FILES} > "${ARTIFACTS}/lint.cksums.before" + export VERBOSE="--verbose" + make generate manifests + cksum ${INPUT_FILES} > "${ARTIFACTS}/lint.cksums.after" + diff "${ARTIFACTS}/lint.cksums.before" "${ARTIFACTS}/lint.cksums.after" else - "${CONTAINER_RUNTIME}" run --rm \ - --env IS_CONTAINER=TRUE \ - --env DEPLOY_KERNEL_URL=http://172.22.0.1/images/ironic-python-agent.kernel \ - --env DEPLOY_RAMDISK_URL=http://172.22.0.1/images/ironic-python-agent.initramfs \ - --env IRONIC_ENDPOINT=http://localhost:6385/v1/ \ - --volume "${PWD}:/go/src/github.com/metal3-io/baremetal-operator:rw,z" \ - --entrypoint sh \ - --workdir /go/src/github.com/metal3-io/baremetal-operator \ - docker.io/golang:1.22 \ - /go/src/github.com/metal3-io/baremetal-operator/hack/generate.sh "${@}" -fi; + "${CONTAINER_RUNTIME}" run --rm \ + --env IS_CONTAINER=TRUE \ + --env DEPLOY_KERNEL_URL=http://172.22.0.1/images/ironic-python-agent.kernel \ + --env DEPLOY_RAMDISK_URL=http://172.22.0.1/images/ironic-python-agent.initramfs \ + --env IRONIC_ENDPOINT=http://localhost:6385/v1/ \ + --volume "${PWD}:/workdir:rw,z" \ + --entrypoint sh \ + --workdir /workdir \ + docker.io/golang:1.22 \ + /workdir/hack/generate.sh "$@" +fi diff --git a/hack/golint.sh b/hack/golint.sh deleted file mode 100755 index 1e565f0858..0000000000 --- a/hack/golint.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh - -set -eux - -IS_CONTAINER=${IS_CONTAINER:-false} -CONTAINER_RUNTIME="${CONTAINER_RUNTIME:-podman}" - -if [ "${IS_CONTAINER}" != "false" ]; then - export XDG_CACHE_HOME="/tmp/.cache" - - make lint -else - "${CONTAINER_RUNTIME}" run -u "$(id -u)" --rm \ - --env IS_CONTAINER=TRUE \ - --volume "${PWD}:/go/src/github.com/metal3-io/baremetal-operator:rw,z" \ - --entrypoint sh \ - --workdir /go/src/github.com/metal3-io/baremetal-operator \ - docker.io/golang:1.22 \ - /go/src/github.com/metal3-io/baremetal-operator/hack/golint.sh "${@}" -fi; diff --git a/hack/gomod.sh b/hack/gomod.sh index 15c06decf6..2b927405d8 100755 --- a/hack/gomod.sh +++ b/hack/gomod.sh @@ -4,6 +4,7 @@ # 2. Verify that running the above doesn't change go.mod and go.sum # # NOTE: This won't work unless the build environment has internet access +# shellcheck disable=SC2292 set -eux diff --git a/hack/manifestlint.sh b/hack/manifestlint.sh index afded49296..010be4add3 100755 --- a/hack/manifestlint.sh +++ b/hack/manifestlint.sh @@ -1,8 +1,9 @@ #!/bin/sh +# shellcheck disable=SC2292 set -eux -IS_CONTAINER=${IS_CONTAINER:-false} +IS_CONTAINER="${IS_CONTAINER:-false}" CONTAINER_RUNTIME="${CONTAINER_RUNTIME:-podman}" K8S_VERSION="${K8S_VERSION:-master}" @@ -24,19 +25,19 @@ if [ "${IS_CONTAINER}" != "false" ]; then { set +x; } 2>/dev/null echo "<-------------------------STARTING MANIFESTS VALIDATION CHECKS------------------------->" "${KUBECONFORM_PATH:-}"kubeconform --strict --ignore-missing-schemas \ - --kubernetes-version "${K8S_VERSION}" \ - --ignore-filename-pattern kustom --ignore-filename-pattern patch \ - --ignore-filename-pattern controller_manager_config \ - --output tap \ - config/ examples/ + --kubernetes-version "${K8S_VERSION}" \ + --ignore-filename-pattern kustom --ignore-filename-pattern patch \ + --ignore-filename-pattern controller_manager_config \ + --output tap \ + config/ examples/ echo "<-------------------------COMPLETED MANIFESTS VALIDATION CHECKS------------------------>" else - "${CONTAINER_RUNTIME}" run --rm \ - --env IS_CONTAINER=TRUE \ - --env KUBECONFORM_PATH="/" \ - --volume "${PWD}:/workdir:ro,z" \ - --entrypoint sh \ - --workdir /workdir \ - ghcr.io/yannh/kubeconform:v0.6.2-alpine@sha256:49b5f6b320d30c1b8b72a7abdf02740ac9dc36a3ba23b934d1c02f7b37e6e740 \ - /workdir/hack/manifestlint.sh "${@}" -fi; + "${CONTAINER_RUNTIME}" run --rm \ + --env IS_CONTAINER=TRUE \ + --env KUBECONFORM_PATH="/" \ + --volume "${PWD}:/workdir:ro,z" \ + --entrypoint sh \ + --workdir /workdir \ + ghcr.io/yannh/kubeconform:v0.6.2-alpine@sha256:49b5f6b320d30c1b8b72a7abdf02740ac9dc36a3ba23b934d1c02f7b37e6e740 \ + /workdir/hack/manifestlint.sh "$@" +fi diff --git a/hack/markdownlint.sh b/hack/markdownlint.sh index 5258d27417..11b7b0fb5c 100755 --- a/hack/markdownlint.sh +++ b/hack/markdownlint.sh @@ -1,5 +1,6 @@ #!/bin/sh # markdownlint-cli2 has config file(s) named .markdownlint-cli2.yaml in the repo +# shellcheck disable=SC2292 set -eux diff --git a/hack/shellcheck.sh b/hack/shellcheck.sh index e7e7c0ba19..97bd782cf0 100755 --- a/hack/shellcheck.sh +++ b/hack/shellcheck.sh @@ -1,19 +1,20 @@ #!/bin/sh +# shellcheck disable=SC2292 set -eux -IS_CONTAINER=${IS_CONTAINER:-false} +IS_CONTAINER="${IS_CONTAINER:-false}" CONTAINER_RUNTIME="${CONTAINER_RUNTIME:-podman}" if [ "${IS_CONTAINER}" != "false" ]; then - TOP_DIR="${1:-.}" - find "${TOP_DIR}" -path ./vendor -prune -o -name '*.sh' -type f -exec shellcheck -s bash {} \+ + TOP_DIR="${1:-.}" + find "${TOP_DIR}" -path ./vendor -prune -o -name '*.sh' -type f -exec shellcheck -s bash {} \+ else - "${CONTAINER_RUNTIME}" run --rm \ - --env IS_CONTAINER=TRUE \ - --volume "${PWD}:/workdir:ro,z" \ - --entrypoint sh \ - --workdir /workdir \ - docker.io/koalaman/shellcheck-alpine:v0.10.0@sha256:5921d946dac740cbeec2fb1c898747b6105e585130cc7f0602eec9a10f7ddb63 \ - /workdir/hack/shellcheck.sh "$@" + "${CONTAINER_RUNTIME}" run --rm \ + --env IS_CONTAINER=TRUE \ + --volume "${PWD}:/workdir:ro,z" \ + --entrypoint sh \ + --workdir /workdir \ + docker.io/koalaman/shellcheck-alpine:v0.10.0@sha256:5921d946dac740cbeec2fb1c898747b6105e585130cc7f0602eec9a10f7ddb63 \ + /workdir/hack/shellcheck.sh "$@" fi diff --git a/hack/unit.sh b/hack/unit.sh deleted file mode 100755 index b48549593d..0000000000 --- a/hack/unit.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh - -set -eux - -IS_CONTAINER=${IS_CONTAINER:-false} -ARTIFACTS=${ARTIFACTS:-/tmp} -CONTAINER_RUNTIME="${CONTAINER_RUNTIME:-podman}" -TEST_FLAGS="${TEST_FLAGS:--v}" - -if [ "${IS_CONTAINER}" != "false" ]; then - eval "$(go env)" - cd "${GOPATH}"/src/github.com/metal3-io/baremetal-operator - export XDG_CACHE_HOME="/tmp/.cache" - export COVER_PROFILE="${ARTIFACTS}"/cover.out - TEST_FLAGS=${TEST_FLAGS} make -e unit-cover - -else - "${CONTAINER_RUNTIME}" run --rm \ - --env IS_CONTAINER=TRUE \ - --env TEST_FLAGS="${TEST_FLAGS}" \ - --env DEPLOY_KERNEL_URL=http://172.22.0.1/images/ironic-python-agent.kernel \ - --env DEPLOY_RAMDISK_URL=http://172.22.0.1/images/ironic-python-agent.initramfs \ - --env IRONIC_ENDPOINT=http://localhost:6385/v1/ \ - --volume "${PWD}:/go/src/github.com/metal3-io/baremetal-operator:rw,z" \ - --entrypoint sh \ - --workdir /go/src/github.com/metal3-io/baremetal-operator \ - docker.io/golang:1.22 \ - /go/src/github.com/metal3-io/baremetal-operator/hack/unit.sh "${@}" -fi;