使用 Git 源代码管理

Secure Source Manager 支持所有 Git SCM 客户端命令,并内置了拉取请求和问题跟踪功能。支持 HTTPS 和 SSH 身份验证

所需的角色

如需获得使用 Git 与 Secure Source Manager 代码库进行交互所需的权限,请让您的管理员为您授予以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

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

如需了解如何授予 Secure Source Manager 角色,请参阅使用 IAM 进行访问权限控制向用户授予实例访问权限

安装 Git 和 Google Cloud CLI

  1. 安装 Git

  2. 如果 Git 安装程序提示您选择凭据帮助程序,请选择无(不使用凭据帮助程序)

  3. 安装 gcloud CLI

  4. 若要将 Git 与 HTTPS 搭配使用,必须使用 gcloud CLI 版本 395.0.0 或更高版本。如需检查 gcloud CLI 版本,请运行以下命令:

    gcloud --version
    
  5. 如需更新 gcloud CLI,请运行以下命令。

    gcloud components update
    
  6. 更新后,运行 gcloud init初始化 gcloud CLI

    如需了解详情,请参阅 gcloud CLI 文档中的更新组件

设置凭据

如果您使用第三方身份提供方和员工身份联合对 Secure Source Manager 进行身份验证,则无需完成本部分中的步骤,而是必须创建员工身份池登录配置

运行以下命令,将 Secure Source Manager 身份验证帮助程序添加到您的全局 Git 配置:

Linux

git config --global credential.'https://*.*.sourcemanager.dev'.helper gcloud.sh

早期版本的 Git 可能不支持通配符。如需添加不含通配符的身份验证帮助程序,请运行以下命令:

git config --global credential.'https://INSTANCE_ID-PROJECT_NUMBER-git.LOCATION.sourcemanager.dev'.helper gcloud.sh

替换以下内容:

  • INSTANCE_ID 替换为 Secure Source Manager 实例的名称。
  • PROJECT_NUMBER 替换为您的项目编号。如需查找项目编号方面的帮助,请参阅识别项目
  • LOCATION 替换为实例的区域。如需详细了解区域,请参阅位置

Windows

git config --global credential.https://*.*.sourcemanager.dev.helper gcloud.cmd

早期版本的 Git 可能不支持通配符。如需添加不含通配符的身份验证帮助程序,请运行以下命令:

git config --global credential.https://INSTANCE_ID-PROJECT_NUMBER-git.LOCATION.sourcemanager.dev.helper gcloud.cmd

替换以下内容:

  • INSTANCE_ID 替换为 Secure Source Manager 实例的名称。
  • PROJECT_NUMBER 替换为您的项目编号。如需查找项目编号方面的帮助,请参阅识别项目
  • LOCATION 替换为实例的区域。如需详细了解区域,请参阅位置

当您将 Git 命令与 Secure Source Manager 搭配使用时,身份验证帮助程序会使用 gcloud CLI 来获取您的Google Cloud 凭据。

如需在初始凭据设置后重新进行身份验证,请运行以下 gcloud CLI 命令:

gcloud auth login

使用服务账号通过 Compute Engine 虚拟机进行身份验证

您可以使用附加的服务账号从 Compute Engine 虚拟机 (VM) 进行身份验证。

配置虚拟机和服务账号

如果您使用 Compute Engine 默认服务账号,请创建具有所需 OAuth 范围的虚拟机:

gcloud compute instances create VM_NAME \
    --project=PROJECT_ID \
    --zone=ZONE \
    --scopes=openid,https://www.googleapis.com/auth/userinfo.profile,https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/cloud-platform

替换以下内容:

  • VM_NAME:您的虚拟机的名称。
  • PROJECT_ID:您的 Google Cloud 项目 ID。
  • ZONE:虚拟机的可用区。

如果您使用自定义服务账号,请先创建服务账号,然后再创建虚拟机。

  1. 创建服务账号:

    gcloud iam service-accounts create SA_NAME --project=PROJECT_ID
    

    SA_NAME 替换为服务账号的名称。

  2. 授予使用服务账号的权限。如需创建具有服务账号的虚拟机,您需要拥有该服务账号的 Service Account User 角色(roles/iam.serviceAccountUser)。向创建虚拟机的主账号授予此角色:

    gcloud iam service-accounts add-iam-policy-binding SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --member="user:USER_EMAIL" \
        --role="roles/iam.serviceAccountUser"
    

    USER_EMAIL 替换为创建虚拟机的用户的电子邮件地址。

  3. 创建虚拟机:

    gcloud compute instances create VM_NAME \
        --project=PROJECT_ID \
        --zone=ZONE \
        --scopes=openid,https://www.googleapis.com/auth/userinfo.profile,https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/cloud-platform \
        --service-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
    

向服务账号授予 IAM 角色

向服务账号授予对 Secure Source Manager 实例和代码库的访问权限:

  1. 授予实例访问权限:

    SA_EMAIL=$(gcloud compute instances describe VM_NAME --project=PROJECT_ID --zone=ZONE --format="get(serviceAccounts[0].email)")
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:$SA_EMAIL" \
        --role=roles/securesourcemanager.instanceAccessor
    
  2. 授予代码库读取权限。

    如需授予对特定代码库的读取权限,请运行以下命令:

    gcloud ssm repos add-iam-policy-binding REPOSITORY_ID \
        --instance=INSTANCE_ID \
        --location=LOCATION \
        --member="serviceAccount:$SA_EMAIL" \
        --role=roles/securesourcemanager.repoReader
    

    替换以下内容:

    • REPOSITORY_ID:制品库 ID。
    • INSTANCE_ID:Secure Source Manager 实例 ID。
    • LOCATION:Secure Source Manager 实例的区域。

    如需授予写入权限,请使用 roles/securesourcemanager.repoWriter 角色。

    建议在代码库级别授予访问权限,以遵循最小权限原则。如果您需要授予对项目中所有代码库的访问权限,请参阅使用 IAM 进行访问权限控制

IAM 权限可能需要几分钟才能传播完毕。

在虚拟机上配置 Git

  1. 使用 SSH 连接到虚拟机:

    gcloud compute ssh VM_NAME --project=PROJECT_ID --zone=ZONE
    
  2. 在虚拟机上,安装 Git:

    sudo apt-get install git
    
  3. 在虚拟机上,按照设置凭据中的说明配置 Git 凭据帮助程序。例如,在 Linux 上:

    git config --global credential.'https://*.*.sourcemanager.dev'.helper gcloud.sh
    

配置凭据帮助程序后,Git 会使用虚拟机服务账号中的应用默认凭据向 Secure Source Manager 进行身份验证。您现在可以克隆代码库。您必须使用 HTTPS 代码库网址才能通过应用默认凭据进行身份验证。

创建员工身份池登录配置

除非您使用员工身份联合通过第三方身份提供方对 Secure Source Manager 进行身份验证,否则无需完成此部分。

如需使用 gcloud CLI 命令或 Git 命令通过员工身份池凭据向 Secure Source Manager 实例进行身份验证,您必须使用员工身份池创建登录配置。

如需创建员工身份池登录配置,请按照为员工身份联合获取短期令牌中的说明操作,以使用 gcloud CLI 创建基于浏览器的登录。

完成身份验证后,您可以使用 Git 命令与 Secure Source Manager 实例进行交互。当员工身份池的会话时长到期时,您必须重新进行身份验证。

克隆代码库

运行以下命令以克隆代码库:

git clone REPOSITORY_URL

其中 REPOSITORY_URL 是要克隆的代码库页面顶部显示的 HTTPS 或 SSH 网址。

使用 Developer Connect 进行克隆

如果您已在 Developer Connect 中关联 Secure Source Manager 代码库,则可以使用 Developer Connect Git 代理克隆代码库。使用 Developer Connect 进行克隆时,系统会使用 IAM 来验证和授权代码库访问权限。

准备工作

  1. 按照说明在 Developer Connect 中创建与 Secure Source Manager 代码库的连接
  2. 确保在 Developer Connect 连接上启用了 Git 代理。 如需有关启用 Git 代理的说明,请参阅配置和使用 Developer Connect 代理
  3. 在 Developer Connect 中,向需要使用代理 URI 进行克隆的主账号授予 GitRepositoryLink 资源上的 roles/developerconnect.gitProxyReader 角色。如需了解如何授予角色,请参阅使用 IAM 进行 Developer Connect 访问权限控制

为 Developer Connect 设置凭据

运行以下命令,将 Developer Connect 身份验证帮助程序添加到您的全局 Git 配置:

Linux

git config --global credential.'https://*.developerconnect.dev'.helper gcloud.sh

Windows

git config --global credential.https://*.developerconnect.dev.helper gcloud.cmd

使用代理 URI 进行克隆

如需使用 Developer Connect 代理 URI 克隆代码库,请运行以下命令:

git clone https://REGION-git.developerconnect.dev/v1/projects/PROJECT_ID/locations/REGION/connections/CONNECTION_ID/gitRepositoryLinks/LINK_ID

替换以下内容:

  • REGION:Developer Connect 资源的区域。
  • PROJECT_ID:Developer Connect 资源的相应项目 ID。
  • CONNECTION_ID:Developer Connect 连接的 ID。
  • LINK_ID:Developer Connect GitRepositoryLink 资源的 ID。

如需查看 GitRepositoryLink 资源详情,请参阅 gcloud developer-connect connections git-repository-links。您可以使用 listdescribe 子命令查看链接详细信息。

将现有代码库推送到 Secure Source Manager

您必须先创建 Secure Source Manager 代码库作为远程代码库,然后才能向其推送内容。

如需将现有 Git 代码库推送到空的 Secure Source Manager 代码库,您需要将 Secure Source Manager 代码库添加为远程代码库,然后推送到该代码库。

  1. 如需将 Secure Source Manager 代码库设置为远程代码库,请运行以下命令:

    git remote add origin REPOSITORY_URL
    

    其中,REPOSITORY_URL 是显示在代码库页面顶部的 HTTPS 或 SSH 网址。

  2. 如需推送到代码库,请运行以下命令:

    git push -u origin main
    

如需详细了解 Git 源代码管理,请参阅 Git 文档

后续步骤