在VSTS中构建NETCore2 WebJob的定义

时间:2018-04-05 21:51:23

标签: c# continuous-integration .net-core webjob

我在Visual Studio Team Services中为WebApp设置了一个构建定义,包括一些WebJobs,所有这些都在.NET Core 2中。 设置的任务是:

  • NuGet 4.4.1:NuGet工具安装程序
  • NuGet restore
  • NPM安装
  • 咕嘟咕嘟
  • 构建解决方案(包含.sln中的所有项目,包括.sln webapp和webjob)。
  • Azure App Service Deploy:(webapp)
  • Azure App Service Deploy:(webjob)
  • 更新数据库(.dacpac)
  • 休息/清理...

问题1:使用.NETCore 2我无法将webjob链接到VS2017中的webapp。

问题2:我似乎无法找到将webjob部署到webapp目标中的子文件夹/site/wwwroot/app_data/Jobs/Triggered的方法。 为此,我尝试在msdeploy上设置参数(如-dest:),但也失败了。

问题3:在市场上似乎没有专门针对此的任何任务。

问题4 :(不是真正的问题,但确定),我无法找到任何通过网络浏览的提示。

构建任务中的msbuild参数:

/m /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=false /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"

所以我有几个压缩项目,然后我可以使用不同的Azure App Service Deploy任务单独提取。一切都运行成功,但webjob没有发布,因为我似乎无法将其定位到webapp。

以下是Azure App Service Deploy输出:

>     ##[section]Starting: Azure App Service Deploy: ******devapi webjob
> ============================================================================== Task         : Azure App Service Deploy Description  : Update Azure
> App Service using Web Deploy / Kudu REST APIs Version      : 2.1.14
> Author       : Microsoft Corporation Help         : [More
> Information](https://aka.ms/azurermwebdeployreadme)
> ============================================================================== 9eda6c4a-a587-4dda-b343-fecd5027a2f8 exists true Got connection
> details for Azure App Service:'******devapi' [command]"C:\Program
> Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:getParameters
> -source:package='D:\a\1\a\******.Webjob.zip' <output>   <parameters>
>     <parameter name="IIS Web Application Name" value="Default Web Site" tags="IisApp">
>       <parameterEntry kind="ProviderPath" scope="IisApp" match="^D:\\a\\1\\s\\src\\jobs\\******\.Webjob\\obj\\Release\\netcoreapp2\.0\\PubTmp\\Out\\$"
> />
>     </parameter>   </parameters> [command]"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync
> -source:package='D:\a\1\a\******.Webjob.zip' -dest:auto,ComputerName='https://******devapi.scm.azurewebsites.net:443/msdeploy.axd?site=******devapi',UserName='********',Password='********',AuthType='Basic' -setParam:name='IIS Web Application Name',value='******devapi' -enableRule:AppOffline -enableRule:DoNotDeleteRule -userAgent:VSTS_someguid Info: Using ID 'xxx' for connections to the remote server. Total changes: 0 (0 added, 0 deleted, 0 updated, 0
> parameters changed, 0 bytes copied) App Service successfully deployed
> at url http://******devapi.azurewebsites.net Successfully updated
> deployment History at
> https://******devapi.scm.azurewebsites.net/deployments/27891522952986583
> ##[section]Finishing: Azure App Service Deploy: ******devapi webjob

请问,是否有人知道如何处理WebJobs并在VSTS中构建定义?

编辑:我已拆分构建和发布,以便在成功构建后在发布定义中拾取工件。

1 个答案:

答案 0 :(得分:1)

所以我在(3)

之后找到了答案

它的作用是解决我的第一个问题(这也是最有意义的)。

  

问题1:使用.NETCore 2我无法将webjob链接到   VS2017中的webapp。

这样,webjob就会“挂钩”你想要发布它的应用程序。本指南中有关说明的说明。在webapp .csproj中替换/删除$(ProjectDir)$(PublishDir)并根据您的需要进行设置。

<Target Name="PostpublishScript" AfterTargets="Publish">  
    <Exec Command="dotnet publish ..\Azure.WebJob.Continous\ -o $(ProjectDir)$(PublishDir)App_Data\Jobs\Continuous\Azure.WebJob.Continous" />
    <Exec Command="dotnet publish ..\Azure.WebJob.Triggered\ -o $(ProjectDir)$(PublishDir)App_Data\Jobs\Triggered\Azure.WebJob.Triggered" />
</Target>