name: deploy-branch # CI/CD: cada push a cualquier rama se despliega en .localesp.es # Estrategia A — un entorno por rama. El registro DNS A es manual (precondición). # Detalles: docs/07-cicd.md on: push: branches: - "**" delete: workflow_dispatch: inputs: branch: description: "Rama a desplegar (vacío = la actual)" required: false default: "" jobs: deploy: if: github.event_name != 'delete' runs-on: self-hosted timeout-minutes: 15 steps: - name: Checkout uses: actions/checkout@v4 - name: Build (npm ci + vite build) shell: bash run: | # better-sqlite3 (v12) requiere C++20; el GCC 8 del sistema (AlmaLinux 8) no lo soporta. # gcc-toolset-12 (GCC 12) ya está instalado en /opt/rh. source /opt/rh/gcc-toolset-12/enable 2>/dev/null || echo "WARN: gcc-toolset-12 no encontrado" npm ci npm run build - name: Deploy branch env: BRANCH: ${{ github.event.inputs.branch || github.ref_name }} run: bash scripts/deploy.sh "$BRANCH" # Al borrar una rama, se limpia su entorno teardown: if: github.event_name == 'delete' runs-on: self-hosted timeout-minutes: 5 steps: - name: Checkout (default branch, trae scripts/) uses: actions/checkout@v4 - name: Teardown branch env env: # github.event.ref en un 'delete' es refs/heads/ BRANCH: ${{ github.event.ref }} run: bash scripts/teardown.sh "${BRANCH#refs/heads/}"