将 AWS CodePipeline 变量传递给操作
Pass AWS CodePipeline variable to actions
我正在尝试将 CodePipeline 变量 #{codepipeline PipelineExecutionId} 传递给 codeBuild 操作和部署操作。
我了解此变量可用于所有操作,如 AWS docs 中所述。
但是我在语法上遇到了困难,因为参数没有传递到操作中。
我一直在使用以下代码:
对于构建操作:
- Name: "Build-Docker-Container"
Actions:
- Name: "Build-Docker-Container"
ActionTypeId:
Category: Build
Owner: AWS
Provider: CodeBuild
Version: "1"
Configuration:
ProjectName: !Sub ${ProjectName}-build-${BranchName}
EnvironmentVariables:
- Name: IMAGE_TAG
Type: PLAINTEXT
Value: "#{codepipeline.PipelineExecutionId}"
InputArtifacts:
- Name: !Ref ProjectName
RunOrder: 3
对于部署操作:[=13=]
- Name: "Deploy-Services"
Actions:
- Name: "Deploy-Services"
ActionTypeId:
Category: Deploy
Owner: AWS
Provider: CloudFormation
Version: "1"
Configuration:
ActionMode: CREATE_UPDATE
StackName: !Sub "${ProjectName}-services-${BranchName}"
TemplatePath: !Sub "${ProjectName}::aws/03-services.yml"
Capabilities: "CAPABILITY_NAMED_IAM"
RoleArn: !GetAtt DeployRole.Arn
ParameterOverrides: !Sub |
{
"ProjectName": "${ProjectName}",
"ExecutionId": "#{codepipeline.PipelineExecutionId}"
}
InputArtifacts:
- Name: !Ref ProjectName
- Name: InfrastructureOutput
RunOrder: 4
UPDATE 代码确实不错;我只需要更新 CloudFormation 管道堆栈即可应用它(我认为 github webhook 会触发它,但它只会更新管道内的操作)
我可以确认您在部署操作中使用的语法正确:
ParameterOverrides: !Sub |
{
"ProjectName": "${ProjectName}",
"ExecutionId": "#{codepipeline.PipelineExecutionId}"
}
我验证 在我的管道上使用 CloudFormation 提供程序。我还可以 确认这是否按预期工作 。
如果您编辑有问题的 CFN 操作,您可以在控制台中检查是否正确设置了参数:
目前我无法验证构建操作,但从外观上看,它似乎也不错。
我正在尝试将 CodePipeline 变量 #{codepipeline PipelineExecutionId} 传递给 codeBuild 操作和部署操作。
我了解此变量可用于所有操作,如 AWS docs 中所述。
但是我在语法上遇到了困难,因为参数没有传递到操作中。
我一直在使用以下代码:
对于构建操作:
- Name: "Build-Docker-Container"
Actions:
- Name: "Build-Docker-Container"
ActionTypeId:
Category: Build
Owner: AWS
Provider: CodeBuild
Version: "1"
Configuration:
ProjectName: !Sub ${ProjectName}-build-${BranchName}
EnvironmentVariables:
- Name: IMAGE_TAG
Type: PLAINTEXT
Value: "#{codepipeline.PipelineExecutionId}"
InputArtifacts:
- Name: !Ref ProjectName
RunOrder: 3
对于部署操作:[=13=]
- Name: "Deploy-Services"
Actions:
- Name: "Deploy-Services"
ActionTypeId:
Category: Deploy
Owner: AWS
Provider: CloudFormation
Version: "1"
Configuration:
ActionMode: CREATE_UPDATE
StackName: !Sub "${ProjectName}-services-${BranchName}"
TemplatePath: !Sub "${ProjectName}::aws/03-services.yml"
Capabilities: "CAPABILITY_NAMED_IAM"
RoleArn: !GetAtt DeployRole.Arn
ParameterOverrides: !Sub |
{
"ProjectName": "${ProjectName}",
"ExecutionId": "#{codepipeline.PipelineExecutionId}"
}
InputArtifacts:
- Name: !Ref ProjectName
- Name: InfrastructureOutput
RunOrder: 4
UPDATE 代码确实不错;我只需要更新 CloudFormation 管道堆栈即可应用它(我认为 github webhook 会触发它,但它只会更新管道内的操作)
我可以确认您在部署操作中使用的语法正确:
ParameterOverrides: !Sub |
{
"ProjectName": "${ProjectName}",
"ExecutionId": "#{codepipeline.PipelineExecutionId}"
}
我验证 在我的管道上使用 CloudFormation 提供程序。我还可以 确认这是否按预期工作 。
如果您编辑有问题的 CFN 操作,您可以在控制台中检查是否正确设置了参数:
目前我无法验证构建操作,但从外观上看,它似乎也不错。