使用可能な Microsoft Power Platform 開発用 GitHub Actions

Microsoft Power Platform 用 GitHub Actions については、次のセクションで説明します。 また、サンプルの GitHub ワークフローについても説明します。 GitHub アクションとそのダウンロード方法の詳細については、Microsoft Power Platform の GitHub アクション をご覧ください。

Microsoft Power Platform で GitHub Actions で使用する認証情報を構成する

アクションの多くは、Microsoft Dataverse 環境に接続する必要があります。 サービス プリンシパルまたはユーザー認証情報をシークレットとして GitHub リポジトリに追加し、ワークフローで使用できます。

  • GitHub でシークレットを設定する方法の詳細については、暗号化されたシークレット を参照してください

  • Microsoft Power Platform のサービス プリンシパル認証を設定する方法の詳細については、DevOps ビルド ツール を参照してください

構成が完了すると、アクション スクリプト内からサービス プリンシパルを呼び出すことができます。

GitHub Action スクリプト内で環境変数 として定義するパラメーター:

  • WF_APPLICATION_ID:<your application id> などのアプリケーション ID
  • WF_TENANT_ID:<your tenant id> などのテナント ID

クライアント シークレットは GitHub シークレットとして追加および保存する必要があり、次のようなパラメーターを使用してワークフロー内から参照されます: client secret: ${{secrets.CLIENT_SECRET_GITHUB_ACTIONS}}

ヘルパー タスク

使用可能なヘルパー タスクを以下に示します。

actions-install

GitHub Actions ワークフローでランナーのコンテキストに Power Platform CLI のインストールを強制し、タイムアウトエラーが発生した場合は、以下のようにバージョン 1 (@v1) にアクション (actions-install) を追加して使用する必要があります。

重要

  • バージョン1 (@v1) を使用すると、既存の GitHub アクションが更新され、現在のワークフローが更新される可能性があります。
  • Power Platform 用 GitHub Actions のワークフローの最初のタスクとして Power Platform Tools のインストール を追加する必要があります。
jobs:
    builds:
        runs-on: windows-latest   # alternate runner OS is: ubuntu-latest

    steps:
    - name: Install Power Platform Tools
        uses: microsoft/powerplatform-actions/actions-install@v1

    - name: Export Solution
         uses: microsoft/powerplatform-actions/export-solution@v1
      with:
         environment-url: 'https://myenv.crm.dynamics.com'
         user-name: 'me@myenv.onmicrosoft.com'
         password-secret: ${{ secrets.MYPASSWORD }}
         solution-name: aSolution
         solution-output-file: 'aSolution.zip'
         working-directory: 'out'

GitHub Actions のサンプルは Power Platform Actions にもあります。

whoAmI

サービスに接続して WhoAmISDK/Web API リクエストを送信することにより、サービス接続を確認します。 このタスクは、処理を開始する前に接続を確認するために、GitHub ワークフローの初期段階で含めると便利です。

パラメーター 内容
environment-url 接続している環境の URL。
user-name 接続に使用しているアカウントのユーザー名。
password-secret ユーザー名 のパスワード。 GitHub のパスワードは、設定シークレットで定義されています。 シークレットを定義して保存した後で、シークレットを取得できません。
app-id 認証に使用するアプリケーション ID。 このパラメータは、サービス プリンシパルの認証情報を使用して認証する場合に 必須 です。
client-secret GitHub パイプラインの認証に使用されるクライアント シークレット。 このパラメータは、サービス プリンシパルの認証情報を使用して認証する場合に 必須 です。
tenant-id app-idclient-secret を使用した認証時のテナント ID。

ソリューション タスク

これらのタスクでは、ソリューションに対してアクションを実行し、以下のタスクが含まれます:

import-solution

ソリューションをターゲット環境にインポートします。

パラメーター 内容
environment-url (必須) ソリューションをインポートするターゲット環境の URL (たとえば、https://YourOrg.crm.dynamics.com)。
user-name (必須) ユーザー名/パスワード認証を使用している場合は、接続に使用しているアカウントのユーザー名。
password-secret (必須) ユーザー名/パスワード認証を使用している場合は、接続に使用しているアカウントのパスワード。
solution-file (必須) インポートするソリューション ファイルのパスと名前。
app-id 認証に使用するアプリケーション ID。 このパラメータは、サービス プリンシパルの認証情報を使用して認証する場合に 必須 です。
client-secret GitHub パイプラインの認証に使用されるクライアント シークレット。 このパラメータは、サービス プリンシパルの認証情報を使用して認証する場合に 必須 です。
tenant-id app-idclient-secret を使用した認証時のテナント ID。

export-solution

ソース環境からソリューションをエクスポートします。

パラメーター 内容
environment-url (必須) ソリューションのエクスポート元となる環境の URL (たとえば、https://YourOrg.crm.dynamics.com)。
user-name (必須) ユーザー名/パスワード認証を使用している場合は、接続に使用しているアカウントのユーザー名。
password-secret (必須) ユーザー名/パスワード認証を使用している場合、ユーザー名。 GitHub のパスワードは、設定シークレットで定義されています。 シークレットを定義して保存した後で、シークレットを取得できません。
app-id 認証に使用するアプリケーション ID。 このパラメータは、サービス プリンシパルの認証情報を使用して認証する場合に 必須 です。
client-secret GitHub パイプラインの認証に使用されるクライアント シークレット。 このパラメータは、サービス プリンシパルの認証情報を使用して認証する場合に 必須 です。
tenant-id app-idclient-secret を使用した認証時のテナント ID。
solution-name (必須) エクスポートを行うソリューションの名称。 常にソリューションの 表示名 ではなく、名前 を使用してください。
solution-output-file (必須) ソース環境をエクスポートする solution.zip ファイルのパスと名前。
managed (必須) 管理ソリューションとしてエクスポートを true に設定します。アンマネージド ソリューションとしてエクスポートするは、規定 (false) です。

unpack-solution

圧縮されたソリューション ファイルを取得し、それを複数の XML ファイルに分解して、これらのファイルをソース コントロール システムでより簡単に読み取り管理できるようにします。

パラメーター 内容
solution-file (必須) 解凍をする solution.zip ファイルのパスと名称を指定します。
solution-folder (必須) ソリューションの展開を行う対象フォルダとパス。
solution-type (必須) 解凍するソリューションの種類。 オプションには、アンマネージド (推奨)、管理両方 があります。

pack-solution

ソース コントロールに表示されているソリューションを solution.zip へと圧縮すると、このファイルを、他の環境へとインポートすることができます。

パラメーター 内容
solution-file (必須) ソリューションをパックする solution.zip ファイルのパスとファイル名 (たとえば、out/CI/ALMLab.zip)。
solution-folder (必須) 圧縮をするソリューションのパスとソース フォルダー。
solution-type (オプション) パックするソリューションのタイプ。 オプションには、アンマネージド (推奨)、管理両方 があります。

publish-solution

ソリューションのカスタマイズを公開します。

パラメーター 内容
environment-url (必須) ソリューションを公開する環境の URL (たとえば、https://YourOrg.crm.dynamics.com)。
user-name (必須) ユーザー名/パスワード認証を使用している場合は、接続に使用しているアカウントのユーザー名。
password-secret (必須) ユーザー名/パスワード認証を使用している場合は、接続に使用しているアカウントのパスワード。
solution-file (必須) インポートするソリューション ファイルのパスと名前。
app-id 認証に使用するアプリケーション ID。 このパラメータは、サービス プリンシパルの認証情報を使用して認証する場合に 必須 です。
client-secret GitHub パイプラインの認証に使用されるクライアント シークレット。 このパラメータは、サービス プリンシパルの認証情報を使用して認証する場合に 必須 です。
tenant-id app-idclient-secret を使用した認証時のテナント ID。

clone-solution

指定した環境のソリューションを複製します。

パラメーター 内容
environment-url (必須) ソリューションの複製元となる環境の URL (たとえば、https://YourOrg.crm.dynamics.com)。
user-name (必須) ユーザー名/パスワード認証を使用している場合は、接続に使用しているアカウントのユーザー名。
password-secret (必須) ユーザー名/パスワード認証を使用している場合は、接続に使用しているアカウントのパスワード。
solution-file (必須) インポートするソリューション ファイルのパスと名前。
app-id 認証に使用するアプリケーション ID。 このパラメータは、サービス プリンシパルの認証情報を使用して認証する場合に 必須 です。
client-secret GitHub パイプラインの認証に使用されるクライアント シークレット。 このパラメータは、サービス プリンシパルの認証情報を使用して認証する場合に 必須 です。
tenant-id app-idclient-secret を使用した認証時のテナント ID。
solution-name (必須) 複製に必要な solution.zip ファイルのパスと名前 (たとえば、out/CI/ALMLab.zip)。
solution-version 複製するソリューションのバージョン。
target-folder 抽出したソリューションを配置するターゲット フォルダー。 (たとえば、Git repository\target-solution-folder)。
Working-directory ソリューションの複製に必要な進行中のアーティファクト用一時フォルダー。
既定: root of the repository

check-solution

ソリューション ファイルをチェックして、不整合を検出します。

パラメーター 内容
environment-url (必須) ソリューションの複製元となる環境の URL (たとえば、https://YourOrg.crm.dynamics.com)。
user-name (必須) ユーザー名/パスワード認証を使用している場合は、接続に使用しているアカウントのユーザー名。
password-secret (必須) ユーザー名/パスワード認証を使用している場合は、接続に使用しているアカウントのパスワード。
app-id 認証に使用するアプリケーション ID。 このパラメータは、サービス プリンシパルの認証情報を使用して認証する場合に 必須 です。
client-secret GitHub パイプラインの認証に使用されるクライアント シークレット。 このパラメータは、サービス プリンシパルの認証情報を使用して認証する場合に 必須 です。
tenant-id app-idclient-secret を使用した認証時のテナント ID。
path (必須) チェックするソリューション ファイルのパスと名前。
geo 使用する Microsoft Power Platform チェッカー サービスの物理的場所。 既定値は、'united states' です。
rule-level-override ルールとそのレベルの JSON 配列を含むファイルへのパス。 指定できる値は、Critical、High、Low、Informational です。 例: [{"Id":"meta-remove-dup-reg","OverrideLevel":"Medium"},{"Id":"il-avoid-specialized-update-ops","OverrideLevel":"Medium"}]
checker-logs-artifact-name Microsoft Power Platform チェッカー ログがアップロードされるアーティファクト フォルダーの名前。 既定値は 'CheckSolutionLogs' です。

upgrade-solution

ソリューションをアップグレードできます。

パラメーター 内容
environment-url (必須) ソリューションの複製元となる環境の URL (たとえば、https://YourOrg.crm.dynamics.com)。
user-name (必須) ユーザー名/パスワード認証を使用している場合は、接続に使用しているアカウントのユーザー名。
password-secret (必須) ユーザー名/パスワード認証を使用している場合は、接続に使用しているアカウントのパスワード。
solution-file (必須) インポートするソリューション ファイルのパスと名前。
app-id 認証に使用するアプリケーション ID。 このパラメータは、サービス プリンシパルの認証情報を使用して認証する場合に 必須 です。
client-secret GitHub パイプラインの認証に使用されるクライアント シークレット。 このパラメータは、サービス プリンシパルの認証情報を使用して認証する場合に 必須 です。
tenant-id app-idclient-secret を使用した認証時のテナント ID。
solution-name (必須) アップグレードするソリューションの名前。
非同期 ソリューションを非同期にアップグレードします。
max-async-wait-time 分単位での最大非同期待機時間。 既定値は 60 分です。

パッケージ タスク

これらのタスクはパッケージに対してアクションを実行し、次のものが含まれます。

deploy-package

パッケージの dll やパッケージ付き zip ファイルを展開できます。

Note

このアクションは、Windows でのみサポートされています。

パラメーター 説明設定
environment-url (必須) ソリューションの複製元となる環境の URL (たとえば、https://YourOrg.crm.dynamics.com)。
user-name (必須) ユーザー名/パスワード認証を使用している場合は、接続に使用しているアカウントのユーザー名。
password-secret (必須) ユーザー名/パスワード認証を使用している場合は、接続に使用しているアカウントのパスワード。
app-id 認証に使用するアプリケーション ID。 このパラメータは、サービス プリンシパルの認証情報を使用して認証する場合に 必須 です。
client-secret GitHub パイプラインの認証に使用されるクライアント シークレット。 このパラメータは、サービス プリンシパルの認証情報を使用して認証する場合に 必須 です。
tenant-id app-idclient-secret を使用した認証時のテナント ID。
パッケージ (必須) パッケージの dll やパッケージ付きの zip ファイルへのパス。

ポータル タスク

これらのタスクは、Power Pages に対して次のアクションを実行します。

upload-paportal

データを Power Pages にアップロードします。

パラメーター 説明設定
environment-url (必須) ソリューションをインポートする環境の URL (たとえば、https://YourOrg.crm.dynamics.com)。
app-id 認証に使用するアプリケーション ID。 このパラメータは、サービス プリンシパルの認証情報を使用して認証する場合に 必須 です。
client-secret GitHub パイプラインの認証に使用されるクライアント シークレット。 このパラメータは、サービス プリンシパルの認証情報を使用して認証する場合に 必須 です。
tenant-id app-idclient-secret を使用した認証時のテナント ID。
アップロード - パス Web サイトのコンテンツを保存するパス (エイリアス: -p)。
deployment-profile deployment-profiles/[profile-name].deployment.yaml ファイルのプロファイル変数 を介して定義された環境詳細でポータル データをアップロードします。
モデル バージョン アップロードするサイト データが標準 (1) を使用するか、拡張データ モデル (2) を使用するかを示します。 既定値は「1」です。

Power Pages 向けの Microsoft Power Platform CLI サポート

タスクのカタログ (プレビュー)

これらのタスクでは、Power Platform のカタログに対してアクションを実行し、以下のタスクが含まれます。

注意

現在、Power Platform のカタログ タスクが プレビュー リリースされています。

install

ターゲット環境に Catalog の項目をインストールします。

パラメーター Description
catalog-item-id (必須) ターゲット環境にインストールされるカタログ アイテム。
target-url (必須) カタログ アイテムをインストールするターゲット環境の URL (例: "https://YourOrg.crm.dynamics.com")。
設定 (必須) 実行するインストール フレームワークのランタイム パッケージの設定。 文字列の式は key=value|key=value になります。
target-version インストールするターゲット バージョン。 空のままにすると、公開されたバージョンが選択されます。
poll-status ポールを使って、要求の状態を確認することができます。

submit

現在の Dataverse 環境 (組織) から公開されたすべてのカタログ項目をリストアップします。

パラメーター Description
パス (必須) カタログ提出ドキュメントへのパス。
package-zip パッケージ zip ファイルへのパス。
solution-zip ソリューション zip ファイルへのパス。
poll-status 要求の状態を確認するためにポーリングします。

ステータス

Catalog のインストール/要求の送信の状態を取得します。

パラメーター Description
tracking-id (必須) 追跡 ID の要求。
タイプ (必須) 要求のタイプ (値: インストール、送信)

GitHub ワークフロー作成

GitHub アクションを使用して GitHub ワークフローを構成する方法については、Microsoft Power Platform 用 GitHub Actions ラボ を修了してください。

詳細情報: GitHub アクションについて

関連項目

Microsoft Power Platform の GitHub アクション