VSTS 从多个存储库构建
VSTS build from multiple repositories
我有两个存储库 - 一个在 TFVC 中,另一个在 Git 中。将它们分开有特定的技术原因。
TFVC 中的代码构建在私有构建代理上,Git 中的代码构建在托管代理上。所以目前我有两个独立的构建,它们的结果在发布定义中一起部署。
我正在考虑创建可能能够从两个存储库获取源代码的构建,以便我可以管理一个构建定义。
有办法实现吗?
目前无法在获取源步骤中指定多个存储库。
并且有用户的声音Allow TFS build to depend on multiple repositories推荐了类似的功能,大家可以投票跟进
目前的解决方法是从其他存储库手动获取文件。
例如,如果您在获取源步骤中指定了 TFVC 存储库,那么您可以在任务的开头添加一个 PowerShell 任务,并克隆另一个 git 由 git clone <repo URL>
等
回购
TFVC
而且 Marina 的答案的反面也是可能的。默认情况下将构建定义绑定到 Git 后,您可以添加一个 powershell 脚本来映射工作区并获取源代码:
tf workspace /new /noprompt /location:local /permission:private <name>
tf workfold /map $/Server/Path "$(Agent.BuildDirectory)\tfvc" /workspace:<name>
tf get "$(Agent.BuildDirectory)\tfvc"
并添加一个 "always run task" 以在之后清理工作区:
tf workspace /delete <name>
rd /s /q "$(Agent.BuildDirectory)\tfvc"
下载神器
另一种选择是使用“下载工件”任务从以下扩展下载工件:TFS Artifacts for Release Management。
或 VSTS 附带的下载工件任务,尽管该任务需要 link 构建定义才能从中下载,这意味着您可以在 [=28] 上构建 CI =] 或构建源的 TFVC,或者只是附加源目录,然后在 "other" 构建中获取那些。
您真的想同时构建两个存储库并将构建工件混合在一起吗?或者您只想使用相同的定义来定位不同的来源?
如果您真的想要第一个,您可以像其他答案所指出的那样在构建期间编写获取源代码的脚本。但是,如果在托管上构建 Git 并在私有上构建 TFVC 是一个硬性要求,那么同时构建两组源将失败。
我建议创建一个 Task Group 包含你们的共同任务。然后创建引用任务组的单独生成定义。
我有两个存储库 - 一个在 TFVC 中,另一个在 Git 中。将它们分开有特定的技术原因。
TFVC 中的代码构建在私有构建代理上,Git 中的代码构建在托管代理上。所以目前我有两个独立的构建,它们的结果在发布定义中一起部署。
我正在考虑创建可能能够从两个存储库获取源代码的构建,以便我可以管理一个构建定义。
有办法实现吗?
目前无法在获取源步骤中指定多个存储库。 并且有用户的声音Allow TFS build to depend on multiple repositories推荐了类似的功能,大家可以投票跟进
目前的解决方法是从其他存储库手动获取文件。
例如,如果您在获取源步骤中指定了 TFVC 存储库,那么您可以在任务的开头添加一个 PowerShell 任务,并克隆另一个 git 由 git clone <repo URL>
等
TFVC
而且 Marina 的答案的反面也是可能的。默认情况下将构建定义绑定到 Git 后,您可以添加一个 powershell 脚本来映射工作区并获取源代码:
tf workspace /new /noprompt /location:local /permission:private <name>
tf workfold /map $/Server/Path "$(Agent.BuildDirectory)\tfvc" /workspace:<name>
tf get "$(Agent.BuildDirectory)\tfvc"
并添加一个 "always run task" 以在之后清理工作区:
tf workspace /delete <name>
rd /s /q "$(Agent.BuildDirectory)\tfvc"
下载神器
另一种选择是使用“下载工件”任务从以下扩展下载工件:TFS Artifacts for Release Management。
或 VSTS 附带的下载工件任务,尽管该任务需要 link 构建定义才能从中下载,这意味着您可以在 [=28] 上构建 CI =] 或构建源的 TFVC,或者只是附加源目录,然后在 "other" 构建中获取那些。
您真的想同时构建两个存储库并将构建工件混合在一起吗?或者您只想使用相同的定义来定位不同的来源?
如果您真的想要第一个,您可以像其他答案所指出的那样在构建期间编写获取源代码的脚本。但是,如果在托管上构建 Git 并在私有上构建 TFVC 是一个硬性要求,那么同时构建两组源将失败。
我建议创建一个 Task Group 包含你们的共同任务。然后创建引用任务组的单独生成定义。