Esta aplicación demostrativa, construida sobre ExpressJS, sirve como una representación de cómo implementar un flujo de trabajo CI/CD utilizando GitHub Actions, la integración con Semantic Release y el despliegue en un cluster EKS de AWS.
src/server.js
: Archivo principal que arranca la aplicación Express. Por defecto, escucha en el puerto8080
y en el host0.0.0.0
.package.json
: Define las dependencias y scripts del proyecto y configurasemantic-release
.
- GitHub Actions: Define los flujos de trabajo de CI/CD que se activan con distintos eventos.
- Workflow Definitions:
publish-build-as-artifact.yml
: Construcción y publicación de la app como artefacto.Continuous-Integration.yml
: Gestión de la integración continua.Continuous-Delivery-Deploy.yml
: Flujo de despliegue.release.yml
: Generación automática de versiones consemantic-release
.
Dockerfile
: Instrucciones para construir la imagen Docker.
semantic-release
automatiza la generación de versiones y changelogs basándose en las convenciones de Conventional Commits.
La aplicación se despliega en AWS EKS con configuraciones específicas para cada entorno. Entornos desplegados en diferente Namespaces como ambientes aislados, sacando provecho de las diferente utilizades que nos entrega k8s: QA (eks/deployment-qa.yaml
), Staging (eks/deployment-stg.yaml
), y Producción (eks/deployment-prd.yaml
).
- Clonar el repositorio:
git clone https://github.com/GioDelG/demo-helloapp.git
- Instalar dependencias:
npm install
- Iniciar la aplicación:
npm start
Para colaborar:
- Fork del repositorio.
- Crea una rama con un nombre descriptivo.
- Realiza tus cambios siguiendo Conventional Commits.
- Abre una pull request al repositorio principal.
Descripción del flujo de trabajo de GitHub Actions para CI/CD en EKS de AWS.
push
amain
.pull_request
amain
.- Manual activation con
workflow_dispatch
.
- Build-Application-Tests: Construcción y ejecución de pruebas en plataforma
ubuntu-latest
. - Publish Build as Artifact: Publicación de la construcción como artefacto.
- Deploy-to-QA: Despliegue en el ambiente QA.
- QA-EKS-Values: Información sobre recursos desplegados en QA.
- Deploy-to-Stg: Despliegue en el ambiente de Staging.
- Stg-EKS-Values: Información sobre recursos en Staging.
- Manual-Approval: Aprobación manual para producción.
- Deploy-to-Prod: Despliegue en producción.
- Prod-EKS-Values: Información sobre recursos en Producción.
Esta pipeline de CI/CD asegura un flujo de trabajo robusto desde la construcción hasta el despliegue en ambientes EKS, complementado con la creación y gestión de imágenes Docker en ECR.
-
ExpressJS:
-
GitHub:
-
Conventional Commits:
-
Docker:
-
Node.js & npm:
-
AWS:
-
Kubernetes:
-
Semantic Release:
-
Continuous Integration/Continuous Deployment:
__ __ _ ____ _____ _ __
| \/ | | | | _ \ / ____(_) \ \
| \ / | __ _ __| | ___ | |_) |_ _ | | __ _ ___ (_) |
| |\/| |/ _` |/ _` |/ _ \ | _ <| | | | | | |_ | |/ _ \ | |
| | | | (_| | (_| | __/ | |_) | |_| | | |__| | | (_) | _| |
|_| |_|\__,_|\__,_|\___| |____/ \__, | \_____|_|\___(_) (_) |
__/ | /_/
|___/