

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

# GitHub 連線
<a name="connections-github"></a>

您可以使用連線來授權和建立組態，將第三方供應商與您的 AWS 資源建立關聯。

**注意**  
您可以使用另一個 之間的共用連線，而不是在帳戶中建立或使用現有的連線 AWS 帳戶。請參閱 [使用與其他 帳戶共用的連線](connections-shared.md)。

**注意**  
此功能不適用於亞太區域 （香港）、亞太區域 （海德拉巴）、亞太區域 （雅加達）、亞太區域 （墨爾本）、亞太區域 （大阪）、非洲 （開普敦）、中東 （巴林）、中東 （阿拉伯聯合大公國）、歐洲 （西班牙）、歐洲 （蘇黎世）、以色列 （特拉維夫） 或 AWS GovCloud （美國西部） 區域。若要參考其他可用的動作，請參閱 [與 CodePipeline 的產品和服務整合](integrations.md)。如需歐洲 （米蘭） 區域中此動作的考量，請參閱 中的備註[適用於 Bitbucket Cloud、GitHub、GitHub Enterprise Server、GitLab.com, 和 GitLab 自我管理動作的 CodeStarSourceConnection](action-reference-CodestarConnectionSource.md)。

若要在 CodePipeline 中為您的 GitHub 或 GitHub Enterprise Cloud 儲存庫新增來源動作，您可以選擇：
+ 使用 CodePipeline 主控台**建立管道**精靈或**編輯動作**頁面，選擇 **GitHub （透過 GitHub 應用程式）** 提供者選項。請參閱 [建立連至 GitHub Enterprise Server 的連線 (主控台)](connections-ghes.md#connections-ghes-console) 以新增 動作。主控台可協助您建立連線資源。
**注意**  
如需教學課程，引導您如何新增 GitHub 連線，並使用管道中的**完整複製**選項來複製中繼資料，請參閱[教學課程：搭配 GitHub 管道來源使用完整複製](tutorials-github-gitclone.md)。
+ 使用 CLI 透過 中顯示的 CLI 步驟，向`GitHub`提供者新增`CodeStarSourceConnection`動作的動作組態[建立管道 (CLI)](pipelines-create.md#pipelines-create-cli)。

**注意**  
您也可以使用**設定**下的開發人員工具主控台建立連線。請參閱[建立連線](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-create.html)。

開始之前：
+ 您必須已使用 GitHub 建立 帳戶。
+ 您必須已建立 GitHub 程式碼儲存庫。
+ 如果您的 CodePipeline 服務角色是在 2019 年 12 月 18 日之前建立的，您可能需要更新其用於 AWS CodeStar 連線`codestar-connections:UseConnection`的許可。如需說明，請參閱[將許可新增至 CodePipeline 服務角色](how-to-custom-role.md#how-to-update-role-new-services)。

**注意**  
如要建立連線，您必須是 GitHub 組織擁有者。對於不在組織下的儲存庫，您必須是儲存庫擁有者。

**Topics**
+ [建立連至 GitHub 的連線 (主控台)](#connections-github-console)
+ [建立連至 GitHub 的連線 (CLI)](#connections-github-cli)

## 建立連至 GitHub 的連線 (主控台)
<a name="connections-github-console"></a>

使用這些步驟來使用 CodePipeline 主控台為您的 GitHub 或 GitHub Enterprise Cloud 儲存庫新增連線動作。

**注意**  
在這些步驟中，您可以在儲存庫**存取下選取特定儲存庫**。CodePipeline 無法存取或顯示未選取的任何儲存庫。

### 步驟 1：建立或編輯管道
<a name="connections-github-console-action"></a>

1. 登入 CodePipeline 主控台。

1. 選擇下列其中一項。
   + 選擇 以建立管道。依照*建立管道*中的步驟完成第一個畫面，然後選擇**下一步**。在**來源**頁面的**來源提供者**下，選擇 **GitHub （透過 GitHub 應用程式）**。
   + 選擇 以編輯現有的管道。選擇**編輯**，然後選擇**編輯階段**。選擇 以新增或編輯來源動作。在**編輯動作**頁面**的動作名稱**下，輸入動作的名稱。在**動作提供者**中，選擇 **GitHub （透過 GitHub 應用程式）**。

1. 執行以下任意一項：
   + 在**連線**下，如果您尚未建立與提供者的連線，請選擇**連線至 GitHub**。繼續步驟 2：建立 GitHub 的連線。
   + 在**連線**下，如果您已建立與供應商的連線，請選擇連線。繼續步驟 3：儲存連線的來源動作。

### 步驟 2：建立 GitHub 的連線
<a name="connections-github-console-create"></a>

選擇建立連線後，即會顯示**連線至 GitHub** 頁面。

![\[顯示初始 GitHub 連線頁面的主控台螢幕擷取畫面。\]](http://docs.aws.amazon.com/zh_tw/codepipeline/latest/userguide/images/github-conn.png)


**建立連至 GitHub 的連線**

1. 在 **GitHub connection settings** (GitHub 連線設定) 之下，您的連線名稱會顯示於 **Connection name** (連線名稱) 中。選擇**連線到 GitHub**。隨即會顯示存取請求頁面。

1. 選擇**授權 AWS GitHub 連接器**。連線頁面會出現，並顯示 **GitHub Apps (GitHub 應用程式)** 欄位。  
![\[主控台螢幕擷取畫面顯示包含 GitHub 應用程式欄位的初始 GitHub 連線頁面。\]](http://docs.aws.amazon.com/zh_tw/codepipeline/latest/userguide/images/github-conn-access-app.png)

1. 在 **GitHub Apps (GitHub 應用程式)** 底下，選擇應用程式安裝，或選擇 **Install a new app (安裝新應用程式)** 以建立安裝。

   您可以為您連至特定供應商的所有連線安裝一個應用程式。如果您已安裝 AWS Connector for GitHub 應用程式，請選擇它並略過此步驟。
**注意**  
如果您想要建立[使用者存取權杖](https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app)，請確定您已安裝 AWS Connector for GitHub 應用程式，然後將應用程式安裝欄位保留空白。CodeConnections 將使用使用者存取字符進行連線。

1. 在**安裝 GitHub AWS 連接器**頁面上，選擇您要安裝應用程式的帳戶。
**注意**  
您只能為每個 GitHub 帳戶安裝一次應用程式。如果您先前已安裝應用程式，可以選擇 **Configure (設定)**，繼續前往應用程式安裝的修改頁面，或者您可以使用上一步按鈕返回主控台。

1. 在**安裝 GitHub AWS 連接器**頁面上，保留預設值，然後選擇**安裝**。

1. 在 **Connect to GitHub (連線至 GitHub)** 頁面上，新安裝的連線 ID 會顯示在 **GitHub Apps (GitHub 應用程式)** 中。選擇**連線**。

### 步驟 3：儲存您的 GitHub 來源動作
<a name="connections-github-console-save"></a>

在**編輯動作**頁面上使用這些步驟，將來源動作與連線資訊一起儲存。

**儲存您的 GitHub 來源動作**

1. 在 **Repository name (儲存庫名稱)** 中，選擇第三方儲存庫的名稱。

1. 如果您的動作是 CodeConnections 動作，您可以在**管道觸發**下新增觸發。若要設定管道觸發組態並選擇性地使用觸發來篩選，請參閱 中的更多詳細資訊[使用程式碼推送或提取請求事件類型新增觸發](pipelines-filter.md)。

1. 在 **Output artifact format (輸出成品格式)** 中，您必須選擇成品的格式。
   + 若要使用預設方法儲存 GitHub 動作的輸出成品，請選擇 **CodePipeline 預設**。動作會從 GitHub 儲存庫存取檔案，並將成品存放在管道成品存放區中的 ZIP 檔案中。
   + 若要存放包含儲存庫 URL 參考的 JSON 檔案，以便下游動作可以直接執行 Git 命令，請選擇 **Full clone (完整複製)**。此選項只能由 CodeBuild 下游動作使用。

     如果您選擇此選項，您將需要更新 CodeBuild 專案服務角色的許可，如 所示[新增連線至 Bitbucket、GitHub、GitHub Enterprise Server 或 GitLab.com 的 CodeBuild GitClone 許可 GitLab.com](troubleshooting.md#codebuild-role-connections)。如需示範如何使用**完整複製**選項的教學課程，請參閱 [教學課程：搭配 GitHub 管道來源使用完整複製](tutorials-github-gitclone.md)。

1. 在精靈上選擇**下一步**，或在**編輯動作**頁面上選擇**儲存**。

## 建立連至 GitHub 的連線 (CLI)
<a name="connections-github-cli"></a>

您可以使用 AWS Command Line Interface (AWS CLI) 來建立連線。

若要這麼做，請使用 **create-connection** 命令。

**重要**  
根據預設，透過 AWS CLI 或 建立的連線 AWS CloudFormation 處於 `PENDING` 狀態。建立與 CLI 或 的連線後 CloudFormation，請使用 主控台來編輯連線，使其成為狀態 `AVAILABLE`。

**建立連線**

1. 開啟終端機 (Linux、macOS 或 Unix) 或命令提示 (Windows)。使用 AWS CLI 執行 **create-connection**命令，`--connection-name`為您的連線指定 `--provider-type`和 。在此範例中，第三方供應商名稱為 `GitHub`，而指定的連線名稱為 `MyConnection`。

   ```
   aws codestar-connections create-connection --provider-type GitHub --connection-name MyConnection
   ```

   如果成功，此命令會傳回類似下列內容的連線 ARN 資訊。

   ```
   {
       "ConnectionArn": "arn:aws:codestar-connections:us-west-2:account_id:connection/aEXAMPLE-8aad-4d5d-8878-dfcab0bc441f"
   }
   ```

1. 使用主控台完成連線。如需詳細資訊，請參閱[更新待定連線](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-update.html)。

1. 管道預設為在程式碼推送至連線來源儲存庫時偵測變更。若要設定手動發行或 Git 標籤的管道觸發組態，請執行下列其中一項操作：
   + 若要將管道觸發組態設定為僅從手動版本開始，請將以下行新增至組態：

     ```
     "DetectChanges": "false",
     ```
   + 若要設定管道觸發組態以使用觸發條件進行篩選，請參閱 中的更多詳細資訊[使用程式碼推送或提取請求事件類型新增觸發](pipelines-filter.md)。例如，以下內容會新增至管道 JSON 定義的管道層級。在此範例中， `release-v0`和 `release-v1`是要包含的 Git 標籤，而 `release-v2`是要排除的 Git 標籤。

     ```
     "triggers": [
                 {
                     "providerType": "CodeStarSourceConnection",
                     "gitConfiguration": {
                         "sourceActionName": "Source",
                         "push": [
                             {
                                 "tags": {
                                     "includes": [
                                         "release-v0", "release-v1"
                                     ],
                                     "excludes": [
                                         "release-v2"
                                     ]
                                 }
                             }
                         ]
                     }
                 }
             ]
     ```