7

我有一个包含 2 个子文件夹 $/Repo/project 和 $/Repo/thirdparty 的仓库。我需要将这两个都拉到 Jenkins 中进行一次构建。自然地,我尝试只提取 $/Repo,但这给了我一堆其他项目以及错误的民意调查(每次将任何东西签入 $/Repo 时都会构建)。我尝试使用有效的 multi-scm 插件,但不保存配置(烦人,但不是不可用)。我尝试使用常规的 tfs 插件并手动将另一个 repo 的调用放入 windows 命令中(即使我将它们绑定到不同的文件夹,这也不起作用)。

解决这个问题的最佳方法是什么?某种吸引第三方的子工作?修复多个 scm 插件?拉项目时是否有一些 tfs 命令或触发器来拉不同的仓库?

4

6 回答 6

5

我能够通过工作管道来完成这项工作。这有点hacky,但它有效。

我正在尝试构建的程序使用$/Department/Framework/Main(as workspace\Framework) 和$/Department/Products/TheProgram/Main(as workspace\TheProgram)。

我在 Jenkins 中创建了三个工作,每个工作都在另一个“下游”:

  • Framework-Get:在 TFS 的项目路径上触发的正常源代码$/Department/Framework/Main。没有构建步骤。
  • TheProgram-Get:在 TFS 的 Product Path 上触发的正常源代码$/Department/Products/TheProgram。没有构建步骤。
  • TheProgram-Build:无源代码控制。但构建步骤 xcopy 的来源来自上述两个步骤。然后,您可以运行正常的构建步骤。

TheProgram-Build 的第一个构建步骤是一个 windows 批处理命令:

REM =====================================
REM 首先获取Framework文件夹:
rmdir /s/q 框架
mkdir 框架
xcopy /y /q /e ..\..\Framework-Get\Workspace\Framework Framework

REM =====================================
REM 然后获取 TheProgram 文件夹:
rmdir /s/q 程序
mkdir 程序
xcopy /y /q /e ..\..\TheProgram-Get\Workspace\TheProgram TheProgram

第二个构建步骤是对 ant 的简单调用。但是你可以在这里使用 msbuild 或任何你喜欢的东西。

于 2012-12-06T19:46:26.183 回答
2

Jenkins 的 TFS 插件目前不支持从多个位置签出源。multiple-scm-plugin 可能是答案,但正如您在问题中指出的那样 - 在这一点上它真的不是一个选项。据我所知,实际上只有可能的解决方案供您测试:

  1. 在 TFS 中创建一个工作区,其中将包含所有必需的导入。我在与 TFS 的日常接触中使用此功能,尽管我从未有机会将它与 Jenkins 插件一起使用。它可能有效,也可能无效。
  2. 你可以使用,并且请 - 这是一个非常严肃的选择,至少对我来说 - git。有一个git-tfs并将所有需要的项目导入 git 存储库。将它们放在 git 中将为您打开许多可能性,包括为每个文件夹使用单独的存储库、使用 git 模块、git 外部......等等。所以,至少对我来说,这是一个有效的选择,尽管乍一看它似乎是一个丑陋的解决方法......
于 2012-05-04T13:00:33.207 回答
1

TFS 插件支持$\Repo隐藏您不感兴趣的文件夹的功能。签入隐藏文件夹不会触发构建。不幸的是,这可能是很多文件夹,而您只对其中两个感兴趣 - 您需要在添加新文件夹时维护隐藏文件夹的列表。

我们避免使用 TFS 插件,而是使用 tfs 命令行通过 powershell 步骤编写 TFS 工作区的设置脚本。每个构建都指定了它想要的文件夹,并且脚本会注意隐藏/取消隐藏其余部分。

于 2018-02-08T17:21:18.610 回答
0

我对此的解决方案是创建两个作业,一个仅下载您的依赖项,另一个用于构建。

就我而言,我使用 Maven 属性管理构建,例如:

pom.xml

<properties>
  <my.dir>../MyDir</wsdl.dir>
</properties>

詹金斯构建

Goals clean package -U -Dmy.dir=${WORKSPACE}/../../another-build/workspace/MyDir
于 2015-04-09T14:05:30.047 回答
0

我必须自己为 Jenkins 创建一个解决方法。这是使用 TF 和 powershell Snapin Microsoft.TeamFoundation.PowerShell 实现的。

基本上工作流程如下:

Get-TFsWorkspace(Powershell:检查工作区)

TF Workspace /new(创建工作区)

TF Workfold /unmap(使用它来删除在工作空间创建期间进行的默认 $/ 映射)

TF Workfold /map(映射特定位置,即$/Repo/project)

TF Scorch(如果有的话,删除任何伪影)

TF Get(获取代码)

人们可能还有其他方法,但这也允许您使用 tf Workfold /cloak 功能。

干杯,

希望这可以帮助。

于 2015-07-10T20:15:30.827 回答
0

可以确认 Multiple SCM 0.5 与 Team Foundation Server 插件 4.0 一起使用

然而,民意调查似乎确实中断了。

于 2015-11-09T07:35:22.000 回答