このエントリは2025/04/12現在の情報によるものです。将来の機能追加や変更に伴い、記載事項からの乖離が発生する可能性があります。
問い合わせ
お初の方から以下のような問い合わせが届いた。
現在Static Web Apps (SWA) に静的Webアプリをデプロイしようとしている。管理者によるセキュリティ設定のせいで、現在セルフホスト型のエージェントやランナーを使うしかないのだが、どうにもうまくいかない。どうしたらよいか?
なんとも雑な問い合わせだったので、もう少し確認してみた。
- Azure Pipelinesを利用
- Webアプリ自体はシンプルなHTMLで構成されている(一部JavaScriptがある)
- ローカルからSWA CLIによるデプロイは可能
- “AzureStaticWebApp@0″というタスクを利用 (SWA CLIをエージェントで実行してはいない)
- self-hosted agentはWindowsに構成
「あれね」と思った方もいらっしゃるかもしれない。
原因
ドキュメントにも記載のある通り、AzureStaticWebApp@0 はLinux agentでのみ動作する。そのため、self-hosted agentもLinuxである必要がある。
Remarks (AzureStaticWebApp@0 – Azure Static Web App v0 タスクをデプロイする / AzureStaticWebApp@0 – Deploy Azure Static Web App v0 task)
https://learn.microsoft.com/azure/devops/pipelines/tasks/reference/azure-static-web-app-v0?view=azure-pipelines#remarks

とはいえ、Linuxであればよいので、VM、VMSS、WSLなどでself-hosted agentを構築すればOK。実際にはコンテナー実行環境が必要なので、Dockerとか、Rancherとか、Podmanとかを仕込んでおく必要はある。
GitHub Actionsだったらどうなのか?
GitHub ActionsだとAzure/static-web-apps-deploy@v1 で構成されることが多いが、これもWindowsのランナーでは利用できない。実際に実行してみるとわかるが、Container actionはLinuxでのみサポートされていることが理由。なので、これもまたDockerとかRancherとかPodmanとかをself-hosted runnerに準備しておく必要がある。

では全くWindows環境では実行できないのか?
SWA CLIを使ったデプロイであれば、WindowsでもLinuxでも実行できるので、WindowsランナーやWindowsエージェントで実行すること自体は可能。とはいえ、OS固有の機能が必須でない限り、あえてお財布に優しくないエージェントやランナーを使う理由はないはず(知らんけど)。