代码之家  ›  专栏  ›  技术社区  ›  Bob Meijwaard

在VSTS中为NETCore2 WebJob生成定义

  •  -1
  • Bob Meijwaard  · 技术社区  · 6 年前

    我正在Visual Studio Team Services中为一个WebApp设置生成定义,其中包括一些WebJobs,所有这些都在中。净核心2。 设置的任务包括:

    • NuGet 4.4.1:NuGet工具安装程序
    • NuGet还原
    • NPM安装
    • 吞咽
    • 生成解决方案(包含.sln中的所有项目,包括 webapp和webjob)。
    • Azure应用程序服务部署:(webapp)
    • Azure应用程序服务部署:(webjob)
    • 更新数据库(.dacpac)
    • 休息/清理。。。

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

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

    问题3:市场上似乎没有专门针对这一点的任务。

    问题4:(不是真正的问题,但没问题),我在网上找不到任何浏览提示。

    生成任务中的msbuild参数:

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

    因此,我有几个压缩的项目,然后我可以使用不同的Azure应用程序服务部署任务分别提取这些项目。一切都很成功,但webjob没有发布,因为我似乎无法将其定位到webapp。

    以下是Azure应用程序服务部署输出:

    >     ##[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并在VST中构建定义吗?

    编辑:我已经分割了构建和发布,以便在成功构建之后在发布定义中提取工件。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Bob Meijwaard    6 年前

    所以我发现我的答案如下 this guide.

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

    问题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>