连接到第三方 Git 代码库

本文档介绍了如何将 Dataform 代码库关联到第三方远程 Git 代码库。

关联代码库后,您在 Dataform 开发工作区中所做的更改可以推送到远程 Git 代码库或从中拉取。

您可以将 Dataform 代码库关联到由以下 Git 提供方托管的远程 Git 代码库:

  • Azure DevOps 服务

  • Bitbucket

  • GitHub

  • GitLab

如需将第三方远程代码库关联到 Dataform 代码库,您需要先对其进行身份验证。您可以通过 HTTPS 或 SSH 在 Dataform 中对远程代码库进行身份验证。

对于 GitHub 和 GitLab 远程代码库,您可以使用 HTTPS 或 SSH 进行身份验证。对于 Azure DevOps Services 和 Bitbucket 远程代码库,您必须使用 SSH。

准备工作

创建 Dataform 代码库(如果您尚未执行此操作)。您稍后需要使用它与 Dataform 服务帐号共享密钥。

所需的角色

如需获取将 Dataform 代码库关联到远程 Git 代码库所需的权限,请让管理员授予您代码库的 Dataform Admin (roles/dataform.admin) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限

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

通过 HTTPS 对远程代码库进行身份验证

您可以通过 HTTPS 对 GitHub 和 GitLab 代码库进行身份验证,方法是使用个人访问令牌创建 Secret Manager 密钥,并与 Dataform 服务帐号共享该密钥。

然后,Dataform 使用该访问令牌登录您的 Git 提供方,以代表开发者提交更改。Dataform 使用开发者的 Google Cloud 电子邮件地址进行这些提交,以便您了解每项提交执行者。

如需对 GitHub 代码库进行身份验证,请创建传统个人访问令牌精细个人访问令牌,以便自定义令牌权限。

如需对 GitLab 代码库进行身份验证,请创建传统个人访问令牌

如需通过 HTTPS 在 Dataform 中对 GitHub 或 GitLab 代码库进行身份验证,请按以下步骤操作:

  1. 在 GitHub 或 GitLab 中,创建个人访问令牌。

  2. 创建 GitHub 个人访问令牌时,请执行以下操作:

    1. 向 Dataform 授予 repo 权限。

    2. 请务必根据您的需求设置令牌到期时间。

    3. 如果您的组织使用 SAML 单点登录 (SSO),请对令牌授权

  3. 可选:创建 GitHub 精细个人访问令牌时,请执行以下操作:

    1. 选择“仅所选代码库”的代码库访问权限,然后选择您要连接的代码库。

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

    3. 请务必根据您的需求设置令牌到期时间。

    4. 如果您的组织使用 SAML 单点登录 (SSO),请对令牌授权

  4. 创建 GitLab 个人访问令牌时,请执行以下操作:

    1. 将令牌命名为 dataform

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

    2. 向 Dataform 授予 apiread_repositorywrite_repository 权限。

    3. 请务必根据您的需求设置令牌到期时间。

  5. 在 Secret Manager 中,创建一个 Secret,其中包含用于连接到 Git 提供方的个人访问令牌。

  6. 向 Dataform 服务帐号授予对 Secret 的访问权限

    您的 Dataform 服务帐号采用以下格式:

    service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
    
    1. 授予访问权限时,请务必向您的 Dataform 服务帐号授予 roles/secretmanager.secretAccessor 角色。

Dataform 使用访问令牌登录您的 Git 提供方,以便代表开发者提交更改。Dataform 使用开发者的 Google Cloud 电子邮件地址进行这些提交,以便您了解每项提交执行者。

通过 SSH 对远程代码库进行身份验证

您可以生成 SSH 密钥和 Secret Manager 密钥,从而通过 SSH 对 Azure DevOps Services、Bitbucket、GitHub 和 GitLab 代码库进行身份验证。

SSH 密钥由一个 SSH 公钥和一个 SSH 私钥组成。您需要与 Git 提供商共享 SSH 公钥,并使用 SSH 私钥创建 Secret Manager 密钥。然后,与您的 Dataform 服务帐号共享该密钥。

Dataform 使用该密钥和 SSH 私钥登录您的 Git 提供方,以便代表开发者提交更改。Dataform 使用开发者的 Google Cloud 电子邮件地址进行这些提交,以便您了解每项提交执行者。

如需通过 SSH 在 Dataform 中对 Azure DevOps Services、Bitbucket、GitHub 或 GitLab 代码库进行身份验证,请按以下步骤操作:

  1. 在 Azure DevOps Services、Bitbucket、GitHub 或 GitLab 中,创建 SSH 密钥。

  2. 将 SSH 公钥上传到您的第三方 Git 帐号。

  3. 在 Secret Manager 中,创建一个 Secret,并使用 SSH 私钥作为 Secret 值。

  4. 向 Dataform 服务帐号授予对 Secret 的访问权限

    您的 Dataform 服务帐号采用以下格式:

    service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
    
    1. 授予访问权限时,请务必向您的 Dataform 服务帐号授予 roles/secretmanager.secretAccessor 角色。

关联 Dataform 代码库

如需将 Dataform 代码库关联到远程 Git 代码库,请按以下步骤操作:

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

    前往 Dataform

  2. 选择要连接的代码库。

  3. 在代码库页面上,依次点击 Settings > Connect with Git

  4. 指向远程代码库的链接窗格的远程 Git 代码库网址字段中,输入以 .git 结尾的远程 Git 代码库的网址。

    对于 HTTPS 身份验证,远程 Git 代码库的网址不能包含用户名或密码。

    对于 SSH 身份验证,远程 Git 代码库的网址采用以下格式之一:

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

  6. 密钥下拉列表中,为远程 Git 代码库选择密钥。

  7. 如果您为远程代码库使用了 SSH 身份验证,请在 SSH 主机公钥值字段中输入您的 Git 提供方的单个主机公钥。

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

      ALGORITHM BASE64_KEY_VALUE
    
    • 对于 Azure DevOps Services 公共主机密钥,请在终端中运行 ssh-keyscan -t rsa ssh.dev.azure.com 命令。

    • 如需了解 Bitbucket 主机公钥,请参阅配置 SSH

    • 如需了解 GitHub 主机公钥,请参阅 GitHub 的 SSH 密钥指纹

    • 如需了解 GitLab 公共主机密钥,请参阅 SSH known_hosts 条目

  8. 点击关联

修改远程代码库连接

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

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

    前往 Dataform

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

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

  4. 指向远程代码库的链接窗格中,修改以下任一选项:

    1. 远程 Git 代码库网址字段中,修改关联的远程 Git 代码库的网址。

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

    2. 默认远程分支名称字段中,修改远程 Git 代码库的主要开发分支的名称。

    3. 密钥下拉列表中,为远程 Git 代码库选择密钥。

    4. 如果您为远程代码库使用了 SSH 身份验证,请在 SSH 主机公钥值字段中输入您的 Git 提供商的主机公钥。

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

       ALGORITHM BASE64_KEY_VALUE
      
  5. 点击更新

后续步骤