有什么方法可以复制构建定义?我使用主线源控制方法,利用许多不同的分支来生活很短的时间(即几天到一周)。我真的很想复制一个构建模板,只需更改要构建的解决方案即可。有没有办法做到这一点?如何复制TFS 2010构建定义?
回答
你可以写一个加载项来做到这一点。下面是复制现有构建定义的代码:
static IBuildDefinition CloneBuildDefinition(IBuildDefinition buildDefinition)
{
var buildDefinitionClone = buildDefinition.BuildServer.CreateBuildDefinition(
buildDefinition.TeamProject);
buildDefinitionClone.BuildController = buildDefinition.BuildController;
buildDefinitionClone.ContinuousIntegrationType = buildDefinition.ContinuousIntegrationType;
buildDefinitionClone.ContinuousIntegrationQuietPeriod = buildDefinition.ContinuousIntegrationQuietPeriod;
buildDefinitionClone.DefaultDropLocation = buildDefinition.DefaultDropLocation;
buildDefinitionClone.Description = buildDefinition.Description;
buildDefinitionClone.Enabled = buildDefinition.Enabled;
buildDefinitionClone.Name = String.Format("Copy of {0}", buildDefinition.Name);
buildDefinitionClone.Process = buildDefinition.Process;
buildDefinitionClone.ProcessParameters = buildDefinition.ProcessParameters;
foreach (var schedule in buildDefinition.Schedules)
{
var newSchedule = buildDefinitionClone.AddSchedule();
newSchedule.DaysToBuild = schedule.DaysToBuild;
newSchedule.StartTime = schedule.StartTime;
newSchedule.TimeZone = schedule.TimeZone;
}
foreach (var mapping in buildDefinition.Workspace.Mappings)
{
buildDefinitionClone.Workspace.AddMapping(
mapping.ServerItem, mapping.LocalItem, mapping.MappingType, mapping.Depth);
}
buildDefinitionClone.RetentionPolicyList.Clear();
foreach (var policy in buildDefinition.RetentionPolicyList)
{
buildDefinitionClone.AddRetentionPolicy(
policy.BuildReason, policy.BuildStatus, policy.NumberToKeep, policy.DeleteOptions);
}
return buildDefinitionClone;
}
从您的消息中不清楚哪个模板是您的构建定义使用(默认,升级或实验室管理)。如果我理解正确,您希望轻松设置一个构建定义,该构建定义构建了相同的解决方案,但来自不同的分支。
有一件事,你可以尝试,而不是复制定义是编辑它。当分支死亡时,重命名构建定义(可能有助于报告),更改构建的工作区映射,您应该完成。
谢谢,拉迪斯劳
我只是需要复制构建定义,并发现上面的Jim的回答会有帮助。然而,作为TFS API的新手,我需要帮助连接到服务器并通过代码获取现有的构建定义。这两个环节上帮助填补空白:
我结束了使用TFS电动工具2010年9月,其含有克隆构建定义命令。 – devlife 2010-11-03 22:47:11
您也可以下载新的TFS 2010 power tools。它可以选择克隆构建定义。
为例见http://msmvps.com/blogs/molausson/archive/2010/10/21/clone-a-build-definition.aspx
注:请注意,克隆只能当你没有弹出生成窗口。
您可以右键单击构建定义并选择“克隆构建定义”来复制定义文件。然后你可以从那里编辑它。
以下工具(VS加载项),将满足您的要求>
社区TFS构建经理
http://visualstudiogallery.msdn.microsoft.com/16bafc63-0f20-4cc3-8b67-4e25d150102c
这里是soltion,如果你想生成定义从一个团队项目移到其他团队项目。
public void MoveBuild(string fromTeamProject, string toTeamProject, string buildName, string newBuildName)
{
var _server = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new
Uri("http://Mytfs:8080/defaultcollection"));
IBuildServer _buildServer = _server.GetService<IBuildServer>();
var buildDetails = _buildServer.QueryBuildDefinitions(fromTeamProject);
foreach (var fromBuild in buildDetails)
{
if (fromBuild.Name != buildName) continue;
var newBuildDefinition = _buildServer.CreateBuildDefinition(toTeamProject);
newBuildDefinition.Name = !string.IsNullOrEmpty(newBuildName) ? newBuildName : fromBuild.Name;
newBuildDefinition.BuildController = fromBuild.BuildController;
// This finds the template to use
foreach (var mapping in fromBuild.Workspace.Mappings)
{
newBuildDefinition.Workspace.AddMapping(
mapping.ServerItem, mapping.LocalItem, mapping.MappingType, mapping.Depth);
}
newBuildDefinition.DefaultDropLocation = fromBuild.DefaultDropLocation;
newBuildDefinition.Description = fromBuild.Description;
// buildDefinition.Workspace.AddMapping(build.Workspace.);
newBuildDefinition.Process = _buildServer.QueryProcessTemplates(fromBuild)[2];
newBuildDefinition.ProcessParameters = fromBuild.ProcessParameters;
newBuildDefinition.Enabled = false;
newBuildDefinition.Save();
}//end of for each loop
}
- 1. TFS 2010在TFS 2010中构建定义
- 2. TFS 2010构建定义 - 复制依赖到构建目标文件夹
- 3. 导出TFS 2010构建定义
- 4. 自定义构建摘要TFS 2010
- 5. TFS 2010定制构建步骤
- 6. TFS构建2010年 - 自定义二进制位置和SharePoint WSP
- 7. Tfs构建定义
- 8. 如何在TFS 2010中调试自定义构建过程?
- 9. 使用TFS 2010运行TFS 2008构建定义
- 10. TFS 2010构建:Microsoft.TeamFoundation.Build.Workflow.Activities.SyncWorkspace
- 11. 如何解决TFS 2010构建通知
- 12. TFS 2010 Build定义
- 13. 自定义TFS构建定义模板
- 14. 如何将TFS构建定义移动/复制到新的团队项目?
- 15. TFS 2010构建服务
- 16. 是否可以导出TFS 2010构建定义?
- 17. 将TFS 2013 xaml构建定义转换为TFS 2015 vNext构建
- 18. 使TFS 2010轻松构建定制的工具
- 19. TFS 2012构建代理与TFS 2010构建代理的优势?
- 20. 构建失败与TFS 2010构建但通过VS 2010
- 21. 在tfs 2010中创建构建类型
- 22. 如何在TFS构建报告中创建自定义部分?
- 23. 如何使TFS Build 2010中的构建定义可配置w.r.t输入变量值和“要构建的项目”
- 24. TFS构建定义和部署
- 25. 问题与TFS Nugetter和构建定义
- 26. TFS构建 - PowerShell或自定义活动?
- 27. 构建定义的TFS 2015“增量”
- 28. COM引用和TFS构建定义
- 29. TFS构建定义下拉菜单
- 30. TFS构建定义删除本身
在linqpad,真棒得到了这个工作=) – Maslow 2014-02-11 20:07:07