make packages (or make release PACKAGES=1) packages the binaries from the release tarballs with the unit rendered for /usr/bin and the license text, and rewrites SHA256SUMS over tarballs and packages. nfpm 2.48.0 is installed pinned with checksum by scripts/ci/install-tools.sh, which can now install single tools. Make targets lint-brand and sign-release. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
104 lines
3.5 KiB
Bash
Executable File
104 lines
3.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
# Installs pinned, checksum-verified development tools on Linux (amd64/arm64)
|
|
# for CI: golangci-lint, buf, shellcheck, nfpm.
|
|
#
|
|
# Usage: scripts/ci/install-tools.sh [BINDIR] [TOOL...]
|
|
# BINDIR defaults to $HOME/.local/bin; without TOOL all tools are installed.
|
|
# In GitHub/Gitea Actions the directory is appended to $GITHUB_PATH.
|
|
|
|
set -euo pipefail
|
|
|
|
readonly GOLANGCI_LINT_VERSION="2.14.0"
|
|
readonly BUF_VERSION="1.73.0"
|
|
readonly SHELLCHECK_VERSION="0.11.0"
|
|
readonly NFPM_VERSION="2.48.0"
|
|
|
|
bindir="${1:-$HOME/.local/bin}"
|
|
shift || true
|
|
tools=("$@")
|
|
if ((${#tools[@]} == 0)); then
|
|
tools=(golangci-lint buf shellcheck nfpm)
|
|
fi
|
|
|
|
case "$(uname -m)" in
|
|
x86_64 | amd64)
|
|
golangci_arch="amd64"
|
|
buf_arch="x86_64"
|
|
shellcheck_arch="x86_64"
|
|
nfpm_arch="x86_64"
|
|
golangci_sha="ab90aeb7b066f92a33415b638a50fe5344bbb75a0d32ad30cc248d88f81032ab"
|
|
buf_sha="8f2986298ad08f0cc1bf999b9797b7c383adf32d7edf0f73d6f1e1a701baeac1"
|
|
shellcheck_sha="b7af85e41cc99489dcc21d66c6d5f3685138f06d34651e6d34b42ec6d54fe6f6"
|
|
nfpm_sha="6d7f9a28b2f397934403950fcbba83f598b08d02edbe79a0815b3b4897341750"
|
|
;;
|
|
aarch64 | arm64)
|
|
golangci_arch="arm64"
|
|
buf_arch="aarch64"
|
|
shellcheck_arch="aarch64"
|
|
nfpm_arch="arm64"
|
|
golangci_sha="ee7ec5f3453d15ddf106fae5a4d6c71737712348a979d1fe9cd52ec7ea299bae"
|
|
buf_sha="902b75267db7f4391e99b7fa0756050e5354234cc0437ef50eee9c788950c7a3"
|
|
shellcheck_sha="68a8133197a50beb8803f8d42f9908d1af1c5540d4bb05fdfca8c1fa47decefc"
|
|
nfpm_sha="a9a75213763783b7669719e505474c748c5ad7dc66591a195619deb50f85c2f4"
|
|
;;
|
|
*)
|
|
echo "unsupported architecture: $(uname -m)" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
workdir="$(mktemp -d)"
|
|
trap 'rm -rf "$workdir"' EXIT
|
|
mkdir -p "$bindir"
|
|
|
|
# fetch URL FILE SHA256
|
|
fetch() {
|
|
curl -fsSL --retry 3 -o "$2" "$1"
|
|
echo "$3 $2" | sha256sum -c --quiet -
|
|
}
|
|
|
|
for tool in "${tools[@]}"; do
|
|
case "$tool" in
|
|
golangci-lint)
|
|
name="golangci-lint-${GOLANGCI_LINT_VERSION}-linux-${golangci_arch}"
|
|
fetch "https://github.com/golangci/golangci-lint/releases/download/v${GOLANGCI_LINT_VERSION}/${name}.tar.gz" \
|
|
"$workdir/golangci.tar.gz" "$golangci_sha"
|
|
tar -xzf "$workdir/golangci.tar.gz" -C "$workdir"
|
|
install -m 0755 "$workdir/${name}/golangci-lint" "$bindir/golangci-lint"
|
|
"$bindir/golangci-lint" version
|
|
;;
|
|
buf)
|
|
fetch "https://github.com/bufbuild/buf/releases/download/v${BUF_VERSION}/buf-Linux-${buf_arch}" \
|
|
"$workdir/buf" "$buf_sha"
|
|
install -m 0755 "$workdir/buf" "$bindir/buf"
|
|
"$bindir/buf" --version
|
|
;;
|
|
shellcheck)
|
|
name="shellcheck-v${SHELLCHECK_VERSION}"
|
|
fetch "https://github.com/koalaman/shellcheck/releases/download/v${SHELLCHECK_VERSION}/${name}.linux.${shellcheck_arch}.tar.gz" \
|
|
"$workdir/shellcheck.tar.gz" "$shellcheck_sha"
|
|
tar -xzf "$workdir/shellcheck.tar.gz" -C "$workdir"
|
|
install -m 0755 "$workdir/${name}/shellcheck" "$bindir/shellcheck"
|
|
"$bindir/shellcheck" --version | head -n 2
|
|
;;
|
|
nfpm)
|
|
fetch "https://github.com/goreleaser/nfpm/releases/download/v${NFPM_VERSION}/nfpm_${NFPM_VERSION}_Linux_${nfpm_arch}.tar.gz" \
|
|
"$workdir/nfpm.tar.gz" "$nfpm_sha"
|
|
tar -xzf "$workdir/nfpm.tar.gz" -C "$workdir" nfpm
|
|
install -m 0755 "$workdir/nfpm" "$bindir/nfpm"
|
|
"$bindir/nfpm" --version >"$workdir/nfpm.version"
|
|
grep GitVersion "$workdir/nfpm.version"
|
|
;;
|
|
*)
|
|
echo "unknown tool: $tool" >&2
|
|
exit 2
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [[ -n "${GITHUB_PATH:-}" ]]; then
|
|
echo "$bindir" >>"$GITHUB_PATH"
|
|
fi
|