连接到 Bitbucket Cloud 主机

本页面介绍了如何连接到 Bitbucket Cloud 主机,以连接到 Cloud Build。

准备工作

  • 启用 Cloud Build, Secret Manager, and Compute Engine API。

    启用 API

必需的 IAM 权限

如需获取连接所需的权限,请让管理员为您授予用户帐号的 Cloud Build Connection Admin (cloudbuild.connectionAdmin) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

创建 Bitbucket Cloud 访问令牌

在 Bitbucket Cloud 中创建以下两个访问令牌:

  • 管理员访问令牌 - 用于与代码库建立连接和断开连接。
  • 读取访问令牌 - 允许 Cloud Build 访问您的源代码。

如需创建这些令牌,请按以下步骤操作:

  1. 登录 Bitbucket Cloud

  2. 按照 Bitbucket Cloud 说明,创建与您的代码库项目工作区关联的访问令牌。

    授予以下权限:

    • 管理员访问令牌:

      • 代码库:ReadAdmin
      • 拉取请求:Read
      • 网络钩子:ReadWrite
    • 读取访问令牌:

      • 代码库:Read
  3. 复制您的令牌,以便在以下步骤中使用。

连接到 Bitbucket Cloud 主机

控制台

完成以下步骤,将 Cloud Build 连接到您的 Bitbucket Cloud 主机:

  1. 打开 Google Cloud 控制台中的制品库页面。

    打开“代码库”页面

    您会看到代码库页面。

  2. 在项目选择器中,选择您的 Google Cloud 项目。

  3. 在页面顶部,选择第 2 代标签页。

  4. 点击创建主机连接,将新主机连接到 Cloud Build。

  5. 选择 Bitbucket 作为您的来源提供商。

  6. 配置连接部分中,输入以下信息:

    1. 区域:选择连接的区域。

    2. 名称:输入连接的名称。

    3. 主机详细信息部分,选择 Bitbucket Cloud 作为您的主机类型。

    4. 工作区:输入您的 Bitbucket Cloud 代码库的工作区 ID

    5. 访问令牌:输入之前创建的管理员访问令牌。

    6. Read access token:输入之前创建的读取访问令牌。

  7. 点击连接

    新连接会显示在代码库页面中。

gcloud

  1. 若要存储您的凭据,请完成以下步骤:

    1. 运行以下命令,将您的访问令牌存储在 Google Cloud 项目的 Secret Manager 中:

      echo -n ADMIN_TOKEN | gcloud secrets create ADMIN_SECRET_NAME --data-file=-
      
      echo -n READ_TOKEN | gcloud secrets create READ_SECRET_NAME --data-file=-
      

      其中:

      • ADMIN_TOKEN 是您的管理员访问令牌。
      • ADMIN_SECRET_NAME 是您要在 Secret Manager 中为管理员访问令牌 Secret 授予的名称。
      • READ_TOKEN 是您的读取访问令牌。
      • READ_SECRET_NAME 是您要在 Secret Manager 中为读取访问令牌 Secret 授予的名称。
    2. 运行以下命令,在 Secret Manager 中创建 webhook Secret,其中 WEBHOOK_SECRET_NAME 是您要为 webhook Secret 指定的名称:

      echo -n ${ex.(random-uuid)} | gcloud secrets create WEBHOOK_SECRET_NAME --data-file=-
      
    3. 如果您的 Secret 不在同一项目中,请运行以下命令,授予对 Cloud Build 服务账号的访问权限:

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

      其中:

      • PROJECT_ID 是您的 Google Cloud 项目 ID。
      • ADMIN_SECRET_NAME 是您的管理员令牌 Secret 的名称。
      • READ_SECRET_NAME 是读取令牌 Secret 的名称。
      • WEBHOOK_SECRET_NAME 是 webhook Secret 的名称。
  2. 使用以下命令将 Cloud Build 连接到 Bitbucket Cloud 主机:

    gcloud builds connections create bitbucket-cloud CONNECTION_NAME \
        --workspace=WORKSPACE_ID \
        --project=PROJECT_ID \
        --region=REGION \
        --authorizer-token-secret-version=projects/PROJECT_ID/secrets/ADMIN_SECRET_NAME/versions/latest \
        --read-authorizer-token-secret-version=projects/PROJECT_ID/secrets/READ_SECRET_NAME/versions/latest \
        --webhook-secret-secret-version=projects/PROJECT_ID/secrets/WEBHOOK_SECRET_NAME/versions/1
    

    其中:

    • CONNECTION_NAME 是您要为 Bitbucket Cloud 主机的连接指定的名称。
    • WORKSPACE_ID 是您的 Bitbucket Cloud 代码库的工作区 ID。
    • PROJECT_ID 是您的 Google Cloud 项目 ID。
    • REGION 是您的主机连接所在的区域
    • ADMIN_SECRET_NAME 是您的管理员令牌密钥的名称。
    • READ_SECRET_NAME 是读取访问令牌 Secret 的名称。
    • WEBHOOK_SECRET_NAME 是您的网络钩子密钥的名称。

后续步骤