【问题标题】:How to update a folder in an Azure AppService upon Checkin into a VSO TFS repository如何在签入 VSO TFS 存储库时更新 Azure 应用服务中的文件夹
【发布时间】:2017-05-18 09:15:48
【问题描述】:

我有一个托管为 azure web 应用程序的网站。这是一个在 vs 解决方案中的 asp.net 网站。该网站的文件夹上是我的产品文档,所有这些都是静态资源(html 和图像)。这些静态资源位于 another vs 解决方案(这是实际产品解决方案)中的一个文件夹中。两种解决方案都是基于 VSO 的 TFS。

到目前为止,我有一个在网站上下文中运行的网络作业,它基本上是在文档文件夹上执行“tfs get”并将其内容放入网站上的文档文件夹中。这是可行的,但是,运行网站的 vm 确实经常更改,并且创建工作区的机制绑定到机器,而不是磁盘驱动器。因此,我不能只获得更改,但我必须始终获得所有内容,这现在需要大约 20 分钟,并在网站上造成不必要的负载。 (这就是为什么我每周只运行一次这个网络作业。)

现在我正在寻找一种更好的方法来做到这一点。我只想获取已更改的文件,这会加快速度并让 cpu/drive 变得昂贵。

我没有找到一种在网络服务器上创建工作区的方法,该工作区在每次网络服务器 vm 更改时都不会消失。 (如果有可能以某种方式将工作区附加到驱动器而不是机器名称,那将解决问题。)

我还在查看我为产品解决方案运行的持续构建定义。作为其中的一部分,我认为可能会创建一个部署,其中文档文件夹被复制到应用程序服务的文档文件夹中。这样我可以摆脱“特殊”的网络作业,但我仍然每次都复制所有的文档文件。 (另外,它的构建代理在本地运行,所以当它们实际上已经在 vso 内部时,我还必须将这些文件从本地复制到云中。)。所以基本上,我认为这个选项对我的情况没有多大用处。

显然,如果我将静态文档资源从产品解决方案移动到网站解决方案,我可以简单地使用可用于从 vso 到 azure web 应用程序的网站项目的自动部署。不幸的是,由于各种其他原因(其中一个原因,静态资源部分是从产品解决方案中的 .cs 源自动创建的),我根本无法将 docs 文件夹从产品解决方案移动到网站解决方案。

那么有没有人对我可以根据相应 VSO 文件夹中的更改更新 Web 应用程序中的文档文件夹的方法提出建议?

【问题讨论】:

    标签: azure web-applications deployment build azure-devops


    【解决方案1】:

    您可以使用 Kudu API 将更新后的文件上传到 Azure 应用服务。 简单的步骤:

    1. 创建持续集成构建
    2. 在“选项”选项卡中选中“允许脚本访问 OAuth 令牌”选项
    3. 将 PowerShell 步骤/任务添加到 check the changes with REST API。 (参考Calling VSTS APIs with PowerShell)
    4. 添加 Azure PowerShell 步骤/任务以使用 kudu api 将文件上传到应用服务。 (参考Remove files and folders on Azure before a new deploy from VSTS)

    【讨论】:

      【解决方案2】:

      这是我最终做的:

      • 在 VSO 中创建了一个连接到“Web Hook”的 ServiceHook。每次签入时都会调用该钩子,并根据我想要的目录进行过滤。 (所有这些都可以使用 VSO 中的现有功能来完成。)
      • 挂钩调用 Azure“functionapp”(这很容易做到,因为 functionapp 有一个“HttpTrigger”机制,非常适合这里。)
      • 挂钩将签入 ChangeSet 的 id 传递给函数应用。
      • FunctionApp 将该 ID 放入 Azure(存储)队列。
      • 这会触发一个监听该队列的天蓝色网络作业。该网络作业使用 ChangeSet-Id 从 VSO 获取更改,并对每个更改的 changetype 进行操作。 (例如:下载或删除文件。)

      【讨论】:

        猜你喜欢
        • 2021-02-06
        • 2020-04-05
        • 1970-01-01
        • 2013-12-13
        • 2020-12-09
        • 2013-03-19
        • 2020-11-06
        • 2019-05-14
        • 2019-12-06
        相关资源
        最近更新 更多