Nep*_*ing 7 continuous-integration amazon-web-services continuous-deployment aws-codepipeline aws-codebuild
我使用CodePipeline带CodeCommit。按下master分支自动触发构建。在CodePipeline控制台中,可以清楚地看到我正在接收提交ID,但是我需要在构建环境中获取它,以便在构建它时可以将它们作为标签添加到ECS映像中。有没有一种进入构建环境的方法。

添加一个答案来解释如何在 CloudFormation 中实现此目的,因为我花了一段时间才弄清楚。您需要将您的阶段定义为:
Name: MyStageName
Actions:
-
Name: StageName
InputArtifacts:
- Name: InputArtifact
ActionTypeId:
Category: Build
Owner: AWS
Version: '1'
Provider: CodeBuild
OutputArtifacts:
- Name: OutputArtifact
Configuration:
ProjectName: !Ref MyBuildProject
EnvironmentVariables:
'[{"name":"COMMIT_ID","value":"#{SourceVariables.CommitId}","type":"PLAINTEXT"}]'
Run Code Online (Sandbox Code Playgroud)
在你的行动中你需要有这种语法。请注意,EnvironmentVariablesCodePipeline 阶段的属性与属性不同AWS::CodeBuild::Project。如果您要#{SourceVariables.CommitId}在那里添加为环境变量,它将无法正确解析。
除了@Bar的回答:仅添加EnvironmentVariables是不够的,您还需要设置Namespace。
例如:
pipeBackEnd:
Type: AWS::CodePipeline::Pipeline
Properties:
...
Stages:
- Name: GitSource
Actions:
- Name: CodeSource
ActionTypeId:
Category: Source
...
Configuration: (...)
Namespace: SourceVariables # <<< === HERE, in Source
- Name: Deploy
Actions:
- Name: BackEnd-Deploy
ActionTypeId:
Category: Build
Provider: CodeBuild (...)
Configuration:
ProjectName: !Ref CodeBuildBackEnd
EnvironmentVariables: '[{"name":"BranchName","value":"#{SourceVariables.BranchName}","type":"PLAINTEXT"},{"name":"CommitMessage","value":"#{SourceVariables.CommitMessage}","type":"PLAINTEXT"}]'
Run Code Online (Sandbox Code Playgroud)
另外,它可能有用:CodePipeline 变量列表
| 归档时间: |
|
| 查看次数: |
2700 次 |
| 最近记录: |