はじめに
本シリーズでは、Azure DevOpsを使ってAzure DataFactory(以降ADF)をCI/CDできる環境を構築する手順を紹介します。
- 今回の内容
- 初回はADFにおけるGit構成について記載します。
ADFでCICD ?
- 問「ADFのCI/CDのイメージが湧かないです」
- まずADFでCI/CDを使うにあたり、機能の役割分担を説明します。
- CI (Continuous Integration)
- ADFの[Git構成]機能を使い、ADFの設定をJSONのコードとして出力させる
- 出力された設定ファイル(JSON)はGitリポジトリ(以下いずれかに保存)
- GitHub
- Azure DevOps Git
- CD (Continuous Delivery)
- Publish操作、またはビルドパイプラインからARMテンプレートが生成される。
- 生成されたARMテンプレートを使い、各システムランドスケープ(開発/検証/本番)に自動デプロイする
- リリースパイプライン上では、人間による承認プロセスを設定できる。
- ADFも設定はJSONですので、プログラムコードのような状態管理や、複数人によるスムーズな開発と安全なデプロイが可能になります。
- CI (Continuous Integration)
- まずADFでCI/CDを使うにあたり、機能の役割分担を説明します。
- 問「なぜADFでCI/CDをやるの?」
- ADFインスタンスがシステムランドスケープ(開発/検証/本番等)ごとに複数ある場合に、各環境へのデプロイを堅牢化・自動化するにはCI/CDは極めて有効です。
- 手動で複数のランドスケープに同じ設定を行うとミスが起こりやすいです。
- CDにより Dev -> Test -> Prod へのデプロイを承認フローを経由した正しいコードで安全に行うことができます。
- また、ARMテンプレートのエクスポート・インポートも以下のような課題があります。
- エクスポートしたARMテンプレートの書き換えが必要。
- factoryName,principalId,tenantId 等パラメータの書き換え
- インポートはリソースの依存関係により失敗しやすいため、事前に十分なリストアテストが必要。
- 例としてセルフホステッド統合ランタイムを利用している場合、事前に手動で作成しないと、関係リソース(リンクサービス・データセット・データフロー等)も巻き込まれインポートに失敗する。
- エクスポートしたARMテンプレートの書き換えが必要。
- 手動で複数のランドスケープに同じ設定を行うとミスが起こりやすいです。
- 他の理由として、CIとしてGit構成を有効化しておくと、自動バックアップの代わりになるという点も大きな利点です。Git利用のため、ある時点でのスナップショット的な設定を追うことができます。
- ADFインスタンスがシステムランドスケープ(開発/検証/本番等)ごとに複数ある場合に、各環境へのデプロイを堅牢化・自動化するにはCI/CDは極めて有効です。
- 問「デメリットはないの?」
- デメリットが全くないとは言い切れません。以下のように認知負荷が上がります。
- ADFを操作するのにGitの知識が必要
- ブランチ・コミット・プルリクエスト・マージ等の理解
- ADFのパブリッシュまわりの操作感が従来と変わる。
- ADFを操作するのにGitの知識が必要
- CDを行う場合は、AzureDevOpsの学習と環境構築が必要
- AzureDevOpsは、ADFとは異なるインターフェースとなるため、各種メニューの学習が必要。
- デメリットが全くないとは言い切れません。以下のように認知負荷が上がります。
- 「将来性は? Microsoft Fabricに統合されて無駄になるんじゃ?」
- 2025/7/24時点では、Fabric側にはCI/CD機能は実装されていないため、CI/CDを行う場合はFabric Data Factoryではなく、Azure Data Factoryを使う必要があります。
- https://learn.microsoft.com/ja-jp/fabric/data-factory/compare-fabric-data-factory-and-azure-data-factory
-
近日公開予定:Fabric Data Factory では、完全な CI/CD 機能が進行中です。
- 将来的にADFやAzureDevOpsがどうなるかはわかりませんが、現時点ではADFサービスは継続され、Fabric側が優先的に機能拡張されるようです。
- https://learn.microsoft.com/ja-jp/fabric/data-factory/migrate-from-azure-data-factory
-
明確にするために、現在、データ インジェストのために Azure Data Factory または Synapse Gen2 を非推奨にする計画はありません。 エンタープライズ データ インジェスト用の Fabric パイプラインへの投資に重点を置く優先順位があるため、Fabric 容量によって提供される追加の価値は時間の経過と同時に増加します。 Fabric 容量を選択したお客様は、Microsoft Fabric 製品ロードマップとの連携の恩恵を受けることができます。
- 本日時点でいえば、Fabric Data Factoryの機能はまだ ADFに追いついていない部分があります。
- 2025/7/24時点では、Fabric側にはCI/CD機能は実装されていないため、CI/CDを行う場合はFabric Data Factoryではなく、Azure Data Factoryを使う必要があります。
Git構成の選択
ADFではGitリポジトリを以下の2つから選択できます。
- GitHub
- Azure DevOps Git
- どちらを使うかは好みの問題もあります。判断ポイントとしては以下のような観点もあるかと思います。
- すでに企業内・チーム内で導入が進んでいるほうを使う
- 開発者が一人のみで、ADFの設定バックアップ目的でGitを使う場合はGitHubを使う
- 私がGitHubのほうが慣れているのもありますが、ユーザ数が多いためMCP Server対応なども早く、生成AIによる恩恵(設計書の自動生成もしくは設計書自体を不要としチャットベース運用にする、自然言語による変更作業など)を受けやすい印象です。
- 複数環境のADFインスタンスを使うのであれば、DevOps Gitを使う
- CDとしてAzure DevOpsパイプラインを使うことになるため、CIとCDをMicrosoft製品に統一できる。
- 両者ともEntraIDでユーザを一元管理できるため操作がしやすい。
- CDとしてAzure DevOpsパイプラインを使うことになるため、CIとCDをMicrosoft製品に統一できる。
Gitリポジトリは途中で変更することもできますが、CDを行う段階では手戻りが多くなるため、CIの検証中にどちらかに決定することをおすすめします。
Git構成のセットアップ時に既存のGitHubリポジトリから取り込むことも可能です。この場合、リポジトリ内のファイル構成はADFのフォーマットに沿ったものである必要があります。
手順
ADFの設定バックアップ
Git統合を行うADFインスタンスにて、まず念の為ARMテンプレートのバックアップを取得してください。
GitHubの場合
GitHubのサインアップ手順は省略します。
【GitHub側】プライベートリポジトリの作成
ADFで設定する前にまずGitHub側でプライベートリポジトリを作成してください。
このとき、readme.mdを作成するオプションを忘れずに指定してください。これにより初回コミットが行われ、mainブランチが作成されますので、ADF側でブランチを参照できるようになります。
以上で、Git統合にGitHubを使った場合のリポジトリのセットアップは終了です。
AzureDevOpsの場合
AzureDevOpsのサインアップ
こちらはサインアップから手順を記載します。
- AzureDevOpsのサインアップ用URLにアクセスします。
- https://aex.dev.azure.com/signup
- サービス情報などがほしい場合はチェックをつけます(任意)。Continueを押下します。
組織の作成
- 組織を作成します
プロジェクトの作成
-
組織内のプロジェクトを作成します。
-
プロジェクトが作成できました。
リポジトリの作成
- リポジトリを作成します。
以上で、Git統合にAzureDevOpsを使った場合のリポジトリのセットアップは終了です。
ADFにおけるGit構成
リポジトリをGitHubまたはAzureDevOpsで作成したのち、ADFで設定を行います。
GitHubの場合
-
承認するとADFで「リポジトリ名」からプルダウンでGitHub側のリポジトリ名を参照できるようになります。
-
- リポジトリ名
- 上述したようにプルダウンから作成済みのリポジトリを選択します。
- コラボレーションブランチ
- GitHubのリポジトリにパブリッシュできるブランチを指定します。
- 通常は mainブランチを指定する形でよいと思います。
- 運用後は、子ブランチを順次作成し、mainブランチにマージしてからパブリッシュするという流れで利用することになります。
- 発行ブランチ
- パブリッシュ後に自動的に作成されるARMテンプレートの保存先のブランチ名を指定します。
- 通常は、デフォルトの「adf_publish」のままでよいかと思います。
- この「ARMテンプレート」というのは「ADFのJSONリソース」別ものであるということは理解しておく必要があります。(後述)
- ルートフォルダー
- ADFのJSONリソースがインポートされるフォルダ名を指定します。
- 1つのリポジトリを今回の環境のADF以外の用途でも使う場合は、フォルダを分けるのをおすすめします。
- 多くのケースではADF専用リポジトリを作ることと思いますので、デフォルトの「/」のままでよいかと思います。
- カスタムコメント
- デフォルトのまま、チェックありでよいかと思います。
- 既存のリソースのインポート
- 「既存のリソースをリポジトリにインポートする」
- 今回はmainブランチを新たに作成しているため、mainブランチは空となっています。その前提で記載します。
- Git統合を行う前から、ADFにリソースを作成済みの場合は、チェックし、mainブランチを選択してください。
- それにより、ADF本体(ライブモード)で作成済みのリソースが、mainブランチにコピーされますので、このあと使うmainブランチにて、継続して開発ができます。
- 「既存のリソースをリポジトリにインポートする」
- リポジトリ名
-
適用を押すと、問題がなければGit構成が完了します。この時点で、裏ではADFのJSONリソースがGitHub側またはAzureDevOpsのReposにコピーされていきます。
AzureDevOpsの場合
-
[Microsoft Entra ID]にてADFを利用しているテナントを選択します。
-
リポジトリの構成
-
[Azure DevOpsの組織名]先ほど作成した組織をプルダウンから選択します。
-
先ほど作成した新規のリポジトリを指定してください。
- 既存のADFのJSONのデータが入っているリポジトリがある場合は、「既存リソースのインポート」をチェックしたのち、インポート元を指定できます。
-
コラボレーションブランチ
- ADFのリポジトリにパブリッシュできるブランチを指定します。
- 通常は mainブランチを指定する形でよいと思います。
- 運用後は、子ブランチを順次作成し、mainブランチにマージしてからパブリッシュするという流れで利用することになります。
-
発行ブランチ
- パブリッシュ後に自動的に作成されるARMテンプレートの保存先のブランチ名を指定します。
- 通常は、デフォルトの「adf_publish」のままでよいかと思います。
- この「ARMテンプレート」というのは「ADFのJSONリソース」別ものであるということは理解しておく必要があります。(後述)
-
ルートフォルダー
- ADFのJSONリソースがインポートされるフォルダ名を指定します。
- 1つのリポジトリを今回の環境のADF以外の用途でも使う場合は、フォルダを分けるのをおすすめします。
- 多くのケースではADF専用リポジトリを作ることと思いますので、デフォルトの「/」のままでよいかと思います。
-
カスタムコメント
- デフォルトのまま、チェックありでよいかと思います。
-
既存のリソースのインポート
- 「既存のリソースをリポジトリにインポートする」
- 今回はmainブランチを新たに作成しているため、mainブランチは空となっています。その前提で記載します。
- Git統合を行う前から、ADFにリソースを作成済みの場合は、チェックし、mainブランチを選択してください。
- それにより、ADF本体(ライブモード)で作成済みのリソースが、mainブランチにコピーされますので、このあと使うmainブランチにて、継続して開発ができます。
- 「既存のリソースをリポジトリにインポートする」
-
-
適用を押すと、問題がなければGit構成が完了します。「既存のリソースをリポジトリにインポートする」にチェックした場合、この時点で、裏でADFのJSONリソースがGitHub側またはAzureDevOpsのReposにコピーされていきます。
以上でADFにおけるGit構成の初期設定は完了です。
続いて、Mainブランチを保護する設定を行います。
mainブランチ保護設定
GitHubにおけるmainブランチ保護設定
mainブランチへのpushを禁止する設定については以下記事を参照ください。
https://zenn.dev/jin1125/articles/a38c360e3319b7
AzureDevOpsにおけるmainブランチ保護設定
ブランチポリシーの設定
- mainブランチのポリシーを設定します。
- [Repos] -> [Branches]を選択します。
- 最初はmainブランチしかありません。mainブランチの右にある3点リーダから[Branch policies]を選択します。
- [Require a minimum number of reviewers]を Onに設定します。
- これによりそのブランチが保護され、プルリクエストによる変更のみを受け付けるようになります。mainブランチでADF Studioで直接変更した内容を変更することができなくなり、子ブランチで開発するという安全な開発体制ができあがります。
- [Minimum number of reviewers]は、チーム人数にあわせて設定します。
- 私の環境の場合は私しか使わないため、1で設定します。
- [Allow requestors to approve their own changes] は、私しかいないチームであるため、チェックをつけます。これでプルリクエストを出した本人がレビューしマージできます。
各機能のポイント説明
- 「ARMテンプレート」「ADFのJSONリソース」の違いについて
- リポジトリ構成の「発行プランチ」で指定した「adf_publish」という項目はARMテンプレートのブランチ名と前述しました。これについて軽く触れておきます。
- 「ARMテンプレート」
- 「ADFのJSONリソース」
- リポジトリ構成の「発行プランチ」で指定した「adf_publish」という項目はARMテンプレートのブランチ名と前述しました。これについて軽く触れておきます。
本記事は以上です。
次回以降はAzureDevOpsをベースにCI/CDの実装環境を整えていきます。