【问题标题】:migration from Octopus to TFS 2017 - Publishing ASP.NET web sites从 Octopus 迁移到 TFS 2017 - 发布 ASP.NET 网站
【发布时间】:2018-03-14 11:46:41
【问题描述】:

我们目前使用 Octopus Deploy 将网站推送到托管在 Window Server 2012 上的 IIS 服务器。

我们希望放弃 Octopus 并改用我们的本地 TFS 2017 的内置发布系统。我们已经构建了发布成品(网站二进制文件和内容)的定义。

使用 Octopus,我们在所有服务器上都安装了触手。

八达通中定义的遗留发布流程是这样的:

  1. 设置 IIS(Powershell 脚本为站点配置应用程序池,将虚拟目录映射到绝对路径)
  2. 部署 nuget 包(包包含网站二进制文件和脚本) - 将包含网站的包解包到关联虚拟目录的物理路径
  3. 启用 Windows 身份验证(调用 Set-WebConfigurationProperty 的单行 powershell 脚本)
  4. 禁用匿名身份验证(再次使用 powershell。)

我并不热衷于我们的 Octopus 流程中使用的 Powershell 的数量,并且希望在 TFS 版本定义中最小化 Powershell。

我的问题是:Microsoft 推荐的将 ASP.NET 网站(普通 MVC 项目,而不是 .NET 核心)部署到 CI 环境中的服务器的方法是什么?是否可以同时配置站点认证?

注意: 我查看了发布 WinRM 部署任务的 OOB IIS,我担心它们可能需要比我们的基础架构团队更多的时间(配置防火墙等)

我们在构建服务器上安装了 Visual Studio 2017。

TIA, 斯科特

【问题讨论】:

  • 八达通设置有什么问题吗?你为什么打算放弃它?
  • 您好,我们使用的是旧版本的 Octopus,而 TFS 2017 版本定义能够完成我们需要做的事情。

标签: asp.net iis tfs visual-studio-2017 octopus-deploy


【解决方案1】:

使用IIS WinRM 任务可能是最好和最简单的方法。你可以找到一些 good 的配置指导。

您需要具备的基础知识是:

  • 确保在目标服务器上配置了 WinRM,并且您的代理可以连接到它们
  • 在编译项目时通过添加这些 msbuild 参数来打包您的网站 /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation=$(Build.ArtifactStagingDirectory)

【讨论】:

    【解决方案2】:

    根据您的描述,您正在部署在 IIS 上托管的网站上。

    首先通过 TFS 构建,您可以使用一些 msbuild 参数,例如 /p:DeployOnBuild=True /p:SkipInvalidConfigurations=true /p:WebPublishMethod=Package /p:PackageLocation=$(Build.ArtifactStagingDirectory) /p:PackageAsSingleFile=true 来生成一个包。

    然后在发布定义中使用Deploy: Windows Machine File Copy 任务 - 将 Web 部署包复制到 IIS 服务器。最后使用Deploy: WinRM - IIS Web App Deployment - 部署包。在 Build and Release 代理上运行的此任务打开 WinRM 连接到每个 IIS 服务器以远程运行 Powershell 脚本,以便部署 Web Deploy 包。

    更多细节/分步教程,你可以参考下面的教程,甚至一些是 web 应用程序的示例:

    【讨论】:

    • Patrick 已将此提交给基础架构团队进行评估。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    相关资源
    最近更新 更多