web-dev-qa-db-ja.com

自動VSTS展開の一部としてAzure WebJobを展開する方法

毎回右クリックして[Azure WebJobとして公開]を選択する必要なしに、Azure WebJobを自動的にデプロイする方法はありますか?つまり、ソリューションをチェックインすると、Azure PortalのWebジョブセクションに自動的にデプロイされます

10
Jaja1415

はい、できます。

Brady Gasterがこれについて ブログ投稿 に書いています(自分で試したことがありません)。

私が集めたものから、TL; DR;概要は次のとおりです。

公開するWebアプリケーションプロジェクトまたはコンソールアプリケーションのプロパティフォルダーにwebjobs.propsという名前のファイルを追加します

その後、ManagementCertificateSubscriptionIdおよびPublishSettingsPathに正しいデータが入力されるようにファイルを編集します。

これで、次のコマンドを使用してファイルを公開できるはずです

msbuild WebJobDemo.Web.csproj /p:DeployOnBuild=true /p:PublishProfile=WebJobDemo /p:VisualStudioVersion=12.0 /p:Password=asdfasdf

(注、投稿はVS2013向けに書かれています)

その後、このようなものが表示されます。 deployment output

もちろん、何かがリポジトリにチェックインされたときはいつでも、VSTS(またはそのことについては他のビルド/デプロイメントツール)でこれを自動化できます。

コマンドラインを介してVSTSでこれを行う方法に関する(かなり完全な)回答は、この回答にあります: https://stackoverflow.com/a/45703975/35264

4
Jan_V

私はこれを達成しようとしましたが、今のところドットネットコアプロジェクトのツールサポートがないことがわかりました。提案されているwebjobs.props/msbuildソリューションは、すべてdotnetフレームワーク固有です。

ただし、webjobはローカルマシンで実行可能な任意のもの(node.jsまたは単なるバッチコマンド)である可能性があることもわかりました。


重要なのは、Webジョブがホストによってどのように認識されるかを理解することです。

  • Windowsホスト上のWebJobは、(私がそれを実験して収集したものによって)、WebJobの起動方法を含むrun.cmdファイルです。 dotnet MyDll.dll %*になるdotnetコアの場合(%*は、出力リダイレクトなどの引数をホストから渡すために使用します)。
  • 次に、ジョブが継続的であるかトリガーされているかに応じて、run.cmdファイルをapp_data/jobs/continuous/[NameOfJob]またはapp_data/jobs/triggered/[NameOfJob]に配置する必要があります。トリガーされたジョブについては、説明されているようにsettings.jobファイルを使用してスケジュールを追加することもできます here
  • 適切な場所にrun.cmdがある場合、WebJobとして認識されます

ここで、ランタイムフレームワークに関係なくVSTSを使用してWebジョブを展開するには、次の手順に従います

  1. 実行可能ファイルを取得する必要がある場合は、WebJobをビルド/公開します
  2. 適切な起動手順を含むwebjob実行可能ファイルの横にrun.cmdファイルを追加します。必要に応じて、ここにsettings.jobを追加することもできます。
  3. フォルダー階層app_data/jobs/[triggered/continuous]/[nameOfJob]を作成し、実行可能ファイルを最下位のフォルダーにコピーします。 run.cmd[nameOfJob]/ディレクトリの直下にあることを確認してください
  4. App_dataフォルダーを圧縮して、Zipパッケージに階層全体が含まれるようにします。
  5. 通常のAzure App Service展開タスクを使用してZipファイルを公開します(Webアプリの展開と同様)

以上です。

4
Peter

継続的インテグレーションビルド (チェックインしたらビルドをトリガーする)を介してそれを行うことができます。

WebJobの展開に関しては、/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.stagingDirectory)"引数を使用してVisual Studio Buildタスクを介してパッケージを生成できます。

次に、Azure App Deploymentタスクを使用してそれをデプロイします。

詳細: VSTSからAzure WebアプリへのAzure Webジョブの展開とスケジュール設定

3