使用 Git 原始碼管理

Secure Source Manager 支援所有 Git SCM 用戶端指令,並內建提取要求和問題追蹤功能。支援 HTTPS 和 SSH 驗證

必要的角色

如要取得使用 Git 與 Secure Source Manager 存放區互動所需的權限,請要求管理員授予您下列 IAM 角色:

  • Secure Source Manager 執行個體存取者 (roles/securesourcemanager.instanceAccessor) 在 Secure Source Manager 執行個體上
  • 如要複製存放區,請按照下列步驟操作: 在存放區中,選取「Secure Source Manager Repo Reader」 (roles/securesourcemanager.repoReader)
  • 如要推送至存放區: 存放區的「Secure Source Manager 存放區寫入者」 (roles/securesourcemanager.repoWriter)

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

如要瞭解如何授予 Secure Source Manager 角色,請參閱「使用 IAM 控管存取權」和「授予使用者執行個體存取權」。

安裝 Git 和 Google Cloud CLI

  1. 安裝 Git

  2. 如果 Git 安裝程式提示您選擇憑證輔助程式,請選取「None (Do not use a credential helper)」(無 (不使用憑證輔助程式))

  3. 安裝 gcloud CLI

  4. 如要透過 HTTPS 使用 Git,必須使用 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,其中包含執行個體的所在地區。如要進一步瞭解區域,請參閱「位置」一文。

使用 Secure Source Manager 執行 Git 指令時,驗證輔助程式會使用 gcloud CLI 擷取您的Google Cloud 憑證。

如要在初始憑證設定後重新驗證,請執行下列 gcloud CLI 指令:

gcloud auth login

使用服務帳戶從 Compute Engine VM 進行驗證

您可以透過附加的服務帳戶,從 Compute Engine 虛擬機器 (VM) 進行驗證。

設定 VM 和服務帳戶

如果您使用 Compute Engine 預設服務帳戶,請建立具有必要 OAuth 範圍的 VM:

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:VM 的名稱。
  • PROJECT_ID:您的 Google Cloud 專案 ID。
  • ZONE:VM 的可用區。

如果使用自訂服務帳戶,請先建立服務帳戶,再建立 VM。

  1. 建立服務帳戶:

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

    SA_NAME 換成服務帳戶的名稱。

  2. 授予使用服務帳戶的權限。如要建立含有服務帳戶的 VM,您必須擁有服務帳戶的服務帳戶使用者角色 (roles/iam.serviceAccountUser)。將這個角色授予建立 VM 的主體:

    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 替換為建立 VM 的使用者電子郵件地址。

  3. 建立 VM:

    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 權限可能需要幾分鐘才會全面生效。

在 VM 上設定 Git

  1. 使用 SSH 連線至 VM:

    gcloud compute ssh VM_NAME --project=PROJECT_ID --zone=ZONE
    
  2. 在 VM 上安裝 Git:

    sudo apt-get install git
    
  3. 在 VM 上設定 Git 憑證輔助程式,如「設定憑證」一文所述。舉例來說,在 Linux 上:

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

設定憑證輔助程式後,Git 會使用 VM 服務帳戶的應用程式預設憑證,向 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 Proxy 複製存放區。使用 Developer Connect 複製時,系統會透過 IAM 驗證及授權存放區存取權。

事前準備

  1. 按照操作說明在 Developer Connect 中建立與 Secure Source Manager 存放區的連線
  2. 確認 Developer Connect 連線已啟用 Git Proxy。 如需啟用 Git Proxy 的操作說明,請參閱「設定及使用 Developer Connect Proxy」。
  3. 在 Developer Connect 中,將 GitRepositoryLink 資源的 roles/developerconnect.gitProxyReader 角色授予需要使用 Proxy URI 複製的主體。如需授予角色的操作說明,請參閱「使用 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

使用 Proxy URI 複製存放區

如要使用 Developer Connect Proxy 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 說明文件

後續步驟