Google Cloud Buildとは

GCP上でDocker Imageを作成するサービス. GCPサービスのひとつ.

Cloud Buildのビルド構成ファイル(cloudbuild.yml/cloudbuild.json)

Cloud Buildに渡す各種オプションを定義する. gcloudの引数の代わりに指定.

cloudbuild.yaml を作成.

steps:
- name: 'gcr.io/cloud-builders/docker'
  args: [ 'build', '-t', 'us-central1-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1', '.' ]
images:
- 'us-central1-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1'

gcloudのオプション —config とともに指定.

$ gcloud builds submit --config cloudbuild.yaml

基本的な書き方: 🔗基本的なビルド構成ファイルの作成

クラウドビルダー

設定ファイルの必須指定要素 name に指定するもの.

ビルドで利用するためのベースとなるコンテナイメージがある. 元から提供されているものとそれをカスタムしたコミュニティ提供のものがある.

ref. Cloud builders

Cloud Build Howto

DockerfileをつかってGoogle Cloud BuildでDockerイメージをビルドする

ソースコードとDockerfileがあるディレクトリで以下を実行.

$ gcloud builds submit --tag {region}/PROJECT_ID/IMAGE_NAME
  • regionは gcr.ioやasia.gcr.io(日本だとこっちがいい).
  • PROJECT_IDはGCPのものを利用.
  • IMAGE_NAMEは任意.

Cloud Build トラブルシューティング

🔧ローカルファイルがサーバに送信されないとき

サイズ容量が大きいファイルや不要なファイルは自動で除外される.

Creating temporary tarball archive of 5 file(s) totalling 2.0 KiB before compression. Some files were not included in the source upload.

.gcloudignore をDockerfileと同じ場所に作成する必要がある.

もしくは 以下でglobalに無効化.

$ gcloud config set gcloudignore/enabled false

どうも構成ファイル(gcloudbuild.yaml)を指定すると.gcloudignoreを見てくれない. —ignore-fileで明示的に指定する(or おそらく構成ファイルに書く).

$ gcloud builds submit --config gcloudbuild.ymal --ignore-file .gcloudignore

🔧Cloud Buildのビルドのスピードを上げたい

高性能なビルドインスタンスを4種類の中から指定できる.

optionのmachine_typeで指定.数値はCPU数(8/32 CPUs).

  • machine-type
    • n1_highcpu_8
    • n1_higucpu_32
    • e2_highcpu_8
    • e2_highcpu_32

高性能なほどお金がかることも注意.

ref. REST Resource: projects.buildsd

🔧ビルドが失敗 - no space left on device

Google Cloud Buildを実行している環境の空き容量不足(メモリではない).