2016-02-11 225 views
15

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

对于文件系统副本和PowerShell脚本,有两个部署选项,并且使用它们将文件复制到新服务器当然很容易,但由于构建只构建了二进制文件,因此我不看到一个工具来收集网络工件(cshtml,图像,脚本,CSS等)。

详尽的谷歌搜索后,我只找到了一个物品,其在谈到这一点:

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

然而,这种使用WebDeploy,并创建一个相当混乱的部署包。

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

该构建只是标准的Visual Studio构建模板,包含4个步骤(构建,测试,索引&发布,发布构建工件)。

+0

这是怎么回事?我试图确保如果以下测试步骤失败,则不会发生部署。你能做到吗? –

+1

@ one.beat.consumer - 您应该将您的编译/测试从部署分成两个独立的阶段,然后您可以将相同的代码部署到您的测试/ qa/prod环境中。 –

+0

谢谢。 “释放”功能正如您所提及的部署软件包。我遇到的麻烦是将构建步骤中的测试执行分离出来,因为我发现的唯一用于XUnit的示例是构建的定制。我从那以后找到了xunit.runner.visualstudio NuGet包,它允许我适当地自定义测试步骤。但是,它现在需要两个构建 - 第一个构建测试准备,第二个构建测试通过时创建的部署包。 –

回答

15

我们用“Visual Studio中建立”的步骤和论据为的MSBuild我们使用以下行:

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

在变量标签页DeploymentConfiguration已进行配置。它必须是发布配置文件的名称(pubxml文件的文件名)。如果文件名称为Build.pubxml,则发布配置文件为Build。

例如:

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

@Sabastian - 谢谢。我的问题是,如果以下Visual Studio Test构建步骤中的事件失败,如何防止此部署? –

-5

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

1

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 

这和接受的答案之间的区别在于,此参数设置阶段的文物夹中的一切,然后将其保存为构建的一部分。然后,我们可以重复部署相同的代码。

我们将web.env.config文件与for-deploy文件夹一起捕获,然后在发布过程中使用xdt变换,以确保我们部署到的任何环境都可以更新一切。它适用于我们所有的Web项目。

+1

可以在发布配置文件中设置发布目录,它不需要在命令行上指定。因此,它可以更容易版本化 –

+0

这是一个很好的观点。对于我们的环境(也许我们在这里很少见?),我们选择此方法来覆盖任何发布配置文件,以便将该网站捕获为构建工件,然后通过TFS Release Manager部署到多个目标。 –

相关问题