关联到第三方 Git 代码库

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

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

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

  • Azure DevOps 服务

  • Bitbucket

  • GitHub

  • GitLab

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

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

准备工作

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

所需的角色

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

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

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

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

然后,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 Secret。然后,与您的 Dataform 服务帐号共享该 Secret。

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. Default Remote branch name(默认远程分支名称)字段中,输入远程 Git 代码库的主开发分支的名称。

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

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

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

      ALGORITHM BASE64_KEY_VALUE
    
    • 对于 Azure DevOps 服务主机公钥,请在终端中运行 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. 在代码库页面上,点击 Settings > Edit Git connection

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

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

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

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

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

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

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

       ALGORITHM BASE64_KEY_VALUE
      
  5. 点击更新

后续步骤