#!/bin/bash # ============================================================================= # convertir.sh — Convierte archivos Markdown a HTML y los publica en Apache # Proyecto: JAK DevOps — workflow cy.yaml # # Requisitos: # - Ejecutar dentro del job container con /output montado sobre el htdocs de Apache # - El runner debe tener valid_volumes: ['/srv/devops/data/apache/**'] # ============================================================================= set -euo pipefail OUTPUT_DIR="/output" BASE_URL="https://portaljack.freeddns.org" # ----------------------------------------------------------------------------- dependencies() { echo "[1/3] Instalando dependencias..." apt-get update -qq apt-get install -y -qq pandoc echo " pandoc $(pandoc --version | head -1 | cut -d' ' -f2) instalado" } # ----------------------------------------------------------------------------- convert_to_html() { echo "[2/3] Convirtiendo Markdown → HTML..." local converted=0 local errors=0 for md in *.md; do # Guarda ante glob sin matches (bash con set -u no expande *.md si no hay ficheros) [ -f "$md" ] || { echo " [WARN] No se encontraron archivos .md en el directorio de trabajo"; return 0; } local filename="${md%.md}" echo " Procesando: $md" if pandoc "$md" \ --standalone \ --metadata title="$filename" \ --highlight-style=tango \ --output "${filename}.html"; then converted=$((converted + 1)) else echo " [ERROR] Fallo al convertir: $md" errors=$((errors + 1)) fi done echo " Convertidos: ${converted} | Errores: ${errors}" [ "$errors" -eq 0 ] || return 1 } # ----------------------------------------------------------------------------- deploy() { echo "[3/3] Publicando en Apache..." local count=0 # Itera solo los HTML generados a partir de los .md presentes (no recoge HTMLs previos del repo) for md in *.md; do [ -f "$md" ] || continue local html="${md%.md}.html" [ -f "$html" ] || continue cp "$html" "${OUTPUT_DIR}/" count=$((count + 1)) echo "" echo " ✅ ${BASE_URL}/${html}" done echo "" echo "======================================================" echo " ${count} página(s) publicada(s) en ${BASE_URL}/" echo "======================================================" } # ----------------------------------------------------------------------------- main() { dependencies convert_to_html deploy } main