
こんにちは、あおいです。
さて、Power Automateでソリューションのエクスポート・インポートを実行する記事を過去に紹介しました。
こちらの記事も是非ご覧ください。
Power Automateでソリューションのエクスポート・インポートを自動化する | cloud.config Tech Blog
GitHub上の操作でもソリューションのエクスポート・インポートは可能です。
手順は大きく2つに分かれます。
① 開発環境のソリューションをGitHubにエクスポートする。
② GitHubにエクスポートされたソリューションを本番環境にインポートする。
そこで、今回は前編・後編の2部構成として、本記事は手順①について紹介したいと思います。
また、Office365の多要素認証(MFA)を有効にしているので、本記事では「サービスプリンシパル認証」を考慮した手順となっています。
まず、サービスプリンシパル認証には、Azure ADに登録されているアプリケーションのクライアントID、テナントIDとクライアントシークレットが必要になります。必ず忘れずメモ帳等に記録しておきましょう。
それらの情報は下記チュートリアルに従って操作していただければご確認いただける情報です。
サービスプリンシパル アカウントを作成し、作成した環境への権限を付与します | Microsoft Docs
アプリを Azure Active Directoryに登録する | Microsoft Docs


また、GitHub ワークフローが CI/CD パイプラインの一部としてソリューションを展開するには、「アプリケーション ユーザー」に環境へのアクセス権を付与する必要があります。
こちらも下記チュートリアルに従って操作していただければ大丈夫です。
アプリケーションユーザーの作成 | Microsoft Docs
設定が完了すると、以下のようにアプリケーションユーザーの一覧に追加されます。

ソリューションを作成します。今回はソリューション名を[ALMLab]とします。
公開元の設定項目は[+公開元]を選択して、[表示名][名前][接頭辞]を入力して保存します。

作成した公開元を選択して、ソリューションを作成します。

適当にキャンバスアプリやクラウドフロー、Dataverseのテーブルを作成します。

次に、GitHubにサインインをして、リポジトリを新規作成します。

GitHub Actonsで使用する新しいシークレットを作成します。
[Settings]⇒[Secrets]⇒[New repository secret]を選択します。

シークレットのNameに[PowerPlatformSPN]と入力します。Valueには Azure Active Directory で作成したアプリケーション登録のクライアント シークレットを入力し[Add Secret]を選択します。

[Actions]⇒[set up a workflow yourself →]を選択します。

以下のymlファイルのコンテンツをコピーし、[Edit file]画面に貼り付けます。
export-and-branch-solution-with-spn-auth.yml
ワークフローの名前を[export-and-branch-solution.yml]に変更します。
ENVIRONMENT_URL:開発環境のURL
CLIENT_ID:事前にメモ帳等で記録したクライアントID
TENANT_ID:事前にメモ帳等で記録したテナントID

[Start commit]を選択後、タイトルに[Create export yml]と入力して[Commit new file]を選択します。

[Actions]⇒[Run workflow]でワークフローを実行します。

ワークフローの完了後、新しいブランチにソリューションフォルダが作成されていることを確認します。


mainブランチにマージするために、[Pull request]⇒[Create pull request]を選択します。

プル要求の概要が表示されます。
ブランチとmainブランチに競合がないことを確認し、[Squash and merge]をします。


マージが完了し、GitHubに開発環境のソリューションをエクスポートすることが実現出来ました!

今回は手順①の開発環境のソリューションをGitHubにエクスポートする方法を紹介させていただきました。
次回の記事では手順②の本番環境にソリューションをインポートする方法について紹介します。
Power Platform用GitHub Actionsでアプリ管理・デプロイの自動化をする【後編】| cloud.config Tech Blog
また、通常のユーザー名とパスワードで認証をする場合、以下のymlファイルとなります。
export-and-branch-solution.yml
ymlファイルの<USERNAME>にはPower Platformのアカウントを入力していただくようお願いします。
また、GitHubシークレットとして設定されるパスワードも、GiHubアカウントのパスワードではなく、Power Platformのアカウントのパスワードを設定していただきますようお願いいたします。
参考記事
Microsoft Power Platform 用GitHub Actions の使用を開始する | Microsoft Docs
GitHub Actions for Microsoft Power Platform を使用してデプロイ用のモデル駆動型アプリを構築する | Microsoft Docs
Microsoft Power Platform 向けに GitHub Actions を使用してソリューションのデプロイを自動化する | Microsoft Docs