TFS工作区与Jenkins Docker容器

所以我有一个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并构build。 一切运作良好,直到我删除了我的jenkins主容器ali_jenkins_m,然后重新创build它。 重新创build时,我仍然使用数据卷容器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。 我环顾四周,到处寻找需要改变的地方。

任何指针将不胜感激。

所以,这是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运行命令现在看起来像这样:

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

这是一个更好的方法来做到这一点。 现在我们不需要每次重新创build容器都运行tf workspace / delete命令

我遇到了完全相同的问题(这是TFS工作区被映射到指定计算机的问题 – 如果您重新启动泊坞窗容器,这将是相同的)。 我使用Team Foundation sidekicks删除了这个工作空间,这个工作空间为你提供了一个很好的GUI来操作工作空间(如果你有权访问的话,甚至是其他人的工作空间)

  1. 打开TFS Sidekicks,进入工具 – > Workspace sidekick
  2. 指定工作区的详细信息(将在哈德逊错误消息)
  3. 点击search
  4. find有问题的工作区并将其删除。
  5. 再次启动你的构build,一切都应该是好的!