建立及更新存放區

本頁面說明如何使用 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. 按一下導覽選單中的「+ 建立新的存放區」圖示。

  4. 填寫存放區詳細資料:

    1. 存放區 ID:輸入存放區名稱。

    2. 說明:(選用) 輸入存放區說明。

    3. Default branch:預設分支版本的名稱。

  5. 服務帳戶:(選用) 輸入要與存放區建立關聯的服務帳戶。這個使用者自管服務帳戶用於 Cloud Build 等整合。詳情請參閱「連結至 Cloud Build」。

  6. Initialize repository (初始化存放區):選用:如要初始化存放區並新增 .gitignore、授權和 README 檔案,請選取這個選項。

  7. .gitignore:選用:使用下拉式選單範本,選擇要排除哪些檔案。

  8. license:選用。從下拉式選單中選取常見授權。

  9. 點選「Create repository」(建立存放區)。

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_ID。 uris 欄位包含透過網路瀏覽器或 Git 通訊協定 HTTPS 存取存放區的網址。
  2. 使用回應中的 HTML URI 存取新存放區。Secure Source Manager 網頁介面支援程式碼審查、Issue Tracker 和提取要求。

系統會在 Secure Source Manager 執行個體中建立存放區。

建立新的存放區時,您會獲得存放區管理員角色 (roles/securesourcemanager.repoAdmin)。新的 IAM 權限最多可能需要 2 分鐘才會生效,因此,如果您在建立存放區後嘗試存取時收到權限錯誤,請稍候幾分鐘再試一次。

您建立的存放區會列在 Secure Source Manager 網頁介面的「My repositories」(我的存放區) 頁面。

更新存放區

網頁介面

  1. 前往 Secure Source Manager 網頁介面的存放區頁面。
  2. 按一下導覽選單中的「Repository settings」(存放區設定)。
  3. 在「Basic settings」(基本設定) 區段中,在「Service account」(服務帳戶) 欄位中輸入服務帳戶電子郵件地址。
  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 替換為服務帳戶電子郵件地址。

後續步驟