以下操作說明適用於應用程式開發人員、平台管理員和安全管理員,協助他們搭配使用 GitLab Enterprise 原始碼存放區與 Google。具體來說,您可以搭配 Gemini Code Assist 使用 GitLab Enterprise 存放區。
如要進一步瞭解 Developer Connect,請參閱這篇文章。
事前準備
-
登入 Google 帳戶。
如果沒有帳戶,請 申請新帳戶。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Developer Connect and Service Directory APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Developer Connect and Service Directory APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
確認您有 GitLab Enterprise 帳戶的存取權。
為確保團隊工作安全無虞,建議您使用服務帳戶或團隊共用的帳戶,而非個人帳戶,完成本指南中的工作。
- 確認您擁有 GitLab Enterprise 存放區,或具備共用存放區的管理員層級權限。
- 請確認您有 Service Directory 服務資源可連線至私人網路,或建立 Service Directory 服務資源。您可以在與 Developer Connect 搭配使用的專案中,建立 Service Directory 服務資源,也可以使用其他專案。
如要連線至 Google Cloud以外的網路,您可能需要以不同方式設定 Service Directory。請參閱「使用 Service Directory 連線至 Google Cloud外部主機」。
- 選用:建立客戶自行管理的加密金鑰 (CMEK),用於加密 Developer Connect 建立的驗證密鑰。
- 選用:如要使用本指南中的指令列操作說明,請完成下列步驟:
- 安裝 Google Cloud CLI。如果您先前已安裝 gcloud CLI,請執行
gcloud components update,確認您擁有最新版本。 - 執行下列指令,建立 Developer Connect 服務帳戶,其中的 PROJECT_ID 是您的Google Cloud 專案 ID:
gcloud beta services identity create \ --service=developerconnect.googleapis.com \ --project=PROJECT_ID
- 安裝 Google Cloud CLI。如果您先前已安裝 gcloud CLI,請執行
啟用 Developer Connect 時,系統也會啟用 Secret Manager API。
主機需求
如未安裝 GitLab Enterprise Edition Server 執行個體,請參閱 GitLab Enterprise Edition 的安裝指南,瞭解操作說明。
按照操作說明安裝 GitLab Enterprise Edition 伺服器執行個體時,請注意下列事項:
您必須設定主機來處理
HTTPS通訊協定。系統不支援使用HTTP通訊協定設定的主機。你必須使用與從 Google Cloud連線至主機時相同的網址,設定主機。詳情請參閱 GitLab 說明文件,瞭解如何設定外部網址。
必要的角色
如要取得建立連線和連結所需的權限,請要求管理員授予您下列 IAM 角色:
-
如果您不是專案擁有者:
使用者帳戶的開發人員連線管理員 (
roles/developerconnect.admin) 。 -
如果您打算使用 CMEK 加密 Developer Connect 建立的密鑰:
Secret Manager 服務帳戶的「Cloud KMS CryptoKey Encrypter/Decrypter」(Cloud KMS 加密編譯金鑰加密者/解密者) (
roles/cloudkms.cryptoKeyEncrypterDecrypter) 。 -
如果您打算使用 gcloud CLI 完成本指南中的步驟:
Developer Connect 服務帳戶的Secret Manager 管理員角色 (
roles/secretmanager.admin)。 -
如果您打算使用 Google Cloud 控制台完成本指南中的步驟:
專案 IAM 管理員 (
roles/resourcemanager.projectIamAdmin) 使用者帳戶。
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
授予使用 Service Directory 的權限
請完成下列步驟,允許 Developer Connect 使用 Service Directory,並允許 Service Directory 存取您的 VPC 網路資源。
執行下列指令,授予 Developer Connect 服務帳戶使用 Service Directory 的權限:
PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") SERVICE_ACCOUNT="service-${PROJECT_NUMBER}@gcp-sa-devconnect.iam.gserviceaccount.com" gcloud projects add-iam-policy-binding SERVICE_DIRECTORY_RESOURCE_PROJECT_ID \ --member="serviceAccount:${SERVICE_ACCOUNT}" \ --role="roles/servicedirectory.viewer"更改下列內容:
- PROJECT_ID:您的 Google Cloud 專案 ID。
- SERVICE_DIRECTORY_RESOURCE_PROJECT_ID:專案 ID,用於存放您的 Service Directory 服務資源。 Google Cloud
授予 Service Directory 存取虛擬私有雲網路資源的權限。網路資源可以位於不同專案。
gcloud projects add-iam-policy-binding NETWORK_RESOURCE_PROJECT_ID \ --member="serviceAccount:${SERVICE_ACCOUNT}" \ --role="roles/servicedirectory.pscAuthorizedService"將 NETWORK_RESOURCE_PROJECT_ID 替換為含有 VPC 網路資源的專案 ID。
使用 Service Directory 觸及外部主機 Google Cloud
Service Directory 會使用 IP 位址範圍 35.199.192.0/19,將主機連線到 Google Cloud外部。您必須將這個範圍新增至防火牆的許可清單。此外,您必須設定私人網路,透過 Cloud VPN 或 Cloud Interconnect 連線轉送這個範圍。
如果連線使用 Cloud Router,您可以設定連線,將範圍傳達至私有網路。
詳情請參閱「設定私人網路存取權」。
使用 Cloud Load Balancing 連線至外部主機 Google Cloud
如果網路設定不允許您將 Service Directory IP 位址範圍 35.199.192.0/19 路由至 Cloud VPN 或 Cloud Interconnect,可以使用 Cloud Load Balancing 建立負載平衡器,將流量導向主機。
建立 Service Directory 端點時,請務必使用負載平衡器轉送規則的 IP 位址,而非主機的 IP 位址。建立端點時,您可以使用內部 HTTPS 負載平衡器或內部傳輸控制通訊協定 (TCP) 負載平衡器。
建立 TCP 負載平衡器時,請注意下列事項:
- 您只需要混合式連線網路端點群組 (NEG),即可連上主機。
- TCP 負載平衡器不需要 SSL 憑證的未加密私密金鑰。
- Cloud VPN 設定必須使用 Cloud Router 和全域動態轉送。如果 Cloud VPN 使用靜態路徑,您可以改用 Cloud Service Mesh 的 Proxy。詳情請參閱「為混合式部署設定網路邊緣服務」。
如要進一步瞭解如何建立 HTTPS 負載平衡器,請參閱「設定具備混合式連線功能的內部應用程式負載平衡器」。如要進一步瞭解如何建立 TCP 負載平衡器,請參閱「使用混合式連線設定區域性內部 Proxy 網路負載平衡器」。
建立存取權杖
如要在 GitLab 中建立存取權杖,請完成下列步驟:
請按照 GitLab 說明文件中的操作說明,建立個人存取權杖、群組存取權杖或專案存取權杖,並授予下列權限:
- 一個具備
api範圍的權杖,用於連結及取消連結存放區。 - 一個範圍為
read_api的權杖,可讓 Developer Connect 讀取存放區中的原始碼。 - 如果是群組存取權杖和專案存取權杖,權杖必須具備維護者或更高層級的角色。
- 一個具備
建立連線
本節說明如何建立 Developer Connect 與 GitLab Enterprise 之間的連線。如果您使用 Google Cloud 控制台,也可以在完成連線設定後,開始將連結新增至存放區。
如要建立新的 GitLab Enterprise 連線,請選取下列任一選項:
控制台
請完成下列步驟來啟動連線:
在 Google Cloud 控制台中開啟「Developer Connect」。
Developer Connect 會顯示「Git 存放區」頁面。
- 如果看到原始碼管理服務供應商清單:選取原始碼管理服務供應商,開始設定第一個連線。按一下 GitLab Enterprise 資訊卡上的「連結」。
如果看到列出現有連線的表格:按一下「建立連線」 >「GitLab Enterprise」,設定原始碼管理服務供應商。
「建立連線」頁面隨即開啟。
在「Region」(區域),為連線資源選擇區域。
- 在「Name」(名稱) 部分,輸入新連線的名稱。
在「存取權杖」部分,輸入帳戶的權杖:
- API 存取權杖:輸入具有
api範圍的存取權杖。 - 讀取 API 存取權杖:輸入具有
read_api範圍的存取權杖。
您有責任確保 GitLab 權杖保持有效。 除非權杖建立者或管理員另有規定,否則 GitLab 權杖的生命週期上限為 365 天。如要瞭解如何管理權杖到期設定和通知,請參閱 GitLab 說明文件,瞭解個人存取權杖、群組存取權杖和專案存取權杖。
- API 存取權杖:輸入具有
在「主機網址」部分,輸入要連線的主機網址。
按一下「顯示更多」即可查看選用設定。
「啟用 Developer Connect Proxy」核取方塊預設為勾選,因此 Developer Connect 可做為 Proxy,對 GitLab Enterprise 執行 Git 呼叫。
在「網路」部分的「網路類型」中,選擇「私人網路」。
在「CA Certificate」部分,按一下「Browse」上傳自簽憑證。
憑證大小不得超過 10 KB,且必須採用 PEM 格式 (.pem、.cer 或 .crt)。如果將這個部分留空,系統會改用預設的憑證集。
在「Service Directory service」(服務目錄服務) 區段中,選取服務位置:
- 在「
your-project」專案中 - 在其他專案中
- 手動輸入
如果選取「In another project」(位在其他專案) 或「Enter manually」(手動輸入),請指定專案 ID。 Google Cloud 在下拉式選單中選取專案,或手動輸入專案 ID。
- 在「
區域:選取 Service Directory 服務的區域。為服務指定的地區必須與連線相關聯的地區相符。
命名空間:選取 Service Directory 服務的命名空間。
服務:選取命名空間中的 Service Directory 服務名稱。
選用步驟:在「Encryption」(加密) 部分中,選取 CMEK 金鑰,加密 Developer Connect 建立的 Secret Manager 密鑰。
按一下「繼續」。
連線建立完成後,系統會顯示「連結存放區」頁面。
如要將存放區連結至連線,請完成下列步驟:
在可用存放區清單中,選取要使用的存放區。
按一下 [確定]。
按一下「Link」(連結)。
連結會新增至「連線」頁面,存放區連結則會新增至 Google Cloud 控制台的「存放區」頁面。您可以隨時在現有連結中新增更多連結。
如要設定 Gemini Code Assist,請按照「設定及使用 Gemini Code Assist 程式碼自訂功能」一文中的步驟,繼續完成設定程序。
gcloud
在 Secret Manager 中建立 Webhook 密鑰,請執行下列指令,其中 WEBHOOK_SECRET_NAME 是 Webhook 密鑰的名稱:
cat /proc/sys/kernel/random/uuid | tr -d '\n' | gcloud secrets create WEBHOOK_SECRET_NAME執行下列指令,將存取權杖儲存在 Secret Manager 中:
gcloud secrets create API_SECRET_NAME echo -n API_SECRET_DATA | gcloud secrets versions add API_SECRET_NAME --data-file=- gcloud secrets create READ_SECRET_NAME echo -n READ_SECRET_DATA | gcloud secrets versions add READ_SECRET_NAME --data-file=-更改下列內容:
- API_SECRET_NAME:儲存具有
api範圍的權杖的密鑰名稱。 - API_SECRET_DATA:具有
api範圍的權杖,類似於glpat-XXXXXXXXXXXXXXXX。 - READ_SECRET_NAME:儲存具有
read_api範圍的權杖的密鑰名稱。 - READ_SECRET_DATA:具有
read_api範圍的權杖,類似於glpat-XXXXXXXXXXXXXXXX。
- API_SECRET_NAME:儲存具有
執行 gcloud developer-connect connections create 指令,建立與 GitLab Enterprise 的連線:
gcloud beta developer-connect connections create CONNECTION_NAME \ --location=REGION \ --gitlab-config-read-authorizer-credential-user-token-secret-version=projects/PROJECT_ID/secrets/READ_SECRET_NAME/versions/VERSION \ --gitlab-config-authorizer-credential-user-token-secret-version=projects/PROJECT_ID/secrets/API_SECRET_NAME/versions/VERSION \ --gitlab-enterprise-config-host-uri=HOST_URI --gitlab-enterprise-config-webhook-secret-version=projects/PROJECT_ID/secrets/WEBHOOK_SECRET_NAME/versions/VERSION --git-proxy-config-enabled更改下列內容:
- CONNECTION_NAME:連線名稱。
- REGION:連線的區域。
- PROJECT_ID:您的 Google Cloud 專案 ID。
- READ_SECRET_NAME:包含具有
read_api範圍權杖的 Secret Manager Secret 名稱。 - API_SECRET_NAME:包含具有
api範圍權杖的 Secret Manager Secret 名稱。 - VERSION:各個密鑰的版本號碼。這樣就能使用最新版本號碼。
latest - HOST_URI:要連線的主機 URI。
- WEBHOOK_SECRET_NAME:Secret Manager Secret 的名稱,其中包含 Webhook Secret。
--git-proxy-config-enabled是選用旗標,可讓 Developer Connect 做為 Proxy,對 GitLab Enterprise 執行 Git 呼叫。在私人網路中執行的 GitLab Enterprise 原始碼存放區上,您必須啟用這項功能,才能使用 Gemini Code Assist 程式碼自訂功能。--gitlab-enterprise-config-ssl-ca-certificate是選用標記,可新增 SSL 憑證,格式為$HOME/my-ssl-ca.txt。
Developer Connect 會完成與 GitLab 的連線。接著連結至存放區。
使用現有連線連結至存放區
建立與 GitLab Enterprise 的連線後,即可連結至存放區。之後可以視需要重複這些步驟,連結其他存放區。
如要在現有的 GitLab Enterprise 連線上建立存放區連結,請選取下列任一選項:
控制台
完成下列步驟,建立存放區的連結:
在 Google Cloud 控制台中開啟「Repositories」(存放區) 頁面。
按一下「連結存放區」。
「連結 Git 存放區」窗格隨即開啟。
在連線清單中選擇連線。
按一下「繼續」。
在存放區清單中,選取要連結的存放區。
Developer Connect 會顯示存放區資源的建議名稱。
選取存放區資源命名選項:
- 產生:使用產生的存放區資源名稱。
- 手動:自行輸入名稱。
點選「建立」。
Developer Connect 會建立存放區連結,並顯示在 Google Cloud 控制台中。
gcloud
執行下列指令,連結至 GitLab 存放區:
gcloud beta developer-connect connections git-repository-links create REPO_NAME \
--clone-uri=REPO_URI \
--connection=CONNECTION_NAME \
--location=REGION
更改下列內容:
- REPO_NAME:存放區連結的名稱。
- REPO_URI:存放區的連結,類似
https://gitlab.com/my-project/test-repo.git。 - CONNECTION_NAME:連線名稱。
- REGION:連線的區域。
Developer Connect 會建立存放區連結。
如要列出連結的存放區,請執行 developer-connect connections git-repository-links list 指令。
如要設定 Gemini Code Assist,請按照「設定及使用 Gemini Code Assist 程式碼自訂功能」一文中的步驟,繼續完成設定程序。
後續步驟
- 完成 Gemini Code Assist 程式碼自訂功能設定。
- 瞭解 Gemini Code Assist 如何協助您加快軟體開發速度。
- 探索透過 Developer Connect 提供的其他整合功能。