创建和更新代码库

本页面介绍了如何使用 Secure Source Manager 网页界面或 Secure Source Manager API 创建和更新代码库。

如果您的 Secure Source Manager 实例尚未创建,请参阅 创建 Secure Source Manager 实例以开始使用 。

准备工作

  1. 创建 Secure Source Manager 实例或请求访问该实例的权限。如需了解详情,请参阅创建 Secure Source Manager 实例
  2. 安装 Google Cloud CLI。

  3. 如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI

  4. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  5. 安装 beta Google Cloud CLI 组件:
    gcloud components install alpha

所需角色

如需获得创建代码库所需的权限,请让管理员向您授予以下 IAM 角色:

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

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

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

创建代码库

网页界面

  1. 如需通过网页界面访问 Secure Source Manager 实例,请将以下网址复制到浏览器地址栏中。

    INSTANCE_ID-PROJECT_NUMBER.LOCATION.sourcemanager.dev

    请替换以下内容:

    • INSTANCE_ID 替换为实例名称。
    • PROJECT_NUMBER 替换为实例的 Google Cloud 项目编号。如需了解如何识别项目,请参阅 识别项目
    • LOCATION 替换为实例的区域。

  2. 根据需要使用 Secure Source Manager 凭据进行身份验证。

  3. 点击导航菜单中的 + Create new repository 图标。

  4. 填写代码库详细信息:

    1. 代码库 ID:输入代码库的名称。

    2. 说明:可选:输入代码库的说明。

    3. Default branch:默认分支的名称。

  5. Service account:可选:输入要与代码库关联的服务帐号。此用户代管式服务账号用于 Cloud Build 等集成。如需了解详情,请参阅 连接到 Cloud Build

  6. Initialize repository:可选:如果您 想初始化代码库并添加 .gitignore、许可和 README 文件,请选择此选项。

  7. .gitignore:可选:使用下拉菜单模板选择要排除的文件。

  8. license:可选:从下拉菜单中选择一个常用许可。

  9. 点击创建代码库

gcloud

  1. 如需使用 gcloud CLI 创建代码库,请运行以下命令:

    gcloud source-manager repos create REPOSITORY_ID \
        --region=LOCATION \
        --project=PROJECT_ID \
        --instance=INSTANCE_ID \
        --description=DESCRIPTION \
        --default-branch=BRANCH \
        --gitignores=GITIGNORES \
        --license=LICENSE \
        --readme=README \
        --service-account=SERVICE_ACCOUNT
    

    请替换以下内容:

    • REPOSITORY_ID 替换为代码库的名称。

    • LOCATION 替换为要在其中创建代码库的区域。如需详细了解受支持的位置,请参阅 位置

    • PROJECT_ID 替换为要在其中创建代码库的 Secure Source Manager 实例的项目 ID。

    • INSTANCE_ID 替换为要在其中创建代码库的实例的实例 ID。如需列出项目中的 Secure Source Manager 实例,请参阅 列出和查看实例

    • DESCRIPTION 替换为代码库的说明。此项为可选,可以省略。

    • BRANCH 替换为默认分支名称。此项为可选,可以省略。如果未设置,默认分支名称为 main

    • GITIGNORES 替换为以英文逗号分隔的 gitignore 模板名称列表。此项为可选,可以省略。 如需查看可用模板的完整列表, 请参阅代码库初始化配置参考文档

    • LICENSE 替换为要应用于代码库的许可模板名称。此项为可选,可以省略。 如需查看可用许可模板的完整列表,请参阅 代码库初始化配置参考文档

    • README 替换为 default,以根据默认模板创建 README 文件。此项为可选,可以省略。如果省略,系统将不会创建 README 文件。

    • SERVICE_ACCOUNT 替换为要与代码库关联的服务帐号的电子邮件地址。此项为可选,可以省略。

API

  1. 如需使用 REST 调用创建代码库,请运行以下命令:

    curl \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/repositories?repository_id=REPOSITORY_ID \
        -d '{
          "instance": "projects/PROJECT_ID/locations/REGION/instances/INSTANCE_ID",
          "serviceAccount": "SERVICE_ACCOUNT"
        }'
    

    请替换以下内容:

    • REGION 替换为 Secure Source Manager 实例的区域。如需详细了解受支持的位置,请参阅 位置
    • INSTANCE_ID 替换为 Secure Source Manager 实例 ID。
    • PROJECT_ID 替换为 Secure Source Manager 实例的项目 ID。如需详细了解在哪里 查找项目 ID,请参阅 识别项目
    • REPOSITORY_ID 替换为代码库的名称。
    • SERVICE_ACCOUNT 替换为要与代码库关联的服务账号的电子邮件地址。

    您可以使用 HTTP POST 数据标志 -d'{}' 指定其他值,包括初始化代码库、添加特定的 .gitignore 文件或许可。如需了解详情,请参阅 参考文档

    如果您希望输出易于用户理解,可以使用 json_pp 将其传递给 JSON。

    例如:

    curl \
        -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/my-project-id/locations/us-central1/repositories?repository_id=my-repo \
        -d '{
          "instance": "projects/my-project-id/locations/us-central1/instances/prod-test-instance",
          "serviceAccount": "my-service-account@my-project-id.iam.gserviceaccount.com",
          "initialConfig": {
            "defaultBranch": "main"
          }
        }' | json_pp
    

    响应类似如下内容:

    {
      "name": "operations/266bf4c7-13fe-11ed-be24-da823b7355d0",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.securesourcemanager.v1.OperationMetadata",
        "createTime": "2022-08-04T14:02:59.810496928Z",
        "endTime": "2022-08-04T14:03:00.558354528Z",
        "target": "projects/654987321654/locations/us-central1/repositories/my-repo",
        "verb": "create",
        "apiVersion": "v1"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.securesourcemanager.v1.Repository",
        "name": "projects/my-project-id/locations/us-central1/repositories/my-repo",
        "instance": "projects/654987321654/locations/us-central1/instances/prod-test-instance",
        "serviceAccount": "my-service-account@my-project-id.iam.gserviceaccount.com",
        "createTime": "2022-08-04T14:03:00Z",
        "uris": {
          "html": "https://prod-test-instance-654987321654.us-central1.sourcemanager.dev/my-project-id/my-repo",
          "gitHttps": "https://prod-test-instance-654987321654-git.us-central1.sourcemanager.dev/my-project-id/my-repo.git"
        }
    }
    

    其中:

    • 654987321654 是代码库项目编号。
    • my-project-id 是代码库项目 ID。
    • my-repo 是您在创建命令中设置的 REPOSITORY_IDuris 字段包含通过 Web 浏览器或通过 Git 协议 HTTPS 访问代码库的网址。
  2. 使用响应中的 HTML URI 访问新代码库。Secure Source Manager 网页界面支持代码审核、问题跟踪和拉取请求。

代码库是在您的 Secure Source Manager 实例中创建的。

创建新代码库时,系统会向您授予 Repo Admin 角色 (roles/securesourcemanager.repoAdmin)。新的 IAM 权限可能需要长达 2 分钟才能传播,因此,如果您在创建后尝试访问代码库时收到权限错误,请等待几分钟,然后重试。

您创建的代码库会列在 Secure Source Manager 网页界面中的我的代码库 页面上。

更新代码库

网页界面

  1. 转到 Secure Source Manager 网页界面中的代码库页面。
  2. 点击导航菜单中的代码库设置
  3. 基本设置 部分中,在服务账号 字段中输入服务账号的电子邮件地址。
  4. 点击保存更改

gcloud

  1. 如需更新代码库服务帐号,请运行以下命令:

    gcloud source-manager repos update REPOSITORY_ID \
        --region=LOCATION \
        --project=PROJECT_ID \
        --service-account=SERVICE_ACCOUNT
    

    请替换以下内容:

    • REPOSITORY_ID 替换为要更新的代码库的名称。
    • LOCATION 替换为代码库所在的区域。
    • PROJECT_ID 替换为项目 ID。
    • SERVICE_ACCOUNT 替换为要与代码库关联的服务帐号的电子邮件地址。

API

  1. 如需使用 REST 调用更新代码库服务帐号,请运行以下命令:

    curl --request PATCH \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/repositories/REPOSITORY_ID?updateMask=serviceAccount \
        -d '{"serviceAccount": "SERVICE_ACCOUNT"}'
    

    请替换以下内容:

    • PROJECT_ID 替换为项目 ID。
    • REGION 替换为区域。
    • REPOSITORY_ID 替换为代码库 ID。
    • SERVICE_ACCOUNT 替换为服务帐号电子邮件地址。

后续步骤