用指令建立 Cloud Build Trigger

Table of Contents

圖片來源 フリー写真素材ぱくたそ

目前還無法使用 gcloud 指令直接建立 Cloud Build Trigger,必須要透過 REST API

在編寫 Shell Script 的時候對於認證的部分就比較麻煩,要使用 REST API 就必須要有 Token 來驗證身份

現在我們可以透過 gcloud auth application-default print-access-token 輕鬆取得所需的 Token

首先確定專案有啟用 Cloud Build API

$ gcloud services enable cloudbuild.googleapis.com

接下來會需要用到 application-default 憑證,用來產生 Token

我們可以使用 gcloud 指令產生

$ gcloud auth application-default login

或是透過設定 GOOGLE_APPLICATION_CREDENTIALS 環境變數使用 Service Account 的憑證(需要給予 Service Account 角色 Cloud Build Editor 權限)

$ export GOOGLE_APPLICATION_CREDENTIALS=/path/credentials.json

最後執行以下指令建立 Cloud Build Trigger,請將 [[YOUR_REPO_NAME]] 改成 Source Repositories 上的名稱:

$ export REPO_NAME=[[YOUR_REPO_NAME]]
$ export PROJECT_ID=$(gcloud config get-value core/project)
$ export OAUTH_TOKEN=$(gcloud auth application-default print-access-token)
$ curl -X POST -H "Authorization: Bearer ${OAUTH_TOKEN}" -H "Content-Type: application/json" \
https://cloudbuild.googleapis.com/v1/projects/${PROJECT_ID}/triggers -d \
'
{
  "description": "Build master for GAE",
  "triggerTemplate": {
    "projectId": "'${PROJECT_ID}'",
    "repoName": "'${REPO_NAME}'",
    "branchName": "master"
  },
  "substitutions": {},
  "filename": "cloudbuild.yaml"
}
'

其他參考: