一.介紹
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