はじめに
JenksinでAuzreのデプロイ周りを自動化する際に使用した、
.Net系のコマンド集です。
環境
コマンドを叩くために必要なcliツール
VisualStudioが入っていれば、すでに入っているはず。
なければ、別途インストールして、PATHを通します。
dotnet 5.0.102
msbuild 16.8.3.61104
azure-cliをインストールしてください。
az --version
コマンドが認識されなければインストール
https://docs.microsoft.com/en-us/cli/azure/install-azure-cli
各コマンドが入ったか確認
dotnet --version
5.0.102
msbuild -version
16.8.3.61104
az --version
2.24.0
Azure Web Appsにデプロイ
dotnet publish "MyProject.csproj" /p:Configuration=Release /p:PublishProfileFullPath="C:\MyProject - Web Deploy.pubxml" /p:Username="ユーザー名" /p:Password="パスワード"
- 第一引数は発行したいプロジェクトのcsprojファイルのPath
Configurationは構成
PublishProfileFullPathはVisualtStudioからプロジェクトの「発行」をする際にできるファイル。まずはVisualStudioで目的のAzureWebAppsに向いているファイルを作っておきます。
プロジェクトフォルダ/Properties/PublishProfiles下にあります。ユーザー名とパスワードはAzureポータルから取得
発行プロファイルの中に以下のプロパティがあります
「userName」「userPWD」
Azure Functionsにデプロイ
msbuild "MyProject.csproj" /p:DeployOnBuild=True /p:PublishProfileFullPath="C:\MyProject - Zip 配置.pubxml" /p:Username="ユーザー名" /p:Password="パスワード"
引数の意味はWeb Appsと一緒
dotnet publishだとうまく行かなかったのでmsbuildを使っている
EF Coreのマイグレーション
dotnet new tool-manifest
dotnet tool install dotnet-ef --version 3.1.11
dotnet ef database update --context MyContext --project MyProject --startup-project MyProject --configuration Release
MSIXの発行
3ステップ必要です。
nugetの復元
msbuild -property:RuntimeIdentifiers=\"win-x86\" /t:restore /p:platform=\"x86\" /p:configuration="Release" ${workspace}\\MyProject.sln
バージョンの書き換え
powershell """
\$xmlFileName = \"${env:workspace}\\MyProject.Package\\Package.appxmanifest\"
[xml]\$xmlDoc = Get-Content \$xmlFileName
\$xmlDoc.Package.Identity.Version = 1.0.0.0
\$xmlDoc.Save(\$xmlFileName)
"""
パッケージ化
msbuild -property:RuntimeIdentifiers=\"win-x86\" MyProject.Package\\MyProject.Package.wapproj /nologo /nr:false /p:platform=\"x86\" /p:configuration=\"Release\" /p:PackageCertificateKeyFile=${workspace}\\MyProject.Package\\証明書.pfx /p:PackageCertificatePassword=\"証明書パスワード\" /t:clean;restore;rebuild
Azrue Blob Storageにファイルのアップロード
az storage blob upload --account-name Blobのアカウント名 --account-key BlobのKey --container-name コンテナ名 --file ファイル名 --name アップロード後のファイル名
Web Appsのアプリケーション設定の上書き
ログイン
az login --username ユーザー名 --password パスワード
az webapp config appsettings set --resource-group リソースグループ名 --name リソース名 --slot スロット名 --settings 上書き対象のKey=新しい値 --subscription サブスクリプションID
--slotと--subscriptionは省略可能
デプロイスロットのスワップ
az functionapp deployment slot swap --name リソース名 --resource-group リソースグループ名 --slot スロット名
Azure Web Apps FTPデプロイ
windowsにコマンドがなかったのでcygwin64を使ってzipとcurlをいれました
デプロイ対象フォルダをzip圧縮
C:\cygwin64\bin\zip.exe -r wwwroot.zip .
curl -X POST -u ユーザー名:パスワード --data-binary @"wwwroot.zip" エンドポイント/api/zipdeploy
ユーザー名、パスワード、デプロイエンドポイントは画像の位置からダウンロード
ダウンロードしたprofile.publishsettingsの中を確認
ユーザー名 = userName
パスワード = userPWD
エンドポイント=publishUrl (例:mywebapp.scm.azurewebsites.net)