Dockerfile。
如要使用 Cloud Build 從 Git 自動部署,請按照下列步驟操作:
建構 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替換變數。將 Cloud Run 管理員和服務帳戶使用者角色授予 Cloud Build 服務帳戶:
在 Google Cloud 控制台中開啟 Cloud Build 設定頁面:
在「服務帳戶權限」面板中,將「Cloud Run 管理員」角色的狀態設為「啟用」:
選取「GRANT ACCESS TO ALL SERVICE ACCOUNTS」(授予所有服務帳戶的存取權),即可將服務帳戶使用者角色授予頁面中專案的所有服務帳戶。
按一下左側導覽面板中的「觸發條件」,開啟「觸發條件」頁面:
- 點選「建立觸發條件」。
- 在「Name」(名稱) 欄位中,輸入觸發條件的名稱。
- 在「事件」下方,選取要啟動觸發條件的存放區事件。
- 在「來源」下方,選取存放區和分支版本或標記名稱,以啟動觸發程序。如要進一步瞭解如何指定要自動建構的分支版本,請參閱建立建構作業觸發條件。
- 在「Cloud Build 設定檔 (YAML 或 JSON)」下方,選取「Cloud Build 設定檔」。
- 在「Cloud Build 設定檔位置」欄位中,在
/後面輸入cloudbuild.yaml。 - 按一下「建立」即可儲存建構觸發條件。
所有步驟都完成了。從現在開始,每次您推送到存放區時,系統就會自動叫用建構作業,並部署到您的 Cloud Run 服務。
使用 IAM 最低權限持續部署
將容器部署到 Cloud Run 服務時,容器會以此 Cloud Run 服務的「執行階段服務帳戶」身分執行。因為 Cloud Build 可以自動部署新的容器,因此 Cloud Build 必須要能「做為」「Cloud Run 服務的執行階段服務帳戶」來執行。
如要授予 Cloud Build 有限存取權,以便部署至 Cloud Run 服務,請按照下列步驟操作:
主控台使用者介面
前往 Google Cloud 控制台的「Service accounts」(服務帳戶) 頁面:
按一下 Cloud Run 服務的執行階段服務帳戶電子郵件地址 (預設為
PROJECT_NUMBER-compute@developer.gserviceaccount.com)。按一下「具有存取權的主體」分頁標籤。
按一下「授予存取權」。
輸入 Cloud Build 服務帳戶 (
PROJECT_NUMBER@cloudbuild.gserviceaccount.com)在「Select a role」(請選擇角色) 下拉式選單中,選取「Service Accounts」(服務帳戶) >「Service Account User」(服務帳戶使用者) 角色。
按一下 [儲存]。
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 替換為服務帳戶位址。
詳情請參閱部署作業權限。
後續步驟
- 瞭解如何設定服務帳戶權限,將容器映像檔部署或發布至其他專案的私人登錄檔