【问题标题】:Build and Deploy a Web Application with TFS 2015 Build使用 TFS 2015 Build 构建和部署 Web 应用程序
【发布时间】:2016-02-11 22:52:39
【问题描述】:

我们刚刚在本地安装了 TFS 2015(更新 1),并正在尝试使用新的 TFS 构建系统创建一个持续集成/构建系统。构建工作正常,给了我绿灯,但是当我查看默认构建时,它只构建了 bin 目录中的二进制文件,似乎没有简单的方法将应用程序本地部署到本地服务器.

文件系统副本和 powershell 脚本有两个部署选项,使用它们将文件复制到新服务器当然很容易,但由于构建只构建二进制文件,我看不到一个为此收集 Web 工件(cshtml、图像、脚本、css 等)的工具。

经过详尽的谷歌搜索后,我只找到了一篇讨论这个的文章:

http://www.deliveron.com/blog/building-websites-team-foundation-build-2015/

但是,这使用了 WebDeploy 并创建了一个相当混乱的部署包。

如何以最简单的方式将站点(标准 MVC Web 应用程序,实际上我的测试使用由创建项目向导创建的默认样板站点)连同工件一起部署到本地服务器?我不想在服务器上安装 WebDeploy,而宁愿使用 PowerShell 或其他东西来部署最终的工件。

构建只是标准的 Visual Studio 构建模板,有 4 个步骤(构建、测试、索引和发布、发布构建工件)。

【问题讨论】:

  • 这对你来说怎么样?如果以下测试步骤失败,我正在尝试确保不会发生部署。你能做到吗?
  • @one.beat.consumer - 您应该将编译/测试从部署中拆分为两个单独的阶段,然后您可以将相同的代码部署到您的测试/qa/prod 环境中。
  • 谢谢。正如您所提到的,“发布”功能正在部署软件包。我遇到的麻烦是将测试的执行与构建步骤分开,因为我为 XUnit 找到的唯一示例是对构建的自定义。我已经找到了 xunit.runner.visualstudio NuGet 包,它允许我适当地自定义测试步骤。但是,现在需要进行两次构建 - 第一次构建准备测试,第二次在测试通过时创建部署包。

标签: asp.net-mvc deployment tfsbuild tfs-2015


【解决方案1】:

我们使用“Visual Studio Build”步骤,作为 MSBuild 的参数,我们使用以下行:

/p:DeployOnBuild=True /p:PublishProfile=$(DeploymentConfiguration)

必须在变量选项卡页面上配置 DeploymentConfiguration。它必须是发布配置文件的名称(pubxml 文件的文件名)。如果文件名为 Build.pubxml,则发布配置文件为 Build。

例如:

/p:DeployOnBuild=True /p:PublishProfile=Build

【讨论】:

  • @Sabastian - 谢谢。那么我的问题是,如果后续 Visual Studio 测试构建步骤失败,如何防止这种部署?
【解决方案2】:

I wanted to add that Ben Day has an excellent write-up that helped us package quickly and then release to multiple environments through Release Manager.

他的 msbuild 参数如下所示:

/p:DeployOnBuild=True /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl=$(build.artifactstagingdirectory)\for-deploy\website

这与接受的答案之间的区别在于,此参数集将所有内容暂存在工件文件夹中,然后将其保存为构建的一部分。然后我们可以重复部署完全相同的代码。

我们在 for-deploy 文件夹旁边捕获 web.env.config 文件,然后在发布过程中使用 xdt 转换,以确保针对我们要部署到的任何环境更新所有内容。它适用于我们所有的网络项目。

【讨论】:

  • 发布目录可以在发布配置文件中设置,不需要在命令行中指定。因此,它可以更容易地进行版本控制
  • 这很好。对于我们的环境(也许我们在这里不寻常?)我们选择了这种方法来覆盖任何发布配置文件,以便将站点捕获为构建工件,然后通过 TFS 发布管理器部署到多个目标。
【解决方案3】:

我们将 WebDeploy/MSDeploy 用于 40 多个应用程序并且非常喜欢它。我们在所有服务器上都安装了 WebDeploy,因此我们可以更轻松地进行部署,但您也可以使用不需要预安装 WebDeploy 的 Web Deploy On Demand 功能。

【讨论】:

    猜你喜欢
    • 2017-10-14
    • 2013-02-14
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    相关资源
    最近更新 更多