Ir al contenido
angel.library

GitHub Actions — artefactos, ambientes y despliegues

Un job de Actions es efímero: los archivos generados no aparecen automáticamente en el siguiente job. Usa artefactos para transportar un build entre jobs o conservar evidencia de una ejecución.

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: pnpm install --frozen-lockfile && pnpm build
- uses: actions/upload-artifact@v4
with:
name: site-dist
path: dist/
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
with:
name: site-dist
path: dist/
- run: ./scripts/deploy.sh dist

Construir una vez y promover el mismo artefacto evita que staging y producción reciban resultados distintos por instalar dependencias o compilar en momentos diferentes.

Asocia el job de despliegue a un environment de GitHub:

jobs:
deploy:
environment:
name: production
url: https://ejemplo.com
runs-on: ubuntu-latest
steps:
- run: ./scripts/deploy.sh

En la configuración del environment puedes separar secretos, exigir revisores y establecer reglas de protección. Un workflow que llega a production debería tener un motivo claro para ejecutar y una ruta de rollback conocida.

if: github.ref == 'refs/heads/main' && github.event_name == 'push'

Haz que CI corra en Pull Requests, pero reserva el despliegue de producción para la rama principal o para una release. Si el despliegue falla, conserva logs y artefactos suficientes para diagnosticarlo y documenta cómo repetir o revertir la operación.

  • El build y las pruebas pasan antes del job de despliegue.
  • El job usa solo los permisos y secretos necesarios.
  • El ambiente requiere aprobación cuando el riesgo lo justifica.
  • El artefacto está identificado y tiene retención razonable.
  • Existe una estrategia de rollback y una forma de verificar salud.
  • El workflow no imprime tokens, URLs privadas ni datos de usuarios.