使用Jenkins Docker容器的TFS工作区

时间:2016-06-16 17:41:32

标签: jenkins tfs docker data-containers

所以我有一个Jenkins主容器 ali_jenkins_m 设置,我使用数据卷容器启动 ali_jenkins_data 用于存储Jenkins数据。

docker run -p 8080:8080 -p 50000:50000 --name ali_jenknins_master --volumes-from ali_jenkins_data -d ali_jenkins_m

我已经设置了一个TFS插件并映射了我们的一个TFS分支,将代码拉入Jenkins并构建。一切顺利,直到我删除了我的jenkins主容器ali_jenkins_m,然后重新创建它。重新创建时,我仍然使用数据卷容器ali_jenkins_data。我的所有数据都按预期持续存在,但我遇到了在Jenkins的TFS构建的问题。

我得到的错误是:

  Creating workspace 'HUDSON-MCA Continuous Development Build-MASTER' owned by 'DOMAIN\tfsbuild'...
FATAL: com.microsoft.tfs.core.exceptions.TECoreException: The workspace HUDSON-Development Build-MASTER;tfsbuild already exists on computer **a4d8cdb6981d**.

a4d8cdb6981d是我删除的ali_jenkins_m的容器ID。我的新conatiner ali_jenkins_m有一个新的容器ID。我环顾四周在山上到处寻找需要改变的东西来使这项工作。

任何指针都将受到赞赏。

2 个答案:

答案 0 :(得分:2)

所以,这是TFS的一个问题,与Docker或Jenkins无关。我通过运行此命令解决了这个问题。

 tf workspace /delete /server:http://abc.xyz.eee:8080/tfs/IntlSysDev "HUDSON-MCA Continuous Development Build-MASTER";tfsbuild

另一种方法,我们解决了这个问题,就是在运行docker run命令时使用-h选项指定主机名。所以从上面我的docker run命令现在看起来像这样:

docker run -p 8080:8080 -p 50000:50000 -h jenkinsali --name ali_jenknins_master --volumes-from ali_jenkins_data -d ali_jenkins_m

这是一种更好的方法。现在,每次重新创建容器

时,我们都不需要运行tf workspace / delete命令

答案 1 :(得分:1)

我遇到了完全相同的问题(这是TFS工作空间映射到命名计算机的问题 - 如果重新启动docker容器,它将是相同的);我使用Team foundation sidekicks删除了工作区,这为您提供了一个很好的GUI来操作工作区(如果您有访问权限,甚至是其他人的工作区)

  1. 打开TFS Sidekicks,转到工具 - > Workspace sidekick
  2. 指定工作区详细信息(将在hudson错误消息中)
  3. 点击搜索
  4. 找到有问题的工作区并将其删除。
  5. 再次开始你的构建,一切都应该是好的!