在专用网络中从 GitLab Enterprise Edition 构建代码库

借助 Cloud Build,您可以创建触发器,以便通过 GitLab Enterprise Edition 上托管的代码库进行构建,从而让您能够执行构建来响应与 GitLab Enterprise Edition 代码库关联的提交请求或合并请求等事件。

本页面介绍了如何在 GitLab 上启用触发器功能 企业版实例(如果您的实例托管在专用网络中)。

准备工作

  • Enable the Cloud Build, Secret Manager, Compute Engine, and Service Networking APIs.

    Enable the APIs

在专用网络中从 GitLab Enterprise Edition 构建代码库

如果您的 GitLab Enterprise Edition 实例只能在 您需要设置一个 Service Directory 服务,并使用专用池进行构建。包含 VPC 网络的项目可以与包含 Service Directory 服务的项目不同。请按照以下说明确保您的实例在 创建触发器:

  1. 启用 Service Directory API

  2. 确保您已将 Project IAM Admin 角色授予 Google Cloud 项目, Service Directory 服务。了解如何授予 有关 IAM 角色的信息,请参阅 配置对 Cloud Build 资源的访问权限

  3. 完成以下步骤,设置 Service Directory 服务:

    1. 配置命名空间 Google Cloud 项目的配额。

      您在命名空间中指定的区域必须与您在 Cloud Build 主机连接中指定的区域一致。

    2. 配置服务 命名空间中

    3. 为已注册的服务配置端点

      在配置端点时,您必须使用内部 IP 地址和 指定 HTTPS 端口号 服务。

    如需详细了解专用网络访问配置,请参阅 配置专用网络访问权限。 Service Directory 还支持与负载均衡器和 Google Kubernetes Engine (GKE) 等服务集成。如需了解详情,请参阅 Service Directory 和负载均衡概览Service Directory for GKE 概览

  4. 向 Service Directory 授予对 Cloud Build 服务代理的访问权限:

    export PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
    export CLOUD_BUILD_SERVICE_AGENT="service-$PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com"
    gcloud projects add-iam-policy-binding  PROJECT_ID_CONTAINING_SERVICE_DIRECTORY \
       --member="serviceAccount:$CLOUD_BUILD_SERVICE_AGENT" \
       --role="roles/servicedirectory.viewer"
    

    替换以下内容:

    • PROJECT_ID 是您的 Cloud Build 项目 ID。
    • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY 是包含您的服务目录的 Google Cloud 项目的 ID。
  5. 向 Cloud Build 服务代理授予 VPC 网络资源访问权限:

    export PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
    export CLOUD_BUILD_SERVICE_AGENT="service-$PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com"
    gcloud projects add-iam-policy-binding PROJECT_ID_CONTAINING_NETWORK_RESOURCE \
       --member="serviceAccount:$CLOUD_BUILD_SERVICE_AGENT" \
       --role="roles/servicedirectory.pscAuthorizedService"
    

    替换以下内容:

    • PROJECT_ID 是您的 Cloud Build 项目 ID。
    • PROJECT_ID_CONTAINING_NETWORK_RESOURCE 是包含您的网络资源的 Google Cloud 项目的 ID。
  6. 使用专用池运行 您的 build。如果您尚未创建专用池,请参阅创建新的专用池

  7. 按照说明 创建 GitLab 企业版触发器 构建托管在 GitLab Enterprise Edition 实例上的代码库。

    如果您在将 GitLab Enterprise Edition 主机连接到 Cloud Build 时添加了自签名证书或私钥证书,则必须将主机 URI 设置为证书的主体备用名称 (SAN)。

您的 GitLab Enterprise Edition 触发器现在将自动调用 GitLab Enterprise Edition 实例。

数据共享

从 Cloud Build 发送到 GitLab Enterprise Edition 的数据有助于您按名称识别触发器,并在 GitLab Enterprise Edition 代码库中查看构建结果。

Cloud Build 和 GitLab 企业版之间会共享以下数据:

  • Google Cloud 项目 ID
  • 触发器名称

后续步骤