使用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分钟


640?wx_fmt=png&wxfrom=5&wx_lazy=1


这个时间非常夸张,如果每次我们修改文档中心都要等待将近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


640?wx_fmt=png&wxfrom=5&wx_lazy=1


这个插件的工作机制很简单:借助VSTS/TFS中的分支策略,当开发人员创建了拉取请求(Pull Request)或者对已经存在的拉取请求进行更新的时候,CI自动化构建会被触发,在这个构建中,这个插件会检测拉取请求中两条分支的(feature branch和master branch)的差异,并将差异文件抽取出来,形成增量文件包。


如下图是在 devops文档中心 的CI中所配置的 Pull Request Diff Copy 插件,你只需要配置目标文件夹


640?wx_fmt=png


通过PullRquest触发以后,这个任务会被执行并抽取差异文件,如下log输出


640?wx_fmt=png


最终形成和PullRequest一致的差异文件包,供CD流水线中的后续任务使用


640?wx_fmt=png


利用这个插件,我们把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,完成整个发布流程。


640?wx_fmt=png


我们在流水线中还使用Build.BuildId来替换vsix的版本号,这样开发人员就不必每次更新版本号,只需要专注于编写逻辑代码,剩下的事情都交给TFS来完成了。



640?wx_fmt=png


希望 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

640?wx_fmt=jpeg

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值