連線至 GitLab 主機

本頁說明如何將 GitLab 主機連結至 Cloud Build。

事前準備

  • Enable the Cloud Build and Secret Manager APIs.

    Enable the APIs

連線至 GitLab 主機

為 GitLab 執行個體建立主機連線之前,您必須在 GitLab 中建立個人存取權杖,方法如下:

  1. 登入 GitLab 執行個體。

  2. 在 GitLab 頁面中,按一下右上角的顯示圖片。

  3. 按一下 [編輯個人資料]

  4. 在左側欄中選取「存取權杖」

    畫面會顯示「Personal Access Tokens」頁面。

  5. 建立具備 api 範圍的存取權杖,用於連結及取消連結存放區。

  6. 請使用 read_api 範圍建立存取權權杖,確保 Cloud Build 存放區可存取存放區中的原始碼。

主控台

如要將 GitLab 主機連結至 Cloud Build,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中開啟「Repositories」頁面。

    開啟「存放區」頁面

    畫面會顯示「Repositories」頁面。

  2. 選取頁面頂端的「第 2 代」分頁標籤。

  3. 在頂端列的專案選取器中,選取 Google Cloud 專案。

  4. 按一下「建立主機連線」,將新的主機連結至 Cloud Build。

  5. 在左側面板中,選取「GitLab」GitLab做為來源供應工具。

  6. 在「Configure Connection」(設定連線) 部分,輸入下列資訊:

    1. 區域:選取連線的區域。

    2. 名稱:輸入連線名稱。

  7. 在「主機詳細資料」部分中,選取或輸入以下資訊:

    1. GitLab 供應商:選取 GitLab.com 做為供應商。
  8. 在「Personal access token」部分中,輸入以下資訊:

    1. API 存取權杖:輸入具有 api 範圍存取權的權杖。這個權杖用於連結及取消連結存放區。

    2. 讀取 API 存取權杖:輸入具有 read_api 範圍存取權的權杖。Cloud Build 觸發條件會使用這個權杖存取存放區中的原始碼。

  9. 按一下「連線」

    點選「Connect」按鈕後,個人存取權杖就會安全地儲存在 Secret Manager 中。在主機連線之後,Cloud Build 也會代您建立 webhook 密鑰。您可以在 Secret Manager 頁面查看及管理密鑰。

您已成功建立 GitLab 連線。

gcloud

將 GitLab 主機連結至 Cloud Build 前,請先完成下列步驟來儲存憑證:

  1. 將權杖儲存於 Secret Manager

  2. 請執行下列指令,在 Secret Manager 中建立 Webhook 密鑰

     cat /proc/sys/kernel/random/uuid | tr -d '\n' | gcloud secrets create my-gle-webhook-secret --data-file=-
    
  3. 如果您將祕密儲存在與您用來建立主機連線的 Google Cloud 專案不同,請輸入下列指令,將 Cloud Build 服務代理的存取權授予專案:

    PN=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
    CLOUD_BUILD_SERVICE_AGENT="service-${PN}@gcp-sa-cloudbuild.iam.gserviceaccount.com"
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:${CLOUD_BUILD_SERVICE_AGENT}" \
      --role="roles/secretmanager.admin"
    

    其中:

    • PROJECT_ID 是您的 Google Cloud 專案 ID。

您現在可以繼續將 GitLab 主機連結至 Cloud Build。

操作步驟如下:

如要將 GitLab 主機連結至 Cloud Build,請按照下列步驟操作:

  1. 輸入下列指令,建立 GitLab 連線:

    gcloud builds connections create gitlab CONNECTION_NAME \
      --host-uri=HOST_URI \
      --project=PROJECT_ID \
      --region=REGION \
      --authorizer-token-secret-version=projects/PROJECT_ID/secrets/API_TOKEN/versions/SECRET_VERSION \
      --read-authorizer-token-secret-version=projects/PROJECT_ID/secrets/READ_TOKEN/versions/SECRET_VERSION \
      --webhook-secret-secret-version=projects/PROJECT_ID/secrets/WEBHOOK_SECRET/versions/SECRET_VERSION
    

    其中:

    • CONNECTION_NAME 是 Cloud Build 中 GitLab 主機連線的名稱。
    • HOST_URI 是 GitLab 執行個體的 URI。例如:https://my-gle-server.net
    • PROJECT_ID 是您的 Google Cloud 專案 ID。
    • REGION 是連線的地區
    • API_TOKEN 是具有 api 範圍的符記名稱。
    • READ_TOKEN 是具有 read_api 範圍的符記名稱。
    • SECRET_VERSION 是密鑰的版本。
    • WEBHOOK_SECRET 是 Webhook 密鑰。

您已成功建立 GitLab 連線。

後續步驟