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

下列操作說明假設您有一個 Git 存放區,且根目錄中含有 Dockerfile

如要使用 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. 在「服務帳戶權限」面板中,將「Cloud Run 管理員」角色的狀態設為「啟用」

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

    3. 選取「GRANT ACCESS TO ALL SERVICE ACCOUNTS」(授予所有服務帳戶的存取權),即可將服務帳戶使用者角色授予頁面中專案的所有服務帳戶。

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

    前往「觸發條件」頁面

    1. 點選「建立觸發條件」
    2. 在「Name」(名稱) 欄位中,輸入觸發條件的名稱。
    3. 在「事件」下方,選取要啟動觸發條件的存放區事件。
    4. 在「來源」下方,選取存放區和分支版本或標記名稱,以啟動觸發程序。如要進一步瞭解如何指定要自動建構的分支版本,請參閱建立建構作業觸發條件
    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. 按一下「具有存取權的主體」分頁標籤。

  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。

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

詳情請參閱部署作業權限

後續步驟