[TFS 2015] 实践 Build vNext + CopyFile 自动部署内部网站

以往手动部署网站我习惯用 Web Deploy,就是在网站应用程序,按右键→Publish。

但,我在目前的 TFS Build vNext 版本找不到这样的部署步骤(只有 Azure),于是花了一天的时间试出堪用的替代步骤,所以严格来说这不算是真正的 WebDeploy ,目标环境也不需要安装 WebDeploy(WMSvc)。

若有更好的做法,也请你跟我说


服务器环境:

  • Windows 2012 Datacenter x64 中文版
  • TFS 2015 Update 2 中文版

设定步骤:

  • #Visual Studio 组建
  • #Visual Studio 测试
  • #复制文件
  • #发行组建成品
  • #Windows 电脑文件复制
Visual Studio 组建

Build 的时候产生 WebDeploy 的 Package 文件,我把它放在 $(Build.BinariesDirectory),由于这个设定已经和默认的数据夹路径不一样了(有兴趣的可以用默认的设定跑一次,观察结果),所以接下来的步骤都必须要做修改,如下图:

/p:OutDir=$(Build.BinariesDirectory) /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true

有关 Variables 请参考:https://msdn.microsoft.com/Library/vs/alm/Build/scripts/variables

建置完成后,在 _work1b 底下一个 _PublishedWebsites 数据夹,如下图:

Visual Studio 测试

搜寻测试 dll,并运行测试

$(Build.BinariesDirectory)*test*.dll;-:obj

下面这个我不太知道这要怎么弄 :D

复制文件

根据 MsBuild Arguments 所产生出来的结果设定,我要把 _PublishedWebsites 底下的数据夹复制到 ArtifactStagingDirectory,如下图:

  • 数据来源:$(Build.BinariesDirectory)_PublishedWebsitesyour web site project folder
  • 内容:*
  • 目标数据夹:$(Build.ArtifactStagingDirectory)

复制文件内容请参考:https://msdn.microsoft.com/en-us/Library/vs/alm/Build/steps/utility/copy-files?f=255&MSPPError=-2147217396


 
发行组建成品

这个用默认的就可以了,用来把成品放到 TFS ,如下图:

  成品 ,如下图:

Windows 电脑文件复制

最后,将 ArtifactStagingDirectory 的文件放到远端电脑的网站数据夹,这会需要远端电脑的权限,如下图:

  • 来源:$(Build.ArtifactStagingDirectory)
  • 电脑:remote computer
  • 系统管理员登入:your domainaccount id
  • 密码:$(Password)
  • 目的数据夹:\remote computerweb site folder

为了妥善保管密码,我在这里使用了变量并且上锁,开锁后内容会被清掉,这功能不错 :D

这篇会有一个小问题,解法请参考:https://dotblogs.com.tw/yc421206/2016/04/22/tfs2015_build_vnext_web_config_transform

若有谬误,烦请告知,新手发帖请多包涵

2010~2017 C# 第四季