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