如何为DevOps Server 2020已有项目更改Process Template并迁移TFS 2017项目
TFS 2017迁移至DevOps Server 2020并替换自定义流程模板操作指南
前置验证要求
操作前先完成以下检查,避免迁移异常:
- 确认TFS 2017已升级到最新更新包(至少Update 3版本),消除跨版本兼容性问题
- 完成TFS 2017全量项目集合数据库备份,所有迁移操作必须在备份完成后执行
- 确认DevOps Server 2020环境的服务权限、运行状态正常,你自定义的新流程模板已上传到目标集合/组织层级,状态为已启用
- 提前梳理旧项目所有工作项类型、自定义字段、工作流状态的清单,和新模板的对应配置做好映射对照
两种可选迁移方案
方案1:项目集合全量迁移后替换模板(适合多项目批量迁移,可保留完整历史数据)
- 分离TFS 2017对应的项目集合数据库,将备份的数据库文件还原到DevOps Server 2020关联的SQL Server实例中
- 打开DevOps Server管理控制台,选择「附加项目集合」,按照向导完成集合的附加与自动升级,这一步旧项目会暂时沿用原有旧版Agile模板
- 调用随Visual Studio或DevOps客户端工具附带的
witadmin命令行工具,导出旧项目的现有字段定义:witadmin listfields /collection:http://你的DevOps服务地址/目标集合名称 /export:OldFieldDef.xml - 对照你自定义的新模板配置,完成映射调整:
- 新旧模板共有的字段直接保留映射关系
- 旧项目有、新模板没有但需要保留的字段,提前添加到自定义新模板的对应工作项配置中
- 新旧工作流状态做一一绑定,比如旧的「已提交」映射到新模板的「待评审」
- 执行命令切换项目关联的流程模板为自定义模板:
witadmin importprocessconfig /collection:http://你的DevOps服务地址/目标集合名称 /p:目标项目名称 /f:自定义模板的ProcessConfig.xml文件路径 - 逐个导入新模板的工作项类型定义,覆盖旧版本配置:
witadmin importwitd /collection:http://你的DevOps服务地址/目标集合名称 /p:目标项目名称 /f:自定义模板对应工作项的XML配置路径 - 验证所有工作项的字段值、自定义列、工作流跳转、历史记录正常,无数据丢失
方案2:单项目单独迁移(适合少量项目,可同步完成数据清洗)
- 在DevOps Server 2020中直接用你的自定义新模板创建空白目标项目
- 从TFS 2017导出旧项目的所有工作项数据为CSV格式,同步导出代码仓库、构建管道、测试用例等其他资产
- 按照新模板的字段、状态规则调整CSV内容,完成新旧配置的映射匹配
- 将调整后的工作项数据批量导入到新创建的目标项目中,再逐一迁移其他项目资产
- 全量校验迁移后的数据一致性
注意事项
- 方案2无法完整迁移工作项的历史评论、附件、变更记录,需要保留全量历史的场景优先选方案1
- 自定义字段的引用名称必须和新模板完全一致,否则会出现字段值不匹配的问题
- 迁移完成后至少保留7天旧环境备份,确认所有功能正常后再下线旧TFS环境
内容的提问来源于stack exchange,提问作者user2326796
相关产品推荐
相关产品推荐

