cicd_gigena
v1.0.0
Published
Genera automáticamente los GitHub Actions de deploy a DEV/QA/PROD (S3 + CloudFront) para proyectos frontend Angular/Ionic.
Downloads
143
Maintainers
Readme
Luchy_Gigena
Genera automáticamente los GitHub Actions para desplegar a DEV / QA / PROD (S3 + CloudFront en AWS, con OIDC) en proyectos frontend Angular o Ionic.
Sigue el patrón de "un archivo de workflow por ambiente" (deploy-dev.yml,
deploy-qa.yml, deploy-prod.yml), con manejo de cache-control diferenciado
para SPA (assets con hash cacheados 1 año, index.html/JSON sin cache).
Instalación y uso
Opción A — sin instalar nada (recomendada)
Parado en la raíz de tu proyecto nuevo:
npx cicd_gigenaTe va preguntando todo interactivamente: nombre del proyecto, tipo
(angular/ionic), región, ramas por ambiente, bucket S3 y CloudFront ID de
cada uno (podés dejarlos en blanco con Enter si todavía no los tenés — el
generador te deja un comentario # TODO en el .yml para que lo completes
después a mano).
Opción B — instalada como dependencia de desarrollo del proyecto
npm install --save-dev cicd_gigena
npx cicd_gigenaOpción C — no interactiva (para scripts o plantillas de "nuevo proyecto")
npx cicd_gigena --yes \
--name=mi-app --type=angular --region=us-east-1 \
--branch_dev=dev --branch_qa=qa --branch_prod=prod \
--bucket_dev=mi-bucket-dev --cf_dev=E1XXXXXXX \
--bucket_prod=mi-bucket-prod --cf_prod=E2YYYYYYY(Cualquier bucket/CloudFront que no pases queda con un placeholder # TODO.)
Qué genera
.github/workflows/deploy-dev.yml.github/workflows/deploy-qa.yml(opcional, se puede omitir).github/workflows/deploy-prod.yml.github/AMBIENTES.md— checklist de lo que falta configurar a mano: el secretAWS_ACCOUNT_ID, los Environments en GitHub, y cualquier bucket/CloudFront ID que hayas dejado pendiente.
Convenciones que asume
- El rol IAM de cada ambiente se llama
github-actions-<proyecto>-front-<env>-deploy(se puede sobreescribir por ambiente en el prompt o con--role_dev=...etc.). - Autenticación contra AWS vía OIDC, armando el ARN del rol con
secrets.AWS_ACCOUNT_ID+ el nombre de rol — así solo necesitás un secret a nivel repo, no uno por ambiente. - Carpeta de build:
wwwpara Ionic,dist/<proyecto>/browserpara Angular puro (Angular 17+). Si tu proyecto no es ninguno de los dos, generalo con--type=otroy ajustá manualmente eloutputDiren el.yml(queda marcado con placeholder).
Publicarlo en npm (público)
1. Crear cuenta
En https://www.npmjs.com/signup. Confirmá el email — npm no deja publicar sin verificar la cuenta.
2. Elegir el nombre final
Reemplazá TU-NOMBRE-AQUI en package.json (campo name) y en este README.
Fijate que esté libre en https://www.npmjs.com/package/
(si da 404, está libre). Si el nombre que querías está tomado, dos salidas:
- Otro nombre sin scope, ej.
frontend-cicd-scaffold. - Un scope con tu usuario, ej.
@tu-usuario-npm/cicd-generator(siempre disponible, porque el scope es tuyo). Con scope, además hace falta el flag--access publical publicar (ya está seteado enpublishConfigdelpackage.json, así quenpm publishsolo alcanza).
3. Login y publicar
npm login # te pide usuario, contraseña, y un código si tenés 2FA
npm publish # ¡ya queda público en npmjs.com!4. Confirmar que funciona
Desde cualquier otra máquina, sin login ni nada:
npx TU-NOMBRE-AQUIActualizar versiones publicadas
Cada vez que cambies algo:
npm version patch # o minor / major, según el cambio (semver)
npm publishnpm version ya actualiza el número en package.json y crea un tag de git.
Importante: los proyectos ya generados no se actualizan solos cuando
publicás una versión nueva — el generador solo escribe archivos una vez, no
los mantiene sincronizados después. Cada proyecto nuevo que corra npx
TU-NOMBRE-AQUI sí va a bajar la última versión.
