pricing codepipeline codedeploy codecommit codebuild aws aws-codepipeline

aws codepipeline - codedeploy - AWS Pasa en variable en buildspec.yml desde CodePipeline



aws devops (3)

Tengo un CodePipeline de AWS que invoca CodeBuild en la etapa de compilación.

La pregunta es, ¿cómo paso una variable de entorno de CodePipeline que se puede leer en el buildspec.yml de CodeBuild?

Sé que puedo establecer variables de entorno en CodeBuild, pero quiero usar el mismo proyecto de CodeBuild para los entornos dev, qa y prod. No veo cómo puedo pasar una variable de entorno desde CodePipeline que llega hasta buildspec.yml

Ejemplo buildspec.yml

version: 0.1 phases: build: commands: - npm install - npm build -- --env ${CURRENT_ENVIRONMENT}

Donde CURRENT_ENVIRONMENT sería la variable que configuré en la acción de Etapa CodePipeline.


De hecho, puede pasar las variables de entorno en CodeBuild cloudformation como se muestra a continuación:

Build: Type: AWS::CodeBuild::Project Properties: Name: !Sub Build-${AWS::StackName} Description: Build your project Environment: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL Image: node8 EnvironmentVariables: - Name: CURRENT_ENVIRONMENT Type: PLAINTEXT Value: staging

Y en su buildspec.yml puede hacer referencia al entorno como este,

version: 0.2 phases: install: commands: - npm install build: commands: - npm build -- --env ${CURRENT_ENVIRONMENT}



Si no desea utilizar CF, puede configurar las variables ENV en su proyecto CodeBuild en la interfaz de usuario de AWS.

En AWS, vaya a su proyecto de generador de código, en la esquina superior derecha, haga clic en "editar" y seleccione "entorno". En la página del entorno de edición, haga clic en el menú desplegable "Configuración adicional". Allí verá entradas para "nombre" y "valor". "Nombre" es donde establece su ENV y "valor" es donde establece su valor para esa variable.

Ejemplo: establezca API_ENV en "nombre" y development en "valor". Luego, en su buildspec.yml, puede usar $ API_ENV.