我有一个包含2个子文件夹$ / Repo / project和$ / Repo / thirdparty的repo。我需要将这两者都拉到Jenkins中进行单一构建。当然,我试着拉动$ / Repo,但这给了我一些其他项目以及错误的民意调查(每次将任何东西检入$ / Repo时都会建立)。我已经尝试使用多scm插件工作,但不保存配置(烦人,但不是无法使用)。我尝试使用常规tfs插件并手动将其他repo的调用放入windows命令(即使通过我将它们绑定到不同的文件夹,这也无法工作)。
最好的方法是什么?吸引第三方的某种subjob?修复多个scm插件?拉动项目时是否有一些tfs命令或触发器来拉动不同的仓库?
答案 0 :(得分:5)
我能够使用作业管道。它有点像hacky,但它确实有效。
我正在尝试构建的程序使用$/Department/Framework/Main
(workspace\Framework
)和$/Department/Products/TheProgram/Main
(workspace\TheProgram
)。
我在Jenkins创造了三个工作岗位,每个工作都在另一个工作的下游:
$/Department/Framework/Main
的TFS项目路径上触发正常的源代码。没有构建步骤。TheProgram-Build的第一个构建步骤是一个Windows批处理命令:
REM ==================================== REM First Get the Framework folder: rmdir /s/q Framework mkdir Framework xcopy /y /q /e ..\..\Framework-Get\Workspace\Framework Framework REM ==================================== REM Then Get the TheProgram Folder: rmdir /s/q TheProgram mkdir TheProgram xcopy /y /q /e ..\..\TheProgram-Get\Workspace\TheProgram TheProgram
第二个构建步骤是对ant的简单调用。但是你可以使用msbuild或者你喜欢的任何东西。
答案 1 :(得分:2)
Jenkins的TFS插件目前不支持从多个位置检出来源。 multi-scm-plugin可能就是答案,但正如你在问题中指出的那样 - 在这一点上它实际上不是一个选项。到目前为止,我可以看到,只有可能的解决方案供您测试:
答案 2 :(得分:1)
TFS插件支持隐藏您不感兴趣的$\Repo
文件夹。检查隐藏文件夹不会触发构建。不幸的是,这可能是很多文件夹而你只对两个感兴趣 - 你需要保留隐藏文件夹的列表,因为新的文件夹被添加。
我们避免使用TFS插件,而是使用tfs命令行通过powershell步骤编写TFS工作区的设置。每个构建指定它想要的文件夹,并且脚本负责隐藏/隐藏其余的文件夹。
答案 3 :(得分:0)
我的解决方案是创建两个Job,一个只下载你的依赖,另一个来构建。
在我的情况下,我使用Maven属性管理构建,例如:
<properties>
<my.dir>../MyDir</wsdl.dir>
</properties>
Goals clean package -U -Dmy.dir=${WORKSPACE}/../../another-build/workspace/MyDir
答案 4 :(得分:0)
我必须自己为詹金斯创建一个解决方法。这是使用TF和powershell Snapin Microsoft.TeamFoundation.PowerShell实现的。
基本上工作流程如下:
Get-TFsWorkspace(Powershell:检查工作区)
TF Workspace / new(创建工作区)
TF Workfold / unmap(使用它来删除在工作空间创建期间创建的默认$ / mapping)
TF Workfold / map(映射特定位置,即$ / Repo / project)
TF Scorch(删除任何文物,如果有的话)
TF Get(获取代码)
人们可能还有其他方法,但这也允许你使用tf Workfold / cloak功能。
干杯,
希望这有帮助。
答案 5 :(得分:0)
可以确认Multiple SCM 0.5适用于Team Foundation Server插件4.0
然而,民意调查似乎确实破裂了。