Skip to main content

GitHub に SQL レビューを自動統合する 3 つの方法

Cayden · 2022年12月8日

概観

SQL 変更スクリプトのレビューはデータベース変更プロセスにおける重要な工程で、かつては DBA だけが担っていました。開発者は変更がリリースされる直前に DBA に SQL スクリプトを提出することが多く、DBA がレビューしたり修正を要求したりする時間はわずかしか残らず、変更の品質を保つのが難しい状況でした。

Bytebase は、強力な SQL レビュー機能で開発者が健全なデータベース変更を行えるようにする、データベース CI/CD ツールです。開発者のワークフローに馴染ませるため、Bytebase はその機能を GitHub に統合し、開発者が GitHub リポジトリで SQL スクリプトを管理しながらそこで SQL レビューも実施できるようにしています。これによりツール間の切り替えが不要になり、何より SQL レビューをデプロイ段階ではなくプルリクエスト (PR) 段階で行えるようになります (シフトレフト)。

shift-left

異なるニーズに対応するため、Bytebase は 3 つの統合モードを提供します。

本記事では、これら 3 つのモードの違いを詳しく紹介します。

GitHub Action

Bytebase は、事前に生成したワークフローファイルを .github ディレクトリに置くだけで、CI プロセスに SQL レビュールールを組み込む GitHub Action ベースの SQL レビューを自動化します。

セットアップ

  1. GitHub Action のワークフローファイルを取得する

    Bytebase GitHub Action にアクセスし、適切な構成ファイルを取得します。

  2. デフォルトの SQL レビュールールを有効化するワークフローファイルを手動で作成する

    リポジトリに .github/workflows/sql-review.yml を手動で作成し、提供されたテンプレートに沿って必要なパラメータを書き換えます。

  3. SQL レビューテンプレートをカスタマイズする

    デフォルトのレビュールールに満足できない場合、Bytebase はビジュアルな SQL レビュールール設定ページ SQL レビューガイド を用意しています。ここでカスタムルールをワンクリックで YAML にエクスポートし、Action ワークフローファイルの override-file-path パラメータでそのファイルを指せば、カスタムルールが有効になります。

    詳細な設定手順は GitHub Action のドキュメント を参照してください。

結果

設定が済むと、提出された PR に SQL が含まれていれば SQL レビュープロセスが自動で動き、詳細なレビュー結果が変更ファイルにインラインで表示されます。

file-comment

良い点と悪い点

無料。 GitHub Action を無料で利用できる。

軽量。 追加コンポーネントのデプロイは不要。コードリポジトリに 1 つファイルを生成して有効化するだけ。

複数のデータベースタイプに同時対応。 ファイルパスでデータベースタイプを明示することで、複数 DB の SQL レビューを同時にサポートできる。

設定がやや煩雑。 初期設定や SQL レビュールールの更新には YAML を手で編集する必要がある。

基本的な SQL レビュー能力にとどまる。 データベースに接続できないため、SQL テキストに対する静的ルールに限定される。

アクティブな SQL レビューポリシーは 1 つだけ。 同時に有効にできるルールセットは 1 つ。

表示が限定的。 SQL レビュー結果はレビュー対象ファイル内でしか確認できず、全体のサマリがない。

CI のみ。 SQL レビューだけをカバーし、後続の SQL デプロイプロセスとは統合されない。

GitHub App

Bytebase GitHub App をリポジトリにインストールし、SQL レビュープロセスを CI に統合できます。

セットアップ

  1. Bytebase GitHub App をインストールし、対象リポジトリと接続して SQL レビューを有効化する。

  2. SQL レビュールールをカスタマイズする

    hub.bytebase.com でビジュアルに独自の SQL レビュールールを設定でき、すべての変更は即座に反映されます。詳細は GitHub App のドキュメント を参照してください。

結果

設定が済むと、提出された PR に SQL が含まれていればレビュープロセスが自動で動きます。

PR の概要画面で SQL レビュー結果のサマリを確認できます。

file-comment

ファイルごとの詳細なレビュー結果も、ファイル内にインラインで表示されます。

pr-comment

良い点と悪い点

無料。 App を無料で利用できる。

軽量。 追加コンポーネントのデプロイは不要。ワンクリックで GitHub App をデプロイして有効化できる。

設定が簡単。 ポイント・アンド・クリックで完結。

網羅的な表示。 PR の概要画面とファイル単位ページの両方で SQL レビュー結果を確認できる。

基本的な SQL レビュー能力にとどまる。 データベースに接続できないため、SQL テキストに対する静的ルールに限定される。

データベースタイプの明示が必要。 データベースに接続できないため、対応 DB タイプを明示的に設定する必要がある。

アクティブな SQL レビューポリシーは 1 つだけ。 同時に有効にできるルールセットは 1 つ。

CI のみ。 SQL レビューだけをカバーし、後続の SQL デプロイプロセスとは統合されない。

GitOps CI

Bytebase Console ベースの統合モードでは、より強力な機能が使えます。

  1. 変更対象 DB と接続することで、より高度な SQL レビュールールを解放する。
  2. 後続の CD プロセスと統合する。

セットアップ

  1. Bytebase Console をデプロイし、基本設定を完了する

    このモードでは Bytebase Console のデプロイが必要で、データベース環境を Bytebase にインポートします。詳細な手順は Bytebase インストールガイド を参照してください。

  2. ワンクリックで SQL レビュー CI を有効化する

    Bytebase Console のプロジェクト設定ページで GitOps ワークフローを構成すれば、GitHub Action を自動で設定できます。

  3. SQL レビュールールをカスタマイズする

    デフォルトの SQL レビュールールに満足できない場合は、Bytebase Console からビジュアルに設定でき、変更は即座に反映されます。

    詳細は GitOps CI のドキュメント を参照してください。

結果

設定が済むと、提出された PR に SQL が含まれていればレビュープロセスが自動で動きます。

file-comment

良い点と悪い点

設定が簡単。 ポイント・アンド・クリックで完結。

高度な SQL レビュー能力。 Bytebase がデータベースに接続して構造や統計を取得できるため、より高度な SQL レビューを提供できる。

複数の SQL レビューポリシーを同時に有効化できる。 環境 (Test、Prod) に紐づけて複数のポリシーを設定できる。

CD との統合。 SQL レビューが通過し、コードがマージされた後、後続の SQL デプロイプロセスが自動的にトリガーされ、シームレスなデータベース CI/CD 体験を実現する。これによりアプリケーション開発者チームと DBA チームの SQL レビュー基準が統一される。

データベースタイプを指定する必要がない。 Bytebase はデータベースに接続して種別を自動判定できる。

有償サブスクリプションが必要。 Bytebase Enterprise サブスクリプションが必要。

セットアップ作業が多い。 Bytebase Console のデプロイとデータベース環境の準備が必要。

表示が限定的。 SQL レビュー結果はレビュー対象ファイル内でしか確認できず、全体のサマリがない。

比較表

GitHub ActionGitHub AppGitOps CI
想定ユーザー個人・小規模チーム個人・小規模チーム完全なデータベース変更管理を求めるチーム
料金無料無料Enterprise サブスクリプション
セットアップGitHub Action をデプロイGitHub App をデプロイBytebase Console をデプロイし、データベース環境を準備
設定コードベース、UI でアシストポイント・アンド・クリックポイント・アンド・クリック
SQL レビュー能力SQL ステートメントベースSQL ステートメントベースSQL ステートメント + DB メタデータ・統計
結果の表示ファイル内インラインコメントファイル内インラインコメント + PR 概要コメントファイル内インラインコメント
ポリシーアクティブポリシーは 1 つアクティブポリシーは 1 つ複数のアクティブポリシー、DB 環境と自動マッチ
CI/CD 統合SQL レビューのみSQL レビューのみSQL レビュー + SQL 変更デプロイ、シームレスな CI/CD
ブログに戻る

データベース開発のスタンダードを体験する