我已经调查过了。希望您对哪一个更适合在多台服务器上进行自动化 Web 部署提出建议。
3 回答
我认为您绝对应该尝试一下 TeamCity 和 Octopus。我们使用 TeamCity 创建 Octopus (NuGet) 包,并使用 Octo 工具在每次成功构建后自动触发部署到测试环境。之后,我们使用 Octopus 门户将部署推广到其他环境。
我们使用以下 Octo 命令行从 TeamCity 触发部署:
Octo.exe create-release --apiKey=YourOctopusAPIKey --server=http://YourOctopusServer:9015/api --project=YourOctopusProjectName --deployto=YourOctopusEnvironment
Octo 创建-发布步骤需要位于单独的 TeamCity 项目中,否则 NuGet 将不会使用生成的包进行更新。
MSDeploy 可用于部署从 Web 应用程序到数据库的所有内容,Web Farm Framework 可用于从主服务器同步到辅助服务器(如果您愿意,也可以使用不同的设置参数手动执行此操作)。
您所描述的是“部署管道”。我不确定您如何将其集成到 Team City 中,但基本前提是:
- 构建应用程序,测试并打包它(声明需要设置的任何参数)。将包(以及未来步骤所需的任何文件)推送到工件存储库(可能是 Team City,如果它支持的话)
- (自动触发)从工件存储库中获取包并通过调用将其部署到dev
msdeploy -verb:sync -source:package.zip -dest:auto,computerName=http://server:8172/msdeploy.axd -setParamFile:dev.xml
- (手动触发)部署包到stage
- (手动触发)部署包上线
MSDeploy 支持数量惊人的功能,包括在 Windows 凭据管理器中存储凭据以及对部署的几乎所有方面进行参数化。我强烈建议您检查一下。(它也是免费的,除了 Windows Server 许可证)
这取决于。(让我印象深刻的是这个问题还没有被标记)。但无论如何,可能值得问自己这些:
- 您是否正在开发一个需要 QA 签署和推广的网站,或者是否有自动测试套件来验证每个构建?
- 您是否正在部署到多个环境(QA、UAT、演示、生产)并希望看到哪个版本在哪里的漂亮仪表板?
- 您是否要求某些用户具有推送生产的权限?
- 您是否需要部署其他类型的组件(Windows 服务、数据库等)
- 在开始部署之前,您是否需要在每台服务器上进行一些额外的设置(例如,调用 Chocolatey 来安装和设置 Mongo)。又名有限的服务器配置。
- 是否需要对促销生命周期进行控制(例如,只有通过 QA 才能投入生产)。
如果您对以上大部分内容都说“是”,我会说 Octopus Deploy 赢得了部署。猜猜看,它最多可免费用于 5 个项目,并且可以轻松启动和运行。
对于需要最终用户进行简单 CMS 管理的简单网站或不需要开发人员维护的网站,我想说所有 Azure 的东西和 MSDeploy 都是完成这项工作的好工具。正如 Richard Szalay 所提到的,如今它有很棒的命令行工具可以定期发布。
就构建服务器而言,这并不重要,因为它应该用于为您创建人工制品。不过,Team City 对我来说是赢家,因为它与 Octopus 有很好的集成。IMO,这是一个单独的讨论。