第1回、第2回と、dbt Cloud の開発から本番環境へのデプロイまでの手順を紹介しました。
この記事では、dbt Cloud の開発とデプロイを支援するCI ジョブ(継続的インテグレーションジョブ)機能を紹介します。
【目次】
- CI ジョブを利用するメリット
- CI ジョブの設定手順
- プルリク時に CI ジョブが実行されることを確認
1. CI ジョブを利用するメリット
dbt Cloud の CI ジョブ機能を使うと、プルリクエスト作成時に dbt コマンドを自動実行できます。本番環境へのデプロイ前にデータモデルの変更処理とテストを自動実行することで、ミスを防ぎ安全にリリースサイクルをまわすことができます。
2. CI ジョブの設定手順
プルリクエストが作成されたら自動的に dbt Cloud の [Continuous Integration job](CIジョブ) が実行されるよう設定します。
- [Orchestration] → [Jobs] → [Create job] → [Continuous integration job] を選択し、新規CIジョブ作成を開きます。
-
ジョブ設定画面でジョブ名、説明、ジョブを実行する環境を入力します。また Git trigger のプルリク時発火する [Triggered by pull requests] がONになっていることを確認します。
[Environment] (実行環境) は CI ジョブ用の環境を作成することをおすすめします。このサンプルではプルリク時の実行用環境 QA を事前に作成して利用しています。

-
新規にCIジョブを作成すると、コマンド入力エリア [Commands] には以下のコマンド例が入力されています。

入力されているコマンド
dbt build --select state:modified+コマンドの意味
- dbt build : dbt test と dbt run が実行されます
- —select state:modified+ :更新されたモデルより下流の処理のみを対象に実行します
-
[Compare changes against an environmental (deferral) ]に指定した環境は、プルリク実行時にコードの差異がある場合、指定した環境にも変更が反映されます。
3. プルリク時に CI ジョブが実行されることを確認
「2. CIジョブの設定手順」で設定した CI ジョブがプルリク作成時に自動実行されることを確認してみます。
-
プルリクエストを作成します
まず、dbt Cloud IDE で処理を更新後、[Create pull request]をクリックし、GitHubに遷移して [Create pull request] をクリックする、という入門編2/4で実施した一連の開発操作を行います。
-
dbt Cloud の CIジョブが実行されます
GitHub画面を開いたまましばらく待つと以下のようにdbt Cloudの処理が実行された結果が表示されます。このタイミングで CIジョブが自動実行されています。

-
dbt Cloud で CIジョブの実行結果を確認してみます
dbt Cloud の画面から [Deploy] → [Run history] で実行結果を参照すると、ジョブ実行一覧画面にプルリク作成時にCIジョブが自動実行された記録が表示され正常終了したことが確認できました。

該当の CI ジョブをクリックして実行結果を参照すると、コマンド別の実行結果を参照できます。また、この CIジョブはGitHub プルリクエスト #63 が作成されたタイミングで実行されていることが左上の[Trigger]からわかります。

補足
CI ジョブは処理実行時に一時的なスキーマを作成します。このスキーマの末尾にはプルリクエストアサインナンバーが付きます。作成された一時的なスキーマはマージ後に自動的に削除されます。
最後に
いかがでしたでしょうか。今後も検証した内容についてまとめて発信していきたいと思いますので、よろしくお願いいたします
前回の検証は↓
https://qiita.com/matsuki_work/private/7995a2a1cbd72b5a70f8


