Este proyecto implementa un pipeline CI/CD completo usando AWS CDK con TypeScript. Incluye una aplicación Node.js desplegada en ECS Fargate, con integración a GitHub y despliegue rolling con cero tiempo de inactividad.
GitHub → CodePipeline → CodeBuild → ECR → ECS Fargate
- AWS CodePipeline: Orquestación del pipeline
- AWS CodeBuild: Compilación y construcción de imágenes Docker
- Amazon ECR: Registro de imágenes Docker
- Amazon ECS con Fargate: Ejecución de contenedores
- Application Load Balancer: Balanceador de carga
- CloudWatch: Logs y monitoreo
- IAM: Gestión de permisos
-
AWS CLI configurado con credenciales válidas:
aws configure
-
Node.js (versión 18 o superior):
node --version npm --version
-
AWS CDK CLI:
npm install -g aws-cdk cdk --version
-
Docker (para pruebas locales):
docker --version
-
Repositorio GitHub y Personal Access Token
git clone https://github.com/TU_USUARIO/pipelineCDK.git
cd pipelineCDK
npm install
Edita el archivo cdk.json
y actualiza:
{
"environment": "dev",
"githubOwner": "TU_USUARIO_GITHUB",
"githubRepo": "pipelineCDK",
"githubBranch": "main"
}
- Ve a GitHub → Settings → Developer settings → Personal access tokens
- Genera un token con permisos:
repo
,admin:repo_hook
- Guarda el token en AWS Secrets Manager:
aws secretsmanager create-secret \
--name github-token \
--description "GitHub Personal Access Token for CodePipeline" \
--secret-string '{"token":"ghp_tu_token_aqui"}'
cdk bootstrap
-
Compilar el proyecto:
npm run build
-
Verificar la síntesis del stack:
cdk synth
-
Ver las diferencias antes del despliegue:
cdk diff
-
Desplegar la infraestructura:
cdk deploy --all --require-approval never
# Desarrollo
cdk deploy -c environment=dev
# Producción
cdk deploy -c environment=prod -c githubBranch=main
cd app
npm install
npm start
La aplicación estará disponible en: http://localhost:3000
GET /
- Página principalGET /health
- Health checkGET /info
- Información del sistema
docker build -t hello-world-app .
docker run -p 3000:3000 hello-world-app