我设置了一个名为 test-pipeline-flow 的 AWS CodePipeline。
Source 步骤已设置为使用名为 test-repo 的 AWS CodeCommit。
Build 步骤已设置为使用名为 test-build-repo 的 AWS CodeBuild。此 CodeBuild 具有以下 buildspec.yml:
version: 0.2
phases:
build:
commands:
- echo $FOO
- echo $BAR
在 CodeBuild test-build-repo 我还通过 环境 > 附加配置小节设置了 环境变量:
所以这里的问题是,当我触发 AWS CodePipeline test-pipeline-flow
CloudWatch 日志显示 $FOO 持有
whatever
(如预期),并且 $BAR 实际上持有 #{codepipeline.PipelineExecutionId}
而不是实际的 执行 ID
我还缺少什么不允许 $BAR 解析为 AWS CodePipeline 提供的正确值?
根据您的屏幕截图,您似乎正在尝试在
CodePipeline
配置页面上使用
CodeBuild
变量语法。如果是这样,您需要在CodePipeline页面/控制台中设置环境变量。
此页面详细描述了变量在管道内的范围及其操作:https://docs.aws.amazon.com/codepipeline/latest/userguide/reference-variables.html
当您从 cloud-shell 或本地计算机运行以下命令时,您应该看到类似这样的内容:
注意我们正在查看管道,而不是代码构建项目
# ref https://docs.aws.amazon.com/codepipeline/latest/userguide/actions-variables.html
aws codepipeline get-pipeline --name <pipeline-name>
{
"name": "Build",
"actions": [
{
"outputArtifacts": [
{
"name": "BuildArtifact"
}
],
"name": "Build",
"configuration": {
"EnvironmentVariables": "[{\"name\":\"Execution_ID\",\"value\":\"#{codepipeline.PipelineExecutionId}\",\"type\":\"PLAINTEXT\"},{\"name\":\"Commit_ID\",\"value\":\"#{SourceVariables.CommitId}\",\"type\":\"PLAINTEXT\"}]",
"ProjectName": "env-var-test"
},
"inputArtifacts": [
{
"name": "SourceArtifact"
}
],
"region": "us-west-2",
"actionTypeId": {
"provider": "CodeBuild",
"category": "Build",
"version": "1",
"owner": "AWS"
},
"runOrder": 1
}
]
},