Cloud Buildでdbtを実行しタイムアウトをデフォルト10分から変更する
Cloud Buildとは
Cloud Buildは、Google Cloud 上でビルドを実行するサービスです。
GithubやBitbucketのリポジトリからソースコードをインポートし、仕様に合わせてビルドを実行し、該当する場合はDockerコンテナなどのアーティファクトをArtifact Registryに生成します。
ビルド構成とビルドステップ
ビルド構成ファイルをYAMLまたはJSON構文で作成することで、実行するタスクをCloud Buildに指示できます。
Cloud Buildは一連のビルドステップとして、ビルドを実行します。各ビルドステップはDockerコンテナ上で実行されます。
ビルドステップにはCloud Buildに実行させるアクションを指定します。構成ファイルには最大100個のビルドステップを含めることができます。
構成ファイルのnameにはDocker Hubで一般公開されているイメージや、Cloud Buildが提供しているビルドの用のイメージであるクラウドビルダーを使うことができます。
steps:
- name: 'ubuntu'
args: ['echo', 'hello world']
steps:
- name: 'gcr.io/cloud-builders/kubectl'
args: ['set', 'image', 'deployment/mydepl', 'my-image=gcr.io/my-project/myimage']
env:
- 'CLOUDSDK_COMPUTE_ZONE=us-east4-b'
- 'CLOUDSDK_CONTAINER_CLUSTER=my-cluster'
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/my-project-id/myimage', '.']
Cloud Buildでdbtを実行する
2022.06.14現在でDocker Hubで最新のdbtのイメージはfishtownanalytics/dbt:1.0.0
です。
なので以下のような構成ファイルを作成します。dbtディレクトリ配下に各モデルを配置している場合は、dirを指定します。
steps:
- name: "fishtownanalytics/dbt:1.0.0"
args: ["build", "--target", "prod"]
dir: "dbt"
タイムアウト時間を変更する
Cloud Buildのビルドのタイムアウト時間はデフォルトで10分です。この時間以上経過すると、ビルドの処理は停止し、ビルドのステータスはTIMEOUTになります。
dbtでレコード数が多いテーブルを生成する場合は10分を超える場合もあるので、
構成ファイルのtimeoutフィールドを指定して、このタイムアウトを変更します。
timeoutフィールドにはビルドステップとビルド全体の両方に対して存在します。ビルドステップ毎にタイムアウトを設定したい場合は、ビルドステップにtimeoutフィールドを、ビルド全体にtimeoutフィールドを設定したい場合は共通で記入します。
以下はビルド全体にtimeoutフィールドを1時間に設定した場合の例になります。
steps:
- name: "fishtownanalytics/dbt:1.0.0"
args: ["build", "--target", "prod"]
dir: "dbt"
timeout: 3600s
Discussion