

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

# 執行 CodeBuild 的「Bitbucket pull request and Webhook filter」範例
<a name="sample-bitbucket-pull-request"></a>

AWS CodeBuild 當來源儲存庫為 Bitbucket 時， 支援 Webhook。這表示對於在 Bitbucket 儲存庫中存放其原始碼的 CodeBuild 組建專案，Webhook 可用來在每次將程式碼變更推送至儲存庫時重建原始碼。如需詳細資訊，請參閱[Bitbucket Webhook 事件](bitbucket-webhook.md)。

此範例示範如何使用 Bitbucket 儲存庫建立提取請求。它還說明如何使用 Bitbucket Webhook 來觸發 CodeBuild 來建立專案的建置。

**注意**  
使用 Webhook 時，使用者可能會觸發非預期的建置。若要降低此風險，請參閱 [使用 Webhook 的最佳實務](webhooks.md#webhook-best-practices)。

**Topics**
+ [先決條件](#sample-bitbucket-pull-request-prerequisites)
+ [步驟 1：使用 Bitbucket 建立建置專案並啟用 Webhook](#sample-bitbucket-pull-request-create)
+ [步驟 2：使用 Bitbucket Webhook 觸發組建](#sample-bitbucket-pull-request-trigger)

## 先決條件
<a name="sample-bitbucket-pull-request-prerequisites"></a>

 若要執行此範例，您必須將 AWS CodeBuild 專案與您的 Bitbucket 帳戶連線。

**注意**  
 CodeBuild 已更新其使用 Bitbucket 的許可。如果您之前已將專案連線至 Bitbucket，但現在收到 Bitbucket 連線錯誤，則必須重新連線以授予 CodeBuild 許可來管理您的 Webhook。

## 步驟 1：使用 Bitbucket 建立建置專案並啟用 Webhook
<a name="sample-bitbucket-pull-request-create"></a>

 下列步驟說明如何使用 Bitbucket 建立 AWS CodeBuild 專案做為來源儲存庫，並啟用 Webhook。

1. 在 https：//[https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) 開啟 AWS CodeBuild 主控台。

1.  如果顯示 CodeBuild 資訊頁面，請選擇**建立組建專案**。否則，請在導覽窗格中展開**組**建，選擇**組建專案**，然後選擇**建立組建專案**。

1. 選擇 **Create build project (建立建置專案)**。

1. 在 **Project configuration (專案組態)** 中：  
**Project name (專案名稱)**  
輸入此建置專案的名稱。組建專案名稱在每個 AWS 帳戶中必須是唯一的。您也可以包含建置專案的選用描述，以協助其他使用者了解此專案的用途。

1. 在 **Source (來源)** 中：  
**來源提供者**  
選擇 **Bitbucket**。依照指示來連接 （或重新連線） 與 Bitbucket，然後選擇**授權**。  
**儲存庫**  
在**我的 Bitbucket 帳戶中選擇儲存庫**。  
如果您先前尚未連線到 Bitbucket 帳戶，請輸入您的 Bitbucket 使用者名稱和密碼，然後選取**儲存 Bitbucket 登入**資料。  
**Bitbucket 儲存庫**  
輸入 Bitbucket 儲存庫的 URL。

1. 在**主要來源 Webhook 事件**中，選取下列項目。
**注意**  
只有在您在上一個步驟**的我的 Bitbucket 帳戶中選擇儲存庫**時，才會顯示**主要來源 Webhook 事件**區段。

   1. 當您建立專案時，請選取 **Rebuild every time a code change is pushed to this repository (在每次將程式碼變更推送至此儲存庫時重建)**。

   1. 從 **Event type (事件類型)**，選擇一或多個事件。

   1. 若要篩選事件觸發組建的時間，請在 **Start a build under these conditions (在這些情況下開始組建)** 下新增一或多個選用的篩選條件。

   1. 若要篩選何時不觸發事件，請在 **Don't start a build under these conditions (在這些情況下不開始組建)** 下新增一或多個選用的篩選條件。

   1. 如有需要，請選擇**新增篩選條件群組**以新增另一個篩選條件群組。

   如需 Bitbucket Webhook 事件類型和篩選條件的詳細資訊，請參閱 [Bitbucket Webhook 事件](bitbucket-webhook.md)。

1. 在 **Environment (環境)** 中：  
**環境映像**  
選擇下列其中一項：    
若要使用由 管理的 Docker 映像 AWS CodeBuild：  
選擇**受管映像**，然後從**作業系統**、**執行時間**、**映像**和**映像版本**進行選擇。若可用，請從 **Environment type (環境類型)** 進行選擇。  
若要使用另一個 Docker 映像：  
選擇**自訂映像**。針對**環境類型**，選擇 **ARM**、**Linux**、**Linux GPU** 或 **Windows**。如果您選擇**其他登錄**檔，請針對**外部登錄檔 URL**，使用 格式，在 Docker Hub 中輸入 Docker 映像檔的名稱和標籤`docker repository/docker image name`。如果您選擇 **Amazon ECR**，請使用 **Amazon ECR 儲存庫**和 **Amazon ECR 映像**來選擇 AWS 帳戶中的 Docker 映像。  
若要使用私有 Docker 映像：  
選擇**自訂映像**。針對**環境類型**，選擇 **ARM**、**Linux**、**Linux GPU** 或 **Windows**。針對 **Image registry (映像登錄)** 選擇 **Other registry (其他登錄)**，然後輸入私人 Docker 映像的憑證的 ARN。登入資料必須由 Secrets Manager 建立。如需詳細資訊，請參閱*AWS Secrets Manager 《 使用者指南*》中的[什麼是 AWS Secrets Manager？](https://docs.aws.amazon.com/secretsmanager/latest/userguide/)。  
**服務角色**  
選擇下列其中一項：  
   + 如果您沒有 CodeBuild 服務角色，請選擇**新服務角色**。在**角色名稱**中，輸入新角色的名稱。
   + 如果您有 CodeBuild 服務角色，請選擇**現有服務角色**。在**角色 ARN** 中，選擇服務角色。
當您使用 主控台建立或更新組建專案時，您可以同時建立 CodeBuild 服務角色。根據預設，此角色只能與該建置專案搭配運作。如果您使用主控台將此服務角色與另一個建置專案建立關聯，則會更新此角色以與其他建置專案搭配運作。服務角色最多可以與 10 個組建專案搭配運作。

1. 在 **Buildspec** 中，執行下列其中一項操作：
   + 選擇**使用 buildspec 檔案**以使用來源碼根目錄中的 buildspec.yml 檔案。
   + 選擇**插入建置命令**以使用主控台插入建置命令。

   如需更多資訊，請參閱[Buildspec 參考](build-spec-ref.md)。

1. 在 **Artifacts (成品)** 中：  
**類型**  
選擇下列其中一項：  
   + 如果您不要建立建置輸出成品，則請選擇 **No artifacts (無成品)**。
   + 若要將建置輸出存放在 S3 儲存貯體，請選擇 **Amazon S3**，然後執行下列動作：
     + 如果您想要使用專案名稱做為組建輸出 ZIP 檔案或資料夾名稱，則請將 **Name (名稱)** 保留空白。否則請輸入名稱。根據預設，成品名稱是專案名稱。如果想使用不同的名稱，請在成品名稱方塊中輸入名稱。如果要輸出 ZIP 檔案，請包含 zip 副檔名。
     + 針對 **Bucket name (儲存貯體名稱)**，選擇輸出儲存貯體的名稱。
     + 如果您在本程序稍早選擇 **Insert build commands (插入組建命令)**，然後針對 **Output files (輸出檔案)**，輸入要放入組建輸出 ZIP 檔案或資料夾之組建中的檔案位置。針對多個位置，以逗號區隔每個位置 (例如，`appspec.yml, target/my-app.jar`)。如需詳細資訊，請參閱[Buildspec 語法](build-spec-ref.md#build-spec-ref-syntax)中的 `files` 描述。  
**其他組態**  
展開 **Additional configuration (其他組態)**，並適當地設定選項。

1. 選擇 **Create build project (建立建置專案)**。在 **Review (檢閱)** 頁面上，選擇 **Start build (開始建置)** 來執行建置。

## 步驟 2：使用 Bitbucket Webhook 觸發組建
<a name="sample-bitbucket-pull-request-trigger"></a>

對於使用 Bitbucket Webhook 的專案，當 Bitbucket 儲存庫偵測到原始程式碼變更時， 會 AWS CodeBuild 建立組建。

1. 在 https：//[https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) 開啟 AWS CodeBuild 主控台。

1. 在導覽窗格上，選擇 **Build projects (建置專案)**，然後選擇與帶有 Webhook 的 Bitbucket 儲存庫相關聯的專案。如需建立 Bitbucket Webhook 專案的詳細資訊，請參閱 [步驟 1：使用 Bitbucket 建立建置專案並啟用 Webhook](#sample-bitbucket-pull-request-create)。

1. 在專案的 Bitbucket 儲存庫中對程式碼做些變更。

1. 在 Bitbucket 儲存庫上建立提取請求。如需詳細資訊，請參閱[提出提取請求](https://www.atlassian.com/git/tutorials/making-a-pull-request)。

1. 在 Bitbucket Webhook 頁面中，選擇 **View request (檢視請求)** 來查看最近事件的清單。

1. 選擇**檢視詳細資訊**，以查看 CodeBuild 傳回之回應的詳細資訊。這看起來類似下述：

   ```
   "response":"Webhook received and build started: https://us-east-1.console.aws.amazon.com/codebuild/home..."
   "statusCode":200
   ```

1. 導覽至 Bitbucket 提取請求頁面來查看組建狀態。