1. 程式人生 > >還原Azure DevOps Server (TFS)中誤刪除的生成流水線

還原Azure DevOps Server (TFS)中誤刪除的生成流水線

擔心 方法 9.png south 工程師 菜單 height 記錄 img

流水線歷史記錄

DevOps Server流水線的歷史記錄有完善的版本日誌,用戶可以隨時回退到修改過程中的任何一個版本,還能比較差異。這個歷史記錄功能可以和代碼庫中的版本控制媲美。

圖一:生成歷史記錄

技術分享圖片

但是,如果實施工程師辛辛苦苦配置的復雜流水線,不小心被一個小白刪除了,而你翻遍了Azure DevOps Server 的所有菜單也找不到流水線的回收站菜單,此時估計你跳樓的心都有了。

圖二:生成定義中的刪除按鈕

技術分享圖片

還好,微軟為你提供了一瓶後悔藥,你還有最後的一種方法還原被刪除的流水線,那就是Rest API。但是需要註意,系統只保留4周內被刪除的流水線數據,如果超出了4周,流水線將被永久刪除。

下面我們來分別看看如何還原生成和發布流水線:

還原生成流水線

還原一條生成流水線的rest api格式如下:

PATCH http://tfsserver/{collection/{project}/_apis/build/definitions/{definitionId}?deleted={deleted}&api-version=5.0

使用上面api的核心,是需要了解流水線的id,就是definitionId。在當前版本的api中,沒有獲取所有生成定義的api,如果你不記得被刪除的流水線ID,那麽你需要根據最近新增加的流水線ID猜測,或者到數據庫中使用SQL查詢相關的表。

例如下面我在postman中使用到的api:

PATCH http://tfs.southeastasia.cloudapp.azure.com/DefaultCollection/DemoProject/_apis/build/definitions/5?deleted=false&api-version=5.0

圖三: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了:

PATCH http://tfs.southeastasia.cloudapp.azure.com/DefaultCollection/DemoProject/_apis/release/definitions/1?api-version=5

註意在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)中誤刪除的生成流水線