El intento anterior (correr cada celda por nombre, sin --all) también
aborta en el runner real ("Parsing files..." → "could not execute
command: aborted") — el problema no era --all. --dry-run sí funciona en
ese runner (nunca ejecuta nada él mismo), pero escribe el script
resuelto a stderr, no a stdout: el primer intento de "| bash" no
ejecutaba nada porque el pipe sólo captura stdout, y lo que se veía en
pantalla era stderr yendo directo a la terminal. Corregido con "2>&1
>/dev/null | bash". Probado localmente de extremo a extremo: las 4
celdas ejecutan de verdad (incluye verify-head devolviendo valid:true
real, no sólo el texto del comando).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
38 lines
1.5 KiB
Bash
Executable File
38 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Corre cada celda ci-safe de RUNBOOK.md, una por una, extrayendo su script
|
|
# real con "runme run --dry-run <celda>" y ejecutándolo con bash — sin usar
|
|
# el motor de ejecución de Runme.
|
|
#
|
|
# Se intentó "runme run --tag ci-safe --all --skip-prompts" y también
|
|
# invocar cada celda por nombre sin --all: ambas formas abortan de
|
|
# inmediato en el runner real de esta instancia ("could not execute
|
|
# command: aborted", justo al entrar a "Parsing files..."), algo que no se
|
|
# pudo reproducir en ninguna terminal local (interactiva, con stdin/stdout
|
|
# redirigidos, con CI=true/TERM=dumb). "--dry-run" sí funciona en ambos
|
|
# lados: no dispara esa ruta de código porque nunca ejecuta nada él mismo,
|
|
# sólo imprime el script resuelto de la celda.
|
|
#
|
|
# Esto sacrifica que sea Runme quien de verdad ejecute el comando en CI,
|
|
# pero preserva lo esencial: el Markdown con atributos de celda sigue
|
|
# siendo la única fuente de verdad de qué corre, y localmente (fuera de
|
|
# este runner) "runme run <celda>" sigue funcionando de forma normal.
|
|
#
|
|
# La lista debe coincidir con las celdas "ci-safe" de RUNBOOK.md.
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
cd "$ROOT"
|
|
|
|
CI_SAFE_CELLS=(
|
|
clusterlog-runme-preflight
|
|
clusterlog-sync-check
|
|
clusterlog-validate-local
|
|
clusterlog-verify-head
|
|
)
|
|
|
|
for cell in "${CI_SAFE_CELLS[@]}"; do
|
|
echo "== $cell =="
|
|
# --dry-run escribe el script resuelto a stderr, no a stdout.
|
|
runme run --filename RUNBOOK.md --dry-run "$cell" 2>&1 >/dev/null | bash
|
|
done
|