【问题标题】:Azure web app deployment using vscode is faster than devops pipeline使用 vscode 部署 Azure Web 应用程序比 devops 管道更快
【发布时间】:2021-02-15 16:29:43
【问题描述】:

目前,我正在开发基于 Django 的项目,该项目部署在 azure 应用服务中。在部署到 azure 应用服务时,有两种选择,一种是使用 DevOps,另一种是使用 vscode 插件。这两种情况都运行良好,但通过 DevOps 部署到应用服务时扼杀比 vscode 部署慢。通常,通过 DevOps 大约需要 17-18 分钟,而通过 vscode 需要不到 14 分钟。

这背后的任何原因。

【问题讨论】:

  • 嗨,您有机会查看以下答案吗?如果它回答了您的问题,请告诉我。
  • 是的,列维。感谢您的详细描述。

标签: azure azure-devops azure-web-app-service


【解决方案1】:

假设您使用的是 Microsoft 托管的构建代理,以下陈述是正确的:

使用 Microsoft 托管的代理,可以为您完成维护和升级。每次运行管道时,您都会获得一个全新的虚拟机。虚拟机在使用一次后被丢弃。

并行作业表示您可以在组织中同时运行的作业数量。如果您的组织有一个并行作业,您可以在您的组织中一次运行一个作业,任何其他并发作业都将排队等待第一个作业完成。要同时运行两个作业,您需要两个并行作业。

默认情况下,Microsoft 在每个包含至少一个并行作业的组织中提供免费服务层。根据您需要运行的并发管道数量,您可能需要更多并行作业才能同时使用多个 Microsoft 托管或自托管代理。

这第一条语句可能会导致 Azure Pipeline 变慢,因为它没有任何关于您的项目的缓存信息。如果您只是在谈论部署,则管道首先需要下载(并提取?)一个工件才能进行部署。如果您也在构建,它可能需要在构建之前引入整个源代码和/或外部包。

第二条语句可能会使其变慢,因为可能的并行化可能比本地机器上的少。

除了这两个可能的原因之外,代理很可能没有您的开发机器的规格,导致它们运行任务的速度比在本地机器上运行的慢。

您可以考虑托管自己的代理以消除这些可能的原因。

自托管代理是否比 Microsoft 托管代理具有任何性能优势?
在很多情况下,是的。具体来说:

如果您使用自托管代理,则可以运行增量构建。例如,如果您定义一个不清理存储库且不执行清理构建的管道,您的构建通常会运行得更快。当您使用 Microsoft 托管的代理时,您不会获得这些好处,因为该代理在构建或发布管道完成后被销毁。

Microsoft 托管的代理可能需要更长时间才能开始构建。虽然通常只需几秒钟即可将您的作业分配给 Microsoft 托管的代理,但有时可能需要几分钟才能分配代理,具体取决于我们系统上的负载。

更多信息:Azure Pipelines Agents

【讨论】:

    【解决方案2】:

    当您通过 DevOps 管道进行部署时。你会经历更多的步骤。见下文:

    处理管道-->请求代理(等待分配一个可用的代理来运行作业)-->下载运行作业所需的所有任务-->运行作业中的每个步骤(下载源代码、恢复、构建、发布、部署等)。

    如果您在发布管道中部署项目。上述过程需要在发布管道中再次重复。

    您可以查看文档Pipeline run sequence了解更多信息。

    但是,当您通过 vscode 插件进行部署时。您的项目将得到恢复,在您的本地计算机上构建,然后将直接从您的本地计算机部署到 azure Web 应用程序。所以我们可以看到通过 vscode 插件部署更快,因为需要的步骤少得多。

    【讨论】:

      猜你喜欢
      • 2021-07-08
      • 2019-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-27
      • 1970-01-01
      • 2021-04-23
      • 2020-10-22
      相关资源
      最近更新 更多