【问题标题】:VSO not deploying Azure website with WebJobVSO 未使用 WebJob 部署 Azure 网站
【发布时间】:2015-12-19 04:49:18
【问题描述】:

Webjob 未部署到 Azure 的网站。

我在获取带有关联 Web 作业控制台应用程序的网站以通过 Visual Studio Online 使用持续部署进行部署时遇到问题。我正在使用带有更新 4 和最新 Azure SDK 的 VS2013。

  • 网站和关联的网络作业将使用 Visual Studio 的直接发布发布到 Azure,并且运行良好,因此我确信发布设置正常。

  • 该解决方案将在本地构建和工作正常。

  • 该解决方案在签入后,将在 VSO(使用 CI)中构建和(似乎)部署良好,Azure 指出构建成功并将其显示为“活动部署”。

但是,网站和相关的网络作业将不会更新。
当我在 Azure 上构建和部署 VSO 之后浏览了已部署的文件时,所发生的只是控制台应用程序的二进制文件被复制到网站的 bin/ 文件夹中。
没有任何网站文件正在更新。简直就像是在部署错误的项目!

如果我删除 Webjob 并仅部署网站,它将通过 VSO 构建和部署正常 - 网站将更新。

添加的网络作业会导致通过 VSO 进行部署时出现一些问题。
我相信将 webjob 添加到 WebApp 的所有步骤都是正确的,将正确的 webjobs-list.json 添加到 webapp 并将 webjob-publish-settings.json 添加到控制台应用程序 - 正如我所说,发布网站(使用webjob) 直接到 Azure 运行良好,并且网站和 webjob 都会得到更新。

我搜索了一个又一个帖子并尝试了各种方法,但都没有奏效。
鉴于此直接从 VS 发布的罚款,并且构建正在完成,这表明 VSO 构建定义有问题。
我的第一个猜测是将其从构建解决方案更改为仅构建 Web 项目,但这似乎不起作用。
我还尝试了每个输出位置设置(用于解决方案构建和 Web 项目构建) - 唯一有效且构建完成的是具有“SingleFolder”集的解决方案 (.sln) 构建。

我已经为此奋斗了几天,我有点难过!

【问题讨论】:

标签: azure deployment continuous-integration azure-devops azure-webjobs


【解决方案1】:

如果您使用 Visual Studio 解决方案通过 VSO 自动构建部署静态网站,也会发生这种情况 - 除非包含该网站的 Visual Studio 项目/解决方案发生更改,否则不会重新部署实际网站内容。

【讨论】:

    【解决方案2】:

    我认为您部署错误项目的预感是正确的。如果您的解决方案中有多个“可部署”项目(并且控制台应用程序被认为是可部署的,因为这是您可以托管/部署 Web 作业的一种方式),您需要告诉 Kudu 要部署哪一个。

    您可以控制它在 web 应用的“配置”选项卡上的“应用设置”下添加新设置。
    您想要的设置是Project,它是从解决方案根目录到您的 Web 项目的 .csproj 文件的相对路径。

    或者,您可以在自定义 .deployment 文件中指定设置。

    Relevant Kudu documentation here

    来自文档:

    您可以指定项目文件的完整路径。请注意,这不是解决方案文件 (.sln) 的路径,而是项目文件 (.csproj/.vbproj) 的路径。原因是Kudu只为本项目构建最小依赖树,避免在解决方案中构建web项目不需要的无关项目。

    这是一个例子:

    [配置] 项目 = WebProject/WebProject.csproj

    【讨论】:

    • 感谢您的帮助 - 我认为可能是这样。但是,我认为这仅适用于 GIT 存储库(因此通过 kudu),但我在 VSO 中使用 TFS。我试过你说的,但没有用。我可能需要将源代码控制更改为 GIT 存储库,因为我认为 TFS 可能不支持。
    • 你是对的,它只能在 git 中工作 - TFS 源代码控制构建使用传统的 ms 构建和 web 部署来获得天蓝色的位。如果您对 git/kudu 路线感兴趣,但不离开 VSO,您可以尝试本文末尾概述的步骤,关于在 azure 中使用本地 git 存储库:github.com/projectkudu/kudu/wiki/VSO-vs-Kudu-deployments。至于最初的问题,这里有一些关于 CI 构建工作的东西(包括 cmets):azure.microsoft.com/blog/2014/08/18/…
    • 如果这不起作用,在添加 webjobs 发布内容的更新之前 - 我有另一种方法工作 - 向您的 webapp 项目添加一个构建后命令,该命令复制 webjob 项目的编译输出进入webapp下的正确文件夹
    【解决方案3】:

    我还尝试了每个输出位置设置(用于解决方案构建和 Web 项目构建) - 唯一有效且构建完成的是带有“SingleFolder”集的解决方案 (.sln) 构建

    这是问题的根源。 您不能使用 SingleFolder,因为它设置了与 Web 作业打包相混淆的 OutDir。

    我必须在我的每个 Web 应用项目中引入一个 wpp.targets 文件来创建发布包到特定路径(使用 PackageLocation)

    所以,让每个项目都拥有它并将设置设置为 AsConfigured(或每个项目)而不是 SingleFolder。

    this

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-10
      • 2015-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-12
      相关资源
      最近更新 更多