因爲某些歷史問題,最近終於能夠從java中解脫出來,繼續耕耘.Net了,第一步就是把以前的java項目翻成.net。以前已經實現過一次,翻起來仍是比較快的(固然基礎架構/實體模型已經從新思考並改進),並且測試也在跟進,因此一天要發無數次版本,還要考慮開發環境、測試環境,總髮布出錯,甚是心累。因而下決心改善效率,以上爲背景。html
看了不少文章,最終決定使用Jenkins。如下是我整個配置的記錄:java
Platform: .Net4.5git
IDE: Visual Studio 2015 & MsBuildweb
包管理:NuGetwindows
版本控制:TFS-git服務器
服務器: windows 2012 R2(IIS8)架構
其餘: webdeploy工具
參考文章:http://blog.couchbase.com/2016/january/continuous-deployment-with-jenkins-and-.net測試
在https://jenkins.io/index.html 下載windows版本,按照步驟安裝,安裝好以後,jenkins管理地址默認爲 http://localhost:8080ui
除了安裝IIS必要的功能,注意勾選 web服務器->管理工具 中 除"IIS6 管理兼容性"的功能
下載地址 http://www.iis.net/downloads/microsoft/web-deploy ,注意必定要勾選 IIS Deployment Handler ,不然使用PublishProfile時會報404錯誤
安裝好以後,你的IIS服務器會多出來 Management Service,點進去,修改配置
這個就很少說了,不少地方都有
地址 https://www.microsoft.com/en-us/download/details.aspx?id=48159 。這裏安裝的只是精簡版的MsBuild,若是有VS的全量版那是最好不過,後面build的時候就知道有多坑了==!
若是隻裝這個MsBuild,要將你開發機器上的 MsBuild\Microsoft\VisualStudio 文件夾拷貝到服務器上相應的文件夾,不然編譯MVC項目時會報錯(Target找不到)
一樣是build時候用到(error : Can't find the valid AspnetMergePath),你能夠安裝或者直接拷貝,把文件夾C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A 拷貝到目標服務器相應目錄
步驟:a) 打開jenkins http://localhost:8080
b) 找到Manage Jenkins->Manage Plugins->可選插件
c) 搜索插件並安裝
配置:以下圖
注意配置 Git plugin 中的 Global Config user.name和user.email
我這裏就直接貼出來了,也比較簡單
說明:MsBuild配置中有額外選項,這裏貼出來,/p:DeployOnBuild=true;PublishProfile=backend /p:Configuration=Release /p:AspnetMergePath="C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools"
PublishProfile就是VS中指定的發佈配置名稱,後面的AspnetMergePath用於解決上面MsTools的報錯
注意:1. 你配置的路徑最好不要過深,微軟限制了路徑最大長度266,到時候會悲劇的==!
2. 若是Git認證憑據填寫在URL中,用戶名/密碼不能夠包含特殊字符,不然會被encode致使拉取失敗。建議不要配置在URL中,本文這樣配置是由於GIT服務器爲TFS,不支持Credential
VS項目中新建配置文件,選擇Web Deploy,而後指定Server/Site name/User name/Password/Destation URL ,配好以後點擊一下Validate Connection,經過就成功啦!
配置保存以後,打開相應的pubxml文件,加上如下這兩行:
<Password>your password</Password>
<AllowUntrustedCertificate>True</AllowUntrustedCertificate>
好了,到這裏一個.Net MVC項目自動構建就基本弄好了,進入jenkins,找到剛纔配置的項目,點擊 當即構建。
構建會按照 git拉取->nuget 還原->build-> deploy->send email這個順序執行,點擊Console output能夠看到詳細的執行過程,很長我就不貼出來了。有時間再寫一下 windows 服務的自動構建。
如今部署仍是很爽的,一鍵完成,No Errors!