From e3c0ac0bec2db220e8c0dd140618be03a2a32bc4 Mon Sep 17 00:00:00 2001 From: D Tripp <38776199+thedtripp@users.noreply.github.com> Date: Fri, 28 Jun 2024 23:34:25 +0000 Subject: [PATCH] etcd 3.4: Install shellcheck if not installed. Include conditional logic to install shellcheck with correct architecture. This is based on commit 4f23883 and pull request etcd-io#14872. Signed-off-by: D Tripp <38776199+thedtripp@users.noreply.github.com> --- Makefile | 1 + test | 26 ++++++++++++++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 3ac43555d..16825e87e 100644 --- a/Makefile +++ b/Makefile @@ -34,6 +34,7 @@ clean: rm -f ./integration/127.0.0.1:* ./integration/localhost:* rm -f ./clientv3/integration/127.0.0.1:* ./clientv3/integration/localhost:* rm -f ./clientv3/ordering/127.0.0.1:* ./clientv3/ordering/localhost:* + rm -rf ./bin/shellcheck* docker-clean: docker images diff --git a/test b/test index b10406168..a37cbaf44 100755 --- a/test +++ b/test @@ -38,6 +38,7 @@ export ETCD_VERIFY=all source ./build PASSES=${PASSES:-} +SHELLCHECK_VERSION=${SHELLCHECK_VERSION:-"v0.10.0"} # build before setting up test GOPATH if [[ "${PASSES}" == *"functional"* ]]; then @@ -397,12 +398,33 @@ function release_pass { } function shellcheck_pass { - if command -v shellcheck >/dev/null; then - shellcheckResult=$(shellcheck -fgcc build test scripts/*.sh 2>&1 || true) + SHELLCHECK=shellcheck + + if ! command -v $SHELLCHECK >/dev/null; then + echo "Installing shellcheck $SHELLCHECK_VERSION" + if [ "$GOARCH" == "amd64" ]; then + URL="https://github.com/koalaman/shellcheck/releases/download/${SHELLCHECK_VERSION}/shellcheck-${SHELLCHECK_VERSION}.linux.x86_64.tar.xz" + elif [[ "$GOARCH" == "arm" || "$GOARCH" == "arm64" ]]; then + URL="https://github.com/koalaman/shellcheck/releases/download/${SHELLCHECK_VERSION}/shellcheck-${SHELLCHECK_VERSION}.linux.aarch64.tar.xz" + else + echo "Unsupported architecture: $GOARCH" + exit 255 + fi + + wget -qO- "$URL" | tar -xJv -C /tmp/ --strip-components=1 + mkdir -p ./bin + mv /tmp/shellcheck ./bin/ + SHELLCHECK=./bin/shellcheck + fi + + if command -v $SHELLCHECK >/dev/null; then + shellcheckResult=$(${SHELLCHECK} -fgcc build test scripts/*.sh 2>&1 || true) if [ -n "${shellcheckResult}" ]; then echo -e "shellcheck checking failed:\\n${shellcheckResult}" exit 255 fi + else + echo "Skipping shellcheck..." fi }