

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

# 執行 CodeBuild 的 GitHub Enterprise Server 範例
<a name="sample-github-enterprise"></a>

AWS CodeBuild 支援 GitHub Enterprise Server 做為來源儲存庫。此範例示範如何在 GitHub Enterprise Server 儲存庫安裝憑證時設定 CodeBuild 專案。它還顯示如何啟用 Webhook，以便 CodeBuild 每次將程式碼變更推送到您的 GitHub Enterprise Server 儲存庫時重建原始程式碼。

**Topics**
+ [先決條件](#sample-github-enterprise-prerequisites)
+ [步驟 1：使用 GitHub Enterprise Server 建立建置專案並啟用 Webhook](#sample-github-enterprise-running)

## 先決條件
<a name="sample-github-enterprise-prerequisites"></a>

1. 為您的 CodeBuild 專案產生個人存取字符。建議您建立 GitHub Enterprise 使用者，並產生此使用者的個人存取字符。將其複製到剪貼簿，以便在建立 CodeBuild 專案時使用。如需詳細資訊，請參閱 GitHub Help 網站上的 [Creating a personal access token for the command line](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/)。

   當您建立個人存取字符時，請在定義中包含 **repo** 範圍。  
![\[定義中的儲存庫範圍。\]](http://docs.aws.amazon.com/zh_tw/codebuild/latest/userguide/images/scopes.png)

1. 從 GitHub Enterprise Server 下載您的憑證。CodeBuild 使用憑證來建立與儲存庫的信任 SSL 連線。

   **Linux/macOS 用戶端：**

   從終端機視窗中，執行下列命令：

   ```
   echo -n | openssl s_client -connect HOST:PORTNUMBER \
       | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /folder/filename.pem
   ```

   將命令中的預留位置取代為下列值：

   *HOST*。GitHub Enterprise Server 儲存庫的 IP 地址。

   *PORTNUMBER*。您用來連線的連接埠號碼 (例如 443)。

   *folder*。從中下載您憑證的資料夾。

   *filename*。您憑證檔案的檔案名稱。
**重要**  
將憑證儲存為 .pem 檔案。

   **Windows 用戶端：**

   使用瀏覽器從 GitHub Enterprise 下載您的憑證。若要查看網站的憑證詳細資訊，請選擇鎖定圖示。如需如何匯出憑證的資訊，請參閱您的瀏覽器文件。
**重要**  
將憑證儲存為 .pem 檔案。

1. 將憑證檔案上傳至 S3 儲存貯體。如需如何建立 S3 儲存貯體的資訊，請參閱[如何建立 S3 儲存貯體？](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) 如需如何將物件上傳至 S3 儲存貯體的資訊，請參閱[如何將檔案和資料夾上傳至儲存貯體？](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)
**注意**  
此儲存貯體必須與 建置位於相同的 AWS 區域。例如，如果您指示 CodeBuild 在美國東部 （俄亥俄） 區域執行組建，則儲存貯體必須位於美國東部 （俄亥俄） 區域。

## 步驟 1：使用 GitHub Enterprise Server 建立建置專案並啟用 Webhook
<a name="sample-github-enterprise-running"></a>

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

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

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

1. 在**來源**中，在**來源提供者**中選擇 **GitHub Enterprise Server**。
   + 選擇**管理帳戶登入**資料，然後選擇**個人存取字符**。針對**服務**，選擇 **Secrets Manager （建議）**，然後設定您的秘密。然後在 中**，GitHub Enterprise 個人存取字符**中，輸入您的個人存取字符，然後選擇**儲存**。
   + 在 **Repository URL (儲存庫 URL)** 中，輸入儲存庫的路徑，包括儲存庫的名稱。
   + 展開 **Additional configuration (其他組態)**。
   + 選取 **Rebuild every time a code change is pushed to this repository (在每次將程式碼變更推送至儲存庫時重建)**，以便每次程式碼變更推送至此儲存庫時就重建。
   + 選取 **Enable insecure SSL (啟用不安全 SSL)**，在連線至 GitHub Enterprise Server 專案儲存庫時忽略 SSL 警告。
**注意**  
建議只將 **Enable insecure SSL (啟用不安全 SSL)** 用於測試。不應用於生產環境。  
![\[GitHub Enterprise Server 專案儲存庫組態。\]](http://docs.aws.amazon.com/zh_tw/codebuild/latest/userguide/images/github-enterprise.png)

1. 在 **Environment (環境)** 中：

   針對 **Environment image (環境映像)**，執行下列其中一項作業：
   + 若要使用由 管理的 Docker 映像 AWS CodeBuild，請選擇**受管映像**，然後從**作業系統**、**執行期 （些）**、**映像**和**映像版本**進行選擇。若可用，請從 **Environment type (環境類型)** 進行選擇。
   + 若要使用另一個 Docker 映像，請選擇 **Custom image (自訂映像)**。針對**環境類型**，選擇 **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使用者指南》**中的 [What Is AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/)。

1. 在 **Service role (服務角色)** 中，執行下列其中一項作業：
   + 如果您沒有 CodeBuild 服務角色，請選擇**新服務角色**。在**角色名稱**中，輸入新角色的名稱。
   + 如果您有 CodeBuild 服務角色，請選擇**現有服務角色**。在**角色 ARN** 中，選擇服務角色。
**注意**  
當您使用 主控台建立或更新組建專案時，您可以同時建立 CodeBuild 服務角色。根據預設，此角色只能與該建置專案搭配運作。如果您使用主控台將此服務角色與另一個建置專案建立關聯，則會更新此角色以與其他建置專案搭配運作。服務角色最多可以與 10 個組建專案搭配運作。

1. 展開 **Additional configuration (其他組態)**。

   如果您希望 CodeBuild 使用您的 VPC：
   + 針對 **VPC**，選擇 CodeBuild 使用的 VPC ID。
   + 對於 **VPC 子網路**，選擇包含 CodeBuild 使用之資源的子網路。
   + 針對 **VPC 安全群組**，選擇 CodeBuild 用來允許存取 VPCs 中資源的安全群組。

   如需詳細資訊，請參閱[AWS CodeBuild 搭配 Amazon Virtual Private Cloud 使用](vpc-support.md)。

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

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

1. 在 **Artifacts (成品)** 中，針對 **Type (類型)**，執行下列其中一項操作：
   + 如果您不要建立建置輸出成品，則請選擇 **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` 描述。

1. 針對 **Cache type (快取類型)**，選擇以下其中一項：
   + 如果您不想要使用快取，請選擇 **No cache (無快取)**。
   + 如果您想要使用 Amazon S3 快取，請選擇 **Amazon S3**，然後執行下列動作：
     + 針對 **Bucket (儲存貯體)**，選擇存放快取的 S3 儲存貯體名稱。
     + （選用） 對於**快取路徑字首**，輸入 Amazon S3 路徑字首。**Cache path prefix (快取路徑字首)** 值類似目錄名稱。它可讓您將快取存放至儲存貯體的相同目錄下方。
**重要**  
請不要在路徑字首結尾附加尾端斜線 (/)。
   +  如果您想要使用本機快取，請選擇 **Local (本機)**，然後選擇一或多個本機快取模式。
**注意**  
「Docker layer cache」(Docker 層快取) 模式僅適用於 Linux。如果您選擇此模式，您的專案必須以特殊權限模式執行。

   使用快取可節省大量建置時間，因為建置環境的可重複使用部分存放在快取中，並用於各建置。如需在 buildspec 檔案中指定快取的詳細資訊，請參閱[Buildspec 語法](build-spec-ref.md#build-spec-ref-syntax)。如需快取的詳細資訊，請參閱「[快取建置以改善效能](build-caching.md)」。

1. 選擇 **Create build project (建立建置專案)**。在組建專案頁面上，選擇 **Start build (啟動組建)**。