CI/CD で Databricks Git フォルダーを使用する
CI/CD ワークフローで Databricks Git フォルダーを使用する手法について説明します。 ワークスペースで Databricks Git フォルダーを構成することで、 Git リポジトリ内のプロジェクト ファイルにソース コントロールを使用し、それらをデータ エンジニアリング パイプラインに統合できます。
Git フォルダーの自動化を開発する作業の大部分は、フォルダーの初期設定と、Databricks ジョブからの Git 操作を自動化するために使用する Databricks Repos REST API の理解にあります。自動化の構築とフォルダーの設定を開始する前に、自動化フローに組み込むリモート Git リポジトリを確認し、開発、統合、ステージング、本番運用など、自動化のさまざまなステージに適したリポジトリを選択します。
次の図は、Databricks Git フォルダーを使用した自動化の基本的なフローの概要を示しています。その中には、本番運用フォルダ、ユーザーフォルダ、および Databricks ジョブを使用して構築された自動化があり、トリガーされたときにノートブックコードを実行します。
- Admin ワークフロー : 本番運用フローの場合、 Databricks ワークスペース管理者は、ワークスペースの最上位フォルダーを設定する必要があります。 管理者は、リポジトリとブランチを作成するときに Git リポジトリとブランチをクローンし、これらのフォルダに「本番運用」、「テスト」、「ステージング」などの意味のある名前を付ける必要があります。これは、開発フローにおけるリモート Git リポジトリの目的に対応するものです。 詳細については、このトピックの 「本番運用 Git フォルダー 」を参照してください。
- ユーザー ワークフロー : ユーザーは、リモート Git リポジトリに基づいて
/Volumes/Users/<email>/
の下に Git フォルダーを作成できます。ユーザーは、ユーザーがコミットしてリモートリポジトリにプッシュする作業に対して、ローカルのユーザー固有のブランチを作成する必要があります。ユーザー固有の Git フォルダーでの共同作業に関する情報については、このトピックの 「 Git フォルダーを使用して共同作業 する」を参照してください。 - マージ ワークフロー : ユーザーは任意のフォルダーからプル要求 (PR) を作成でき、Databricks ジョブの自動化をトリガーして Databricks Repos API を呼び出して変更をテストおよび処理できます。これらの変更は、 を使用して、本番運用Git フォルダの「メイン」ブランチにプッシュすることもできます。DatabricksReposAPI
Databricks での CI/CD の包括的な概要については、「 Databricks の CI/CD」を参照してください。
Git フォルダー構成の選択
Databricks Git フォルダーには 2 種類あり、使用パターンとワークスペース内の場所によって区別されます。
-
ユーザーレベルのフォルダ 。ユーザーが Databricks UI でリモート リポジトリをクローンして Git フォルダを作成すると、 Git フォルダは [
/Workspace/Users/<email>/
by デフォルト] の下の個人用フォルダに作成されます。 ユーザーレベルのフォルダは、個々の開発に使用されます。ユーザー フォルダー内の Databricks Git フォルダーは、各ユーザーに固有であり、ユーザーがコードに変更を加えたりプッシュしたりする "ローカル チェックアウト" と考えることができます。 -
本番運用 folders . 本番運用フォルダは、 Databricks 管理者によってユーザワークスペースの外部に作成され、バッキング Git リポジトリから本番運用ブランチをホストします。 これは主にデプロイの自動化に使用され、PR がバッキング ブランチにマージされたときにのみ更新する必要があります。
-
Databricksアセットバンドルを採用する準備がまだ整っていないが、コードをソース制御したい場合は、本番運用 Git フォルダを設定できます。自動化を使用して、リモートの Git リポジトリとブランチで最新の状態に保ちます。これは、次の 2 つの方法のいずれかで実行できます。
- CI/CDなどの外部GitHub Actions ツールを使用して、最新のコミットを本番運用 フォルダーにプルし、リモートのGit Gitリポジトリとブランチへのマージ要求を作成します。
- スケジュールされたジョブを作成して、ワークスペース内の他の Git フォルダーを本番運用 Git フォルダーの現在の状態で更新します。
Databricks Asset Bundle を使用すると、ソース ファイル内のジョブやパイプラインなどのリソースを定義でき、ワークスペースの Git フォルダーで作成、デプロイ、管理できます。「ワークスペースでのバンドルでの共同作業」を参照してください。
Git フォルダーを使用した共同作業
Git フォルダーを使用して他のユーザーと簡単に共同作業を行い、Databricks UI から直接更新をプルしたり、変更をプッシュしたりできます。たとえば、機能ブランチまたは開発ブランチを使用して、複数の共同作成者ブランチ間で行われた変更を集計します。
次のフローでは、main
ブランチに基づいて feature-b
という名前のフィーチャー ブランチを使用して共同作業を行う方法について説明します。
-
Git フォルダー UI を使用して、メイン ブランチから 機能ブランチを作成します 。 この例では、わかりやすくするためにフィーチャーブランチ
feature-b
を1つ使用しています。 複数の機能ブランチを作成して使用して作業を行うことができます。 -
リポジトリ内の Databricks ノートブックやその他のファイルに変更を加えます。
-
コントリビューターは、Git リポジトリを自分のユーザーフォルダにクローンできるようになりました。
- 新しいブランチで作業している同僚は、Git フォルダー内のノートブックやその他のファイルに変更を加えます。
- 共同作成者 は、変更をコミットしてリモート Git リポジトリにプッシュします。
-
他のブランチからの変更をマージしたり、Databricks の Git フォルダー UI で
feature-b
ブランチをリベースしたりするには、次のいずれかのフローを使用します。- ブランチをマージします。競合がない場合、マージは
git push
を使用してリモート Git リポジトリにプッシュされます。 - 別のブランチにリベースします。
- ブランチをマージします。競合がない場合、マージは
-
作業をリモートの Git リポジトリと
main
ブランチにマージする準備ができたら、Git フォルダー UI を使用してfeature-b
からの変更をマージします。必要に応じて、Git フォルダをバックアップする Git リポジトリに変更を直接マージすることもできます。
Databricks では、各開発者が独自の機能ブランチで作業することをお勧めします。 マージ競合の解決方法については、「 マージ競合の解決」を参照してください。
本番運用 Git folders
本番運用フォルダ は、本番運用とデプロイメント用に指定されたGitフォルダです。これは、ユーザーフォルダに作成することも、 \Workspace
の下のチームフォルダとして作成することもできます (例: \Workspace\Production
)。Databricks 、本番運用専用の Git フォルダを作成することをお勧めします。
本番運用フォルダは、変更を集約したり、ビルドとデプロイの自動化のさまざまなステージを表したりするブランチを持つリモートリポジトリから作成され、ユーザーがコンテンツに直接コミットすることを制限するアクセス許可があります。 本番運用 Git フォルダの場合は、ユーザーアクセスを読み取り専用に制限し、管理者と Databricks サービスプリンシパルのみが内容を編集できるようにします。 リモート Git リポジトリとそれをサポートするブランチは、本番運用可能なコードとアセット専用に指定されている必要があります。
Git本番運用フォルダを作成するには:
-
コードとアセットの本番運用とデプロイ専用に使用する Git リポジトリとブランチを選択します。 リポジトリのサービスプリンシパル 認証を構成し、 Git ユーザー特権を制限して、ソースが組織外のユーザーによって簡単に変更されないようにします。
-
Git リポジトリ用の Databricks Git フォルダーを作成し、
Workspace
またはプロジェクトまたはチーム専用のサブフォルダーの下にブランチします。「本番運用」や「Deployment」など、識別しやすい名前を付けます。 -
フォルダを選択した後に [共有 ]を選択するか、[ ワークスペース ]ツリーの下のフォルダを右クリックして [共有(権限)] を選択します。次の権限で Git フォルダを設定します。
- そのフォルダからノートブックまたはその他のコードを実行する必要があるすべてのプロジェクト ユーザーに対して [ 実行可能 ] を設定します。
- Databricks自動化を実行する任意の サービスプリンシパル アカウントに対して[実行可能] を設定します。
- プロジェクトに適している場合は、ワークスペース内のすべてのユーザーに対して [表示可能 ] を設定して、検出と共有を促進します。
-
[追加] を選択します。
本番運用 ジョブ ワークフロー
Databricks Git フォルダには、本番運用ジョブを実行するための2つのオプションがあります。
- オプション 1 : ジョブ定義にリモート Git 参照を指定します。 たとえば、Git リポジトリの
main
ブランチで特定のノートブックを実行します。 - オプション 2 : 本番運用 Git リポジトリを設定し、Repos API を呼び出してプログラムで更新します。このリモート リポジトリを複製する Databricks Git フォルダーに対してジョブを実行します。 Repos API 呼び出しは、ジョブの最初のタスクにする必要があります。
オプション 1: リモート リポジトリでノートブックを使用してジョブを実行する
ジョブ定義プロセスを簡素化し、リモートのDatabricks リポジトリにあるノートブックを使用して ジョブを実行することで、単一の真実のソースを維持します。Gitこの Git 参照は、Git コミット、タグ、またはブランチにすることができ、ジョブ定義で提供されます。
これにより、ユーザーが本番運用リポジトリでローカル編集を行ったり、ブランチを切り替えたりするなど、本番運用ジョブに対する意図しない変更を防ぐことができます。 また、 内に別途本番運用Git Databricksフォルダを作成し、そのパーミッションを管理し、常に最新の状態に保つ必要がないため、CDの工程も自動化されます。
「ジョブでの Git の使用」を参照してください。
オプション 2: 本番運用 Git フォルダーと Git 自動化を設定する
このオプションでは、本番運用 Git フォルダーとオートメーションを設定して、マージ時に Git フォルダーを更新します。
ステップ 1: 最上位のフォルダを設定する
まず、 Databricks 管理者にワークスペースに最上位のフォルダーを作成して、開発ブランチ、ステージングブランチ、本番運用ブランチの個々の Git フォルダーを含めてもらいます。 たとえば、会社が本番運用に main
分岐を使用している場合、本番運用 Git フォルダは main
分岐を使用するように構成する必要があります。
通常、これらの最上位フォルダーに対するアクセス許可は、ワークスペース内のすべての管理者以外のユーザーに対して読み取り専用です。これらの最上位フォルダについては Databricks ワークスペース ユーザーが誤って本番運用コードを編集しないように、サービスプリンシパルにのみ 「編集可能 」および 「管理可能 」の権限を付与することをお勧めします。
手順 2: API を使用して Databricks Git フォルダーの自動更新を設定する
Databricks の Git フォルダーを最新バージョンのソース ファイルとアセットで最新の状態に保つには、 Repos API を呼び出すように Git 自動化を設定できます。Git プロバイダーの CI/CD ツール (または互換性のある 3rd パーティのもの) を使用して、PR がメイン ブランチに正常にマージされるたびに、適切な Git フォルダーで Repos API エンドポイントを呼び出してソースの最新バージョンに更新する自動化を設定します。たとえば、GitHub がプロバイダーである場合は、 GitHub Actions を使用できます。
DatabricksReposAPIの詳細については、 のDatabricksRESTAPI ドキュメントRepos を参照してください。