從 GitHub Enterprise 建構存放區

Cloud Build 可讓您建立觸發條件,從 GitHub Enterprise 託管的存放區建構。您可以因應事件 (例如與 GitHub Enterprise 存放區相關聯的提交推送或合併要求) 執行建構作業。

本頁說明如何為 GitHub Enterprise 執行個體啟用建構觸發條件。詳情請參閱「Cloud Build 觸發條件」和「Cloud Build 存放區」。

事前準備

按照操作說明連結至 GitHub Enterprise 主機
  • Enable the Cloud Build and Secret Manager APIs.

    Enable the APIs

如要為 GitHub Enterprise 存放區建立觸發條件,您必須在 Google Cloud 和存放區之間建立連線。如要透過 Google Cloud中的 GitHub Enterprise 應用程式建立連線,請參閱「連結至 GitHub Enterprise 存放區」。

建立 GitHub Enterprise 觸發條件

本節說明如何建立觸發條件,並連結至 GitHub Enterprise 安裝項目。如要在私人網路中使用 GitHub Enterprise 觸發程序,請參閱「從私人網路中的 GitHub Enterprise 建構存放區」一文,瞭解進一步的操作說明。

Google Cloud 控制台

如要使用 Google Cloud 控制台建立 GitHub Enterprise 觸發條件,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中開啟「觸發條件」頁面。

    開啟「Triggers」(觸發條件) 頁面

  2. 選取 Google Cloud 專案並按一下「開啟」

  3. 按一下「建立觸發條件」

  4. 輸入下列觸發條件設定:

    • 名稱:輸入觸發條件的名稱。

    • 「區域」:選取觸發條件的區域

      • 如果與觸發條件相關聯的建構設定檔指定了私人集區,Cloud Build 就會使用該私人集區執行建構作業。在這種情況下,您在觸發條件中指定的區域必須與您建立私人集區的區域相符。
      • 如果與觸發條件相關聯的建構設定檔指定私人集區,Cloud Build 會使用預設集區,在與觸發條件相同的區域中執行建構。

    • 說明 (選填):輸入觸發條件的說明。

    • 「Event」(事件):選取要叫用觸發條件的存放區事件。

      • 推送至分支版本:設定觸發條件,在修訂特定分支版本時啟動建構。

      • 推送新標記:設定觸發條件,在修訂版本包含特定標記時啟動建構。

      • 提取要求:設定觸發條件,在提取要求修訂時啟動建構。

    • 來源:設定 GitHub Enterprise 存放區的相關資訊:

      • 存放區服務:選取 Cloud Build。

      • 存放區產生:選取「Developer Connect」做為來源。

      • 存放區:從可用存放區清單中選取存放區。

      • 分支版本標記:指定要比對分支版本或標記值的規則運算式。如要瞭解可接受的規則運算式語法,請參閱 RE2 語法

      • 註解控制項:如果選取「Pull request」(提取要求) 做為「Event」(事件),請選擇下列其中一個選項,控管觸發條件是否自動執行建構作業:

        • 必要 (擁有者和協作者除外):存放區擁有者或協作者建立或更新提取要求時,觸發程序會自動執行建構作業。如果外部貢獻者啟動動作,只有在擁有者或協作者對提取要求加註 /gcbrun 時,系統才會執行建構作業。

        • 必要:當任何貢獻者建立或更新提取要求時,只有在擁有者或協作者在提取要求中留言 /gcbrun 後,系統才會執行建構作業。每當提取要求有變更時,系統就會執行建構作業。

        • 不需設定:任何貢獻者建立或更新提取要求時,觸發程序會自動執行建構作業。

    • 設定:選取遠端存放區中的建構設定檔,或建立內嵌建構設定檔,以用於建構作業。

      • 類型:選取要用於建構作業的設定類型。
        • 自動偵測:如果存放區中有 cloudbuild.yamlDockerfile,Cloud Build 會自動偵測設定類型。
        • Cloud Build 設定檔 (YAML 或 JSON): 使用建構設定檔進行設定。
        • Dockerfile:使用 Dockerfile 進行設定。
        • Buildpacks:使用建構包進行設定。
      • 位置:指定設定的位置。

        • 存放區:如果設定檔位於遠端存放區,請提供建構設定檔Dockerfile 目錄的位置,以及產生的映像檔名稱。如果您的設定是 Dockerfile,您可以選擇性地為建構作業提供逾時時間。提供 Dockerfile 和映像檔名稱之後,您會看見建構將執行的 docker build 指令預覽。
        • 內嵌:如果您選取「Cloud Build 設定檔 (yaml 或 json)」做為設定選項,可以內嵌指定建構設定。按一下「開啟編輯器」,在Google Cloud 控制台中使用 YAML 或 JSON 語法編寫建構設定檔。按一下「完成」即可儲存建構設定。
    • 替代變數 (選用):如果您選取 Cloud Build 設定檔做為建構設定選項,可以使用這個欄位定義觸發程序專用的替代變數。舉例來說,假設您要建立多個觸發條件,每個觸發條件都會將應用程式部署至特定環境。您可以在建構設定檔中指定要將應用程式部署至哪個環境,然後使用這個欄位定義替代變數,指定這個觸發程序應部署至哪個環境。如要瞭解如何在建構設定檔中指定替代值,請參閱「替換變數值」。

    • 建構作業記錄檔 (選用):勾選這個方塊,將建構作業記錄檔傳送至 GitHub。如要瞭解如何查看建構記錄,請參閱「查看建構記錄」。

    • 服務帳戶:選取要用於叫用觸發條件的服務帳戶。如果組織政策允許使用舊版 Cloud Build 服務帳戶,您可以將這個欄位留空,使用舊版服務帳戶。否則,您必須選取要使用的特定服務帳戶,即使是 Compute Engine 預設服務帳戶也一樣。

  5. 按一下「建立」即可儲存建構觸發條件。

如要使用 gcloud 指令建立 GitHub 觸發條件,請參閱建立建構觸發條件gcloud 指令。

gcloud CLI

如要使用 gcloud 指令建立 GitHub Enterprise 觸發條件,請執行下列指令:

    gcloud alpha builds triggers create developer connect
      --name=TRIGGER_NAME \
      --git-repository-link=projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/gitRepositoryLinks/REPO_NAME \
      --branch-pattern=BRANCH_PATTERN # or --tag-pattern=TAG_PATTERN \
      --build-config=BUILD_CONFIG_FILE \
      --region=REGION \
      --service-account=SERVICE-ACCOUNT

其中:

  • TRIGGER_NAME 是觸發條件的名稱。
  • PROJECT_ID 是您的 Google Cloud 專案 ID。
  • REGION 是觸發程序的區域
  • CONNECTION_NAME 是 GitHub Enterprise 連線的名稱。
  • GIT_REPOSITORY_LINK 是 Git 存放區的連結。
  • BRANCH_PATTERN 是存放區中的分支名稱,用於叫用建構作業。
  • TAG_PATTERN 是存放區中的標記名稱,用於叫用建構作業。
  • BUILD_CONFIG_FILE 是建構設定檔的路徑。
  • SERVICE-ACCOUNT 是用於觸發條件和建構作業的服務帳戶。

API

如要使用 API 建立 GitHub Enterprise 觸發條件,請使用下列 JSON 範本:

  {
      "filename": "cloudbuild.yaml",
      "name": "TRIGGER_NAME",
      "description": "TRIGGER_DESCRIPTION",
      "serviceAccount": "SERVICE_ACCOUNT",
      "github": {
          "owner": "OWNER",
          "name": "REPO_NAME",
          "push": {
              "branch": ".*"
          },
      "enterprise_config_resource_name": "projects/PROJECT_NUMBER/githubEnterpriseConfigs/CONNECTION_ID"
      
      },
      "include_build_logs": include-build-logs-value
  }

其中:

  • TRIGGER_NAME 是觸發條件的名稱。
  • TRIGGER_DESCRIPTION 是觸發條件的說明。
  • SERVICE_ACCOUNT 是用於觸發條件和建構作業的服務帳戶。
  • OWNER 是 GitHub 存放區的擁有者。
  • REPO_NAME 是 GitHub 存放區的名稱。
  • PROJECT_NUMBER 是您的 Google Cloud 專案編號。
  • CONNECTION_ID與 GitHub Enterprise 主機連線的 ID。在 API 中,這項連線會以 GitHubEnterpriseConfig 資源表示,或是 Cloud Build 與 GitHub Enterprise Server 之間的關聯。
  • include-build-logs-value 是選用 include_build_logs 欄位的值。如果這個欄位的值為 INCLUDE_BUILD_LOGS_SPECIFIED,存放區就會顯示建構記錄。

在終端機中輸入下列 curl 指令:

curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" -H "x-goog-user-project: PROJECT_NUMBER" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/triggers -d @trigger.json

其中:

  • PROJECT_NUMBER 是您的 Google Cloud 專案編號。
  • PROJECT_ID 是您的 Google Cloud 專案 ID。

資料共用

Cloud Build 傳送至 GitHub Enterprise 的資料可協助您依名稱識別觸發條件,並在 GitHub Enterprise 上查看建構結果。

目前 Cloud Build 和 GitHub Enterprise 會共用下列資料:

  • Cloud 專案 ID
  • 觸發條件名稱
  • 建構作業記錄檔

如果您在 2020 年 8 月前建立觸發條件,專案可能未啟用資料共用功能。如要為專案中的所有 GitHub Enterprise 觸發條件啟用資料共用功能,請按一下「Cloud Build 資料共用」分頁中的「啟用」

如果已為 GitHub Enterprise 存放區啟用必要狀態檢查,啟用資料共用功能可能會暫時中斷狀態檢查。您可以調整狀態檢查設定,依下列方式尋找觸發條件名稱:

  • 在 GitHub Enterprise 存放區中停用任何 Cloud Build 專用的必要檢查
  • 確保 Cloud Build 已啟用資料共用功能
  • 在 Cloud Build 中執行新的建構作業,將狀態發布至存放區
  • 重新啟用必要狀態檢查、選取觸發條件名稱

後續步驟