mirror of
https://github.com/pgsty/minio.git
synced 2026-08-10 00:03:29 +03:00
16b78eb4e5
Bundle mcli RELEASE.2026-08-06T00-00-00Z in the container image (pin and both architecture digests; interop with the new server was verified end to end during release acceptance) and align the CI fixture default in install-mcli.sh. Point the Helm chart defaults at the first real silo image tag: docker.io/pgsty/silo is a fresh repository, so the inherited RELEASE.2026-08-04 default could never pull. Chart version moves to 7.0.1 with appVersion RELEASE.2026-08-06T00-00-00Z; the packaging tripwire in verify-helm-migration.sh follows. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
92 lines
2.6 KiB
Bash
Executable File
92 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
if [ "$#" -ne 1 ]; then
|
|
echo "usage: $0 TARGET" >&2
|
|
exit 2
|
|
fi
|
|
|
|
target=$1
|
|
target_dir=$(dirname "${target}")
|
|
if [ ! -d "${target_dir}" ]; then
|
|
echo "target directory does not exist: ${target_dir}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
sha256_file() {
|
|
if command -v sha256sum >/dev/null 2>&1; then
|
|
sha256sum "$1" | awk '{print $1}'
|
|
else
|
|
shasum -a 256 "$1" | awk '{print $1}'
|
|
fi
|
|
}
|
|
|
|
if [ -n "${MCLI_BIN:-}" ]; then
|
|
if [ ! -f "${MCLI_BIN}" ]; then
|
|
echo "MCLI_BIN is not a regular file: ${MCLI_BIN}" >&2
|
|
exit 1
|
|
fi
|
|
if ! printf '%s\n' "${MCLI_SHA256:-}" | grep -Eq '^[0-9a-fA-F]{64}$'; then
|
|
echo "MCLI_SHA256 must contain the expected SHA-256 for MCLI_BIN" >&2
|
|
exit 1
|
|
fi
|
|
actual=$(sha256_file "${MCLI_BIN}")
|
|
if [ "${actual}" != "${MCLI_SHA256,,}" ]; then
|
|
echo "MCLI_BIN checksum mismatch: expected ${MCLI_SHA256,,}, got ${actual}" >&2
|
|
exit 1
|
|
fi
|
|
install -m 0755 "${MCLI_BIN}" "${target}"
|
|
exit 0
|
|
fi
|
|
|
|
release=${MCLI_RELEASE:-RELEASE.2026-08-06T00-00-00Z}
|
|
version_hyphen=${release#RELEASE.}
|
|
package_version=$(printf '%s\n' "${version_hyphen}" | sed -E 's/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2})-([0-9]{2})-([0-9]{2})Z$/\1\2\3\4\5\6.0.0/')
|
|
if [ "${package_version}" = "${version_hyphen}" ]; then
|
|
echo "invalid MCLI_RELEASE: ${release}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
case $(uname -s) in
|
|
Linux) os=linux ;;
|
|
Darwin) os=darwin ;;
|
|
*) echo "unsupported mcli host OS: $(uname -s)" >&2; exit 1 ;;
|
|
esac
|
|
case $(uname -m) in
|
|
x86_64 | amd64) arch=amd64 ;;
|
|
aarch64 | arm64) arch=arm64 ;;
|
|
*) echo "unsupported mcli host architecture: $(uname -m)" >&2; exit 1 ;;
|
|
esac
|
|
|
|
archive="mcli_${package_version}_${os}_${arch}.tar.gz"
|
|
checksums="mcli_${package_version}_checksums.txt"
|
|
base_url="https://github.com/pgsty/mc/releases/download/${release}"
|
|
tmp_dir=$(mktemp -d "${TMPDIR:-/tmp}/silo-mcli.XXXXXX")
|
|
trap 'rm -rf "${tmp_dir}"' EXIT
|
|
|
|
curl --fail --location --retry 3 --silent --show-error \
|
|
"${base_url}/${checksums}" --output "${tmp_dir}/${checksums}"
|
|
curl --fail --location --retry 3 --silent --show-error \
|
|
"${base_url}/${archive}" --output "${tmp_dir}/${archive}"
|
|
|
|
expected=$(awk -v asset="${archive}" '
|
|
{
|
|
name=$2
|
|
sub(/^\*/, "", name)
|
|
if (name == asset && $1 ~ /^[0-9a-fA-F]{64}$/) print tolower($1)
|
|
}
|
|
' "${tmp_dir}/${checksums}")
|
|
if ! printf '%s\n' "${expected}" | grep -Eq '^[0-9a-f]{64}$'; then
|
|
echo "checksum manifest does not contain exactly one valid entry for ${archive}" >&2
|
|
exit 1
|
|
fi
|
|
actual=$(sha256_file "${tmp_dir}/${archive}")
|
|
if [ "${actual}" != "${expected}" ]; then
|
|
echo "downloaded ${archive} checksum mismatch" >&2
|
|
exit 1
|
|
fi
|
|
|
|
tar -xzf "${tmp_dir}/${archive}" -C "${tmp_dir}" mcli
|
|
install -m 0755 "${tmp_dir}/mcli" "${target}"
|