【发布时间】:2017-01-10 11:32:11
【问题描述】:
我有一份创建和部署网站包的 Jenkins 工作。
当我从 Jenkins 运行作业时,它会为每个项目创建一个包,并且部署包不包含 webjobs。但是,命令行中的相同 msbuild 命令确实会创建一个更大的包文件,其中包括其中的 webjobs。
我尝试使用相同的用户帐户 Jenkins 服务运行 msbuild 命令行,并且效果也很好。
如果我比较两个 msbuild 输出日志,我会发现一些差异是命令行 msbuild 日志包括的主要差异:
Target "DiscoverWebJobs" in file "E:\Jenkins\jobs\Queue - Publish\workspace\tvdQueue\packages\Microsoft.Web.WebJobs.Publish.1.0.12\tools\webjobs.wap.targets" from project "E:\Jenkins\jobs\Queue - Publish\workspace\tvdQueue\WebAPI\WebAPI.csproj" (target "Build" depends on it):
Task "Message"
WebJobs: reading [E:\Jenkins\jobs\Publish job\workspace\Project\WebAPI\Properties\webjobs-list.json]
Done executing task "Message".
Using "ReadWebJobsConfigFile" task from assembly "E:\Jenkins\jobs\Publish job\workspace\Project\packages\Microsoft.Web.WebJobs.Publish.1.0.12\tools\Microsoft.Web.WebJobs.Publish.Tasks.dll".
Task "ReadWebJobsConfigFile"
Done executing task "ReadWebJobsConfigFile".
Task "Message"
WebJobs: WebJobs found: [../blah1.csproj;../blah2.csproj;../blah3.csproj;]
Done executing task "Message".
Done building target "DiscoverWebJobs" in project "WebAPI.csproj"
我尝试在 Jenkins 命令行中添加目标“DiscoverWebJobs”,但它说找不到...我花了很多时间尝试不同的选项,从不同的帐户运行,使用 powershell,...但是没什么,我敢肯定这很傻。
如果 zip 包文件不包含 webjobs 文件,当我进行部署时,它不会更新 webjobs。我可以单独部署每个 zip 文件,但是有一些 webjobs,如果有人包含一个新的,它将不会被部署,这使得该项目的持续集成设置毫无用处。
【问题讨论】:
-
如果您从 jenkins 以详细的详细信息运行(将
/v:d传递给 msbuild 命令),日志可能会解释为什么跳过该目标。查找包含“WebJobs”的行,例如目标 DiscoverWebJobs 被跳过,因为 ... -
我比较了来自 Jenkins 和命令行的 msbuild 日志,但没有跳过目标,只有仅从命令行运行但从 Jenkins 作业完成 msbuild 时它们不运行的目标。
标签: jenkins msbuild azure-webjobs msbuild-4.0 webjob