一.介绍
Visual Studio Team Service,简称VSTS,是微软开发的一套集代码管理,build,release,deploy,以及连接Azure自动部署和集成的工具,非常好用。
进入官网,注册/登录MSA账号,这时候会有一个主页,让你输入visualstudio.com的前缀进行注册。
二.VSTS的功能讲解
1.代码仓库
VSTS可以作为代码仓库使用,而且里面可以自定义权限,那些人可以看那些人不可以看。其实teamService就是团队服务的意思,本质上是为团队服务的。只是现在你一个人建立的话那就是你的私人团队。
使用很方便,新建一个project就行了,不管你用的什么编译器或者IDE,使用和git一样
2.团队任务日志
既然是为团队服务,而且有代码仓库功能,name这个工具完全可以作为团队的任务工具,当然做我自己的也未尝不可。
在
这个图中,可以看到Work,这个work就是团队任务面板,
面板中有新的任务,活动中任务,等待处理的任务,和关闭的任务。这些任务可以进行分类,比如是bug还是task等等,方便区分。
而且,重要的是,任务可以和代码进行绑定
比如新建一个代码任务,可以直接在这个任务下新建分支,name远端就会开出一个分支,然后clone下来,本地也切换到这个分支,完成后push上去,并且pull request,approval后这个branch就是消失。这一整套流程在Work中都可见,并且每一个代码哪一步改动也都知道。
3.自动build,自动部署,持续集成(CI),持续部署(CD)
build
见第一张图中的Build&Release,就是部署和发布的选项了。
对于build,首先需要新建一个build Definitions,可以选择一个模板,但是大多采用empty模板,这样可以定制。
选择模板后就看需要对你的代码做什么了,需要终端操作,需要vsbuild?都可以有组件支持,只需要把参数弄对就行。
我的一个模板:
这是一个asp.net core项目的模板,具体我会距离来说怎么一步一步创建这个模板。
在Triggers中将CI持续集成点上
release
同build一样,release也有一个release Definition,同样也是有模板提供,可以自己选择发布的对象,一般都是在Azure上面。
具体的配置后面再提。
4.敏捷开发
话说开发嘛,测试先行,测试驱动开发,模块开发。VSTS中,如果build中有test模块,也是能够进行自动化测试的。
4.使用步骤
(1)创建project
(2)对project创建build definition和release definition,如果需要azure,则在Azure中创建好相应的资源
(3)创建需求,并且在work中写好要完成什么任务
(4)远程创建分支,clone下来,并且本地切换到同名分支。
(5)代码写好后push上去,然后pull request
(6)code review之后合并到主干,系统会自动build,自动release,deploy到azure
(7)分支关闭
四.距离两种项目的持续集成和持续部署
1.VS2017+asp.net core 1.1 +azure web app
编译器:visual studio 2017
编译环境:asp.net core 1.1
部署环境:azure web app IIS
(1)先build definition
Build your ASP.NET Core app
一开始没用空模板,总是出错,后来使用空模板,然后按照这篇指南一步一步做,就好了。
这里注意,vs2015和vs2017有些不同,release和any cpu后面的框框也要打上勾
(2)再release definition
这时候我就直接选择了模板,第一个
同时可以参考这篇指南 Implement continuous deployment of your app to an Azure web site
在一个release中部署多个app server也在这篇文章中
上面这个是最简单的,毕竟所有的东西都是微软的,并且是当前最主流的做法,所以没有遇到很大的困难。
2.node.js+gulp+azure web app
参考网站Define a continuous integration build for your Node.js app
首先和上面.net项目一样,创建新的project,建分支,clone。
(1)新建一个nodejs工程,可以用上面这个模板,也可以自己建立。记得将gulp文件和web.config放进去,记得在package.json中配置gulp和gulp-zip
(2)进入自己的VSTS,创建一个空的build definition。在Azure中也创建一个web app
这里官网有一个坑,把cpy publish Artifact :drop写错了,并且还写成了可选,其实是必选,而且名字也不对。
正确的图如下:
(3)按照上面链接进行build definition的填写。然后写Release definition,release都是一样的,都是将一个zip传到azure,azure自动解析其中的app
(4)azure的deploy和前面的C#一样,系统封装了底层,给外面一个接口deploy。
原理分析:先本地进行代码开发,然后提交到VSTS中,VSTS检测到代码改变,通过设定的build找到gulpfile,使用gulp-zip对其进行打包操作,打包成zip,然后扔到Azure的环境中,Azure检测到是node项目,自动进行deploy