中央西門風痕影 好奇
3 weeks ago
Google Cloud Platform 自動 build + deploy 筆記
latest #7
__φ( ̄ー ̄ )ノ(豪邁的用蠟筆亂塗)
中央西門風痕影
3 weeks ago @Edit 3 weeks ago
業主在「Cloud Run」這頁,「編輯持續部署功能」(Edit Continuous Deployment)的「觸發條件」(Triggers)裡,指定了 GitHub repo,並設定成用 Buildpacks 自動 build

業主原本說這環境會自動 deploy;但我發現每次在 repo 裡上 tag 之後,build 雖然有自動執行,線上版本卻依然是舊的,且「服務」(service)本身也不會自動 deploy 新版本。就算手動 deploy,實際發出 request,得到的也是舊版的 response

問了業主後,他沒有頭緒,開權限要我自己研究
中央西門風痕影
3 weeks ago @Edit 3 weeks ago
研究後發現:雖然自動 build 的「映像檔名稱」(Image name)用了 $COMMIT_SHA 結尾,但「服務」這邊使用的映像檔其實都是同一個,並沒有變過(也不是任何一個 commit 的 hash)

雖然我沒權限看有哪些映像檔,但我可以編輯「服務」的「YAML」設定,把裡頭使用的映像檔名稱改掉
立即下載
把結尾改成指定版本的 commit hash 後,再 deploy,再對「服務」發 request,出現的就是新版本的 response 了

但這樣變成要每次都手動調整,應該要可以自動才對的
最後研究出來的結果:只靠 GCP 的「觸發條件」其實並沒有辦法做到自動 deploy,只能自動 build

如果要自動 deploy,需要在 git repo 內提供 cloudbuild.yamlDockerfile
中央西門風痕影
3 weeks ago @Edit 3 weeks ago
老實說要我設定這些是有困難的,因此最後參考了不少討論串,再加上我自己不斷試誤,終於弄出一個比較精簡的 cloudbuild.yamloptions: (Plurk Paste)
中央西門風痕影
3 weeks ago @Edit 3 weeks ago
- options.logging 我一開始沒寫,但 deploy 會出錯
- 不做 push 的話,deploy 那邊會找不到前面產生的映像檔
- 不太確定 images 這個設定是否能省略
- 有些現成的變數可以用,例如「映像檔名稱」我就用到了 $PROJECT_ID$REPO_FULL_NAME$COMMIT_SHA
Substituting variable values
back to top