Deploy azure website and webjobs in same sln using

2019-03-15 21:29发布

问题:

I've got to a website and a webjob project in the same sln:

  • Sritt (The website)
  • Sritt.Webjob

In properties of Sritt theres a webjobs-list.json with the following setting:

"WebJobs": [
    {
      "filePath": "../Sritt.WebJob/Sritt.WebJob.csproj"
    }

I've configured the by VSTS build like this (with the new buildsystem):

Solution: **\*.sln    
MSBuild Args: /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.stagingDirectory)"

Building in VSTS gives me the following warning:

 C:\a\1\s\packages\Microsoft.Web.WebJobs.Publish.1.0.9\tools\webjobs.console.targets(149,5): warning : WebJob schedule for SrittWebJob will not be created. WebJob schedules can only be created when the publish destination is an Azure Website [C:\a\1\s\Sritt.WebJob\Sritt.WebJob.csproj]

And the following error:

packageFile= Find-Files -SearchPattern C:\a\1\a\**\*.zip
packageFile= C:\a\1\a\Sritt.WebJob.zip C:\a\1\a\Sritt.zip
Found more than one file to deploy with search pattern 'C:\a\1\a\**\*.zip'. There can be only one.  

How can I deploy both the website and the webjob? Do I need to split them into different solutions?

回答1:

Seems you are using "Azure Web App Deployment" task to deploy the project. You don't need to split them into different solutions but you need to deploy them in separate tasks.

So you need to add one more "Azure Web App Deployment" task in you build definition. The setting is almost the same for these two tasks except the "Web Deploy Package" section: One is "$(build.artifactstagingdirectory)\**\Sritt.zip" and another one is "$(build.artifactstagingdirectory)\**\Sritt.WebJob.zip".



回答2:

The error is not related to the publishing of the WebJob, but to the publishing of the Azure Scheduler change. Generally, the Azure Schedule configuration from msbuild is known to have issues and is no longer recommended.

Instead, the suggested approach is to use the new WebJobs cron based schedule, which doesn't have those issues. See the docs for more details on setting this up (it's quite simple).