连接到第三方 Git 代码库

本文档介绍如何将远程代码库连接到 Dataform 代码库。连接代码库后,您可以在 Dataform 开发工作区中推送和拉取对远程 Git 代码库所做的更改。

您可以通过 HTTPS 或 SSH 连接远程代码库。

下表列出了受支持的 Git 提供商以及可用于其代码库的连接方法:

Git 提供商 连接方法
Azure DevOps Services SSH
Bitbucket SSH
GitHub SSH 或 HTTPS
GitLab SSH 或 HTTPS

准备工作

  1. 如果您的组织或项目通过 dataform.restrictGitRemotes 组织政策限制远程 Git 代码库,请确保在创建要连接到远程代码库的 Dataform 代码库之前,将该远程 Git 代码库添加到政策中的许可名单。如需了解详情,请参阅限制远程仓库
  2. 选择或创建 Dataform 代码库。 您稍后需要使用此 ID 与默认 Dataform 服务账号共享密钥。

所需的角色

如需获得将 Dataform 代码库连接到远程 Git 代码库所需的权限,请让您的管理员为您授予代码库的 Dataform Admin (roles/dataform.admin) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

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

通过 SSH 连接远程代码库

如需通过 SSH 连接远程代码库,您需要生成 SSH 密钥和 Secret Manager Secret。SSH 密钥由 SSH 公钥和 SSH 私钥组成。 您需要与 Git 提供商共享 SSH 公钥,并使用 SSH 私钥创建 Secret Manager Secret。然后,将该 Secret 与您的默认 Dataform 服务账号共享。

Dataform 会使用包含 SSH 私钥的 Secret 登录您的 Git 提供方,以代表开发者提交更改。Dataform 使用开发者的 Google Cloud 电子邮件地址进行这些提交,以便您了解每次提交的作者。

如需通过 SSH 将远程代码库连接到 Dataform 代码库,请按以下步骤操作:

  1. 在 Git 提供方中,执行以下操作:

    Azure DevOps Services

    1. 在 Azure DevOps Services 中,创建私有 SSH 密钥
    2. 将 SSH 公钥上传到您的 Azure DevOps Services 代码库。

    Bitbucket

    1. 在 Bitbucket 中,创建私密 SSH 密钥
    2. 将 SSH 公钥上传到您的 Bitbucket 代码库。

    GitHub

    1. 在 GitHub 中,创建专用 SSH 密钥
    2. 将 GitHub 公共 SSH 密钥上传到您的 GitHub 代码库。

    GitLab

    1. 在 GitLab 中,创建私有 SSH 密钥
    2. GitLab 公共 SSH 密钥上传到您的 GitLab 代码库。
  2. 在 Secret Manager 中,创建 Secret 并将您的 SSH 私钥设置为 Secret 值。

    1. 向默认 Dataform 服务账号授予对 Secret 的访问权限

      您的默认 Dataform 服务账号采用以下格式:

      service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
      
    2. roles/secretmanager.secretAccessor 角色授予服务账号。

  3. 在 Google Cloud 控制台中,前往 Dataform 页面。

    前往 Dataform

  4. 选择要连接到远程代码库的 Dataform 代码库。

  5. 在代码库页面上,依次点击设置 > 与 Git 连接

  6. 关联到远程代码库窗格的远程 Git 代码库网址字段中,输入远程 Git 代码库的网址,以 .git 结尾。

    远程 Git 代码库的网址必须采用以下格式之一:

    • 绝对网址:ssh://git@{host_name}[:{port}]/{repository_path}port 为可选。
    • 类似 SCP 的网址:git@{host_name}:{repository_path}
  7. 默认远程分支名称字段中,输入远程 Git 代码库的主开发分支的名称。

  8. Secret 下拉菜单中,选择远程 Git 代码库的 Secret。

  9. SSH 主机公钥值字段中,输入 Git 提供商的主机公钥。

    Azure DevOps Services

    SSH 主机公钥值必须采用 known_hosts 文件格式。 该值必须包含采用 base64 格式编码的算法和公钥,但不包含主机名或 IP,格式如下:

    ALGORITHM BASE64_KEY_VALUE
    

    如需检索 Azure DevOps Services 公共主机密钥,请在终端中运行 ssh-keyscan -t rsa ssh.dev.azure.com 命令。

    Bitbucket

    SSH 主机公钥值必须采用 known_hosts 文件格式。 该值必须包含采用 base64 格式编码的算法和公钥,但不包含主机名或 IP,格式如下:

    ALGORITHM BASE64_KEY_VALUE
    

    如需检索 Bitbucket 公共主机密钥,请参阅配置 SSH

    GitHub

    SSH 主机公钥值必须采用 known_hosts 文件格式。 该值必须包含采用 base64 格式编码的算法和公钥,但不包含主机名或 IP,格式如下:

    ALGORITHM BASE64_KEY_VALUE
    

    如需检索 GitHub 公共主机密钥,请参阅 GitHub 的 SSH 密钥指纹

    GitLab

    SSH 主机公钥值必须采用 known_hosts 文件格式。 该值必须包含采用 base64 格式编码的算法和公钥,但不包含主机名或 IP,格式如下:

    ALGORITHM BASE64_KEY_VALUE
    

    如需检索 GitLab 公共主机密钥,请参阅 SSH known_hosts 条目

  10. 点击关联

通过 HTTPS 连接远程代码库

如需通过 HTTPS 连接远程代码库,您需要使用个人访问令牌创建 Secret Manager Secret,并与默认 Dataform 服务账号共享该 Secret。

然后,Dataform 会使用该访问令牌登录您的 Git 提供方,以代表开发者提交更改。Dataform 使用开发者的 Google Cloud 电子邮件地址进行这些提交,因此您可以知道是谁进行了每次提交。

如需通过 HTTPS 将远程代码库连接到 Dataform 代码库,请按以下步骤操作:

  1. 在 Git 提供方中,执行以下操作:

    GitHub

    1. 在 GitHub 中,创建精细的个人访问令牌经典个人访问令牌

      • 对于精细的 GitHub 个人访问令牌,请执行以下操作:
      1. 选择仅限对所选代码库的代码库访问权限,然后选择要连接的代码库。

      2. 授予对代码库内容的读写权限。

      3. 设置适合您需求的令牌过期时间。

      • 对于经典 GitHub 个人访问令牌,请执行以下操作:
      1. 向 Dataform 授予 repo 权限。

      2. 设置适合您需求的令牌过期时间。

    2. 如果贵组织使用 SAML 单点登录 (SSO),请授权令牌

    GitLab

    1. 在 GitLab 中,创建一个 GitLab 个人访问令牌

    2. 将令牌命名为 dataform

      GitLab 个人访问令牌必须命名为 dataform

    3. 向 Dataform 授予 apiread_repositorywrite_repository 权限。

    4. 设置适合您需求的令牌过期时间。

  2. 在 Secret Manager 中,创建一个包含远程代码库的个人访问令牌的 Secret。

  3. 向默认 Dataform 服务账号授予对 Secret 的访问权限

    您的默认 Dataform 服务账号采用以下格式:

    service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
    
    1. roles/secretmanager.secretAccessor 角色授予服务账号。
  4. 在 Google Cloud 控制台中,前往 Dataform 页面。

    前往 Dataform

  5. 选择要连接到远程代码库的 Dataform 代码库。

  6. 在代码库页面上,依次点击设置 > 与 Git 连接

  7. 关联到远程代码库窗格的远程 Git 代码库网址字段中,输入远程 Git 代码库的网址,以 .git 结尾。

    远程 Git 代码库的网址不得包含用户名或密码。

  8. 默认远程分支名称字段中,输入远程 Git 代码库的主开发分支的名称。

  9. Secret 下拉菜单中,选择远程 Git 代码库的 Secret。

  10. 点击关联

修改远程代码库连接

如需修改 Dataform 代码库与远程 Git 代码库之间的连接,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往 Dataform 页面。

    前往 Dataform

  2. 点击要修改的代码库。

  3. 在代码库页面上,依次点击设置 > 修改 Git 连接

  4. 关联到远程代码库窗格中,修改连接设置。

  5. 点击更新

后续步骤