Azure DevOpsを始める時の最初の作業となるプロジェクト作成について説明します。 公開範囲や作業方法(Agile、CMMI、Scrum)の選択について記載しています。 Azure DevOps…
Microsoftのアジャイルプロジェクト管理ツールには「Pipeline」という名称で自動ビルド・デプロイ (CI&CD)するツールが備わっています。
C#のSPAアプリケーションを作成するBlazorフレームワークをPipelineを使ってAzure WebAppへデプロイする方法を紹介します。
Pipelines
PipelinesではRepos (リポジトリ)にコミットされた内容をビルドするYAML定義を記載します。
.NetCore3.1の場合のYAML定義は以下の通りとなります。
例ではソリューション直下に「Web」ディレクトリプロジェクトを配置した構成のサンプルとなります。
Blazor単体のソリューション・プロジェクトであれば、Webディレクトリ階層は除きます。
CDに当たるデプロイのため、`PublishBuildArtifacts` としてアーティファクトに発行しています。
dotnet publishでzipを出力すれば良いと思いましたが、想定通りファイルが出力されないため、アーティファクトへ出力しています。
dotnet publishでzipを出力すれば良いと思いましたが、想定通りファイルが出力されないため、アーティファクトへ出力しています。
# ASP.NET Core
# Build and test ASP.NET Core projects targeting .NET Core.
# Add steps that run tests, create a NuGet package, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
variables:
buildConfiguration: 'Release'
steps:
- task: UseDotNet@2
displayName: ".NET Core 3.1.x"
inputs:
version: '3.1.x'
packageType: sdk
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
command: 'restore'
restoreSolution: '**/*.sln'
feedsToUse: 'select'
- task: DotNetCoreCLI@2
inputs:
command: 'restore'
projects: '**/Web/*.csproj'
feedsToUse: 'select'
- task: DotNetCoreCLI@2
inputs:
command: 'build'
projects: '**/Web/*.csproj'
arguments: '--configuration Release'
- task: DotNetCoreCLI@2
inputs:
command: publish
publishWebProjects: True
arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: True
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
Release
ビルドされた出力ファイルをWebサーバーへデプロイするYAML定義を設定します。
Web画面上ではWebApp用のテンプレートが用意されている為、こちらを選択して設定していきます。
WebAppはPipelinesから自動作成されたりはしないため、Azure Portalから作成して紐づけます。
YAML定義
steps:
- task: AzureRmWebAppDeployment@4
displayName: 'Deploy Azure App Service'
inputs:
azureSubscription: '$(Parameters.ConnectedServiceName)'
appType: '$(Parameters.WebAppKind)'
WebAppName: '$(Parameters.WebAppName)'
packageForLinux: '$(System.DefaultWorkingDirectory)/**/drop/*.zip'
StartupCommand: '$(Parameters.StartupCommand)'
AppServiceのランタイムのバージョンを要確認
AppService側で.NetCoreのバージョンを指定します。
.NetCoreでマイナーバージョンを含む最新のバージョンがリリースされていても、AppServiceですぐに使用できる訳ではありません。
AppServiceの実行バージョンとビルドするバージョンを一致させないとエラーとなります。
コメントを書く