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}
Esta característica no está disponible hoy.
Una solución alternativa sería crear un proyecto de CodeBuild diferente para cada etapa con diferentes variables de entorno.
Puede encontrar detalles sobre el uso de una variable de entorno en sus comandos builspec.yml aquí: http://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html
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.