#!/usr/bin/env bash # Corre cada celda ci-safe de RUNBOOK.md, una por una, extrayendo su script # real con "runme run --dry-run " 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 " 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