一.介紹
Visual Studio Team Service逞力,簡稱VSTS,是微軟開發(fā)的一套集代碼管理曙寡,build,release寇荧,deploy举庶,以及連接Azure自動(dòng)部署和集成的工具,非常好用砚亭。
進(jìn)入官網(wǎng)灯变,注冊(cè)/登錄MSA賬號(hào)殴玛,這時(shí)候會(huì)有一個(gè)主頁捅膘,讓你輸入visualstudio.com的前綴進(jìn)行注冊(cè)。
二.VSTS的功能講解
1.代碼倉庫
VSTS可以作為代碼倉庫使用滚粟,而且里面可以自定義權(quán)限寻仗,那些人可以看那些人不可以看。其實(shí)teamService就是團(tuán)隊(duì)服務(wù)的意思凡壤,本質(zhì)上是為團(tuán)隊(duì)服務(wù)的署尤。只是現(xiàn)在你一個(gè)人建立的話那就是你的私人團(tuán)隊(duì)。
使用很方便亚侠,新建一個(gè)project就行了曹体,不管你用的什么編譯器或者IDE,使用和git一樣
2.團(tuán)隊(duì)任務(wù)日志
既然是為團(tuán)隊(duì)服務(wù)硝烂,而且有代碼倉庫功能箕别,name這個(gè)工具完全可以作為團(tuán)隊(duì)的任務(wù)工具,當(dāng)然做我自己的也未嘗不可滞谢。
在
這個(gè)圖中串稀,可以看到Work,這個(gè)work就是團(tuán)隊(duì)任務(wù)面板狮杨,
面板中有新的任務(wù)母截,活動(dòng)中任務(wù),等待處理的任務(wù)橄教,和關(guān)閉的任務(wù)清寇。這些任務(wù)可以進(jìn)行分類喘漏,比如是bug還是task等等,方便區(qū)分华烟。
而且陷遮,重要的是,任務(wù)可以和代碼進(jìn)行綁定
比如新建一個(gè)代碼任務(wù)垦江,可以直接在這個(gè)任務(wù)下新建分支帽馋,name遠(yuǎn)端就會(huì)開出一個(gè)分支,然后clone下來比吭,本地也切換到這個(gè)分支绽族,完成后push上去,并且pull request衩藤,approval后這個(gè)branch就是消失吧慢。這一整套流程在Work中都可見,并且每一個(gè)代碼哪一步改動(dòng)也都知道赏表。
3.自動(dòng)build检诗,自動(dòng)部署,持續(xù)集成(CI)瓢剿,持續(xù)部署(CD)
build
見第一張圖中的Build&Release逢慌,就是部署和發(fā)布的選項(xiàng)了。
對(duì)于build间狂,首先需要新建一個(gè)build Definitions攻泼,可以選擇一個(gè)模板,但是大多采用empty模板鉴象,這樣可以定制忙菠。
選擇模板后就看需要對(duì)你的代碼做什么了,需要終端操作纺弊,需要vsbuild牛欢?都可以有組件支持,只需要把參數(shù)弄對(duì)就行淆游。
我的一個(gè)模板:
這是一個(gè)asp.net core項(xiàng)目的模板傍睹,具體我會(huì)距離來說怎么一步一步創(chuàng)建這個(gè)模板。
在Triggers中將CI持續(xù)集成點(diǎn)上
release
同build一樣稽犁,release也有一個(gè)release Definition焰望,同樣也是有模板提供,可以自己選擇發(fā)布的對(duì)象已亥,一般都是在Azure上面熊赖。
具體的配置后面再提。
4.敏捷開發(fā)
話說開發(fā)嘛虑椎,測(cè)試先行震鹉,測(cè)試驅(qū)動(dòng)開發(fā)俱笛,模塊開發(fā)。VSTS中传趾,如果build中有test模塊迎膜,也是能夠進(jìn)行自動(dòng)化測(cè)試的。
4.使用步驟
(1)創(chuàng)建project
(2)對(duì)project創(chuàng)建build definition和release definition浆兰,如果需要azure磕仅,則在Azure中創(chuàng)建好相應(yīng)的資源
(3)創(chuàng)建需求,并且在work中寫好要完成什么任務(wù)
(4)遠(yuǎn)程創(chuàng)建分支簸呈,clone下來榕订,并且本地切換到同名分支。
(5)代碼寫好后push上去蜕便,然后pull request
(6)code review之后合并到主干劫恒,系統(tǒng)會(huì)自動(dòng)build,自動(dòng)release轿腺,deploy到azure
(7)分支關(guān)閉
四.距離兩種項(xiàng)目的持續(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
一開始沒用空模板两嘴,總是出錯(cuò),后來使用空模板族壳,然后按照這篇指南一步一步做憔辫,就好了。
這里注意决侈,vs2015和vs2017有些不同螺垢,release和any cpu后面的框框也要打上勾
(2)再release definition
這時(shí)候我就直接選擇了模板喧务,第一個(gè)
同時(shí)可以參考這篇指南 Implement continuous deployment of your app to an Azure web site
在一個(gè)release中部署多個(gè)app server也在這篇文章中
上面這個(gè)是最簡單的赖歌,畢竟所有的東西都是微軟的,并且是當(dāng)前最主流的做法功茴,所以沒有遇到很大的困難庐冯。
2.node.js+gulp+azure web app
參考網(wǎng)站Define a continuous integration build for your Node.js app
首先和上面.net項(xiàng)目一樣,創(chuàng)建新的project坎穿,建分支展父,clone。
(1)新建一個(gè)nodejs工程玲昧,可以用上面這個(gè)模板栖茉,也可以自己建立。記得將gulp文件和web.config放進(jìn)去孵延,記得在package.json中配置gulp和gulp-zip
(2)進(jìn)入自己的VSTS吕漂,創(chuàng)建一個(gè)空的build definition。在Azure中也創(chuàng)建一個(gè)web app
這里官網(wǎng)有一個(gè)坑尘应,把cpy publish Artifact :drop寫錯(cuò)了惶凝,并且還寫成了可選吼虎,其實(shí)是必選,而且名字也不對(duì)苍鲜。
正確的圖如下:
(3)按照上面鏈接進(jìn)行build definition的填寫思灰。然后寫Release definition,release都是一樣的混滔,都是將一個(gè)zip傳到azure洒疚,azure自動(dòng)解析其中的app
(4)azure的deploy和前面的C#一樣,系統(tǒng)封裝了底層坯屿,給外面一個(gè)接口deploy拳亿。
原理分析:先本地進(jìn)行代碼開發(fā),然后提交到VSTS中愿伴,VSTS檢測(cè)到代碼改變肺魁,通過設(shè)定的build找到gulpfile,使用gulp-zip對(duì)其進(jìn)行打包操作隔节,打包成zip鹅经,然后扔到Azure的環(huán)境中,Azure檢測(cè)到是node項(xiàng)目怎诫,自動(dòng)進(jìn)行deploy