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

How to deploy software builds from Azure DevOps to internal servers?

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

我的公司相当大而且官僚主义,所以在我们尝试这个新流程之前,我们必须跳过一些环节进行尽职调查。本着这种精神,我正在努力寻找最佳解决方案。如果您能提供您的建议,特别是提供我们没有想到的任何其他解决方案,那将很有帮助:

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

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

ADO 代理只需要外部连接,因此它们与 ADO 对话,而不是相反。所以你只需要 443 出站到几个 ADO url。

阅读:https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/agents?view=azure-devops#communication
https://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