2014-03-04 98 views
1

我想设置我们的CI构建环境并出现问题。TFS部署不使用WebDeploy

首先,我使用的VS和TFS 2012等等,因为这些都是VS/TFS 2013

其次,我无法使用* .12.xaml模板,现在我配置为使用只是defaulttemplate.11.xaml。最初,我使用WebDeploy作为部署方法,这非常棒。从那以后,我们的网络/服务器团队已经重新配置我们的测试环境,以使用IIS共享配置以及DFS复制来保持所有内容的同步。因此,我不再能够使用WebDeploy(我将这post传递给TFS管理员,但他们说不)。

是否有一个地方可以添加一些msbuild参数或生成后事件,我可以用一些参数发送* .cmd文件,以便我可以复制/部署代码?

我读过Hanselman(和其他所有抄袭他人)的帖子/博客,上面写着“如果你使用xcopy,你做错了,等等......”,但我相信我的情况是我不能使用Web部署。

更新:

所以我想我找到了我的答案。由于Web部署对我不起作用,我发现了一个名为CopyDirectory的工作流活动,它听起来完全像我所需要的。

我经历了更新我的默认模板的过程,以将这个额外的步骤添加到构建过程中,顺便说一下,它不工作得很好。在添加步骤,保存等之后,该步骤不会出现在我的构建输出中。我放弃了一段时间,看看我们是否可以在我们的Jenkins构建服务器上做到这一点,在那里得到了一些不同的错误,所以我回到TFS进行更改和提交。由于CI仍然在TFS中设置(授予,失败),我注意到当我做出提交时,一个构建被启动。我决定观看一段时间,并成功完成!哇,好的。所以我检查了构建日志,发现它警告说“无法复制,确保源目录存在,并且你有适当的权限”。

那么,因为我刚输入这个值不正确,没什么大不了的,只是改成正确的Bui​​ldDetail.DropLocation,我们应该是金。

错误,在对源和目标值进行更改后再次构建后,我发现由于我试图将文件部署到其他域,所以仍然失败。

哦,除此之外,您不能通过复制命令步骤!真!但是,我发现了一些文档,它说:“给你想复制的域上的tfs构建服务/帐户权限。好吧,如果我的服务器团队允许这样做,那就太好了,但他们不这样做。

回到原点......(这会变成一个关于我的博客抱怨TFS ...)

+0

其实不是,需要提供凭据,因为应用程序正在部署到另一个域不是TFS问题。创建信任关系并解决部署问题。可能还有其他需要在远程域中执行的活动。 –

+0

我知道这不是一个“TFS问题”,但如果TFS允许您将凭据传递给该复制活动,那将会很好。就信任而言,我们的服务器/ Web团队表示这不是一种选择。 – ganders

回答

1

我相信你可以使用ROBOCOPY做到这一点,你将要更新的构建模板,包括一个新的InvokeProcess活动的活动的文件名设置为"RoboCopy"(包括引号),它的参数为类似以下内容:

String.Format(" ""{0}"" ""{1}"" /E /R:10 /W:10 /NFL /NDL ", BinariesDirectory, BuildDetail.DropLocation) 

当然可以将robocopy标志更改为您的特定需求。

我不认为你可以将凭据传递给robocopy,所以你可能仍然是SOL。

尽管一个可能的选择是,因为您的管理员不会在目标框上提供TFS构建用户(即tfs服务)权限,您可以将TFS构建作为不同的用户运行, 。要做到这一点,我相信你只需登录到你的TFS生成机器,去服务,找到Visual Studio Team Foundation Build Service Host 2012(或类似的东西),并将Log On As用户从tfsservice更改为任何用户有权在您想要发布的框上至。当然,您还需要为该用户授予执行构建系统所需的所有其他功能(下载源代码等)的权限。

+0

我正在研究这样的解决方案。我会让你知道它是如何运作的... – ganders

+0

我更新了我的答案,以包含潜在的解决方法,以解决您的权限问题。 – deadlydog