持續集成是必要的!
希望達到的效果是:開發同事簽入代碼后,對應的站點可以自動實現更新。目前還只在在內部服務器上實現開發環境中的站點更新,不涉及到線上的發布。
目前使用Jenkins實現這樣的持續集成。
准備環境
-
如果機器上沒有Git,需要先安裝下
-
如果機器上沒有安裝過VS,安裝下MSBuild,或者直接在本機拷貝
-
下載Jenkins(用的是Weekly Release,更新比較快),一路安裝,安裝完成后會自動打開localhost:8080,開始啟動(如果啟動過程中出現503錯誤,可以試下重啟Jenkins服務)
-
安裝相關插件(MSBuild Plugin 和 Git Plugin對我們來說是必需的)
Job設置
-
MSBuild設置
在 Jenkins > 系統設置 > Global Tool Configuration 中設置
-
創建一個Job
-
源碼管理配置
設置:Repository URL(Git地址)、Credentials(憑證,https方式的話就是用戶名加密碼,點擊后面的“Add”增加)。
-
構建配置
先需要執行下NuGet還原,下載項目相關的dll,不然無法編譯通過。(如果機器上沒有nuget.exe,需要先載下,C:\Program Files (x86)\NuGet\
是我們nuget.exe的位置)。
cd C:\Program Files (x86)\NuGet\
nuget.exe restore "C:\Program Files (x86)\Jenkins\workspace\Test\****\****.sln"
將Command Line Arguments,設置為:/t:Rebuild /p:Configuration=Release;PublishProfile=GTWL;DeployOnBuild=true
,其中PublishProfile=GTWL
GTWL是項目發布配置文件的名字。
- 構建觸發器配置
如果要實現代碼簽入自動編譯發布需要這樣設置下
同時需要配合上Git服務器的webhook功能,POST的URL設置為,http://jenkins:8080/git/notifyCommit?url=https://git.oschina.net/****/****.git
,這樣代碼一簽入,Git服務器便會請求這個地址,觸發了Job。
也可以直接在瀏覽器上試用下,地址欄直接輸入:http://localhost:8080/git/notifyCommit?url=https://git.oschina.net/****/****.git
,會發現Job確實就執行了。
不過因為我們是內部服務器,Git服務器不方便直接請求,所以只能退而求其次,定時去觸發Job了。下面是每20分鍾執行一次,好像最少是每分鍾一次。
參考資料:
- 用MSBuild和Jenkins搭建持續集成環境:http://www.infoq.com/cn/articles/MSBuild-1
- 園友,Jenkins持續集成 & .NET:http://www.cnblogs.com/capqueen/p/JenkinsOne.html
- 園友,使用jenkins配置.net mvc網站進行持續集成一:http://www.cnblogs.com/jiekzou/p/5255081.html
- hook:http://stackoverflow.com/questions/12794568/how-to-configure-git-post-commit-hook