ASP.NET Webアプリケーションプロジェクト(UIと呼ばれる)とAzure WebJobプロジェクト(WebJobsと呼ばれる)の両方を備えたVisual Studio2017ソリューションがあります。 Visual Studio内(右クリックして公開)から同じAppServiceにAzureにデプロイするように両方を構成しました。このソリューションは、VSTSにプッシュするたびにビルドするようにも構成されています。
ビルドが成功したときに両方のプロジェクトをデプロイするようにVSTSをセットアップしたいのですが、問題が発生します。
私の理解では、これを実現するには、パイプラインに「Azure AppServiceのデプロイ」タスクを追加してビルド定義にリンクするリリース定義を作成する必要があります。これを試したところ、アーティファクトフォルダーに複数の.Zipファイルが見つかり、フィルターをより具体的にするようにアドバイスされたため、エラーが発生しました。そのため、[パッケージまたはフォルダー]オプションを$(System.DefaultWorkingDirectory)/**/*.Zip
から$(System.DefaultWorkingDirectory)/**/UI.Zip
。これはエラーを回避しましたが、今では明らかに私のアプリ(UI)のみをデプロイしています。
次のステップは、WebJobプロジェクト用に別の環境を作成し、パッケージとして$(System.DefaultWorkingDirectory)/**/WebJobs.Zip
を指定することでした。これで、両方の環境が「正常に」デプロイされましたが、アプリが破損し、アプリの上にWebJobがデプロイされたと確信しています(この信念を確認する方法がわかりません...)。
リリース定義に環境を追加してテンプレートを選択すると、[Azure AppServiceの展開]の下に次のように表示されます。「アプリケーションをAzureApp Servicesにデプロイします。Windows、Linux、コンテナー、関数アプリのWebアプリから選択します。 Web Jobs "ただし、このテンプレートを選択すると、WebJobは[アプリの種類]ドロップダウンに表示されません。
VSTSからのWebJobの展開に関してオンラインでいくつかのリソースを見つけましたが、それらはすべて古く、説明されているオプションは現在VSTSにあるものと一致しなくなりました。
私の問題は、以下の David Ebbo と starian chen の両方の回答の結果として解決されました。
まず、must Visual StudioでWeb Appプロジェクトを右クリックし、追加>既存のプロジェクトをAzureWebJobとしてを選択し、ウィザード。次に、パッケージまたはフォルダーパスフィルターを更新して、VSTSデプロイタスクがデプロイする.Zipパッケージを1つだけ検出するようにし、Webアプリのみを検出するようにする必要があります。 )のもの;私の場合は$(System.DefaultWorkingDirectory)/**/UI.Zip
でした。
@DavidEbboと@starianchenの助けに感謝します!
Webアプリを右クリックし、次を選択してWebJobプロジェクトを作成するだけです。
Add / New Azure WebJob project
または、ソリューションにすでにWebJobsプロジェクトがある場合:
Add / Existing WebJob project
これを行うと、Webアプリを公開すると、それが属するWebJobが自動的に公開されます。すべてが単一のZipファイルで行われ、VSTSで特別なことは何もありません。一度公開したら、WebJobプロジェクトを個別に公開しようとしないでください。