使用可能な 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 ファイルのプロファイル変数 を介して定義された環境詳細でポータル データをアップロードします。

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

これらのタスクでは、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 アクション