name: CI on: push: pull_request: permissions: contents: read jobs: validate-and-build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Instalar Zola fijado run: | mkdir -p "$HOME/.local/bin" curl -sL "https://github.com/getzola/zola/releases/download/v0.23.3/zola-v0.23.3-x86_64-unknown-linux-gnu.tar.gz" -o /tmp/zola.tar.gz tar xz -C "$HOME/.local/bin" -f /tmp/zola.tar.gz zola echo "$HOME/.local/bin" >> "$GITHUB_PATH" "$HOME/.local/bin/zola" --version - name: Preparar tema fijado run: ./scripts/bootstrap-theme.sh - name: Descargar plantillas y binario del motor (fenandosr/clusterlog, versión fijada en .clusterlog-version) run: | make templates make build - name: Verificar firmas SSH de commits del pull request if: github.event_name == 'pull_request' env: BASE_SHA: ${{ github.event.pull_request.base.sha }} HEAD_SHA: ${{ github.event.pull_request.head.sha }} run: ./scripts/verify-signatures-ci.sh - name: Regenerar y comprobar proyección run: | ./bin/clusterlog --root . sync ./bin/clusterlog --root . sync --check - name: Validar contenido y plantillas run: ./bin/clusterlog --root . validate --require-zola - name: Construir y, en main, publicar en producción run: | zola build if [ "${{ github.ref_name }}" = "main" ] && [ "${{ github.event_name }}" = "push" ]; then echo "Publicando en clusterlog.mcps-epcm.org" rsync -a --delete public/ /opt/clusterlog/public/ else echo "Rama '${{ github.ref_name }}' (evento '${{ github.event_name }}'): no se publica." fi - name: Fin del pipeline run: echo "listo" runme: runs-on: ubuntu-latest permissions: contents: read env: DO_NOT_TRACK: "true" SCARF_NO_ANALYTICS: "true" steps: - uses: actions/checkout@v4 - name: Descargar binario del motor (versión fijada en .clusterlog-version) run: make build # source_sha256 de data/generated/site_state.json incluye la ruta # absoluta del checkout, así que difiere entre máquinas aunque el # contenido sea idéntico; hay que regenerarlo en este mismo checkout # antes de validar, igual que ya hace el job validate-and-build. - name: Regenerar la proyección en este checkout run: ./bin/clusterlog --root . sync - name: Instalar Runme fijado (v3.17.4, checksum verificado) run: make runme-install - name: Exponer runme en PATH run: echo "$HOME/.local/bin" >> "$GITHUB_PATH" - name: Reglas de clusterlog validate sobre los runbooks run: make runme-check - name: Ejecutar celdas ci-safe de RUNBOOK.md run: make runme-ci