継続的インテグレーション スイートの作成

継続的インテグレーション(CI)スイートは、LookML プロジェクトに関連付けられた一連の検証手順です。manage_ci 権限を持つ Looker ユーザーは、CI スイートで次の構成を行うことができます。

始める前に

CI スイートを作成する前に、次のものが必要です。

  • CI の要件を満たし、CI が有効になっている Looker インスタンス。
  • manage_ci 権限を持つ Looker ユーザー アカウント(この権限は管理者の権限セットに含まれています)。
  • 本番環境にデプロイされた commit が 1 つ以上ある LookML プロジェクト。CI バックグラウンド サービスは、プロジェクトが本番環境モードの場合にのみ、プロジェクトの Git 構成を取得できます。プロジェクトが Development Mode にのみ存在する場合、CI は Webhook トリガーの構成時にエラーを返します。

CI スイートの作成

Looker IDE の [スイート] ページで、バリデータを構成して実行できます。

CI スイートのページ

CI スイートを作成する手順は次のとおりです。

  1. Looker IDE で、IDE ナビゲーション バーの [継続的インテグレーション] アイコンをクリックします。
  2. [Suites] タブをクリックして、[Suites] ページを開きます。
  3. [スイート] ページでは、新しいスイートを作成したり、既存のスイートを編集したりできます。
    • 新しいスイートを作成するには、[スイートを作成] ボタンをクリックします。
    • 既存のスイートを編集するには、スイートの [スイートを編集] ボタンをクリックします。
  4. [スイート名] に名前を入力します。既存のスイートを編集する場合は、必要に応じて鉛筆アイコンをクリックしてスイート名を編集できます。
  5. (省略可)定期的なスケジュールで自動検証テストを設定する場合は、[スケジュールでトリガーする] を有効にします。詳細については、このページのスケジュールでトリガーするセクションをご覧ください。
  6. (省略可)Looker デベロッパーがリポジトリに pull リクエストを送信するたびに自動検証テストを設定する場合は、[Looker からの pull リクエストでトリガーする] を有効にします。詳細については、このページの Looker からの pull リクエストでトリガーするセクションをご覧ください。

    CI スイートで pull リクエストのトリガーを有効にする場合は、必要に応じて [Only for target branch] フィールドを使用して、リポジトリ内の特定のブランチへの pull リクエストのみが CI スイートの実行をトリガーするように指定できます。詳細については、このページの Looker からの pull リクエストをトリガーするセクションをご覧ください。

  7. (省略可)dbt Cloud CI ジョブが実行されるたびに自動検証テストを設定する場合は、[Trigger on pull requests from dbt Cloud] をオンにします。詳細については、このページの dbt Cloud からの pull リクエストでトリガーするセクションをご覧ください。

  8. (省略可)インポートされたアップストリーム(ハブ)プロジェクトに pull リクエストが送信されるたびに自動検証テストを設定する場合は、次の操作を行います。

    1. [インポートされたプロジェクトからの pull リクエストでトリガーする] を有効にします。
    2. [Select upstream projects to subscribe to] で、この CI スイートの実行をトリガーするインポートされたハブ プロジェクトごとにチェックボックスをオンにします。アップストリーム プロジェクトを 1 つ以上選択する必要があります。

    詳細については、このページのインポートされたプロジェクトからの pull リクエストでトリガーするをご覧ください。

  9. (省略可)CI 実行のステータスに基づいてメール通知アラートを受け取る場合は、[メール通知アラートを有効にする] をオンにします。詳しくは、このページのアラートを設定するセクションをご覧ください。

  10. 必要に応じて、バリデータの切り替えを有効にしてバリデータをオンにし、オプションを構成します。各バリデータの詳細については、次のドキュメント ページをご覧ください。

  11. 次のいずれかの方法で変更を保存します。

    • 新しいスイートを作成する場合は、[スイートを作成] ボタンをクリックします。
    • 既存のスイートを編集する場合は、[スイートを更新] ボタンをクリックします。

トリガー

CI 実行は、次のいくつかの方法でトリガーできます。

スケジュールに基づいてトリガーする

[スケジュールに基づいてトリガーする] を有効にすると、スケジュールに基づいて自動的にトリガーされるように CI スイートを構成できます。

この切り替えボタンを有効にすると、CI スイートを自動的に実行する頻度と詳細を選択できます。

  • 毎月、特定の日時
  • 毎週、特定の曜日と時刻
  • 毎日、特定の時刻
  • 1 時間ごと、または 2、3、4、6、8、12 時間ごと(1 日の特定の時間に開始、終了)
  • 分単位: 5、10、15、20、30 分ごと。1 日の特定の時刻に開始、終了
  • 1 年の特定の月の特定の日時
  • 特定の曜日の特定の時間帯

Looker からの pull リクエストでトリガーする

pull リクエストで自動的にトリガーされるように CI スイートを構成するには、[Looker からの pull リクエストでトリガーする] を有効にします。pull リクエストのトリガーを使用するには、Looker の [継続的インテグレーション管理] ページで Looker 管理者が Git リポジトリを構成する必要があります。

CI スイートの pull リクエスト トリガーを有効にすると、リポジトリ内の特定のブランチへの pull リクエストのみが CI スイートの実行をトリガーするように指定できます。CI 実行の自動 pull リクエスト トリガーをリポジトリ内の特定のブランチに制限するには、[Only for target branch] フィールドにブランチのカンマ区切りのリストを入力します。

たとえば、リポジトリに main、release_1、dev という名前の 3 つのブランチがある場合、[Only for target branch] フィールドに「main, release_1」と入力します。つまり、Looker デベロッパーが main ブランチまたは release_1 ブランチに pull リクエストを送信すると、CI の実行がトリガーされます。Looker デベロッパーが dev ブランチに pull リクエストを送信しても、CI スイートの自動実行はトリガーされません。

dbt Cloud からの pull リクエストでトリガーする

インスタンスで dbt Cloud インテグレーションを構成している場合は、dbt Cloud CI ジョブの完了時に自動的にトリガーされるように CI スイートを構成できます。CI スイートは、dbt モデルの変更が Looker Explore で SQL エラーを引き起こすかどうかを、dbt の変更がデプロイされる前に検証します。

このトリガーを構成するには、CI スイートの作成時または編集時に [Trigger on pull requests from dbt Cloud] を有効にします。

このトリガーを有効にしたら、次のオプションを構成します。

  • dbt Cloud ジョブ: このスイートをトリガーする dbt Cloud CI ジョブをプルダウン フィールドから選択します。

  • スキーマのユーザー属性: データベース接続のスキーマ名を保持する Looker ユーザー属性を選択します。このリストには、管理パネルで CI が有効になっているユーザー属性のみが表示されます。

このトリガーを有効にしてスイートを保存すると、Looker は dbt Cloud アカウントに Webhook を自動的に登録し、ジョブの完了をリッスンします。

dbt Cloud でトリガーされた実行の場合、Looker は dbt Cloud の実行によって作成された一時スキーマを動的に識別し、CI の実行中に、選択したユーザー属性をこの一時スキーマ名でオーバーライドします。

インポートされたプロジェクトからの pull リクエストでトリガーする

Looker プロジェクトでローカル プロジェクトのインポートを使用して、同じ Looker インスタンスから他のプロジェクトをインポートする場合、インポートされたアップストリーム プロジェクト(ハブ プロジェクト)で pull リクエストが開かれたり更新されたりするたびに、ダウンストリーム プロジェクト(スポーク プロジェクト)をテストするように CI スイートを構成できます。

たとえば、marketing スポーク プロジェクトと finance スポーク プロジェクトにインポートされた company_bi ハブ プロジェクトがあるとします。marketing プロジェクトと finance プロジェクトでトリガーを構成して、company_bi リポジトリに pull リクエストが送信されるたびに、それらのスポーク プロジェクトを検証できます。

このトリガーを構成する前に、次の前提条件と動作を考慮してください。

  • ローカル プロジェクトのインポートのみ: サブスクライブされたすべてのハブ プロジェクトは、同じ Looker インスタンス上の manifest.lkml で local_dependency パラメータを使用して、スポーク プロジェクトにローカルにインポートする必要があります。リモート プロジェクト(プロジェクトのマニフェスト ファイルで remote_dependency パラメータを使用するインポート)はサポートされていません。
  • Git と本番環境モード: スポーク プロジェクトとインポートされたハブ プロジェクトの両方を本番環境モードにデプロイし、Git リポジトリに CI GitHub アプリを構成する必要があります。
  • 権限: Looker CI ユーザーロールには、スポーク プロジェクトとインポートされたハブ プロジェクトの両方のモデルに対する develop 権限が必要です。
  • バリデータの動作: スポーク プロジェクトは本番環境バージョンに対して検証され、比較対象の開発ブランチの Git 状態がないため、スイートの設定に関係なく、インポートされたプロジェクトの pull リクエストによってトリガーされる実行では、増分検証が自動的に無効になります。また、インポートされたプロジェクトの pull リクエストによってのみトリガーされるスイートでは、CI LookML バリデータと CI スタイル バリデータを無効にすることをおすすめします。これらのバリデータは、スポーク プロジェクトのファイルのみをチェックし、アップストリームの変更の影響を受けないためです。

1 つ以上のインポートされたハブ プロジェクトに pull リクエストが送信されたときに CI 検証を実行するようにスポーク プロジェクトを構成するには、スポーク プロジェクトで CI スイートを作成または編集するときに、次の操作を行います。

  1. [インポートされたプロジェクトからの pull リクエストでトリガーする] を有効にします。
  2. [Select upstream projects to subscribe to] で、この CI スイートの実行をトリガーするインポートされたハブ プロジェクトごとにチェックボックスをオンにします。アップストリーム プロジェクトを 1 つ以上選択する必要があります。

ハブ プロジェクトの変更によって複数のスポーク プロジェクトで検証実行をトリガーする場合は、各スポーク プロジェクトで CI スイートを構成する必要があります。

CI スイートを保存すると、Looker は、選択した各ハブ プロジェクトのリポジトリに、pull リクエスト イベントの Webhook サブスクリプションを自動的に作成します。サブスクライブされたハブ プロジェクトのリポジトリに pull リクエストが送信されると、Looker はスポーク プロジェクトで CI 実行をトリガーします。この実行では、インポートされたハブ プロジェクトを pull リクエストの commit に一時的に固定しながら、スポーク プロジェクトの製品版を検証します。Looker は、スポーク プロジェクトの CI 実行の結果を、ハブ プロジェクトの pull リクエストの commit ステータスとして報告します。Looker IDE のスポーク プロジェクトの [Runs] ページで実行の詳細を表示することもできます。このページでは、[Trigger] 列に [Project Import] が表示され、実行結果ページに [Project Imports] セクションが表示されます。これらの実行方法と結果の確認方法については、CI スイートの実行と CI 実行の結果の表示をご覧ください。

アラートの設定

CI 実行のステータスに基づいてメール通知アラートを受け取るには、CI スイートのアラートを設定します。これにより、Looker IDE の [実行] ページを参照することなく、継続的インテグレーションの実行をモニタリングできます。

CI スイートのメール通知アラートを構成するには、CI スイートの作成または編集時に次の手順を行います。

  1. [メール通知アラートを有効化] をオンにします。
  2. [Email addresses] フィールドに、アラートを受信するメールアドレスのリストをカンマ区切りで入力します。
  3. チェックボックスを使用して、アラートをトリガーするジョブ ステータスを選択します。
    • 失敗: CI 実行が検証テストに失敗したときにメールをトリガーします。
    • エラー: CI 実行でシステムエラーまたは構成エラーが発生したときにメールをトリガーします。
    • 合格: CI 実行が正常に完了したときにメールをトリガーします。
    • キャンセル済み: CI 実行がキャンセルされたときにメールをトリガーします。

スイートの削除

CI スイートを削除する手順は次のとおりです。

  1. Looker IDE で、IDE ナビゲーション バーの [継続的インテグレーション] アイコンをクリックします。
  2. [Suites] タブをクリックして、[Suites] ページを開きます。
  3. [Suites] ページで、スイートの [Edit suite] ボタンをクリックします。
  4. スイートのページで、[スイートを削除] ボタンをクリックします。
  5. 確認ダイアログで、[スイートを削除] ボタンをクリックします。