使用 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 网址。

将现有代码库推送到 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 文档

后续步骤