es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

AWS CDK CodePipeline añadir una etapa entre Origen y Creación

Seguí la guía de “Continuous integration and delivery (CI/CD) using CDK Pipelines” para implementar un CodePipeline. Me gustaría saber cómo agregar una etapa a mi pipeline en CDK que se ejecutará después de la etapa “Source” pero antes de la etapa “Build”.

Este es mi código de pipeline:

import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import { Repository } from 'aws-cdk-lib/aws-codecommit';
import { CodePipeline, CodePipelineSource, ShellStep } from 'aws-cdk-lib/pipelines';

export class MyPipelineStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    const repo = Repository.fromRepositoryName(this, 'CogClientRepo', 'cog-client');

    const pipeline = new CodePipeline(this, 'Pipeline', {
      pipelineName: 'MyPipeline',
      synth: new ShellStep('Synth', {
        input: CodePipelineSource.codeCommit(repo, 'main'),
        commands: ['npm ci', 'npm run build', 'npx cdk synth']
      })
    });
  }
}

Después de ejecutar “cdk deploy”, veo que puedo agregar una etapa entre “Source” y “Build” utilizando la consola, pero me gustaría que esto sea parte del código CDK.

Versión de CDK 2.3.0 escrita en TypeScript.
Estoy utilizando el módulo más reciente de “aws-cdk-lib.pipelines” y no el módulo “aws-cdk-lib.aws_codepipeline”.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para agregar una etapa a CodePipeline en CDK que se ejecute después de la etapa Source pero antes de la etapa Build, puedes crear una nueva etapa a través de pipeline.addStage() y especificar su ubicación utilizando el método afterSynth(). Así es como puedes modificar tu código de pipeline para incluir una nueva etapa:

    import * as cdk from 'aws-cdk-lib';
    import { Construct } from 'constructs';
    import { Repository } from 'aws-cdk-lib/aws-codecommit';
    import { CodePipeline, CodePipelineSource, ShellStep } from 'aws-cdk-lib/pipelines';
    
    export class MyPipelineStack extends cdk.Stack {
      constructor(scope: Construct, id: string, props?: cdk.StackProps) {
        super(scope, id, props);
    
        const repo = Repository.fromRepositoryName(this, 'CogClientRepo', 'cog-client');
    
        const pipeline = new CodePipeline(this, 'Pipeline', {
          pipelineName: 'MyPipeline',
          synth: new ShellStep('Synth', {
            input: CodePipelineSource.codeCommit(repo, 'main'),
            commands: ['npm ci', 'npm run build', 'npx cdk synth'],
          }),
        });
    
        // Agregar una nueva etapa entre la fuente y la construcción
        const newStage = pipeline.addStage('NewStage');
        newStage.afterSynth(); // Colocar después de la etapa Synth
    
        // Agregar un paso a la nueva etapa
        newStage.addStep(new ShellStep('NewStep', {
          commands: ['echo "Hola, Mundo!"'],
        }));
      }
    }
    

    En este ejemplo, se agrega una nueva etapa llamada NewStage al pipeline usando pipeline.addStage(). Se llama al método afterSynth() para especificar que esta etapa debe colocarse después de la etapa Synth. Luego, se agrega un nuevo paso llamado NewStep a esta etapa usando newStage.addStep(). En este caso, el paso simplemente muestra en pantalla “Hola, Mundo!”.

    Después de ejecutar cdk deploy, deberías ver la nueva etapa y el nuevo paso agregados a tu pipeline en la consola de AWS CodePipeline.

Comments are closed.