使用 Cloud Build 手動設定持續部署

以下操作說明假設您有一個根目錄中含有 Dockerfile 的 Git 存放區。

如要使用 Cloud Build 從 Git 自動化部署作業,請按照下列步驟操作:

  1. 建構 Cloud Build 設定,以便:

    • 建構容器映像檔
    • 將映像檔推送至 Container Registry(已淘汰)
    • 將新的修訂版本部署至 Cloud Run 服務

    如要這麼做,請在存放區根目錄中新增名為 cloudbuild.yaml 的檔案,並加入下列內容:

     steps:
     # build the container image
     - name: 'gcr.io/cloud-builders/docker'
       args: ['build', '-t', 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA', '.']
     # push the container image to Container Registry
     - name: 'gcr.io/cloud-builders/docker'
       args: ['push', 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA']
     # Deploy container image to Cloud Run
     - name: 'gcr.io/cloud-builders/gcloud'
       args:
       - 'run'
       - 'deploy'
       - '[SERVICE-NAME]'
       - '--image'
       - 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA'
       - '--region'
       - '[REGION]'
     images:
     - 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA'
    

    取代

    • [SERVICE-NAME] 改為 Cloud Run 服務名稱。
    • [REGION] 改成您要部署的 Cloud Run 服務地區。

    從 Git 存放區觸發時,Cloud Build 會填入 $COMMIT_SHA 替換變數的用法。

  2. Cloud Run 管理員服務帳戶使用者角色授予 Cloud Build 服務帳戶:

    1. 在 Google Cloud 控制台中開啟 Cloud Build 設定頁面:

      前往 Cloud Build 設定頁面

    2. 在「Service account permissions」(服務帳戶權限) 面板中,將「Cloud Run Admin」角色的狀態設為「Enable」

      服務帳戶權限頁面的螢幕截圖

    3. 選取「授予所有服務帳戶存取權」,即可授予頁面中專案的所有服務帳戶「服務帳戶使用者」角色。

  3. 按一下左側導覽面板中的「觸發條件」,開啟「觸發條件」頁面:

    前往「觸發條件」頁面

    1. 點選「建立觸發條件」
    2. 在「名稱」欄位中,輸入觸發事件的名稱。
    3. 在「事件」下方,選取要啟動觸發條件的存放區事件。
    4. 在「Source」下方,選取存放區,以及啟動觸發條件的分支或標記名稱。如要進一步瞭解如何指定要自動建構的分支版本,請參閱「建立建構作業觸發條件」。
    5. 在「Cloud Build 設定檔 (yaml 或 json)」下方,選取「Cloud Build 設定檔」
    6. 在「Cloud Build 設定檔位置」欄位中,在 / 後面輸入 cloudbuild.yaml
    7. 按一下「建立」即可儲存自動建構觸發條件。
  4. 所有步驟都完成了。從現在開始,每次您推送到存放區時,系統就會自動叫用 Cloud Run 服務的建構作業和部署作業。

使用 IAM 最低權限持續部署

將容器部署到 Cloud Run 服務時,容器會以此 Cloud Run 服務的「執行階段服務帳戶」身分執行。因為 Cloud Build 可以自動部署新的容器,因此 Cloud Build 必須要能「做為」Cloud Run 服務的執行階段服務帳戶

如要將 Cloud Build 的存取權限限制為部署至 Cloud Run 服務,請按照下列步驟操作:

主控台使用者介面

  1. 前往 Google Cloud 控制台的「Service accounts」頁面:

    前往「Service accounts」(服務帳戶)

  2. 按一下 Cloud Run 服務的執行階段服務帳戶電子郵件地址 (預設為 PROJECT_NUMBER-compute@developer.gserviceaccount.com)。

  3. 按一下「Permissions」(權限) 分頁標籤。

  4. 按一下「授予存取權」

  5. 輸入 Cloud Build 服務帳戶 (PROJECT_NUMBER@cloudbuild.gserviceaccount.com)

  6. 在「Select a role」(請選擇角色) 下拉式選單中,依序選取「Service Accounts」(服務帳戶) >「Service Account User」(服務帳戶使用者) 角色。

  7. 按一下 [儲存]

gcloud

使用 gcloud iam service-accounts add-iam-policy-binding 指令:

gcloud iam service-accounts add-iam-policy-binding \
  PROJECT_NUMBER-compute@developer.gserviceaccount.com \
  --member="serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \
  --role="roles/iam.serviceAccountUser"

PROJECT_NUMBER 替換為專案的數字 ID。

如果您使用的是自訂服務身分,請將 PROJECT_NUMBER-compute@developer.gserviceaccount.com 替換為服務帳戶位址。

詳情請參閱「部署權限」。

後續步驟

  • 如要瞭解如何將容器映像檔部署或發布至其他專案中的私人註冊資料庫,請參閱「設定服務帳戶權限」一文