July 31, 2025

CodePipeline

📘 ¿Qué es AWS CodePipeline?

AWS CodePipeline es un servicio de integración y entrega continua (CI/CD) que automatiza los pasos necesarios para liberar software de forma rápida y confiable.

🛠️ Coordina automáticamente el flujo desde el control de versiones hasta el despliegue en producción.


🎯 Casos de uso

  • Automatización del ciclo de vida de entrega de software (build → test → deploy).

  • Integración con múltiples servicios AWS: CodeCommit, S3, Lambda, ECS, etc.

  • CI/CD sin servidores con Lambda, Fargate o S3.

  • Validación y despliegue de infraestructura como código con CloudFormation o CDK.


🧱 Componentes de una pipeline

ComponenteDescripción
StageFase lógica del pipeline (ej: Source, Build, Deploy)
ActionTarea dentro de un stage (ej: compilar, testear, desplegar)
ArtifactResultado generado entre acciones (ej: ZIP del build)
TransitionMovimiento de un stage al siguiente (puede estar bloqueado manualmente)

🔄 Ejemplo de estructura típica

[CodeCommit] → [CodeBuild] → [CodeDeploy] → [Approval Manual] → [Deploy Prod]
   SOURCE         BUILD         TEST/DEPLOY            QA               PROD

🚦 Tipos de acciones (actions)

TipoServicios compatiblesEjemplos
SourceCodeCommit, S3, GitHub, BitbucketDetectar cambios en código
BuildCodeBuild, JenkinsCompilar, testear
TestCodeBuild, Lambda, CustomEjecutar pruebas automatizadas
ApprovalManual, SNSRevisión humana
DeployCodeDeploy, CloudFormation, ECS, Lambda, S3Desplegar a producción

⚙️ Cómo funciona

  1. Se detecta un cambio en el repositorio (trigger).

  2. Se genera un artefacto (buildspec.yml) con CodeBuild.

  3. Se entrega con CodeDeploy, CloudFormation o Lambda.

  4. Opcionalmente, se solicita aprobación manual.

  5. Se realiza el despliegue en el entorno final.


🗂️ Archivo buildspec.yml para CodeBuild

version: 0.2
phases:
  install:
    runtime-versions:
      nodejs: 18
  build:
    commands:
      - npm install
      - npm run build
artifacts:
  files:
    - '**/*'

🧠 Este archivo define cómo compilar y qué artefactos generar en el pipeline.


🧩 Integraciones

ServicioIntegración en pipeline
CodeCommitFuente del código
CodeBuildEtapas de compilación y testing
CodeDeployDespliegue automático en EC2, Lambda, ECS
CloudFormationInfraestructura como código
LambdaValidación, testing o despliegue sin servidores
Manual ApprovalAprobaciones previas a producción
SNS/SQSNotificaciones o flujos personalizados

🔐 Seguridad

  • IAM roles para cada etapa (source, build, deploy)

  • Pipeline execution role (permite a CodePipeline ejecutar acciones)

  • Control de acceso granular a pipelines vía políticas IAM

  • Integración con CloudTrail para auditoría de ejecuciones


📈 Monitoreo y auditoría

HerramientaFunción
CloudWatchLogs, métricas y alarmas
CloudTrailHistorial de eventos
SNSNotificaciones al fallar o aprobar
AWS ConsoleVisualización gráfica del pipeline

🔄 Automatización vía CLI o CDK

# Crear pipeline desde JSON
aws codepipeline create-pipeline --cli-input-json file://pipeline.json

Con AWS CDK:

const pipeline = new codepipeline.Pipeline(this, 'Pipeline');

🔧 Puedes automatizarlo todo con CDK o Terraform si lo deseas como parte de IaC.


🧠 Preguntas tipo certificación

  1. ¿Qué servicio orquesta un flujo de CI/CD?

    • ✅ CodePipeline
  2. ¿Qué sucede si falla una etapa?

    • ✅ La ejecución del pipeline se detiene
  3. ¿Puede una pipeline incluir una aprobación manual?

    • ✅ Sí
  4. ¿Puede usarse un repositorio externo como GitHub?

    • ✅ Sí, con autenticación OAuth o tokens personales
  5. ¿Dónde se almacenan los artefactos?

    • ✅ En un bucket S3 gestionado por la pipeline

💲 Precios

  • Gratis: 1 pipeline activa por cuenta.

  • Extra: $1.00 por cada pipeline adicional activa por mes.

⚠️ También se cobra por los servicios conectados: CodeBuild, S3, CodeDeploy, etc.


✅ Buenas prácticas

  • Separar entornos por pipeline o stage (dev, staging, prod)

  • Validar código antes de deploy con pruebas automáticas

  • Usar ManualApproval antes de producción

  • Implementar notificaciones con SNS en caso de fallos

  • Versionar artefactos para facilitar rollbacks

  • Integrar CodePipeline en IaC (CloudFormation/CDK)


📚 Recursos útiles