如何将Azure WebJob部署为自动VSTS部署的一部分

时间:2017-10-17 08:58:39

标签: azure azure-devops azure-webjobs webjob

有没有办法让我的Azure WebJob自动部署而无需右键单击并选择"发布为Azure WebJob"每次?即,当我签入我的解决方案时,它会自动部署到Azure门户webjob部分

4 个答案:

答案 0 :(得分:4)

是的,你可以。

Brady Gaster在blog post上写过这篇文章(我自己没试过)。

从我收集到的,TL; DR;摘要如下:

  

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

之后,请修改该文件,以便ManagementCertificateSubscriptionIdPublishSettingsPath填充正确的数据。

现在您应该能够使用命令

发布文件
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/352640

答案 1 :(得分:3)

您可以通过Continuous Integration Build执行此操作(一旦签入即触发构建)。

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

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

更多信息:Deploying and Schedule Azure WebJobs from VSTS to Azure Web App

答案 2 :(得分:1)

当我尝试完成此任务时,我发现到目前为止,对dotnet核心项目没有工具支持。建议的webjobs.props / msbuild解决方案都是特定于dotnet框架的。

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


关键是要了解主机如何识别WebJob:

  • Windows主机上的WebJob(根据我的实验收集)只是一个run.cmd文件,其中包含有关如何启动WebJob的说明。对于将为dotnet MyDll.dll %*的dotnet核心(%*从主机向下传递用于输出重定向等的参数)。
  • 现在取决于作业是连续的还是触发的,run.cmd文件需要位于app_data/jobs/continuous/[NameOfJob]app_data/jobs/triggered/[NameOfJob]处。对于触发的作业,您还可以使用here之类的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 App Service部署任务发布zip文件(就像部署Web应用程序一样)

就是这样。

答案 3 :(得分:-1)

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

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