有没有办法让我的Azure WebJob自动部署而无需右键单击并选择"发布为Azure WebJob"每次?即,当我签入我的解决方案时,它会自动部署到Azure门户webjob部分
答案 0 :(得分:4)
是的,你可以。
Brady Gaster在blog post上写过这篇文章(我自己没试过)。
从我收集到的,TL; DR;摘要如下:
将名为webjobs.props的文件添加到您要发布的Web应用程序项目或控制台应用程序的properties文件夹中
之后,请修改该文件,以便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/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:
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,请按照以下步骤操作:
settings.job
。app_data/jobs/[triggered/continuous]/[nameOfJob]
,然后将可执行文件复制到最低的文件夹中。确保run.cmd
直接位于[nameOfJob]/
目录下就是这样。
答案 3 :(得分:-1)
在Visual Studio中,为了与Web项目一起启用自动WebJobs部署,请在解决方案资源管理器中右键单击Web项目,然后单击:添加>现有项目作为Azure WebJob并创建WebJob。
更多细节可以在MS的文章中找到-webjobs-dotnet-deploy-vs