最近、cloudbuild での設定で使ったtips をメモします。
背景としては、自分でとあるオープンソースをCloudCuild で docker build するのに30分近くかかってしまいました。そのとき
- timeout の設定
- ビルドに使用するコアをパワーアップさせる
ということができるこを知ったのでメモしておきます。
Timeout
注意するのは、各ステップと全体の2か所でtimeout の設定があるということ。こちらにある解説 が分かり易い。感謝。
build:
steps:
- id: main
name: my-builder-image
entrypoint: bash
timeout: 600s
args:
- /workspace/build.sh
- ${BRANCH_NAME}
- ${COMMIT_SHA}
- ${SHORT_SHA}
timeout: 600s
全体のtimeoutはコマンドラインから実行するときもgcloud builds submit --timeout=900s ...
で指定できるらしい。
machine type
使用するマシンを選べるようです。Cloud Build pricingのページにマシンの型と料金が書かれています。
Machine type | Virtual CPUs | Memory | Price (USD) |
---|---|---|---|
e2-medium | 1 | 4GB | $0.003 / build-minute. First 120 builds-minutes per day are free. |
e2-highcpu-8 | 8 | 8GB | $0.016 / build-minute |
e2-highcpu-32 | 32 | 32GB | $0.064 / build-minute |
cloud build の設定ファイルは以下のように書いたら、ビルドの時間は短くなった。ので効果は分かる。でもお金少しかかりそうなので、普段は使わない方がいいのかな。
options:
machineType: 'E2_HIGHCPU_8'
Logging
別のところで、CloudBuild で以下のエラーに出くわす。build を始めてもらえない。
ここでは(b)で解決しました。、実は設定したサービスアカウントがLogging への権限を持っていないことが原因だったようです。
options:
logging: CLOUD_LOGGING_ONLY
としました。参考にした記事は下記。
まとめ
とりあえずGCPのCloudBuildの使い方のメモとして書きました。GithubActions よりこちらの方がコストはかからなそうなので、個人ではこちらを使う方が良いのかな。
(2021/01/10)