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

相关文章:

  1. DevOps文档中心的技术实践演进

  2. 微软研发云全家桶VSTS登陆中国

  3. Markdown/reST 文档DevOps流水线

  4. 7 款好用的Git GUI客户端工具

  5. 使用 SSH 连接 TFS/VSTS 的GIT仓库

  6. GitHub + VSTS 开源代码双向同步

  7. .NET Core 从 Github到 Nuget 持续集成、部署

原文地址 :http://devopshub.cn/2018/04/07/tfs-cicd-for-vsts-extension/

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

使用TFS CI/CD 完成 VSTS 插件自动化部署和发布相关推荐

  1. ci/cd heroku_在Heroku上部署Dash或Flask Web应用程序。 简易CI / CD。

    ci/cd heroku First, we'll transform the animated scatter map built in my previous article into a bas ...

  2. GitHub免费支持CI/CD了,开发测试部署高度自动化,支持各种语言,网友:第三方凉凉...

    郭一璞 栗子 发自 凹非寺 量子位 出品 | 公众号 QbitAI GitHub激动地宣布,终于支持CI/CD了. CI\CD,全称:持续集成 (Continuous Integration) ,持续 ...

  3. ci/cd heroku_在GitLab上设置CI / CD以在Heroku上部署Python Flask应用程序

    ci/cd heroku Recently I came across a challenge to deploy a Python Flask web application to Heroku. ...

  4. Maven学习总结(48)——利用wagon-maven-plugin插件自动化部署Jar包/war包到Linux远程服务器

    前言: Maven项目可使用mvn package指令打包,打包完成后包位于target目录下,要想在远程服务器上部署,首先要将包上传到服务器.程序开发完成后部署到线上Linux服务器,可能需要经历打 ...

  5. 从购买ECS到SpringCloud项目的自动化部署及发布

    只是列一个核心步骤的架子,非每一步详细操作(主要用于面试) 项目结构 1.注册登陆阿里云账号(步骤略) 购买ECS.购买域名 实名认证-创建域名模板-认证备案 2.服务器基础环境搭建(准备三台ECS. ...

  6. 前端项目中的CI/CD实践(自动化部署)

    前言 前置知识 Linux Docker Nginx Github 可以干嘛 作为一套面向开发和运维团队的解决方案,CI/CD 主要解决集成新代码和向用户频繁交付应用的问题. 更直接地说,就是可以解放 ...

  7. Jenkins和GitLab CI/CD:CI/CD工具之战

    持续集成(CI)和持续交付(CD)在过去十年左右时间里取得了长足的进步.DevOps测试的兴起引发了针对CI/CD工具的强烈需求.现有的解决方案一直在与时俱进,无数的新产品或新版本正在进入质量检查领域 ...

  8. asp.net core结合Gitlab-CI实现自动化部署

    一.前言 在之前的文章中写过k8s+Jenkins+GitLab-自动化部署asp.net core项目 的topic,这次讲解一下gitlab-ci的CI/CD,说实话,自动化部署是在是非常的舒服, ...

  9. jenkins 增量发布插件_CI/CD工具:Jenkins还是GitLab CI/CD?

    十年来,持续集成(Continuous Integration,CI)和持续交付(Continuous Delivery,CD)领域都取得了很大的进步.DevOps 测试的兴起导致了对 CI/CD 工 ...

最新文章

  1. 【CodeForces - 215B 】Olympic Medal (数学,公式推导)
  2. MQ 技术产品井喷,今天来详聊一下腾讯开源消息中间件 TubeMQ | 原力计划
  3. css3:box-shadow
  4. Centos python2.6.6升级2.7.14
  5. lassAtitit事件代理机制原理 基于css class的事件代理的事件代理titi
  6. mysql5.7.9 zip achive
  7. 20190216-Java 教程(菜鸟教程)
  8. Emulex FC HBA卡FW升级与驱动安装
  9. 关于四阶魔方中心块还原
  10. 划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和,谁就输了,输家罚一杯酒。两人同赢或两人同输
  11. 考研英语(一)——简单句
  12. Unity动画系统详解1:在Unity中如何制作动画?
  13. FastAPI 入门教程
  14. MoviePy - 中文文档4-MoviePy实战案例-给MoviePy Logo做一个闪动的阴影效果
  15. 考研计算机报录比最高的手机,考研 | 报录比最高专业TOP10,就离谱!
  16. MT6260与MT6261mt6261设计资料汇总
  17. 每日安全简讯20160721
  18. Android studio案例Android商城
  19. JAVA - Map
  20. RobotFramework-SeleniumLibrary库缺少open brower、input等关键字

热门文章

  1. 实践 Neutron 前的两个准备工作 - 每天5分钟玩转 OpenStack(78)
  2. MFC的Button和Static控件
  3. 5.[BX]和Loop指令
  4. 下载 infoq 网站视频
  5. 2010年11月编程语言排行榜:手机里的代码
  6. 使用identity+jwt保护你的webapi(二)——获取jwt token
  7. 如何洗牌 ListT 中的元素?
  8. .NET 6 中的 LINQ 更新
  9. 希尔排序听起来有点难,其实很简单
  10. 在 .NET 中使用 Flurl 高效处理Http请求