Files
clusterlogs/scripts/runme-install.sh
T
fernandoandClaude Sonnet 5 c06037fa3b feat(runme): integrar Runme como sidecar de documentación ejecutable
Agrega RUNBOOK.md y runbooks/ (fuera de content/, para no interferir con
la publicación de Zola), con reglas de nombres/etiquetas/aislamiento de
celdas mutantes verificadas por clusterlog validate. Instalación pinneada
a v3.17.4 con checksum verificado (scripts/runme-install.sh), un job de
CI separado (.gitea/workflows/ci.yml) que sólo corre celdas ci-safe, y la
decisión documentada en docs/adr/0004-runme-sidecar.md y docs/RUNME.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-27 00:06:01 -06:00

85 lines
3.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# Instala una versión fijada de Runme (nunca "latest") verificando su
# checksum SHA-256 contra los valores publicados en el release oficial.
# No sustituye ni toca bin/clusterlog. No usa curl|sh.
set -euo pipefail
RUNME_VERSION="3.17.4"
INSTALL_DIR="${RUNME_INSTALL_DIR:-$HOME/.local/bin}"
BASE_URL="https://github.com/runmedev/runme/releases/download/v${RUNME_VERSION}"
# SHA-256 tomados del checksums.txt publicado en el release v3.17.4 y
# verificados de forma independiente (sha256sum) contra el tarball real
# durante la implementación de esta integración.
CHECKSUM_LINUX_X86_64="78af7ed33a84ff91a617a018886730038f10af8f73027451d322c21c417fed2c"
CHECKSUM_LINUX_ARM64="fd016b92115d7f77806c70619ee113dc951c49398863e54bc83eadb9d48665e4"
CHECKSUM_DARWIN_X86_64="7c69077ad7331725fa5224fab95562089a42c95baad42b130e1b0b3774ebc480"
CHECKSUM_DARWIN_ARM64="cba556395ca24ccee641ee2faa20cc5a4150826205371de354aafc4a4d830381"
os="$(uname -s)"
arch="$(uname -m)"
case "$os" in
Linux)
case "$arch" in
x86_64) asset="runme_linux_x86_64.tar.gz"; checksum="$CHECKSUM_LINUX_X86_64" ;;
aarch64|arm64) asset="runme_linux_arm64.tar.gz"; checksum="$CHECKSUM_LINUX_ARM64" ;;
*) echo "Arquitectura Linux no soportada por este script: $arch" >&2; exit 1 ;;
esac
;;
Darwin)
case "$arch" in
x86_64) asset="runme_darwin_x86_64.tar.gz"; checksum="$CHECKSUM_DARWIN_X86_64" ;;
arm64) asset="runme_darwin_arm64.tar.gz"; checksum="$CHECKSUM_DARWIN_ARM64" ;;
*) echo "Arquitectura macOS no soportada por este script: $arch" >&2; exit 1 ;;
esac
;;
*)
echo "Sistema operativo no soportado por este script: $os" >&2
echo "En Windows, descargue manualmente runme_windows_{x86_64,arm64}.zip desde" >&2
echo " https://github.com/runmedev/runme/releases/tag/v${RUNME_VERSION}" >&2
echo "y verifique su checksum contra checksums.txt del mismo release." >&2
exit 1
;;
esac
if command -v runme >/dev/null 2>&1; then
current="$(runme --version 2>/dev/null | awk '{print $3}')"
if [ "$current" = "$RUNME_VERSION" ]; then
echo "runme $RUNME_VERSION ya está instalado en $(command -v runme); nada que hacer."
exit 0
fi
fi
tmp_dir="$(mktemp -d)"
trap 'rm -rf "$tmp_dir"' EXIT
echo "Descargando $asset (runme v${RUNME_VERSION})..."
curl -fsSL -o "$tmp_dir/$asset" "$BASE_URL/$asset"
echo "Verificando checksum SHA-256..."
computed="$(sha256sum "$tmp_dir/$asset" | awk '{print $1}')"
if [ "$computed" != "$checksum" ]; then
echo "ERROR: checksum no coincide para $asset" >&2
echo " esperado: $checksum" >&2
echo " obtenido: $computed" >&2
exit 1
fi
echo "Checksum verificado."
mkdir -p "$INSTALL_DIR"
tar xzf "$tmp_dir/$asset" -C "$tmp_dir" runme
install -m 0755 "$tmp_dir/runme" "$INSTALL_DIR/runme"
if [ -e "$INSTALL_DIR/clusterlog" ] || [ -e "$INSTALL_DIR/bin/clusterlog" ]; then
echo "ERROR: se detectó un binario 'clusterlog' en $INSTALL_DIR; abortando para no sobrescribirlo." >&2
exit 1
fi
echo "runme instalado en $INSTALL_DIR/runme"
"$INSTALL_DIR/runme" --version
case ":$PATH:" in
*":$INSTALL_DIR:"*) ;;
*) echo "Agregue $INSTALL_DIR a su PATH para usar 'runme' directamente." ;;
esac