11

有没有一种方法可以让我的 Azure WebJob 自动部署,而无需每次都右键单击并选择“发布为 Azure WebJob”?即当我签入我的解决方案时,它会自动部署到 Azure 门户网络作业部分

4

4 回答 4

5

当我尝试实现这一点时,我发现目前还没有对 dotnet 核心项目的工具支持。提议的 webjobs.props/msbuild 解决方案都是特定于 dotnet 框架的。

但是,我还发现 webjob 可以是在本地机器上可执行的任何东西(可以是 node.js 或只是一个批处理命令)。


关键是要了解 WebJobs 是如何被宿主识别的:

  • Windows 主机上的 WebJob(根据我从试验中收集到的信息)只是一个run.cmd包含有关如何启动 webJob 的说明的文件。对于 dotnet 核心dotnet MyDll.dll %*%*从主机向下传递用于输出重定向等的参数)。
  • 现在取决于作业是连续的还是触发的,run.cmd文件需要位于app_data/jobs/continuous/[NameOfJob]app_data/jobs/triggered/[NameOfJob]。对于触发的作业,您还可以使用此处settings.job所述的文件添加计划。
  • 如果run.cmd在正确的位置有一个,它将被识别为一个 WebJob

现在无论运行时框架如何,都可以使用 VSTS 部署 webjob,请按照以下步骤操作:

  1. 如有必要,构建/发布您的 WebJob 以获取可执行文件
  2. 在包含正确启动说明的 webjob 可执行文件旁边添加一个 run.cmd 文件。如果需要,您也可以settings.job在此处添加。
  3. 创建文件夹层次结构app_data/jobs/[triggered/continuous]/[nameOfJob]并将可执行文件复制到最低的文件夹中。确保run.cmd直接在[nameOfJob]/目录下
  4. 压缩 app_data 文件夹,以便 zip 包包含整个层次结构
  5. 使用正常的 Azure 应用服务部署任务发布您的 zip 文件(就像部署 Web 应用程序一样)

就是这样。

于 2019-02-04T14:05:17.007 回答
4

是的你可以。

Brady Gaster 在一篇博文中写过这个(我自己没试过)。

据我所知,TL;DR;总结如下:

将名为 webjobs.props 的文件添加到要发布的 Web 应用程序项目或控制台应用程序的属性文件夹中

之后,编辑文件,使ManagementCertificate,SubscriptionIdPublishSettingsPath填充正确的数据。

现在您应该可以使用命令发布文件了

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/352640

于 2017-10-17T09:17:43.940 回答
3

您可以通过持续集成构建来完成(签入后触发构建)。

关于部署 WebJob,您可以通过带有参数的Visual Studio Build任务生成包。/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.stagingDirectory)"

然后通过 Azure App Deployment 任务进行部署。

详细信息:将 Azure WebJobs 从 VSTS 部署和计划到 Azure Web App

于 2017-10-25T07:04:39.783 回答
-1

在 Visual Studio 中,为了与 Web 项目一起启用自动 WebJobs 部署,右键单击解决方案资源管理器中的 Web 项目,然后单击:添加 > 现有项目作为 Azure WebJob 并创建您的 WebJob。

更多细节可以在 MS 的一篇文章中找到 - webjobs-dotnet-deploy-vs

于 2019-02-11T12:07:36.523 回答