还原Azure DevOps Server (TFS)中误删除的生成流水线
流水线历史记录
DevOps Server流水线的历史记录有完善的版本日志,用户可以随时回退到修改过程中的任何一个版本,还能比较差异。这个历史记录功能可以和代码库中的版本控制媲美。
图一:生成历史记录

但是,如果实施工程师辛辛苦苦配置的复杂流水线,不小心被一个小白删除了,而你翻遍了Azure DevOps Server 的所有菜单也找不到流水线的回收站菜单,此时估计你跳楼的心都有了。
图二:生成定义中的删除按钮

还好,微软为你提供了一瓶后悔药,你还有最后的一种方法还原被删除的流水线,那就是Rest API。但是需要注意,系统只保留4周内被删除的流水线数据,如果超出了4周,流水线将被永久删除。
下面我们来分别看看如何还原生成和发布流水线:
还原生成流水线
还原一条生成流水线的rest api格式如下:
使用上面api的核心,是需要了解流水线的id,就是definitionId。在当前版本的api中,没有获取所有生成定义的api,如果你不记得被删除的流水线ID,那么你需要根据最近新增加的流水线ID猜测,或者到数据库中使用SQL查询相关的表。
例如下面我在postman中使用到的api:
图三:postman中调用恢复流水线api

如果调用成功,系统会返回被恢复流水线的相关json数据;同时,你也可以在浏览器中看到恢复出来的数据了,只是生成的名称加上了前缀“(RESTORED 2019-03-21 13:45:49)”字样,如下图:

还原发布流水线
还原发布流水线的方式和上面还原生成流水线的方式差不多。
但是,在还原发布流水线之前,我们可以使用列表的api获取所有被删除的流水线,api格式如下:
Get http://tfs.southeastasia.cloudapp.azure.com/DefaultCollection/DemoProject/_apis/release/definitions?isdeleted=true
使用上面api,获取到需要还原的流水线ID后,就可以使用PATCH方法调用还原流水线的api了:
注意在postman中调用上面的api时,需要做到:
1. 调用api方式为PATCH
2. 必须在body中添加备注信息,备注内容如下:
{ "Comment" : "Deleted by mistake" }
3. body的数据格式为:application/json,或者application/json-patch+json
下面是调用在postman中的截图:

如果api调用成功,系统会返回被还原的流水线的相关json数据,你可以在web界面中看到被还原的流水线了。
在流水线的历史记录中,你可以看到还原过程中的日志信息:

看到这里,你不再需要担心误删除流水线数据了。
微软DevOps MVP 张洪君 http://www.cnblogs.com/danzhang
--End-
还原Azure DevOps Server (TFS)中误删除的生成流水线的更多相关文章
- 在Azure DevOps Server (TFS)中实现VUE项目的自动打包
概述 Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据驱动的 web 界面的渐进式框架.由于它在数据绑定.页面展示和使用简单方面有很大的优势,逐渐被越来越多的前端开发团队使用.本文 ...
- Azure DevOps Server (TFS) 代码库Repo管理培训
Repo是分布式代码库Git中的一个专用词,用于存储和管理开发团队中特定的源代码. 使用Git,可以协调整个团队的代码更改. 即使您只是一个开发人员,版本控制也可以帮助您在修复错误和开发新功能时保持井 ...
- Azure DevOps Server (TFS)中代码文件换行问题解决方案(Git)
之前写过一篇博客"探索TFS Git 库文件换行(CRLF)的处理方式",主要是针对TFVC代码库的. 下面这篇文章说明如何在TFS的Git库中处理代码换行的问题. 概述 在Azu ...
- 在Azure DevOps Server (TFS)的流水线中编译和测试Xcode移动应用(iPhone)
概述 Xcode是开发基于苹果macOS系统的桌面应用和移动应用的主要IDE工具.使用Azure DevOps Server (原名TFS)系统中的pipelines流水线功能,可以方便的集成Xcod ...
- 集成Azure DevOps Server(TFS) 与微软Teams
1.概述 Microsoft Teams是Office 365中团队协作的中心.将团队的所有聊天.会议.文件和应用程序放在一个位置.软件开发团队可以在一个专门的协作中心中即时访问他们所需的所有内容,T ...
- 在Azure DevOps Server (TFS 2019) 流水线传递参数
变量概述 在Azure DevOps Server的流水线中,变量是衔接不同任务和不通代理之间的桥梁,它可以使相对松散.各自独立的任务之间相关影响并共享数据.在流水线中使用变量,可以在各任务之间相互调 ...
- 在Windows操作系统的文件管理器中集成Azure DevOps Server (TFS)工具菜单
故事场景 使用过SVN的用户,都知道在Windows的文件夹上点击鼠标右键,就会弹出Tortoise SVN的操作菜单(俗称小乌龟).通过这个功能,用户不需要打开SVN工具,可以直接在Windows的 ...
- Azure DevOps Server (TFS) 修改工作项附件大小限制
1. 问题描述 当上传工作项附件时,系统提示"附件大小限制" 2.解决方案 2.1 默认设置 默认情况下,Azure DevOps Service和Team Foundation ...
- Azure DevOps Server (TFS) 修改Git文件大小限制
签入Git的所有文件将永远保留在存储库中,限制大文件签入到代码库,可以增加磁盘使用效率,提高系统备份还原等日常维护的效率. 通过下面的设置,团队项目管理员可以阻止超过特定大小的文件进入存储库.如果推送 ...
随机推荐
- dubbo配置方式简单介绍
原地址:http://www.cnblogs.com/chanshuyi/p/deep_insight_dubbo_config.html 一.介绍 Dubbo 采用全Spring配置方式,透明化接入 ...
- python中__get__,__getattr__,__getattribute__的区别
__get__,__getattr__和__getattribute都是访问属性的方法,但不太相同. object.__getattr__(self, name) 当一般位置找不到attribute的 ...
- React.js 学习笔记
React.js React.js 是时下最流行的前端 JavaScript 框架之一. 创建工程 # 安装 CLI $ npm install -g create-react-app # 创建新的应 ...
- R语言-线图(二)
1.线图示例 plot()为高水平作图命令,axis().lines().legend()都为低水平作图命令 > rain<-read.csv("cityrain.csv&q ...
- python3之Django基础篇
一.Django基础 Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站! Django的特点: 强大的数据库功能:拥有强大的数据库操作接口(QueryS ...
- 100-days: seventeen
Title: How 'Bohemian Rhapsody(波西米亚狂想曲)' ended up in 'Wayne's World(反斗智多星)' and became a phenomenon(现 ...
- 688. Knight Probability in Chessboard棋子留在棋盘上的概率
[抄题]: On an NxN chessboard, a knight starts at the r-th row and c-th column and attempts to make exa ...
- [leetcode]243. Shortest Word Distance最短单词距离
Given a list of words and two words word1 and word2, return the shortest distance between these two ...
- 微信小程序之----获取设备信息
1. 获取系统信息 wx.getSystemInfo(OBJECT) wx.getSystemInfoSync() 同步获取系统信息 回调常用 ...
- android 设置LOGO和app名称
mipmap和drawable目录都可以存放图片,一般情况下,将LOGO文件存放在mipmap目录,普通图片放到drawable目录. 一.在mipmap目录添加LOGO图片 在mipmap目录右键- ...