连接到第三方 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 将 Secret 与 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
    
  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. 点击更新

后续步骤