【问题标题】:TFS Deploy WITHOUT using WebDeploy不使用 WebDeploy 的 TFS 部署
【发布时间】:2014-04-06 11:41:29
【问题描述】:

我正在尝试设置我们的 CI 构建环境并遇到问题。

首先,我使用的是 VS 和 TFS 2012,所以我不能使用 *.12.xaml 模板,因为它们适用于 VS/TFS 2013。

其次,现在我配置为仅使用 defaulttemplate.11.xaml。最初,我使用 WebDeploy 作为部署方法,效果很好。从那时起,我们的网络/服务器团队重新配置了我们的测试环境,以使用 IIS 共享配置和 DFS 复制来保持一切同步。

因此,我无法再使用 WebDeploy(我将此 post 传递给了 TFS 管理员,但他们拒绝了)。

是否有可以添加一些 msbuild 参数的地方,或者我可以发送带有一些参数的 *.cmd 文件以便复制/部署我的代码的构建后事件?

我读过 Hanselman(以及其他所有抄袭他的人)的帖子/博客,上面写着“如果您使用 xcopy,那么您做错了,等等……”,但我相信我可以'T 使用 Web 部署。

更新:

所以我以为我找到了答案。由于网络部署不适合我,我发现一个名为 CopyDirectory 的工作流活动听起来完全符合我的需要。

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

好吧,既然我刚刚输入了这个值不正确,没什么大不了的,只要改成正确的Bui​​ldDetail.DropLocation,我们就应该是golden了。

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

哦,除此之外,您不能将凭据传递给复制目录步骤!真的!唷,不过我找到了一些文档,上面写着“在要复制到的域上授予 tfs 构建服务/帐户权限。好吧,如果我的服务器团队允许这样做,那就太好了,但他们不允许。

回到第一点...(这将变成一篇关于我抱怨 TFS 的博客...)

【问题讨论】:

  • 实际上不需要,因为应用程序正在部署到另一个域而需要提供凭据不是 TFS 问题。创建信任关系并解决部署问题。除了复制之外,可能还有其他活动需要在远程域中执行。
  • 我知道这不是“TFS 问题”,但如果 TFS 允许您将凭据传递给该复制活动,那就太好了。至于信任,我们的服务器/网络团队说这不是一个选择。

标签: c# visual-studio-2012 tfs msbuild continuous-integration


【解决方案1】:

我相信您可以使用 robocopy 做到这一点。您需要更新构建模板以包含新的 InvokeProcess 活动。将活动的 FileName 设置为 "RoboCopy"(包括引号),它的参数类似于以下内容:

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

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

我认为您也不能将凭据传递到 robocopy,因此您可能仍然是 SOL。

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

【讨论】:

  • 我现在正在研究这样的解决方案。我会让你知道结果如何......
  • 我更新了我的答案,为您的权限问题提供了一个潜在的解决方法。
猜你喜欢
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多