教學課程:搭配 CodeCommit 管道來源使用完整複製 - AWS CodePipeline

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

教學課程:搭配 CodeCommit 管道來源使用完整複製

您可以在 CodePipeline 中選擇 CodeCommit 來源動作的完整複製選項。 CodePipeline 使用此選項可讓 CodeBuild 存取管道建置動作中的 Git 中繼資料。

在本教學課程中,您會建立管道來存取 CodeCommit 儲存庫、使用完整複製選項來複製來源資料,以及執行 CodeBuild 組建來複製儲存庫,並為儲存庫執行 Git 命令。

注意

CodeBuild 動作是唯一下游動作支援使用 Git 複製選項提供的 Git 中繼資料。此外,雖然您的管道可以包含跨帳戶動作,但 CodeCommit 動作和 CodeBuild 動作必須位於相同的帳戶中,才能成功執行完整複製選項。

重要

在建立管道時,CodePipeline 將使用客戶提供的 S3 成品儲存貯體來製作成品。(這與用於 S3 來源動作的 儲存貯體不同。) 如果 S3 成品儲存貯體位於與管道帳戶不同的帳戶中,請確定 S3 成品儲存貯體屬於 AWS 帳戶 安全且可靠的 。

必要條件

開始之前,您必須在與管道相同的 AWS 帳戶和區域中建立 CodeCommit 儲存庫。

步驟 1:建立 README 檔案

使用這些步驟將 README 檔案新增至來源儲存庫。README 檔案提供範例來源檔案,供 CodeBuild 下游動作讀取。

新增 README 檔案
  1. 登入您的儲存庫,然後選擇您的儲存庫。

  2. 若要建立新檔案,請選擇新增檔案 > 建立檔案。命名 檔案 README.md. 檔案,並新增下列文字。

    This is a CodeCommit repository!
  3. 選擇 Commit changes (遞交變更)

    確定 README.md 檔案位於儲存庫的根層級。

步驟 2:建立管道和建置專案

在本節中,您可以採取下列動作建立管道:

  • 具有 CodeCommit 來源動作的來源階段。

  • 具有組建動作的 AWS CodeBuild 組建階段。

使用精靈建立管道
  1. 前往 https://console.aws.amazon.com/codepipeline/ 登入 CodePipeline 主控台。

  2. Welcome (歡迎) 頁面、Getting started (入門) 頁面、或者 Pipelines (管道) 頁面上,選擇 Create pipeline (建立管道)

  3. 步驟 1:選擇建立選項頁面的建立選項下,選擇建置自訂管道選項。選擇 Next (下一步)

  4. 步驟 2:選擇管道設定,在管道名稱中輸入 MyCodeCommitPipeline

  5. CodePipeline 提供 V1 和 V2 類型的管道,其特性和價格各不相同。V2 類型是您可以在 主控台中選擇的唯一類型。如需詳細資訊,請參閱管道類型。如需 CodePipeline 定價的資訊,請參閱定價

  6. Service role (服務角色) 中,執行下列其中一項作業:

    • 選擇 Existing service role (現有服務角色)

    • 選擇您現有的 CodePipeline 服務角色。此角色必須具有服務角色政策的 codecommit:GetRepository IAM 許可。請參閱將許可新增至 CodePipeline 服務角色

  7. 進階設定底下,請保留預設值。選擇 Next (下一步)

  8. 步驟 3:新增來源階段頁面上,執行下列動作:

    1. 來源提供者中,選擇 CodeCommit

    2. 儲存庫名稱中,選擇儲存庫的名稱。

    3. 分支名稱中,選擇分支名稱。

    4. 請確認已選取在原始程式碼變更時啟動管道選項。

    5. 輸出成品格式下,選擇完整複製以啟用來源儲存庫的 Git 複製選項。只有 CodeBuild 提供的動作才能使用 Git 複製選項。

    選擇 Next (下一步)

  9. 步驟 4:新增建置階段中,執行下列動作:

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

    2. 選擇建立專案

    3. Project name (專案名稱) 中,輸入此建置專案的名稱。

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

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

    6. 對於 Service role (服務角色),選擇 New service role (新服務角色)

      注意

      請注意 CodeBuild 服務角色的名稱。在本教學課程中,您將需要最後一個步驟的角色名稱。

    7. BuildSpec 底下,針對 Build specifications (建置規格) 選擇 Insert build commands (插入建置命令)。選擇切換到編輯器,然後在建置命令下貼上下列程式碼。

      version: 0.2 env: 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 # name: version #commands: # - command # - command pre_build: commands: - ls -lt - cat README.md build: commands: - git log | head -100 - git status - ls - git describe --all #post_build: #commands: # - command # - command #artifacts: #files: # - location #name: $(date +%Y-%m-%d) #discard-paths: yes #base-directory: location #cache: #paths: # - paths
    8. 選擇 Continue to CodePipeline (繼續 CodePipeline)。這會將您傳回 CodePipeline 主控台,並建立 CodeBuild 專案,以使用您的建置命令進行組態。建置專案使用服務角色來管理 AWS 服務 許可。此步驟可能需要數分鐘。

    9. 選擇 Next (下一步)

  10. 步驟 5:新增測試階段中,選擇略過測試階段,然後再次選擇略過以接受警告訊息。

    選擇 Next (下一步)

  11. 步驟 6:新增部署階段頁面上,選擇略過部署階段,然後再次選擇略過以接受警告訊息。選擇 Next (下一步)

  12. 步驟 7:檢閱中,選擇建立管道

步驟 3:更新 CodeBuild 服務角色政策以複製儲存庫

初始管道執行會失敗,因為您需要更新 CodeBuild 服務角色,並具有從儲存庫提取的許可。

codecommit:GitPull IAM 許可新增至您的服務角色政策。如需在 IAM 主控台中更新政策的說明,請參閱 新增 CodeCommit 來源動作的 CodeBuild GitClone 許可 CodeCommit

步驟 4:檢視建置輸出中的儲存庫命令

檢視建置輸出
  1. 當您的服務角色更新成功時,請在失敗的 CodeBuild 階段選擇重試

  2. 管道成功執行後,在您的成功建置階段,選擇檢視詳細資訊

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

    命令會輸出README.md檔案內容、列出 目錄中的檔案、複製儲存庫、檢視日誌,以及執行 git describe --all