

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

# 教程：使用管道级变量
<a name="tutorials-pipeline-variables"></a>

在本教程中，您将创建一个管道，在管道级别添加变量，然后运行输出变量值的 CodeBuild 生成操作。

**重要**  
作为创建管道的一部分，客户提供的 S3 工件存储桶将 CodePipeline 用于项目。（这与用于 S3 源操作的存储桶不同。） 如果 S3 工件存储桶与您的管道账户位于不同的账户中，请确保 S3 工件存储桶归其所有 AWS 账户 ，该存储桶是安全且可靠的。

**Topics**
+ [先决条件](#tutorials-pipeline-variables-prereq)
+ [步骤 1：创建管道并构建项目](#tutorials-pipeline-variables-pipeline)
+ [步骤 2：发布更改并查看日志](#tutorials-pipeline-variables-view)

## 先决条件
<a name="tutorials-pipeline-variables-prereq"></a>

在开始之前，您必须执行以下操作：
+ 创建 CodeCommit 存储库。
+ 向存储库添加 .txt 文件。

## 步骤 1：创建管道并构建项目
<a name="tutorials-pipeline-variables-pipeline"></a>

在此部分中，您将使用以下操作创建管道：
+ 与您的 CodeCommit 存储库建立连接的源阶段。
+ 带有生成操作的 AWS CodeBuild 生成阶段。

**使用向导创建管道**

1. 登录 CodePipeline 控制台，网址为[https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/)。

1. 在**欢迎**页面、**入门**页面或**管道**页面上，选择**创建管道**。

1. 在**步骤 1：选择创建选项**页面上的**创建选项**下，选择**构建自定义管道**选项。选择**下一步**。

1. 在**步骤 2：选择管道设置**的**管道名称**中，输入 **MyVariablesPipeline**。

1. 在**管道类型**中，保留默认选择 **V2**。管道类型有不同的特点和价格。有关更多信息，请参阅 [管道类型](pipeline-types.md)。

1. 在**服务角色**中，选择**新建服务角色**。
**注意**  
如果您选择使用现有的 CodePipeline 服务角色，请确保已`codeconnections:UseConnection`将 IAM 权限添加到您的服务角色策略中。有关 CodePipeline 服务角色的说明，请参阅[为 CodePipeline 服务角色添加权限](https://docs.aws.amazon.com/codepipeline/latest/userguide/security-iam.html#how-to-update-role-new-services)。

1. 在**变量**下，选择**添加变量**。在**名称**中，输入 `timeout`。在**默认值**中，输入 1000。在“描述”中，输入以下描述：**Timeout**。

   这将创建一个变量，当管道执行开始时，您可以在其中声明变量值。变量名必须匹配 `[A-Za-z0-9@\-_]+`，可以是除空字符串之外的任何名称。

1. 在**高级设置**下，保留原定设置值。在**构件存储**中，选择**默认位置**以将默认构件存储（如指定为默认值的 Amazon S3 项目存储桶）用于为管道选择的区域中的管道。
**注意**  
这不是源代码的源存储桶。这是管道的项目存储。每个管道都需要一个单独的构件存储，例如 S3 存储桶。

   选择**下一步**。

1. 在**步骤 3：添加源阶段**页面上，添加源阶段：

   1. 在**源提供程序**中，选择 **AWS CodeCommit**。

   1. 在**存储库名称**和**分支名称**中，选择您的存储库和分支。

   选择**下一步**。

1. 在**步骤 4：添加构建阶段**中，添加一个构建阶段：

   1. 在**构建提供程序**中，选择 **AWS CodeBuild**。允许**区域**默认为管道区域。

   1. 选择**创建项目**。

   1. 在**项目名称**中，输入此构建项目的名称。

   1. 在**环境映像**中，选择**托管映像**。对于**操作系统**，选择 **Ubuntu**。

   1. 对于**运行时**，选择**标准**。**对于 “**图像**”，选择:5.0 aws/codebuild/standard。**

   1. 对于**服务角色**，选择**新建服务角色**。
**注意**  
记下您的 CodeBuild 服务角色的名称。在本教程的最后一步，您会用到此角色名称。

   1. 在**构建规范**下，为**构建规范**选择**插入构建命令**。选择**切换到编辑器**，然后将以下内容粘贴到**构建命令**。在 buildspec 中，客户变量 `$CUSTOM_VAR1` 将用于在构建日志中输出管道变量。您将在下一步骤中创建 `$CUSTOM_VAR1` 输出变量作为环境变量。

      ```
      version: 0.2
      #env:
        #variables:
           # key: "value"
           # key: "value"
        #parameter-store:
           # key: "value"
           # key: "value"
        #git-credential-helper: yes
      phases:
        install:
          #If you use the Ubuntu standard image 2.0 or later, you must specify runtime-versions.
          #If you specify runtime-versions and use an image other than Ubuntu standard image 2.0, the build fails.
          runtime-versions:
            nodejs: 12
          #commands:
            # - command
            # - command
        #pre_build:
          #commands:
            # - command
            # - command
        build:
          commands:
            - echo $CUSTOM_VAR1
        #post_build:
          #commands:
            # - command
            # - command
      artifacts:
        files:
           - '*'
          # - location
        name: $(date +%Y-%m-%d)
        #discard-paths: yes
        #base-directory: location
      #cache:
        #paths:
          # - paths
      ```

   1. 选择 “**继续” CodePipeline**。这将返回到 CodePipeline控制台并创建一个使用您的构建命令进行配置的 CodeBuild 项目。构建项目使用服务角色来管理 AWS 服务 权限。此步骤可能需要几分钟时间。

   1. 在**环境变量* - 可选***下，要创建环境变量作为将由管道级变量解析的构件操作的输入变量，请选择**添加环境变量**。这将创建在 buildspec 中指定为 `$CUSTOM_VAR1` 的变量。在**名称**中，输入 `CUSTOM_VAR1`。在**值**中，输入 `#{variables.timeout}`。在**类型**中，选择 `Plaintext`。

      环境变量的`#{variables.timeout}`值基于管道级变量命名空间`variables`和步骤 7 中为管道`timeout`创建的管道级变量。

   1. 选择**下一步**。

1. 在**步骤 5：添加测试阶段**中，选择**跳过测试阶段**，并通过再次选择**跳过**接受警告消息。

   选择**下一步**。

1. 在 “**步骤 6：添加部署阶段**” 页上，选择 “**跳过部署阶段**”，然后再次选择 “**跳过**”，接受警告消息。选择**下一步**。

1. 在 “**步骤 7：查看**” 中，选择 “**创建管道**”。

## 步骤 2：发布更改并查看日志
<a name="tutorials-pipeline-variables-view"></a>

1. 管道成功运行后，在成功的构建阶段上，选择**查看详细信息**。

   在详细信息页面上，选择**日志**选项卡。查看编 CodeBuild 译输出。这些命令将输出所输入变量的值。

1. 在左侧导航窗格中，选择**历史记录**。

   选择最近执行，然后选择**变量**选项卡。查看管道变量的解析值。