我想知道如何设置 IIS 服务器以从互联网上获取更新的预构建包。尽量减少对服务器的必要调整可获得加分。
环境:我所在的公司为各种客户构建自定义 Web 应用程序。客户通常希望自己在内部服务器上托管这些应用程序。这些网站通常甚至无法从公司网络外部访问,更不用说服务器的管理界面(文件复制、远程桌面等)了。
其次,我们发现,没有持续部署策略的开发会导致发布容易出错,我们决定不再这样做。我们需要使用完全脚本化的构建流程(构建、部署、SQL Server 迁移等)进行频繁发布(一天多次)
目前的方法:因此,我们现在在网络上拥有一个 Jenkins CI 服务器,该服务器可通过特定端口通过互联网访问。我们要求客户端提供三台机器/虚拟机:一台生产服务器、一台暂存服务器和一台构建机器。(通常还有一些 SQL 数据库)程序员需要能够登录,并在构建机器上拥有管理员权限。构建机器需要能够将文件复制到 Web 服务器并访问数据库。然后我们每次
- 在构建机器上配置构建和部署流程
- 在构建机器上启动 Jenkins 客户端,以便我们可以定期在构建机器上触发构建并获取有关这些构建的报告
存在的问题:我们现在正在为每个客户端配置一台构建机器,这需要时间(重新安装 MSBUILD、nuget 所有依赖项等)。我们还要求每个客户端将高度受保护的零件网络内的机器连接到允许执行任意 shell 脚本的服务器。因此,我们只能允许一组精选人员访问我们的 jenkins 服务器,这使得这些人成为瓶颈。
我们想要的是:要在我们自己的网络上创建构建机器,请让该机器创建包并将这些包安装在客户端机器上。我们的包主机将无法启动与客户端机器的连接(因为客户端机器无法通过互联网访问),因此 IIS 服务器需要轮询新的包版本。由于网站的部署不是管理员的主要任务,因此配置 IIS 机器不需要做太多工作。它也不应该让包的创建者(即我们)对机器有太多的控制权。最好包应该提供文件和 IIS 配置,而不是更多。
我的问题:我不熟悉包装和系统管理方面的最新发展。我可以使用什么方法来实现上述过程?我已经阅读了Web 部署,维克斯,各种各样的 CI 服务器和章鱼部署,但所有这些似乎都需要在客户端网络上进行大量配置,或者管理员访问 IIS 计算机。
这里有人现在知道如何实现我们的目标吗?