

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 教學課程：使用管道層級變數
<a name="tutorials-pipeline-variables"></a>

在本教學課程中，您將建立管道，在管道層級新增變數，並執行輸出變數值的 CodeBuild 組建動作。

**重要**  
在建立管道的過程中，CodePipeline 將使用客戶提供的 S3 成品儲存貯體來製作成品。（這與用於 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. 前往 [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/) 登入 CodePipeline 主控台。

1. 在 **Welcome (歡迎)** 頁面、**Getting started (入門)** 頁面、或者 **Pipelines (管道)** 頁面上，選擇 **Create pipeline (建立管道)**。

1. 在**步驟 1：選擇建立選項**頁面的**建立選項**下，選擇**建置自訂管道**選項。選擇**下一步**。

1. 在**步驟 2：選擇管道設定**中，在**管道名稱**中輸入 **MyVariablesPipeline**。

1. 在**管道類型**中，將預設選擇保留在 **V2**。管道類型在特性和價格方面有所不同。如需詳細資訊，請參閱[管道類型](pipeline-types.md)。

1. 在 **Service role (服務角色)** 中，選擇 **New service role (新服務角色)**。
**注意**  
如果您選擇改用現有的 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. 在**進階設定**底下，請保留預設值。在**Artifact store (成品存放區)** 中，針對您為管道所選取區域中的管道，選擇 **Default location (預設位置)**，即可使用預設成品存放區 (例如指定為預設值的 ​Amazon S3 成品儲存貯體)。
**注意**  
這不是原始碼的來源儲存貯體。這是管道的成品存放區。每個管道都需要有個別成品存放區，例如 S3 儲存貯體。

   選擇**下一步**。

1. 在**步驟 3：新增來源階段**頁面上，新增來源階段：

   1. 在 **Source provider (來源提供者)** 中選擇 **AWS CodeCommit**。

   1. 在**儲存庫名稱**和**分支名稱**中，選擇您的儲存庫和分支。

   選擇**下一步**。

1. 在**步驟 4：新增建置階段**中，新增建置階段：

   1. 在 **Build provider (建置供應商)** 中，選擇 **AWS CodeBuild**。允許 **Region (區域)** 預設為管道區域。

   1. 選擇**建立專案**。

   1. 在 **Project name (專案名稱)** 中，輸入此建置專案的名稱。

   1. 在 **Environment image (環境映像)** 中，選擇 **Managed image (受管映像)**。針對 **Operating system (作業系統)**，選擇 **Ubuntu**。

   1. 針對 **Runtime (執行時間)**，選擇 **Standard (標準)**。針對**映像**，選擇 **aws/codebuild/standard:5.0**。

   1. 對於 **Service role (服務角色)**，選擇 **New service role (新服務角色)**。
**注意**  
請記下 CodeBuild 服務角色的名稱。在本教學課程中，您將需要最後一個步驟的角色名稱。

   1. 在 **BuildSpec** 底下，針對 **Build specifications (建置規格)** 選擇 **Insert build commands (插入建置命令)**。選擇**切換到編輯器**，並在**建置命令**下貼上以下內容。在 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. 選擇 **Continue to CodePipeline (繼續 CodePipeline)**。這會傳回 CodePipeline 主控台，並建立使用您的建置命令進行設定的 CodeBuild 專案。建置專案使用服務角色來管理 AWS 服務 許可。此步驟可能需要數分鐘。

   1. 在**環境變數 *- 選用***下，若要將環境變數建立為由管道層級變數解析之建置動作的輸入變數，請選擇**新增環境變數**。這會建立 buildspec 中指定為 的變數`$CUSTOM_VAR1`。在**名稱**中，輸入 `CUSTOM_VAR1`。在 **Value (值)** 中輸入 `#{variables.timeout}`。在**類型**中，選擇 `Plaintext`。

      環境變數`#{variables.timeout}`的值是以步驟 7 中為管道`timeout`建立的管道層級變數命名空間`variables`和管道層級變數為基礎。

   1. 選擇**下一步**。

1. 在**步驟 5：新增測試階段**中，選擇**略過測試階段**，然後再次選擇**略過**以接受警告訊息。

   選擇**下一步**。

1. 在**步驟 6：新增部署階段**頁面上，選擇**略過部署階段**，然後再次選擇**略過**以接受警告訊息。選擇**下一步**。

1. 在**步驟 7：檢閱**中，選擇**建立管道**。

## 步驟 2：釋出變更並檢視日誌
<a name="tutorials-pipeline-variables-view"></a>

1. 管道成功執行後，在您成功的建置階段，選擇**檢視詳細資訊**。

   在詳細資訊頁面上，選擇**日誌**索引標籤。檢視 CodeBuild 組建輸出。命令會輸出輸入變數的值。

1. 在左側導覽中，選擇**歷史記錄**。

   選擇最近的執行，然後選擇**變數**索引標籤。檢視管道變數的解析值。