
dbt Cloud のマネージドリポジトリから GitLab への移行を試してみる
はじめに
dbt Cloud で使用できるマネージドリポジトリ機能を使用する dbt プロジェクトから、GitLab などのバージョン管理システムを使用するリポジトリへの移行を試してみましたので、その際の手順を本記事でまとめてみます。
前提条件
以下の環境で検証してます。
- OS:Windows 11
- ローカル Git クライアント:Git Bash
- バージョン管理システム:GitLab(SaaS)を使用
- 移行範囲:既存の dbt Cloud プロジェクトを残し、Git リポジトリの接続先のみを移行
事前準備
dbt Cloud でマネージドリポジトリを使用するプロジェクトを作成
事前に dbt Cloud でマネージドリポジトリを使用するプロジェクトを作成しておきます。
プロジェクトでは公式のクイックスタートの内容を基に、下図のモデルを作成しておきました。
dbt Cloud と GitLab の接続設定
dbt Cloud で GitLab との接続設定を行っておきます。
こちらの手順は以下の記事をご参照ください。
dbt Cloud でリポジトリを出力
現在、マネージドリポジトリの内容をユーザー側で出力できるようになっています。以下に記載の手順に沿って出力します。
dbt Cloud で「Account Settings > Projects」から対象のプロジェクトを選択し、「Repository」欄にあるリポジトリ URL をクリックします。
リポジトリの詳細タブが表示されるので「Download repository」をクリックします。
すると、以下のような名称の ZIP 形式でリポジトリがダウンロードされます。
managed-repository-xxxxxxx.zip
展開後
GitLab でプロジェクトを作成
GitLab 側でプロジェクトを作成します。この際、README やライセンスファイルなどは含めない「空のプロジェクト」として作成しました。後ほど、先の手順で取得したリポジトリの内容をこのリポジトリに同期します。
ローカルで ZIPファイルを展開しリポジトリとして初期化
続けて、ローカルにダウンロードした ZIP ファイルを解凍し、そのディレクトリを Git リポジトリとして初期化します。
ここでは Git Bash を使用し、対象のディレクトリに移動後、以下のコマンドで Git リポジトリとして初期化します。
git init
ローカルの dbt プロジェクトファイルを、作成した GitLab プロジェクトにプッシュします。
# すべてのプロジェクトファイルをGitの管理下に置く
git add .
# 変更をコミット
git commit -m "Initial commit of dbt project"
GitLab で作成したプロジェクトの SSH URL をコピーします。
以下のコマンドで、ローカルにリモートリポジトリとして追加します。
git remote add origin git@gitlab.com:xxxxx.git
ローカルの変更を GitLab にプッシュします。
git push -u origin main
プッシュ後、リモートリポジトリ側でもファイルを確認できます。
dbt Cloud でリポジトリを置き換え
dbt Cloud の「Account Settings > Projects」から対象のプロジェクトを選択、「Edit」をクリックすると「Disconnect」が表示されるるので、こちらをクリックします。
すると、Git リポジトリの紐づけが解除され、下図のように再度設定できるようになります。
上記の「Configure Repository」から、ここでは移行先の「GitLab」を選択します。上述の手順で GitLab との接続設定は済んでいるので、対象のプロジェクトを指定します。
以上で変更は完了です。
この状態で Studio を開くと既存の内容に続けて GitLab のリモートリポジトリを使用した開発を進められます。
注意点
プロジェクトからマネージドリポジトリの接続を解除後に、再度マネージドリポジトリとの紐づけを行いたい場合、サポートへの問い合わせが必要です。
そのため、万全を期すなら別のプロジェクトを作成し、リポジトリの紐づけを行うという選択肢もあります。ただし、この場合、プロジェクトの各種設定(環境変数、ジョブなど)は再度設定が必要です。
さいごに
マネージドリポジトリ機能を使用する dbt プロジェクトから、外部のバージョン管理システムを使用するリポジトリへの移行を試してみました。
マネージドリポジトリは便利な機能ではありますが、CI/CD 連携などの制約があるため、本番運用での利用は推奨されません。本記事の内容が、マネージドリポジトリでの初期検証を終え、本格運用へ移行する際の参考となれば幸いです。