我有一个AWS CodePipeline,它在Build Stage中调用CodeBuild.
问题是我如何从CodePipeline中传入一个可以在CodeBuild的buildspec.yml中读取的环境变量?
我知道我可以在CodeBuild中设置环境变量,但是我想为dev,qa和prod环境使用相同的CodeBuild项目.我没有看到如何从CodePipeline传递环境变量,使其一直到buildspec.yml
示例buildspec.yml
version: 0.1 phases: build: commands: - npm install - npm build -- --env ${CURRENT_ENVIRONMENT}
其中CURRENT_ENVIRONMENT将是我在CodePipeline Stage操作中设置的变量.
此功能目前无法使用.
解决方法是为具有不同环境变量的每个阶段创建不同的CodeBuild项目.
您可以在此处找到有关在builspec.yml命令中使用环境变量的详细信息:http://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html
您实际上可以在CodeBuild cloudformation中传递环境变量,如下所示:
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
而且buildspec.yml
您可以参考这样的环境,
version: 0.2 phases: install: commands: - npm install build: commands: - npm build -- --env ${CURRENT_ENVIRONMENT}