Dockerfile
的 Git 存放區。
如要使用 Cloud Build 從 Git 自動化部署作業,請按照下列步驟操作:
建構 Cloud Build 設定,以便:
如要這麼做,請在存放區根目錄中新增名為
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 設定頁面:
在「Service account permissions」(服務帳戶權限) 面板中,將「Cloud Run Admin」角色的狀態設為「Enable」:
選取「授予所有服務帳戶存取權」,即可授予頁面中專案的所有服務帳戶「服務帳戶使用者」角色。
按一下左側導覽面板中的「觸發條件」,開啟「觸發條件」頁面:
- 點選「建立觸發條件」。
- 在「名稱」欄位中,輸入觸發事件的名稱。
- 在「事件」下方,選取要啟動觸發條件的存放區事件。
- 在「Source」下方,選取存放區,以及啟動觸發條件的分支或標記名稱。如要進一步瞭解如何指定要自動建構的分支版本,請參閱「建立建構作業觸發條件」。
- 在「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
)。按一下「Permissions」(權限) 分頁標籤。
按一下「授予存取權」
。輸入 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。
如果您使用的是自訂服務身分,請將 PROJECT_NUMBER-compute@developer.gserviceaccount.com
替換為服務帳戶位址。
詳情請參閱「部署權限」。
後續步驟
- 如要瞭解如何將容器映像檔部署或發布至其他專案中的私人註冊資料庫,請參閱「設定服務帳戶權限」一文