CI/CD En astro, con GitHub Actions . Rutas y configuracion.


🔐 ¿Qué son los Secrets en GitHub Actions y por qué son importantes?

Cuando trabajamos en proyectos que requieren despliegues automatizados —como subir un sitio a AWS, S3 o CloudFront— es necesario usar claves privadas, accesos y configuraciones sensibles. GitHub Actions nos permite almacenar esta información de forma segura mediante Secrets, evitando que aparezcan en el código o en el repositorio.

Los Secrets funcionan como variables de entorno privadas que GitHub inyecta automáticamente en los flujos de CI/CD (como deploys a producción). Así, cualquier miembro del equipo puede enviar cambios desde su propia rama, pero sin conocer ni exponer las credenciales reales. GitHub se encarga de mantener esta información oculta y accesible solo para los workflows autorizados, reduciendo riesgos y mejorando la seguridad del proyecto

Dónde poner las variables en GitHub?

1. Repository Secrets (para todo el repo)

GitHub → Tu repositorio → Settings → Secrets and variables → Actions → Secrets

Ahí encontrarás:

  • Repository secrets
  • Botón "New repository secret"

Ahí pones:

  • PUBLIC_STRAPI_URL
  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_REGION
  • S3_BUCKET_NAME
  • CLOUDFRONT_DISTRIBUTION_ID

Y también los de staging:

  • STAGING_STRAPI_URL
  • STAGING_S3_BUCKET_NAME
  • STAGING_CLOUDFRONT_DISTRIBUTION_ID

2. Repository Variables

GitHub → Tu repositorio → Settings → Secrets and variables → Actions → Variables

Variables = valores no sensibles como:

  • NODE_ENV
  • BUILD_ENV
  • Versiones, flags, etc.

Environments (production y staging)

Tu CI/CD usa environments, por eso debes crear production y staging, cabe mencionar que cuando haces git push y el usuario tiene autorización hacia la rama main, este carga el env de github para el CD

GitHub → Tu repositorio → Settings → Environments

Luego:

  1. Click New environment
  2. Nombre: production
  3. Dentro entras a:

Settings → Environments → production → Environment secrets

Ahí agregas:

  • PUBLIC_STRAPI_URL
  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_REGION
  • S3_BUCKET_NAME
  • CLOUDFRONT_DISTRIBUTION_ID

Y lo mismo para staging:

Settings → Environments → staging → Environment secrets

  • STAGING_STRAPI_URL
  • STAGING_S3_BUCKET_NAME
  • STAGING_CLOUDFRONT_DISTRIBUTION_ID

AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY

Estos NO se pueden ver si ya fueron creados.

Si no los tienes guardados, debes generar uno nuevo.

Ruta para crear Access Keys

AWS Console → IAM → Users → (tu usuario) → Security credentials → Access keys

Pasos:

  • Entra a IAM
  • Clic en Users
  • Selecciona tu usuario (por ejemplo: miguel, admin, etc.)
  • Ir a la pestaña Security credentials
  • Bajar hasta Access keys
  • Clic en Create access key
  • Guarda:
  • Access key ID
  • Secret access key (solo se muestra una vez) ⚠ IMPORTANTE: si lo pierdes, tienes que generar uno nuevo.

AWS_REGION

La región está en la parte superior derecha de AWS.

AWS Console → Arriba a la derecha → Region selector

Ejemplos comunes:

  • us-east-1
  • us-west-2
  • sa-east-1

También puedes ver la región del bucket en S3:

AWS Console → S3 → (tu bucket) → Properties → Bucket region

S3_BUCKET_NAME

Es el nombre del bucket donde subes tu sitio Astro.

  • AWS Console → S3 → Buckets → (nombre del bucket)

Ejemplo:

  • portfolio.miguel-anay.nom.pe
  • staging.portfolio.miguel-anay.nom.pe

El nombre es literalmente el que aparece en la lista.

CLOUDFRONT_DISTRIBUTION_ID

Es un código como:

E2A3FSGHUAK123

Ruta para encontrarlo:

AWS Console → CloudFront → Distributions

En la tabla de distribuciones verás:

  • ID (ese es el CLOUDFRONT_DISTRIBUTION_ID)
  • Domain name
  • Status

En Resumen.

CI-CD.PNG