如何将软件构建从 Azure DevOps 部署到内部服务器?

Posted

技术标签:

【中文标题】如何将软件构建从 Azure DevOps 部署到内部服务器?【英文标题】:How to deploy software builds from Azure DevOps to internal servers? 【发布时间】:2019-08-25 02:03:59 【问题描述】:

我们的软件托管在 Azure DevOps 上的 Git 中,并使用构建管道(主要使用 Cake 脚本)构建。我们现在正在寻求使用 Azure DevOps 发布管道部署此软件。但是,我们所有的应用程序服务器都在我们的防火墙后面,在我们的网络内部,除了用于 Web 应用程序的 80 和 443 之外,没有任何端口开放。我们的应用程序有开发、登台和生产服务器(包括一些用于负载平衡的服务器)。我真正需要的是复制工件,将当前代码备份到服务器上的单独文件夹,在根部署文件夹中部署和解压缩工件文件,然后在这些服务器上重新启动 IIS。

我的公司规模庞大且官僚作风,因此在我们尝试这个新流程之前,我们必须跳过一些障碍进行尽职调查。本着这种精神,我正在努力寻找最佳解决方案。如果您能提供您的建议,尤其是提供我们没有想到的任何其他解决方案,那将很有帮助:

    显而易见的解决方案是在 Azure 云上建立服务器并完全迁移到云中。我知道这是一个解决方案,这可能就是我们要去的地方,但我的要求是提供非云解决方案选项,以便我可以正确地展示它并提出建议。 使用 Hyper *** 隧道安全地传输文件并重新启动 IIS。就我们已经在 AzDO 上构建的构建过程而言,这可能是最简单和最简单的方法。从技术上讲,这是我最不习惯的。 在网络中使用构建代理,从 AzDO 连接到它们,让他们构建软件,然后让他们部署它或其他代理。设置它的工作量很大,但到目前为止对我们的安全性干扰最小。我也不是粉丝,因为我希望 AzDO 处理构建和部署。 打开每台服务器的 SFTP 和 SSH 端口并以这种方式传输文件。也许是最不安全但非常简单的方法?

如果您对此问题有更好的解决方案或更常见的解决方案,请告诉我。如果您认为我应该是上述 4 个解决方案之一,请告诉我。如果您可以扩展上述任何选项,请执行。

【问题讨论】:

【参考方案1】:

ADO 代理只需要外部连接,因此它们与 ADO 通信,反之则不然。所以你只需要 443 出站到几个 ADO url。

阅读:https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/agents?view=azure-devops#communicationhttps://docs.microsoft.com/en-us/azure/devops/pipelines/agents/v2-windows?view=azure-devops#im-running-a-firewall-and-my-code-is-in-azure-repos-what-urls-does-the-agent-need-to-communicate-with

【讨论】:

那么在这种情况下,当新代码进入 git repo 时,我们如何自动启动构建?还是我们每次都必须从构建代理手动启动它? @RossGustafson 构建具有可配置的触发器。它们会自动监控 repo 并在满足您指定的条件时触发。 构建代理与 ADO 对话并轮询它以获取新任务 是的,我在询问后读到了。因此,如果我们保留内部服务器,这看起来确实是最好的解决方案。我们可能仍会迁移到云端,但至少这是一个不错的选择。

以上是关于如何将软件构建从 Azure DevOps 部署到内部服务器?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Azure DevOps 中的部署后批准/部署后门调用 Powershell 脚本

如何将发布 ID 和内部版本号提取到我的 Azure DevOps 部署的 PHP 应用程序中

我们如何使用管道将azure devops中的应用程序部署到具有不同订阅和组织的azure app服务

如何从 Azure DevOps 中的文件夹(不是 zip)部署 WebApp

无法从部署中心为 Dotnet core 3.1 配置 CI 构建。有啥方法可以设置 CI Azure DevOps

如何从 Azure DevOps DACPAC 部署中获取漂移报告?