

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

# 使用变量
<a name="actions-variables"></a>

 CodePipeline 生成变量中的一些操作。要使用变量，请执行以下操作：
+ 将命名空间分配给某个操作，以使其生成的变量可用于下游操作配置。
+ 配置下游操作以使用该操作生成的变量。

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

要查看使用变量的 step-by-step示例，请执行以下操作：
+ 有关使用上游操作 (CodeCommit) 中的变量并生成输出变量的 Lambda 操作的教程，请参阅。[教程：将变量与 Lambda 调用操作一起使用](tutorials-lambda-variables.md)
+ 有关引用上游 CloudFormation 操作堆栈输出变量的 CloudFormation 操作的教程，请参阅[教程：创建使用 AWS CloudFormation 部署操作中的变量的管道](tutorials-cloudformation-action.md)。
+ 有关手动批准操作的示例，其消息文本引用了解析为提 CodeCommit 交 ID 和提交消息的输出变量，请参阅[示例：在手动审批中使用变量](#actions-variables-examples-approvals)。
+ 有关带有可解析为 GitHub 分支名称的环境变量的 CodeBuild 操作示例，请参阅[示例：使用带有 CodeBuild 环境 BranchName 变量的变量](#actions-variables-examples-env-branchname)。
+ CodeBuild actions 将所有作为构建一部分导出的环境变量生成为变量。有关更多信息，请参阅 [CodeBuild 操作输出变量](reference-variables.md#reference-variables-list-configured-codebuild)。有关可在中使用的环境变量的列表 CodeBuild，请参阅《*AWS CodeBuild 用户指南》*[中的构建环境中的环境变量](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html)。

**Topics**
+ [为操作配置变量](#actions-variables-create)
+ [查看输出变量](#actions-variables-view)
+ [示例：在手动审批中使用变量](#actions-variables-examples-approvals)
+ [示例：使用带有 CodeBuild 环境 BranchName 变量的变量](#actions-variables-examples-env-branchname)

## 为操作配置变量
<a name="actions-variables-create"></a>

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

### 为操作配置变量（控制台）
<a name="actions-variables-create-console"></a>

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

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

**创建具有变量的管道**

1. 登录 AWS 管理控制台 并打开 CodePipeline 控制台，[网址为 http://console.aws.amazon。 com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)。

1. 选择 **Create pipeline（创建管道）**。为您的管道输入名称，然后选择 **Next (下一步)**。

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

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

   在 **Environment variables (环境变量)** 下，选择 **Add environment variables (添加环境变量)**。例如，使用变量语法 `#{codepipeline.PipelineExecutionId}` 输入执行 ID，使用变量语法 `#{SourceVariables.CommitId}` 输入提交 ID。
**注意**  
您可以在向导的任何操作配置字段中输入变量语法。

1. 选择**创建**。

1. 创建管道后，您可以查看由向导创建的命名空间。在管道上，选择要查看其命名空间的阶段所对应的图标。在此示例中，将显示源操作自动生成的命名空间 `SourceVariables`。  
![\[示例：“操作信息”屏幕\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/variables-popup-namespace.png)

**编辑现有操作的命名空间**

1. 登录 AWS 管理控制台 并打开 CodePipeline 控制台，[网址为 http://console.aws.amazon。 com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)。

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

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

**查看输出变量**

1. 登录 AWS 管理控制台 并打开 CodePipeline 控制台，[网址为 http://console.aws.amazon。 com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)。

1. 成功创建管道并运行后，您可以在**操作执行详细信息**页面上查看变量。有关信息，请参阅[查看变量（控制台）](#actions-variables-view-console)。

### 为操作配置变量 (CLI)
<a name="actions-variables-create-cli"></a>

使用**create-pipeline**命令创建管道或使用**update-pipeline**命令编辑管道时，可以在操作配置中进行 reference/use 变量。

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

**使用命名空间配置操作**

1. 按照中 [创建管道、阶段和操作](pipelines-create.md) 的步骤使用 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": [
   
   . . .
   ```

1. 使用类似于 **MyPipeline.json** 的名称保存文件。

1. 在终端（Linux、macOS 或 Unix）或命令提示符 (Windows) 处，运行 [https://docs.aws.amazon.com/cli/latest/reference/codepipeline/get-pipeline-state.html](https://docs.aws.amazon.com/cli/latest/reference/codepipeline/get-pipeline-state.html) 命令并创建管道。

   调用您运行 [https://docs.aws.amazon.com/cli/latest/reference/codepipeline/retry-stage-execution.html](https://docs.aws.amazon.com/cli/latest/reference/codepipeline/retry-stage-execution.html) 命令时创建的文件。例如：

   ```
   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
           }
       ]
   },
   ```

1. 使用类似于 **MyPipeline.json** 的名称保存文件。

1. 在终端（Linux、macOS 或 Unix）或命令提示符 (Windows) 处，运行 [https://docs.aws.amazon.com/cli/latest/reference/codepipeline/get-pipeline-state.html](https://docs.aws.amazon.com/cli/latest/reference/codepipeline/get-pipeline-state.html) 命令并创建管道。

   调用您运行 [https://docs.aws.amazon.com/cli/latest/reference/codepipeline/retry-stage-execution.html](https://docs.aws.amazon.com/cli/latest/reference/codepipeline/retry-stage-execution.html) 命令时创建的文件。例如：

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

## 查看输出变量
<a name="actions-variables-view"></a>

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

### 查看变量（控制台）
<a name="actions-variables-view-console"></a>

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

****

1. 登录 AWS 管理控制台 并打开 CodePipeline 控制台，[网址为 http://console.aws.amazon。 com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)。

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

1.  在**名称**中，选择管道的名称。

1. 选择 **View history (查看历史记录)**。

1. 管道成功运行后，您可以查看由源操作生成的变量。选择 **View history (查看历史记录)**。在管道执行的操作列表中选择 S **ourc** e 以查看该操作的 CodeCommit 操作执行详细信息。在操作详细信息屏幕的 **Output variables (输出变量)** 下查看变量。  
![\[示例：源输出变量\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/variables-output.png)

1. 管道成功运行后，您可以查看构建操作所使用的变量。选择 **View history (查看历史记录)**。在管道执行的操作列表中，选择 B **uild** 以查看该操作的 CodeBuild 操作执行详细信息。在操作详细信息页面上，查看 **Action configuration (操作配置)** 下的变量。此时将显示自动生成的命名空间。  
![\[示例：操作配置变量\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/variables-actionconfig-codebuild.png)

   默认情况下，**Action configuration (操作配置)** 显示变量语法。您可以选择 **Show resolved configuration (显示已解析的配置)** 以切换列表，显示在操作执行期间生成的值。  
![\[示例：已解析的操作配置变量\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/variables-actionconfig-codebuild-resolved.png)

### 查看变量 (CLI)
<a name="actions-variables-view-cli"></a>

您可以使用 **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"
                   },
   ```

1. 使用以下命令：

   ```
   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
           }
       ]
   },
   ```

## 示例：在手动审批中使用变量
<a name="actions-variables-examples-approvals"></a>

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

****

1. 登录 AWS 管理控制台 并打开 CodePipeline 控制台，[网址为 http://console.aws.amazon。 com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)。

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

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

1. 在 **Action provider (操作提供程序)** 中，选择 **Manual approval (手动审批)**。

1. 在 “**供审阅的网址**” 中，将的变量语法`CommitId`添加到您 CodeCommit 的 URL 中。请确保您使用分配给源操作的命名空间。例如，具有默认命名空间 `SourceVariables` 的 CodeCommit 操作的变量语法为 `#{SourceVariables.CommitId}`。

   在**评论**的 `CommitMessage` 中，输入提交消息：

   ```
   Please approve this change. Commit message: #{SourceVariables.CommitMessage}
   ```

1. 管道成功运行后，您可以在审批消息中查看变量值。

## 示例：使用带有 CodeBuild 环境 BranchName 变量的变量
<a name="actions-variables-examples-env-branchname"></a>

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

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

1. 登录 AWS 管理控制台 并打开 CodePipeline 控制台，[网址为 http://console.aws.amazon。 com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)。

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

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

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

1. 在**编辑操作**页面的**环境变量**下，输入以下内容：
   + 在**名称**中，输入您的环境变量的名称。
   + 在**值**中，输入您的管道输出变量的变量语法，其中包括分配给您的源操作的命名空间。例如，具有默认命名空间的 GitHub操作的输出变量语法`SourceVariables`为`#{SourceVariables.BranchName}`。
   + 在**类型**中，选择**纯文本**。

1. 在管道成功运行后，您可以看到所解析的输出变量如何成为环境变量中的值。选择下列选项之一：
   + **CodePipeline 控制台：**选择您的管道，然后选择 “**历史记录**”。选择最近的管道执行。
     + 在**时间轴**下，选择**源**的选择器。这是生成 GitHub 输出变量的源操作。选择**查看执行详细信息**。在**输出变量**下，查看此操作生成的输出变量列表。
     + 在**时间轴**下，选择**构建**的选择器。这是为构建项目指定 CodeBuild 环境变量的生成操作。选择**查看执行详细信息**。在 “**操作配置”** 下，查看您的 CodeBuild环境变量。选择**显示已解析配置**。您的环境变量值是 GitHub 源操作中已解析的`BranchName`输出变量。在此示例中，解析的值为 `main`。

       有关更多信息，请参阅 [查看变量（控制台）](#actions-variables-view-console)。
   + **CodeBuild 控制台：**选择您的构建项目并选择构建运行的链接。在**环境变量**下，已解析的输出变量是 CodeBuild 环境变量的值。在此示例中，环境变量 **Name** 为`BranchName`，**Value** 是 GitHub 源操作中已解析的`BranchName`输出变量。在此示例中，解析的值为 `main`。  
![\[显示控制台中已解析变量的屏幕截图\]](http://docs.aws.amazon.com/zh_cn/codepipeline/latest/userguide/images/variable-codebuild-resolved.png)