API と Azure DevOps を使用してデプロイ パイプラインを自動化する

Microsoft Fabric のデプロイ パイプライン ツールを使うと、ビジネス インテリジェンス チームは、Fabric コンテンツのための効率的で再利用可能なリリース プロセスを構築できます。

コンテンツの継続的インテグレーションと継続的デリバリー (CI/CD) を実現するため、多くの組織で Azure DevOps などの自動化ツールが使われています。 Azure DevOps を使用する組織では、デプロイ パイプライン API 操作の多くをサポートする Power BI オートメーション ツール拡張機能を使用できます。

デプロイ パイプラインの Power BI REST API を使って、ファブリックを組織の自動化プロセスに統合できます。 API を使用して実行できることの例をいくつか次に示します。

  • パイプラインの作成、任意のステージへのワークスペースの割り当て、パイプラインのデプロイと削除を含め、パイプラインを最初から最後まで管理します。

  • パイプラインに対するユーザーの割り当てとその解除を行う。

  • Azure DevOpsGitHub Actions などの使い慣れた DevOps ツールに、Fabric を統合します。

  • 特定の日時にパイプラインによるデプロイが自動的に実行されるようにスケジュールします。

  • 複数のパイプラインを同時にデプロイします。

  • パイプラインのデプロイに応じてカスケードします。 パイプライン間で接続されているコンテンツがある場合、一部のパイプラインが他より先にデプロイされるようにできます。

デプロイ パイプラインの API 関数

Note

デプロイ パイプライン API は現在、Power BI アイテムでのみ機能します。

デプロイ パイプラインの Power BI REST API では、次の機能を実行できます。

API によってサポートされているデプロイ

API は次の展開タイプをサポートしています。

  • すべてデプロイ - ワークスペースのすべてのコンテンツをパイプラインの次のステージにデプロイする単一の API 呼び出し。 この操作には、すべてデプロイ API を使用します。

  • 選択的デプロイ - パイプラインで特定のアイテム (レポートやダッシュボードなど) のみをデプロイします。 この操作には、選択的デプロイ API を使用します。

  • 後方デプロイ - 新しいアイテムを前のステージにデプロイします。 後方デプロイは、デプロイされるアイテムがターゲット ステージにまだ存在しない場合にのみ機能します。 この操作には、isBackwardDeploymentTrue に設定して、すべてデプロイまたは選択的デプロイ API を使用します。

  • アプリの更新 - デプロイ API 呼び出しの一部として、そのステージに関連するアプリの内容を更新できます。 デプロイが完了した後、エンド ユーザーは更新されたアイテムを自動的に使用できるようになります。 この操作には、PipelineUpdateAppSettings を指定して、すべてデプロイまたは選択的デプロイ API を使用します。

開始する前に

デプロイ パイプライン API を使う前に、次のものがあることを確認します。

パイプラインを Azure DevOps と統合する

Azure DevOps のリリース パイプライン内からデプロイ プロセスを自動化するには、次のいずれかの方法を使用します。

  • PowerShell - スクリプトでは、サービス プリンシパルまたはユーザーを使用して Fabric にサインインします。

  • Power BI オートメーション ツール - この拡張機能では、"サービス プリンシパル" または "ユーザー" と連携します。

また、他の Power BI REST API 呼び出しを使用すると、パイプラインへの .pbix のインポート、データ ソースやパラメーターの更新など、関連する操作を実行することもできます。

Power BI オートメーション ツールの拡張機能を使用する

Power BI 自動化ツール拡張機能は、オープンソースの Azure DevOps 拡張機能であり、Azure DevOps で実行できるさまざまなデプロイ パイプライン操作を提供します。 この拡張機能により、API またはスクリプトでパイプラインを管理する必要がなくなります。 各操作を個別に使用して、パイプラインの作成などのタスクを実行できます。 操作を 1 つの Azure DevOps パイプラインでまとめて使って、パイプラインの作成、パイプラインへのワークスペースの割り当て、ユーザーの追加やデプロイなどの、さらに複雑なシナリオを作成できます。

Power BI 自動化ツール拡張機能を DevOps に追加した後、サービス接続を作成する必要があります。 次の接続を使用できます。

  • サービス プリンシパル (推奨) - この接続はサービス プリンシパルを使用して認証を行い、Microsoft Entra アプリのシークレットとアプリケーション ID が必要になります。 このオプションを使う場合は、サービス プリンシパルのサービス管理者設定が有効になっていることを確認します。

  • ユーザー名とパスワード - ユーザー名とパスワードを使用して、汎用サービス接続として構成されます。 この接続方法では多要素認証をサポートしていません。 Azure DevOps にユーザー資格情報を保存する必要がないため、サービス プリンシパルの接続方法を使うことをお勧めします。

注意

Power BI オートメーション ツール拡張機能では、Azure DevOps サービス接続を使用して資格情報を保存します。 詳しくは、「Azure DevOps Services 用の資格情報を保存する方法」をご覧ください。

Azure DevOps Power BI 自動化ツールのサービス接続を有効にすると、パイプライン タスクを作成できるようになります。 拡張機能には、次の配置パイプライン タスクが含まれています。

  • 新しいパイプラインを作成する

  • ワークスペースをパイプラインのステージに割り当てる

  • 配置パイプラインにユーザーを追加する

  • ワークスペースにユーザーを追加する

  • 配置パイプラインにコンテンツをデプロイする

  • 配置パイプラインからワークスペースを削除する

  • パイプラインを削除する

PowerShell のサンプルにアクセスする

以下の PowerShell スクリプトを使って、いくつかの自動化プロセスを実行する方法を理解できます。 PowerShell サンプルのテキストを表示またはコピーするには、このセクションのリンクを使用します。

PowerBI-Developer-Samples GitHub フォルダー全体をダウンロードすることもできます。

PowerShell の例

このセクションでは、開発ステージからテスト ステージでセマンティック モデル、レポート、ダッシュボードを展開する PowerShell スクリプトの例について説明します。 その後、スクリプトにより、デプロイが成功したかどうかを確認します。

デプロイを実行する PowerShell スクリプトを実行するには、次のコンポーネントが必要です。 これらの部分はいずれも、Azure パイプライン ステージのタスクに追加できます。

  1. サインイン - コンテンツをデプロイするには、その前にサービス プリンシパルまたはユーザーを使用して Fabric にサインインする必要があります。 サインインするには、Connect-PowerBIServiceAccount コマンドを使用します。

  2. 要求本文の作成 - スクリプトのこの部分で、デプロイするアイテム (レポートやダッシュボードなど) を指定します。

    $body = @{ 
        sourceStageOrder = 0 # The order of the source stage. Development (0), Test (1).   
        datasets = @(
            @{sourceId = "Insert your dataset ID here" }
        )      
        reports = @(
            @{sourceId = "Insert your report ID here" }
        )            
        dashboards = @(
            @{sourceId = "Insert your dashboard ID here" }
        )
    
        options = @{
            # Allows creating new item if needed on the Test stage workspace
            allowCreateArtifact = $TRUE
    
            # Allows overwriting existing item if needed on the Test stage workspace
            allowOverwriteArtifact = $TRUE
        }
    } | ConvertTo-Json
    
  3. デプロイ - ここでは、デプロイを実行します。

    $url = "pipelines/{0}/Deploy" -f "Insert you pipeline ID here"
    $deployResult = Invoke-PowerBIRestMethod -Url $url  -Method Post -Body $body | ConvertFrom-Json
    
  4. (省略可能) デプロイ完了通知 - デプロイ API は非同期であるため、デプロイが完了したら通知するようにスクリプトをプログラミングできます。

    $url =  "pipelines/{0}/Operations/{1}" -f "Insert you pipeline ID here",$deployResult.id
    $operation = Invoke-PowerBIRestMethod -Url $url -Method Get | ConvertFrom-Json    
    while($operation.Status -eq "NotStarted" -or $operation.Status -eq "Executing")
    {
        # Sleep for 5 seconds
        Start-Sleep -s 5
        $operation = Invoke-PowerBIRestMethod -Url $url -Method Get | ConvertFrom-Json
    }
    

考慮事項と制限事項

  • API を使用するデプロイには、デプロイ パイプラインのユーザー インターフェイスと同じ制限が適用されます。

  • "サービス プリンシパル" では OAuth 資格情報を構成できません。 新しいアイテムを展開した後、ログインしたサービスプリンシパルが展開済みかつページ編集されたレポートとセマンティック モデルの所有者になります。 このような場合は、更新を完了できません。

  • "サービス プリンシパル" を使用したデータフローのデプロイはサポートされていません。

  • 1 回のデプロイでデプロイできる項目の最大数は、300 個です。

  • デプロイ パイプライン API は現在、Power BI アイテムのみをサポートしています。

  • 2 から 10 ステージのカスタマイズされたパイプラインの作成は、現在、UI でのみサポートされています。