DEV Community

Gustavo Ramirez
Gustavo Ramirez

Posted on

CDK Pipelines el patron que uso para deploys automaticos con aprobacion manual

CDK Pipelines es un módulo de CDK que te permite definir tu propio pipeline de CI/CD como código. Lo interesante es que el pipeline se actualiza a sí mismo cuando cambia el código del pipeline. Sí, inception.

El setup básico

import { pipelines } from 'aws-cdk-lib';

const pipeline = new pipelines.CodePipeline(this, 'Pipeline', {
  synth: new pipelines.ShellStep('Synth', {
    input: pipelines.CodePipelineSource.connection('mi-org/mi-repo', 'main', {
      connectionArn: 'arn:aws:codestar-connections:...',
    }),
    commands: [
      'npm ci',
      'npm run build',
      'npx cdk synth',
    ],
  }),
});
Enter fullscreen mode Exit fullscreen mode

Stages con aprobación manual

const staging = new AppStage(this, 'Staging', {
  env: { account: '111111111111', region: 'us-east-1' },
});

const production = new AppStage(this, 'Production', {
  env: { account: '222222222222', region: 'us-east-1' },
});

pipeline.addStage(staging);
pipeline.addStage(production, {
  pre: [
    new pipelines.ManualApprovalStep('ApproveProd'),
  ],
});
Enter fullscreen mode Exit fullscreen mode

Ese ManualApprovalStep es lo que te da el botón "Approve" en la consola antes de que el deploy llegue a producción. Para proyectos críticos, es innegociable.

Tests de integración en el pipeline

pipeline.addStage(staging, {
  post: [
    new pipelines.ShellStep('IntegrationTests', {
      commands: [
        'npm run test:integration',
      ],
      envFromCfnOutputs: {
        API_URL: staging.apiUrl,
      },
    }),
  ],
});
Enter fullscreen mode Exit fullscreen mode

Esto corre después del deploy a staging y antes de que el pipeline avance a producción. Si los tests fallan, el pipeline se detiene.

Lo que aprendí

  1. No uses una cuenta sola para todo. Separa cuentas por ambiente. CDK Pipelines lo maneja bien.
  2. Guarda secretos en Secrets Manager. Nunca hardcodees nada en el pipeline.
  3. Haz que el pipeline falle rápido. Pon los tests unitarios antes del build si puedes.

Cierre

CDK Pipelines no es la opción más liviana para CI/CD, pero si ya estás comprometido con CDK para infraestructura, tener el pipeline en el mismo código es coherente y mantenible.

Top comments (0)