使用TFS CI/CD 完成 VSTS 插件自动化部署和发布
Visual Studio Team Service 經過了13年的版本演進和5年的在線運營,現在已經是最成熟的商用DevOps工具鏈,Marketplace作為VSTS為全球開發者提供各種類型的插件市場,為Visual Studio, Visual Studio Code和Visual Studio Team Service本身提供了大量的插件幫助我們提高工作效率,當前這里已經聚集了總數超過15000個各種類型的插件,是開發人員最豐富的裝備庫。
Pull Request Diff Copy 插件背景
在之前的一篇文章《devops文檔中心技術演進》中我提到了當前我們的文檔中心(https://docs.devopshub.cn)已經積累2000多份文檔和超過2G的數據量,前段時間我們對這個站點進行了一次全量發布(刪除現有服務器,從新部署),整個部署過程用時1小時45分鐘。
這個時間非常夸張,如果每次我們修改文檔中心都要等待將近2個小時,這是讓人無法忍受的。因此,我們團隊的厲曉明同學開始研究如何能夠實現增量發布,也就產生了以下這個名為 Pull Request Diff Copy 的插件。
插件地址
https://marketplace.visualstudio.com/items?itemName=lean-soft.pull-request-
diff-copy
GitHub地址
https://github.com/lean-soft/pull-request-diff-copy
這個插件的工作機制很簡單:借助VSTS/TFS中的分支策略,當開發人員創建了拉取請求(Pull Request)或者對已經存在的拉取請求進行更新的時候,CI自動化構建會被觸發,在這個構建中,這個插件會檢測拉取請求中兩條分支的(feature branch和master branch)的差異,并將差異文件抽取出來,形成增量文件包。
如下圖是在 devops文檔中心 的CI中所配置的 Pull Request Diff Copy 插件,你只需要配置目標文件夾
通過PullRquest觸發以后,這個任務會被執行并抽取差異文件,如下log輸出
最終形成和PullRequest一致的差異文件包,供CD流水線中的后續任務使用
利用這個插件,我們把CI/CD整個流水線的執行時間降低到了1分鐘之內,開人員可以在更新了feature分支后幾十秒內看到站點上的狀態變化;大大提高了效率。
插件部署和發布流水線的實現
為了能讓這個插件本身的開發,測試和發布到VSTS Marketplace的過程更加順暢,我們還為這個插件也搭建了CI/CD。因為這是一個build task extension,所以測試它必須在一個已有的CI構建中進行,同時由于這個插件必須有Pull Request的Context才能運行,所以為了測試這個插件至少要有這幾個步驟:
1) 修改代碼
2) 更新版本號(不更新版本號是無法發布到市場的)
3) 使用tfx工具打包成vsix包
4) 安裝/更新vsix包到測試用的tfs/vsts服務器
5) 觸發構建,查看日志
如果測試失敗,以上過程還要重復;在修復一個小問題的過程中,修改代碼可能只需要1分鐘,但是打包部署一次就要至少5分鐘,效率非常低。
以下是我們搭建的自動化部署流水線,第一個環境使用我們自己公司的tfs服務器作為這個插件的測試環境,因為以上 devops 文檔中心 的CI中使用了這個插件,所以我們可以直接使用以上那個CI來測試這個插件;這個測試通過后,經過一個手動審核觸發才會把測試好的版本發布到VSTS Marketplace,同時也把代碼同步到github,完成整個發布流程。
我們在流水線中還使用Build.BuildId來替換vsix的版本號,這樣開發人員就不必每次更新版本號,只需要專注于編寫邏輯代碼,剩下的事情都交給TFS來完成了。
希望 Pull Request Diff Copy 這個插件可以幫到大家,如果大家使用中遇到問題,請隨時通過 Github 給我們提交反饋,謝謝。
提交反饋地址:https://github.com/lean-soft/pull-request-diff-copy/issues
相關文章:
DevOps文檔中心的技術實踐演進
微軟研發云全家桶VSTS登陸中國
Markdown/reST 文檔DevOps流水線
7 款好用的Git GUI客戶端工具
使用 SSH 連接 TFS/VSTS 的GIT倉庫
GitHub + VSTS 開源代碼雙向同步
.NET Core 從 Github到 Nuget 持續集成、部署
原文地址?:http://devopshub.cn/2018/04/07/tfs-cicd-for-vsts-extension/
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結
以上是生活随笔為你收集整理的使用TFS CI/CD 完成 VSTS 插件自动化部署和发布的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ApacheSkyWalking APM
- 下一篇: 修复迁移后Net Standard项目中