LoginSignup
7
6

More than 3 years have passed since last update.

Azure App Service に .NET Core Web アプリと WebJob を Azure DevOps (Azure Pipelines) でデプロイする

Last updated at Posted at 2019-11-09

やること

Webアプリケーション+WebJob なアプリケーションを Azure App Service に自動デプロイしたい!

ソースコードと App Service は↓な感じのものを想定する。

2019-11-09-00-18-52.png

2019-11-09-00-34-11.png

パイプラインを作る手順

まず全体像から。

基本的な考え方は、publish するときに App Service と WebJob(Kudu) のファイル・フォルダ構成に合わせて出力して、そのまま App Service にデプロイする、というもの。

2019-11-09-00-15-09.png

テンプレートから作成する

Pipelines -> Builds -> New -> New build pipeline

2019-11-09-00-39-08.png

Use the classic editor

2019-11-09-00-39-50.png

リポジトリを選択

2019-11-09-00-40-19.png

ASP.NET Core テンプレートを選択

2019-11-09-00-41-08.png

2019-11-09-00-42-36.png

これをベースにパイプラインを作る。

dotnet restore/build/test

特に変えなくてよい。

dotnet publish

WebJob と Web アプリケーション毎に publish のタスクを作る。

Job の publish

変更する箇所 変更内容
Publish Web Projects チェックを外す
Zip Published Projects チェックを外す
Add project name to publish path チェックを外す
Path to project(s) .csproj ファイルを明示的に設定するように変更する
Arguments outputパラメータを下記のように変更する

--configuration $(BuildConfiguration) --output $(build.artifactstagingdirectory)/App_Data/jobs/triggered/{ジョブ名}

JobA 用のタスク

2019-11-09-00-16-02.png

JobB 用のタスク

2019-11-09-00-16-26.png

Web アプリの publish

変更する箇所 変更内容
Zip Published Projects チェックを外す
Add project name to publish path チェックを外す

2019-11-09-00-16-52.png

run.cmd と settings.job の作成

Powershell タスクを追加し、各ジョブの run.cmd と settings.job を作成するスクリプトを記述する。
※run.cmd と settings.job は、あらかじめ WebJob のプロジェクト直下に置いておいてもよい。その場合、この手順はスキップする。

2019-11-09-09-10-51.png

2019-11-09-09-11-26.png

変更する箇所 変更内容
Type Inlineに変更する
Script スクリプトを書く(サンプルとスクリーンショット参照)
Advanced -> Working Directory $(Build.ArtifactStagingDirectory)

下記は1分毎に実行されるジョブの run.cmd と settings.job を生成するスクリプトのサンプル

"dotnet {モジュール名}.dll" | out-file App_Data/jobs/triggered/{ジョブ名}/run.cmd -Encoding ASCII; 
"{`"schedule`": `"0 * * * * *`"}" | out-file App_Data/jobs/triggered/{ジョブ名}/settings.job -Encoding ASCII; 

2019-11-09-00-17-35.png

App Service のデプロイ

Azure App Service Deploy タスクを追加し、サブスクリプションや App Service 名等、必要な設定を入れる。
2019-11-09-09-13-33.png

2019-11-09-09-14-00.png

変更する箇所 変更内容
Package or folder $(Build.ArtifactStagingDirectory)
Additional Deployment Options Deployment method を Zip Deploy に設定

image.png

Publish Artifact

そのままでよい。

テスト実行

Save & queue するとパイプラインを実行できる。

2019-11-09-01-17-46.png

2019-11-09-01-09-51.png

Enable system diagnostics にチェックを入れるとログ出力が詳細になる。もし実行に失敗した場合はログを見て原因を特定する。

2019-11-09-09-17-23.png

実行結果を確認

AzureポータルとWebサイトを見て、動いてることが確認できた!

2019-11-09-01-11-36.png

2019-11-09-01-13-04.png

おわり。

参考

7
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6