使用变量 - AWS CodePipeline

使用变量

CodePipeline 中一些操作会生成变量。要使用变量,请执行以下操作:

  • 将命名空间分配给某个操作,以使其生成的变量可用于下游操作配置。

  • 配置下游操作以使用该操作生成的变量。

    您可以查看每个操作执行的详细信息,以确定该操作在执行时生成的每个输出变量的值。

要查看使用变量的分步示例:

为操作配置变量

向管道添加操作时,您可以为其分配命名空间并将其配置为使用之前操作中的变量。

为操作配置变量(控制台)

此示例会创建一个具有 CodeCommit 源操作和 CodeBuild 构建操作的管道。CodeBuild 操作应配置为使用由 CodeCommit 操作生成的变量。

如果未指定命名空间,则这些变量不可在操作配置中引用。使用控制台创建管道时,会自动生成每个操作的命名空间。

创建具有变量的管道
  1. 通过以下网址登录AWS 管理控制台并打开 CodePipeline 控制台:http://console.aws.amazon.com/codesuite/codepipeline/home

  2. 选择 Create pipeline(创建管道)。为您的管道输入名称,然后选择 Next (下一步)

  3. Source (源)Provider (提供方) 中,选择 CodeCommit。选择 CodeCommit 存储库和源操作的分支,然后选择下一步

  4. Build (构建)Provider (提供方) 中,选择 CodeBuild。选择现有 CodeBuild 构建项目名称或选择创建项目。在 Create build project (创建构建项目) 上,创建一个构建项目,然后选择 Return to CodePipeline (返回至 CodePipeline)

    Environment variables (环境变量) 下,选择 Add environment variables (添加环境变量)。例如,使用变量语法 #{codepipeline.PipelineExecutionId} 输入执行 ID,使用变量语法 #{SourceVariables.CommitId} 输入提交 ID。

    注意

    您可以在向导的任何操作配置字段中输入变量语法。

  5. 选择创建

  6. 创建管道后,您可以查看由向导创建的命名空间。在管道上,选择要查看其命名空间的阶段所对应的图标。在此示例中,将显示源操作自动生成的命名空间 SourceVariables

    示例:“操作信息”屏幕
编辑现有操作的命名空间
  1. 通过以下网址登录AWS 管理控制台并打开 CodePipeline 控制台:http://console.aws.amazon.com/codesuite/codepipeline/home

  2. 选择要编辑的管道,然后选择 Edit (编辑)。对于源阶段,选择 Edit stage (编辑阶段)。添加 CodeCommit 操作。

  3. Edit action (编辑操作) 中,查看 Variable namespace (变量命名空间) 字段。如果现有操作是以前创建或者未使用向导创建,则必须添加命名空间。在 Variable namespace (变量命名空间) 中,输入命名空间名称,然后选择 Save (保存)

查看输出变量
  1. 通过以下网址登录AWS 管理控制台并打开 CodePipeline 控制台:http://console.aws.amazon.com/codesuite/codepipeline/home

  2. 成功创建管道并运行后,您可以在操作执行详细信息页面上查看变量。有关信息,请参阅查看变量(控制台)

为操作配置变量 (CLI)

在使用 create-pipeline 命令创建管道时,或者使用 update-pipeline 命令编辑管道时,您可以在操作配置中引用/使用变量。

如果未指定命名空间,则操作生成的变量不可在任何下游操作配置中引用。

使用命名空间配置操作
  1. 按照中 创建管道、阶段和操作 的步骤使用 CLI 创建管道。启动输入文件以提供带有 create-pipeline 参数的 --cli-input-json 命令。在管道结构中,添加 namespace 参数并指定名称,例如 SourceVariables

    . . . { "inputArtifacts": [], "name": "Source", "region": "us-west-2", "namespace": "SourceVariables", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "CodeCommit" }, "outputArtifacts": [ . . .
  2. 使用类似于 MyPipeline.json 的名称保存文件。

  3. 在终端(Linux、macOS 或 Unix)或命令提示符 (Windows) 处,运行 create-pipeline 命令并创建管道。

    调用您运行 create-pipeline 命令时创建的文件。例如:

    aws codepipeline create-pipeline --cli-input-json file://MyPipeline.json
配置下游操作以使用变量
  1. 编辑输入文件以提供带有 update-pipeline 参数的 --cli-input-json 命令。在下游操作中,将变量添加到该操作的配置。变量由命名空间和键组成,以句点分隔。例如,要为管道执行 ID 和源提交 ID 添加变量,请为变量 codepipeline 指定命名空间 #{codepipeline.PipelineExecutionId}。为变量 SourceVariables 指定命名空间 #{SourceVariables.CommitId}

    { "name": "Build", "actions": [ { "outputArtifacts": [ { "name": "BuildArtifacts" } ], "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 } ] },
  2. 使用类似于 MyPipeline.json 的名称保存文件。

  3. 在终端(Linux、macOS 或 Unix)或命令提示符 (Windows) 处,运行 create-pipeline 命令并创建管道。

    调用您运行 create-pipeline 命令时创建的文件。例如:

    aws codepipeline create-pipeline --cli-input-json file://MyPipeline.json

查看输出变量

您可以查看操作执行详细信息,以查看该操作特定于每个执行的变量。

查看变量(控制台)

您可以使用控制台查看某个操作的变量。

  1. 通过以下网址登录AWS 管理控制台并打开 CodePipeline 控制台:http://console.aws.amazon.com/codesuite/codepipeline/home

    将会显示所有与您的 AWS 账户关联的管道的名称。

  2. 名称中,选择管道的名称。

  3. 选择 View history (查看历史记录)

  4. 管道成功运行后,您可以查看由源操作生成的变量。选择 View history (查看历史记录)。在管道执行的操作列表中选择,以查看 CodeCommit 操作的操作执行详细信息。在操作详细信息屏幕的 Output variables (输出变量) 下查看变量。

    示例:源输出变量
  5. 管道成功运行后,您可以查看构建操作所使用的变量。选择 View history (查看历史记录)。在管道执行的操作列表中,选择构建以查看 CodeBuild 操作的操作执行详细信息。在操作详细信息页面上,查看 Action configuration (操作配置) 下的变量。此时将显示自动生成的命名空间。

    示例:操作配置变量

    默认情况下,Action configuration (操作配置) 显示变量语法。您可以选择 Show resolved configuration (显示已解析的配置) 以切换列表,显示在操作执行期间生成的值。

    示例:已解析的操作配置变量

查看变量 (CLI)

您可以使用 list-action-executions 命令查看操作的变量。

  1. 使用以下命令:

    aws codepipeline list-action-executions

    输出显示 outputVariables 参数,如此处所示。

    "outputVariables": { "BranchName": "main", "CommitMessage": "Updated files for test", "AuthorDate": "2019-11-08T22:24:34Z", "CommitId": "d99b0083cc10EXAMPLE", "CommitterDate": "2019-11-08T22:24:34Z", "RepositoryName": "variables-repo" },
  2. 使用以下命令:

    aws codepipeline get-pipeline --name <pipeline-name>

    在 CodeBuild 操作的操作配置中,您可以查看变量:

    { "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 } ] },

示例:在手动审批中使用变量

当您为操作指定命名空间,并且该操作生成输出变量时,可以添加手动审批,该审批将在审批消息中显示变量。此示例演示如何向手动审批消息中添加变量语法。

  1. 通过以下网址登录AWS 管理控制台并打开 CodePipeline 控制台:http://console.aws.amazon.com/codesuite/codepipeline/home

    将会显示所有与您的 AWS 账户关联的管道的名称。选择要向其添加审批的管道。

  2. 要编辑您的管道,请选择编辑。在源操作后添加手动审批。在操作名称中,输入审批操作的名称。

  3. Action provider (操作提供程序) 中,选择 Manual approval (手动审批)

  4. 用于审阅的 URL 中,将 CommitId 的变量语法添加到您的 CodeCommit URL。请确保您使用分配给源操作的命名空间。例如,具有默认命名空间 SourceVariables 的 CodeCommit 操作的变量语法为 #{SourceVariables.CommitId}

    评论CommitMessage 中,输入提交消息:

    Please approve this change. Commit message: #{SourceVariables.CommitMessage}
  5. 管道成功运行后,您可以在审批消息中查看变量值。

示例:将 BranchName 变量与 CodeBuild 环境变量一起使用

在向管道中添加 CodeBuild 操作时,可以使用 CodeBuild 环境变量来引用上游源操作的 BranchName 输出变量。使用 CodePipeline 中一个操作的输出变量,您可以创建自己的 CodeBuild 环境变量,以便在您的构建命令中使用。

此示例展示了如何将来自 GitHub 源代码操作的输出变量语法添加到 CodeBuild 环境变量。此示例中的输出变量语法表示 BranchName 的 GitHub 源操作输出变量。在操作成功运行后,变量将进行解析以显示 GitHub 分支名称。

  1. 通过以下网址登录AWS 管理控制台并打开 CodePipeline 控制台:http://console.aws.amazon.com/codesuite/codepipeline/home

    将会显示所有与您的 AWS 账户关联的管道的名称。选择要向其添加审批的管道。

  2. 要编辑您的管道,请选择编辑。在包含您的 CodeBuild 操作的阶段上,选择编辑阶段

  3. 选择图标以编辑您的 CodeBuild 操作。

  4. 编辑操作页面的环境变量下,输入以下内容:

    • 名称中,输入您的环境变量的名称。

    • 中,输入您的管道输出变量的变量语法,其中包括分配给您的源操作的命名空间。例如,具有默认命名空间 SourceVariables 的 GitHub 操作的输出变量语法为 #{SourceVariables.BranchName}

    • 类型中,选择纯文本

  5. 在管道成功运行后,您可以看到所解析的输出变量如何成为环境变量中的值。选择下列选项之一:

    • CodePipeline 控制台:选择您的管道,然后选择历史记录。选择最近的管道执行。

      • 时间轴下,选择的选择器。这是生成 GitHub 输出变量的源操作。选择查看执行详细信息。在输出变量下,查看此操作生成的输出变量列表。

      • 时间轴下,选择构建的选择器。这是为您的构建项目指定 CodeBuild 环境变量的构建操作。选择查看执行详细信息。在操作配置下,查看您的 CodeBuild 环境变量。选择显示已解析配置。您的环境变量值是 GitHub 源操作的已解析 BranchName 输出变量。在此示例中,解析的值为 main

        有关更多信息,请参阅 查看变量(控制台)

    • CodeBuild 控制台:选择您的构建项目,并选择您的构建运行的链接。在环境变量下,已解析输出变量是 CodeBuild 环境变量的值。在此示例中,环境变量名称BranchName是 GitHub 源操作的已解析 BranchName 输出变量。在此示例中,解析的值为 main

    显示控制台中已解析变量的屏幕截图