一.介紹
Visual Studio Team Service,簡稱VSTS,是微軟開發(fā)的一套集代碼管理,build,release,deploy,以及連接Azure自動部署和集成的工具,非常好用。
進入官網(wǎng),注冊/登錄MSA賬號,這時候會有一個主頁,讓你輸入visualstudio.com的前綴進行注冊。
二.VSTS的功能講解
1.代碼倉庫
VSTS可以作為代碼倉庫使用,而且里面可以自定義權(quán)限,那些人可以看那些人不可以看。其實teamService就是團隊服務(wù)的意思,本質(zhì)上是為團隊服務(wù)的。只是現(xiàn)在你一個人建立的話那就是你的私人團隊。
使用很方便,新建一個project就行了,不管你用的什么編譯器或者IDE,使用和git一樣
2.團隊任務(wù)日志
既然是為團隊服務(wù),而且有代碼倉庫功能,name這個工具完全可以作為團隊的任務(wù)工具,當然做我自己的也未嘗不可。
在

這個圖中,可以看到Work,這個work就是團隊任務(wù)面板,

面板中有新的任務(wù),活動中任務(wù),等待處理的任務(wù),和關(guān)閉的任務(wù)。這些任務(wù)可以進行分類,比如是bug還是task等等,方便區(qū)分。
而且,重要的是,任務(wù)可以和代碼進行綁定
比如新建一個代碼任務(wù),可以直接在這個任務(wù)下新建分支,name遠端就會開出一個分支,然后clone下來,本地也切換到這個分支,完成后push上去,并且pull request,approval后這個branch就是消失。這一整套流程在Work中都可見,并且每一個代碼哪一步改動也都知道。
3.自動build,自動部署,持續(xù)集成(CI),持續(xù)部署(CD)
build
見第一張圖中的Build&Release,就是部署和發(fā)布的選項了。
對于build,首先需要新建一個build Definitions,可以選擇一個模板,但是大多采用empty模板,這樣可以定制。
選擇模板后就看需要對你的代碼做什么了,需要終端操作,需要vsbuild?都可以有組件支持,只需要把參數(shù)弄對就行。
我的一個模板:

這是一個asp.net core項目的模板,具體我會距離來說怎么一步一步創(chuàng)建這個模板。
在Triggers中將CI持續(xù)集成點上
release
同build一樣,release也有一個release Definition,同樣也是有模板提供,可以自己選擇發(fā)布的對象,一般都是在Azure上面。
具體的配置后面再提。
4.敏捷開發(fā)
話說開發(fā)嘛,測試先行,測試驅(qū)動開發(fā),模塊開發(fā)。VSTS中,如果build中有test模塊,也是能夠進行自動化測試的。
4.使用步驟
(1)創(chuàng)建project
(2)對project創(chuàng)建build definition和release definition,如果需要azure,則在Azure中創(chuàng)建好相應(yīng)的資源
(3)創(chuàng)建需求,并且在work中寫好要完成什么任務(wù)
(4)遠程創(chuàng)建分支,clone下來,并且本地切換到同名分支。
(5)代碼寫好后push上去,然后pull request
(6)code review之后合并到主干,系統(tǒng)會自動build,自動release,deploy到azure
(7)分支關(guān)閉
四.距離兩種項目的持續(xù)集成和持續(xù)部署
1.VS2017+asp.net core 1.1 +azure web app
編譯器:visual studio 2017
編譯環(huán)境:asp.net core 1.1
部署環(huán)境: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
參考網(wǎng)站Define a continuous integration build for your Node.js app
首先和上面.net項目一樣,創(chuàng)建新的project,建分支,clone。
(1)新建一個nodejs工程,可以用上面這個模板,也可以自己建立。記得將gulp文件和web.config放進去,記得在package.json中配置gulp和gulp-zip
(2)進入自己的VSTS,創(chuàng)建一個空的build definition。在Azure中也創(chuàng)建一個web app
這里官網(wǎng)有一個坑,把cpy publish Artifact :drop寫錯了,并且還寫成了可選,其實是必選,而且名字也不對。
正確的圖如下:

(3)按照上面鏈接進行build definition的填寫。然后寫Release definition,release都是一樣的,都是將一個zip傳到azure,azure自動解析其中的app
(4)azure的deploy和前面的C#一樣,系統(tǒng)封裝了底層,給外面一個接口deploy。
原理分析:先本地進行代碼開發(fā),然后提交到VSTS中,VSTS檢測到代碼改變,通過設(shè)定的build找到gulpfile,使用gulp-zip對其進行打包操作,打包成zip,然后扔到Azure的環(huán)境中,Azure檢測到是node項目,自動進行deploy