使用变量 - AWS CodePipeline

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用变量

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

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

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

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

要查看使用变量的 step-by-step 示例,请执行以下操作:

为操作配置变量

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

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

此示例创建了一个包含 CodeCommit 源操作和 CodeBuild 生成操作的管道。该 CodeBuild 操作配置为使用该 CodeCommit 操作生成的变量。

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

创建具有变量的管道
  1. 登录 AWS Management Console 并打开 CodePipeline 控制台,网址为 http://console.aws.amazon.com/codesuite/codepipeline/home

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

  3. 中,在提供者中,选择CodeCommit。为源操作选择 CodeCommit 存储库和分支,然后选择 “下一步”。

  4. 在 “构建” 中,在 “提供者” 中选择CodeBuild。选择现有的 CodeBuild 构建项目名称或选择 “创建项目”。在 “创建构建项目” 上,创建生成项目,然后选择 “返回到” CodePipeline。

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

    注意

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

  5. 选择创建

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

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

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

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

查看输出变量
  1. 登录 AWS Management Console 并打开 CodePipeline 控制台,网址为 http://console.aws.amazon.com/codesuite/codepipeline/home

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

为变量配置操作 (CLI)

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

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

使用命名空间配置操作
  1. 按照中的步骤创建管道、阶段和操作使用创建管道CLI。启动输入文件以提供带有 --cli-input-json 参数的 create-pipeline 命令。在管道结构中,添加 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. 编辑输入文件以提供带有 --cli-input-json 参数的 update-pipeline 命令。在下游操作中,将变量添加到该操作的配置。变量由命名空间和键组成,以句点分隔。例如,要为管道执行 ID 和源提交 ID 添加变量,请为变量 #{codepipeline.PipelineExecutionId} 指定命名空间 codepipeline。为变量 #{SourceVariables.CommitId} 指定命名空间 SourceVariables

    { "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 Management Console 并打开 CodePipeline 控制台,网址为 http://console.aws.amazon.com/codesuite/codepipeline/home

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

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

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

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

    示例:源输出变量
  5. 管道成功运行后,您可以查看构建操作所使用的变量。选择 View history (查看历史记录)。在管道执行的操作列表中,选择 B uild 以查看该操作的 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 Management Console 并打开 CodePipeline 控制台,网址为 http://console.aws.amazon.com/codesuite/codepipeline/home

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

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

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

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

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

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

示例:使用带有 CodeBuild 环境 BranchName变量的变量

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

此示例说明如何将 GitHub 源操作中的输出变量语法添加到 CodeBuild 环境变量。本示例中的输出变量语法表示的 GitHub 源操作输出变量BranchName。操作成功运行后,变量解析为显示 GitHub 分支名称。

  1. 登录 AWS Management Console 并打开 CodePipeline 控制台,网址为 http://console.aws.amazon.com/codesuite/codepipeline/home

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

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

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

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

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

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

    • 类型中,选择纯文本

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

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

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

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

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

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

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