以下说明适用于希望将 GitLab Enterprise 源代码库与 Google 搭配使用的应用开发者、平台管理员和安全经理。具体来说,您可以将 GitLab Enterprise 代码库与 Gemini Code Assist 搭配使用。
如需详细了解 Developer Connect,请参阅 Developer Connect 概览。
准备工作
-
登录您的 Google 账号。
如果您还没有 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 创建的身份验证 Secret。
- 可选:如需使用本指南中的命令行说明,请完成以下步骤:
- 安装 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 服务器实例,请参阅 GitLab Enterprise Edition 的安装指南了解相关说明。
按照说明安装 GitLab Enterprise Edition 服务器实例时,请注意以下事项:
您必须配置主机以处理
HTTPS协议。不支持配置了HTTP协议的主机。您必须使用与从 Google Cloud访问主机时所用的网址相同的网址来配置主机。如需了解详情,请参阅有关配置外部网址的 GitLab 文档。
所需的角色
如需获得创建连接和关联所需的权限,请让您的管理员为您授予以下 IAM 角色:
-
如果您不是项目所有者,则需要为您的用户账号授予开发者连接管理员 (
roles/developerconnect.admin) 角色。 Developer Connect Admin (roles/developerconnect.admin) on your user account. -
如果您计划使用 CMEK 加密 Developer Connect 创建的 Secret,请在 Secret Manager 服务账号上授予以下角色:
Cloud KMS CryptoKey Encrypter/Decrypter (
roles/cloudkms.cryptoKeyEncrypterDecrypter) 。 -
如果您计划使用 gcloud CLI 完成本指南中的步骤,请确保 Developer Connect 服务账号具有以下角色:
Developer Connect 服务账号的 Secret Manager Admin 角色 (
roles/secretmanager.admin)。 -
如果您计划使用 Google Cloud 控制台完成本指南中的步骤,则需要:
用户账号的 Project IAM Admin (
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:包含 Service Directory 服务资源的 Google Cloud 项目的项目 ID。
授予 Service Directory 访问您的 VPC 网络资源的权限。网络资源可以位于其他项目中。
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 的代理。如需了解详情,请参阅为混合部署设置网络边缘服务。
如需详细了解如何创建 HTTPS 负载均衡器,请参阅设置具有混合连接的内部应用负载均衡器。如需详细了解如何创建 TCP 负载均衡器,请参阅设置具有混合连接的区域级内部代理网络负载均衡器。
创建访问令牌
如需在 GitLab 中创建访问令牌,请完成以下步骤:
按照 GitLab 文档中的说明创建个人访问令牌、群组访问令牌或项目访问令牌,并授予以下权限:
- 一个具有
api范围的令牌,用于与代码库建立连接和断开连接。 - 一个具有
read_api范围的令牌,用于允许 Developer Connect 读取您代码库中的源代码。 - 对于群组访问令牌和项目访问令牌,令牌必须具有 Maintainer 或更高级别的角色。
- 一个具有
创建连接
本部分介绍了如何在 Developer Connect 与 GitLab Enterprise 之间建立连接。如果您使用的是 Google Cloud 控制台,则还可以在完成连接设置后开始添加指向代码库的链接。
如需创建新的 GitLab Enterprise 连接,请选择以下选项之一:
控制台
如需发起连接,请完成以下步骤:
在 Google Cloud 控制台中,打开 Developer Connect。
Developer Connect 会显示 Git 代码库页面。
- 如果您看到源代码管理提供方列表:请选择一个源代码管理提供方,开始配置您的第一个关联。点击 GitLab Enterprise 卡片上的连接。
如果您看到列出现有连接的表格:点击创建连接 > GitLab Enterprise,设置源代码管理提供商。
随即会打开创建连接页面。
在区域字段中,为连接资源选择一个区域。
- 在名称部分,输入新连接的名称。
在访问令牌部分中,输入您的账号的令牌:
- API 访问令牌:输入具有
api范围的访问令牌。 - 读取 API 访问令牌:输入具有
read_api范围的访问令牌。
您有责任确保您的 GitLab 令牌一直有效。 除非令牌创建者或管理员另有指定,否则 GitLab 令牌的最长生命周期为 365 天。如需了解如何管理令牌过期设置和通知,请参阅 GitLab 有关个人访问令牌、群组访问令牌和项目访问令牌的文档。
- API 访问令牌:输入具有
在主机网址字段中,输入要连接到的主机的网址。
点击显示更多以查看可选配置设置。
默认情况下,系统会选中启用 Developer Connect 代理复选框,以便 Developer Connect 可以充当代理,对 GitLab Enterprise 进行 Git 调用。
在网络部分中,对于网络类型,选择专用网络。
对于 CA 证书,点击浏览以上传您的自签名证书。
证书大小不得超过 10 KB,且应采用 PEM 格式(.pem、.cer 或 .crt)。如果此部分留空,系统将使用默认的一组证书。
在 Service Directory 服务部分中,选择服务的位置:
- 在项目
your-project中 - 在其他项目中
- 手动输入
如果您选择在其他项目中或手动输入,请指定 Google Cloud 项目 ID。在下拉菜单中选择项目,或手动输入项目 ID。
- 在项目
区域:选择 Service Directory 服务的区域。为服务指定的区域必须与关联的连接区域一致。
命名空间:选择 Service Directory 服务的命名空间。
服务:选择命名空间中的 Service Directory 服务名称。
可选:在加密部分中,选择一个 CMEK 密钥来加密 Developer Connect 创建的 Secret Manager Secret。
点击继续。
连接创建完毕后,系统会显示关联代码库页面。
请完成以下步骤,将代码库与您的连接相关联:
在可用代码库列表中,选择要使用的代码库。
点击确定。
点击关联。
您的连接已添加到 Google Cloud 控制台的连接页面,您的代码库链接已添加到代码库页面。您可以随时向现有连接添加更多链接。
如果您正在设置 Gemini Code Assist,请按照配置和使用 Gemini Code Assist 代码自定义功能中的步骤继续完成该流程。
gcloud
运行以下命令,在 Secret Manager 中创建网络钩子 Secret,其中 WEBHOOK_SECRET_NAME 是网络钩子 Secret 的名称:
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范围的令牌的 Secret 的名称。 - API_SECRET_DATA:具有
api范围的令牌,类似于glpat-XXXXXXXXXXXXXXXX。 - READ_SECRET_NAME:用于存储具有
read_api范围的令牌的 Secret 的名称。 - 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:包含 Webhook Secret 的 Secret Manager Secret 的名称。
--git-proxy-config-enabled是一个可选标志,可让 Developer Connect 充当代理,以便向 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 控制台中打开代码库页面。
点击关联代码库。
系统会打开关联 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 实现的其他集成。