

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

# GitHub Enterprise Server 連線
<a name="connections-ghes"></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 Enterprise Server 來源動作，您可以選擇：
+ 使用 CodePipeline 主控台**建立管道**精靈或**編輯動作**頁面，選擇 **GitHub Enterprise Server** 提供者選項。請參閱 [建立連至 GitHub Enterprise Server 的連線 (主控台)](#connections-ghes-console) 以新增 動作。主控台可協助您建立主機資源和連線資源。
+ 使用 CLI 向`GitHubEnterpriseServer`提供者新增`CreateSourceConnection`動作的動作組態，並建立您的資源：
  + 若要建立連線資源，請參閱[建立主機並連線至 GitHub Enterprise Server (CLI)](#connections-ghes-cli)使用 CLI 建立主機資源和連線資源。
  + 使用 中`CreateSourceConnection`的範例動作組態[適用於 Bitbucket Cloud、GitHub、GitHub Enterprise Server、GitLab.com, 和 GitLab 自我管理動作的 CodeStarSourceConnection](action-reference-CodestarConnectionSource.md)來新增動作，如 所示[建立管道 (CLI)](pipelines-create.md#pipelines-create-cli)。

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

開始之前：
+ 您必須已使用 GitHub Enterprise Server 建立 帳戶，並在您的基礎設施上安裝 GitHub Enterprise Server 執行個體。
**注意**  
每個 VPC 一次只能與一個主機相關聯 (GitHub 企業伺服器執行個體) 相關聯。
+ 您必須已使用 GitHub Enterprise Server 建立程式碼儲存庫。

**Topics**
+ [建立連至 GitHub Enterprise Server 的連線 (主控台)](#connections-ghes-console)
+ [建立主機並連線至 GitHub Enterprise Server (CLI)](#connections-ghes-cli)

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

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

**注意**  
GitHub Enterprise Server 連線僅提供存取 GitHub Enterprise Server 帳戶所擁有的儲存庫，該儲存庫用於建立連線。

**開始之前：**

對於 GitHub Enterprise Server 的主機連線，您必須完成為連線建立主機資源的步驟。請參閱[管理連線的主機](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-hosts.html)。

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

**建立或編輯管道**

1. 登入 CodePipeline 主控台。

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

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

### 建立連至 GitHub Enterprise Server 的連線
<a name="connections-ghes-console-create"></a>

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

**重要**  
AWS CodeConnections 由於版本中的已知問題， 不支援 GitHub Enterprise Server 2.22.0 版。若要連線，請升級至 2.22.1 版或最新的可用版本。

**連線至 GitHub Enterprise Server**

1. 針對 **Connection name (連線名稱**)，請輸入連線的名稱。

1. 在 **URL** 中，輸入伺服器的端點。
**注意**  
如果提供的 URL 已經用於為連線設定 GitHub Enterprise Server，系統將提示您選擇先前為該端點建立的主機資源 ARN。

1. 如果您已將伺服器啟動到 Amazon VPC 中，且想與 VPC 連線，請選擇 **Use a VPC (使用 VPC)**，然後完成以下操作。

   1. 在 **VPC ID** 底下，選擇您的 VPC ID。請務必選擇安裝 GitHub Enterprise Server 執行個體的基礎設施之 VPC，或是可透過 VPN 或 Direct Connect 存取 GitHub Enterprise Server 執行個體的 VPC。

   1. 在 **Subnet ID (子網路 ID)** 底下，選擇 **Add (新增)**。在欄位中，選擇您要用於主機的子網路 ID。您最多可選擇 10 個子網路。

      請務必選擇安裝 GitHub Enterprise Server 執行個體的基礎設施之子網路，或是可透過 VPN 或 Direct Connect 存取已安裝 GitHub Enterprise Server 執行個體的子網路。

   1. 在 **Security group IDs (安全群組 ID)** 底下，選擇 **Add (新增)**。在欄位中，選擇您要用於主機的安全群組。您最多可以選擇 10 個安全群組。

      請務必選擇安裝 GitHub Enterprise Server 執行個體的基礎設施之安全群組，或是可透過 VPN 或 Direct Connect 存取已安裝 GitHub Enterprise Server 執行個體的安全群組。

   1. 如果您已設定私有 VPC，且已將 GitHub Enterprise Server 執行個體設定為使用非公有憑證授權機構執行 TLS 驗證，請在 **TLS certificate (TLS 憑證)** 中輸入您的憑證 ID。TLS 憑證值應該是憑證的公有金鑰。  
![\[主控台螢幕擷取畫面顯示設定 VPC 選項的建立 GitHub Enterprise Server 連線頁面。\]](http://docs.aws.amazon.com/zh_tw/codepipeline/latest/userguide/images/connections-create-ghes-screen-vpc.png)

1. 選擇 **Connect to GitHub Enterprise Server (連線至 GitHub Enterprise Server)**。建立的連線會顯示 **Pending (待定)** 狀態。系統會利用您提供的伺服器資訊為連線建立主機資源。主機名稱會使用 URL。

1. 選擇 **Update pending connection (更新待定連線)**。

1. 如果出現提示，請在 GitHub Enterprise 登入頁面上使用您的 GitHub Enterprise 憑證登入。

1. 在 **Create GitHub App (建立 GitHub 應用程式)** 頁面上，為應用程式選擇名稱。

1. 在 GitHub 授權頁面上，選擇**Authorize <app-name> (授權 <應用程式名稱>)**。

1. 在應用程式安裝頁面上，訊息顯示連接器應用程式已準備好進行安裝。如果您有多個組織，系統可能會提示您選擇要安裝應用程式的組織。

   選擇您要安裝應用程式的儲存庫設定。選擇 **Install (安裝)**。

1. 連線頁面會顯示建立的連線處於 **Available (可用)** 狀態。

### 步驟 3：儲存 GitHub Enterprise Server 來源動作
<a name="connections-ghes-console-save"></a>

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

**使用連線完成並儲存來源動作**

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

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

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

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

## 建立主機並連線至 GitHub Enterprise Server (CLI)
<a name="connections-ghes-cli"></a>

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

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

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

您可以使用 AWS Command Line Interface (AWS CLI) 為已安裝的連線建立主機。

**注意**  
一個 GitHub Enterprise Server 帳戶只能建立一個主機。所有連至特定 GitHub Enterprise Server 帳戶的連線都會使用相同的主機。

您可以使用主機來代表安裝第三方供應商的基礎設施之端點。使用 CLI 完成主機建立後，主機會處於**待定**狀態。然後，您可以設定或註冊主機，將其移至**可用**狀態。主機變為可用後，便可完成建立連線的步驟。

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

**重要**  
根據預設，透過 建立的主機 AWS CLI 處於 `Pending` 狀態。使用 CLI 建立主機之後，請使用 主控台或 CLI 來設定主機使其狀態為 `Available`。

**建立主機**

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

   ```
   aws codestar-connections create-host --name MyHost --provider-type GitHubEnterpriseServer --provider-endpoint "https://my-instance.dev"
   ```

   如果成功，此命令會傳回類似下列內容的主機 Amazon Resource Name (ARN) 資訊。

   ```
   {
       "HostArn": "arn:aws:codestar-connections:us-west-2:account_id:host/My-Host-28aef605"
   }
   ```

   完成此步驟後，主機會處於 `PENDING` 狀態。

1. 使用主控台完成主機設定，並將主機變為 `Available` 狀態。

**建立 GitHub Enterprise Server 的連線**

1. 開啟終端機 (Linux、macOS 或 Unix) 或命令提示 (Windows)。使用 AWS CLI 執行 **create-connection**命令，`--connection-name`為您的連線指定 `--host-arn`和 。

   ```
   aws codestar-connections create-connection --host-arn arn:aws:codestar-connections:us-west-2:account_id:host/MyHost-234EXAMPLE --connection-name MyConnection
   ```

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

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

1. 使用主控台來設定待定連線。

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"
                                     ]
                                 }
                             }
                         ]
                     }
                 }
             ]
     ```