Jenkins:如何从TFS存储库构建多个项目?

时间:2012-01-20 10:05:00

标签: tfs continuous-integration jenkins

我已将工作区目录设置为C:\jenkins_builds\workspace,我想构建ProjAProjB,每个目录都有一个本地工作文件夹(与项目名称相同)。

从我的存储库中获取源代码时,TFS插件所做的前两件事是:

tf workspace -new %workspace-name-A%;%user-name% -server:%my-server%

tf workfold -map $%branch% ProjA -workspace:%workspace-name-A% -server:%my-server%

构建ProjA时,这很好。问题是,第一个命令将根目录从存储库直接映射到我的C:\jenkins_builds\workspace目录。第二个命令执行我真正想要的操作,即将%branch%映射到ProjA子文件夹。稍后,当构建ProjB时,第一个命令失败(并因此构建),并显示以下错误消息:

The path C:\jenkins_builds\workspace is already mapped in workspace %workspace-name-A%;%user-name%.

好的,将根目录映射到工作目录似乎是个坏主意。但是,当TFS插件运行workspace new行时,为什么会自动发生这种情况?目前,我必须通过运行-unmap命令在构建ProjAProjB之间进行清理。

我的团队正在使用Team Foundation 3.0。

1 个答案:

答案 0 :(得分:1)

我们有相同的情况,有两种方法可以解决这个问题:

  • 为两个版本使用不同的工作区根目录
    这导致需要两个签出=>两倍的空间和更慢,但两个构建之间更好的隔离
  • 将两个版本的工作区名称“硬编码”为相同
    默认情况下,jenkins创建一个包含构建名称的工作空间,可以在TFS配置的“高级”部分进行更改,然后您可以对多个构建使用相同的工作空间/工作文件夹映射 - 在我们的示例中我们称之为{ {1}}所以它甚至适用于几个节点