毎回右クリックして[Azure WebJobとして公開]を選択する必要なしに、Azure WebJobを自動的にデプロイする方法はありますか?つまり、ソリューションをチェックインすると、Azure PortalのWebジョブセクションに自動的にデプロイされます
はい、できます。
Brady Gasterがこれについて ブログ投稿 に書いています(自分で試したことがありません)。
私が集めたものから、TL; DR;概要は次のとおりです。
公開するWebアプリケーションプロジェクトまたはコンソールアプリケーションのプロパティフォルダーにwebjobs.propsという名前のファイルを追加します
その後、ManagementCertificate
、SubscriptionId
およびPublishSettingsPath
に正しいデータが入力されるようにファイルを編集します。
これで、次のコマンドを使用してファイルを公開できるはずです
msbuild WebJobDemo.Web.csproj /p:DeployOnBuild=true /p:PublishProfile=WebJobDemo /p:VisualStudioVersion=12.0 /p:Password=asdfasdf
(注、投稿はVS2013向けに書かれています)
もちろん、何かがリポジトリにチェックインされたときはいつでも、VSTS(またはそのことについては他のビルド/デプロイメントツール)でこれを自動化できます。
コマンドラインを介してVSTSでこれを行う方法に関する(かなり完全な)回答は、この回答にあります: https://stackoverflow.com/a/45703975/35264
私はこれを達成しようとしましたが、今のところドットネットコアプロジェクトのツールサポートがないことがわかりました。提案されているwebjobs.props/msbuildソリューションは、すべてdotnetフレームワーク固有です。
ただし、webjobはローカルマシンで実行可能な任意のもの(node.jsまたは単なるバッチコマンド)である可能性があることもわかりました。
重要なのは、Webジョブがホストによってどのように認識されるかを理解することです。
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ジョブを展開するには、次の手順に従います
settings.job
を追加することもできます。app_data/jobs/[triggered/continuous]/[nameOfJob]
を作成し、実行可能ファイルを最下位のフォルダーにコピーします。 run.cmd
が[nameOfJob]/
ディレクトリの直下にあることを確認してください以上です。
継続的インテグレーションビルド (チェックインしたらビルドをトリガーする)を介してそれを行うことができます。
WebJobの展開に関しては、/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.stagingDirectory)"
引数を使用してVisual Studio Buildタスクを介してパッケージを生成できます。
次に、Azure App Deploymentタスクを使用してそれをデプロイします。