Azure App Service 発行プロファイルで appsettings.json を除外する
発行プロファイル
発行プロファイル(.pubxml) を使うと、簡単に、Azure App Service へアプリをディプロイできて便利です。 Visual Studio 2022 からだと、Web プロジェクトを選択し、右クリックメニューから、[発行] を選択すると、ウィザードが起動するので、対象のサービス、対象の Azure サブスクリプション、対象のリソースを選択することで、発行プロファイルを簡単に作成できます。
発行プロファイルができてしまえば、[発行] ボタンから、ワンプッシュで、Azure App Service へアプリをディプロイできます。
CLI からだと、以下のような感じです。
>dotnet publish xxxxxxx.csproj /p:PublishProfile=xxxxxx.pubxml
もちろん、GihHub Actions で、YAML でも良いですが、発行プロファイルでのディプロイの手軽さは抜群です。Azure 上での動作をさくっと確認したい場合は非常に便利です。
特定のファイルを除外したい
GitHub Action で Azure App Service へディプロイする場合は、リポジトリ上のソースコードからビルドするので、.gitignore に除外したいファイルを指定しておけば良いのですが、ウィザードで作成した発行プロファイルで、ローカル環境から発行を行うと、appsettings.json も、もれなくディプロイされてしまいます。
Azure App Service の構成で、環境変数の値を読んでいるのか、appsettings.json から構成情報を読んでいるのか、よくわからなくなってしまいます、、、。もちろん、環境変数が優先されますが、変数名のスペルミスがあっても気付かないこともあります。それ以上に、ローカルの ConnectionString 等の値をサーバーにあげたくないですね、、、。
特定のファイルをディプロイしたくない場合は、発行プロファイル(.pubxml) で、除外したいファイルを明示的に指定してやります。
発行プロファイル (.pubxml) は、Visual Studio 2022 の場合は、プロジェクトルート以下の Properties\PublishProfiles フォルダー以下に格納されています。
対象の発行プロファイル(.pubxml) を以下のように編集します。
<?xml version="1.0" encoding="utf-8"?>
<!--
このファイルは、Web プロジェクトの公開 / パッケージ処理で使用されます。この MSBuild ファイルを編集すると、
この処理の動作をカスタマイズできます。詳細については、https://go.microsoft.com/fwlink/?LinkID=208121 を参照してください。
-->
<Project>
<PropertyGroup>
<WebPublishMethod>ZipDeploy</WebPublishMethod>
<IsLinux>true</IsLinux>
<ResourceId>...</ResourceId>
<ResourceGroup>...</ResourceGroup>
<LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
<SiteUrlToLaunchAfterPublish>...</SiteUrlToLaunchAfterPublish>
<PublishProvider>AzureWebSite</PublishProvider>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<ProjectGuid>...</ProjectGuid>
<PublishUrl>https://xxx.scm.azurewebsites.net/</PublishUrl>
<UserName>$xxx</UserName>
<_SavePWD>true</_SavePWD>
</PropertyGroup>
<!-- 不要なファイルの除外 start -->
<ItemGroup>
<Content Update="appsettings.json" CopyToPublishDirectory="Never" />
<Content Update="appsettings.*.json" CopyToPublishDirectory="Never" />
</ItemGroup>
<!-- 不要なファイルの除外 end -->
</Project>
<ItemGroup><Content Update=
で対象のファイルを指定して、CopyToPublishDirectory="Never"
で公開しないように設定します。
以上、参考までに。
コメント (0)
コメントの投稿