Jenkins是一個可擴展的持續集成引擎,Jenkins非常易於安裝和配置,簡單易用,下面開始搭建dotnet持續集成環境
一、准備工作
1、系統管理--》管理插件--》可選插件中找到MSBuild Plugin, 安裝插件 MSBuild Plugin
2、配置MSBuild(系統管理--》Global Tool Configuration--》MSBuild安裝)
參數填寫說明:
MSBuild Name 只是一個名稱可以隨便填,但建議填有點意義名稱,例如:MSBuild_v4.0
Path to MSBuild 這個是安裝MSBuild所在的路徑,例如:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe
3、郵件通知配置(郵件的發送者信息)
郵件通知需要配置兩個地方,一處是在系統設置,一處是在job配置中的 構建后操作 Extended E-mail Notification與E-mail Notification節點配置:
系統管理--》系統設置 找到 Extended E-mail Notification(此插件需要安裝,圖中的部分信息需要點擊 高級 按鈕才能顯示)
郵件通知節點配置(圖中的部分信息需要點擊 高級 按鈕才能顯示):
上面的配置是郵件的發送者的163郵件信息
說明:
SMTP server(SMTP服務器) :登錄163郵箱進行獲取( 設置--》POP3/SMTP/IMAP)
User Name(用戶名):登錄163郵箱的賬號名稱
Password(密碼):163郵箱的 客戶端授權碼
登錄163郵箱--》設置--》POP3/SMTP/IMAP
開啟 服務POP3/SMTP/IMAP
選中上圖的 開啟 獲得 授權碼 此授權碼就是 配置郵件通知時的密碼
設置客戶端授權碼成功:
系統管理員郵件地址配置 可以不配置:
job里面郵件通知的配置(配置郵件接收者的信息)
進入配置:
default Content 為郵件模板:

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次構建日志</title> </head> <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0"> <table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif"> <tr> <td><br /> <b><font color="#0B610B">構建信息</font></b> <hr size="2" width="100%" align="center" /></td> </tr> <tr> <td> <ul> <li>項目名稱 : ${PROJECT_NAME}</li> <li>項目描述:${JOB_DESCRIPTION}</li> <li>構建編號 : 第${BUILD_NUMBER}次構建</li> <li>SVN 版本: ${SVN_REVISION}</li> <li>觸發原因: ${CAUSE}</li> <li>構建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li> <li>構建 Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li> <li>工作目錄 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li> <li>項目 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li> </ul> </td> </tr> <tr> <td><b><font color="#0B610B">變更集</font></b> <hr size="2" width="100%" align="center" /></td> </tr> <tr> <td>${JELLY_SCRIPT,template="html"}<br/> <hr size="2" width="100%" align="center" /></td> </tr> <tr> <td> <ul> <li>歷史變更記錄 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li> </ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat=" %p"} </td> </tr> <tr> <td><b>Failed Test Results</b> <hr size="2" width="100%" align="center" /></td> </tr> <tr> <td><pre style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">$FAILED_TESTS</pre> <br /></td> </tr> <tr> <td><b><font color="#0B610B">構建日志 (最后 9999999行):</font></b> <hr size="2" width="100%" align="center" /></td> </tr> <!-- <tr> <td>Test Logs (if test has ran): <a href="${PROJECT_URL}ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip">${PROJECT_URL}/ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip</a> <br /> <br /> </td> </tr> --> <tr> <td><textarea cols="500" rows="100" readonly="readonly" style="font-family: Courier New">${BUILD_LOG, maxLines=9999999}</textarea> </td> </tr> </table> </body> </html>
點擊 advanced settings 進入高級設置:
這里選擇了成功和失敗的情況下發送:
現在開始進行搭建job
點擊 新建
進入下圖的界面:
點擊 OK 按鈕后 進入一下頁面
到處一個新的 job就新建完成了,下面開始配置job
點擊 源代碼管理(tab)--》選中Subversion
添加登錄SVN賬號和密碼
最后 源代碼管理(tab) 配置為:
構建觸發器(tab)此項是設置間隔多長時間去檢查一次SVN的代碼有沒有變化,如果有變化則重新編譯
構建環境(tab) 未研究此項配置有何作用,使用默認的,不做任何修改
構建(tab)此項設置編譯方式、將站點文件拷貝到iis的站點目錄下發布站點
說明:
/t:ResolveReferences;Compile /t:_CopyWebApplication /p:Configuration=Release /property:TargetFrameworkVersion=v4.0 /p:WebProjectOutputDir=D:\Jenkins_Publish\DEV_Metadata /p:OutputPath=D:\Jenkins_Publish\DEV_Metadata\bin
MSBuilder Version 為之前配置的 "MSBuild V4.0"
MSBuild Build File 是項目文件或者工程文件的名稱
/t:Rebuild 表示每次都重建,不使用增量編譯
/property:Configuration=Release 表示編譯Release版本,
/p:WebProjectOutputDir=E:\Jenkins_Publish\DEV_Metadata表示網站發布文件的輸出路徑
/p:OutputPath=E:\Jenkins_Publish\DEV_Metadata\bin 表示項目Dll輸出路徑
/property:TargetFrameworkVersion=v4.0表示編譯的目標是.NET 4.0
xcopy d:\Jenkins_Publish d:\JenkinsWeb /s/e/y/exclude:C:\Users\jie\Desktop\exclude.txt 站點的文件拷貝命令
d:\Jenkins_Publish 要拷貝的文件目錄
d:\JenkinsWeb 拷貝文件到此目錄下
/s 復制目錄和子目錄,除了空的。
/e 復制目錄和子目錄,包括空的。
/y 禁止提示以確認改寫一個現存目標文件(如果文件存在則覆蓋)。
/exclude:C:\Users\jie\Desktop\exclude.txt /exclude 指定含有字符串的文件列表。如果有任何字符串與要被復制的文件的絕對路徑相符,那個文件將不會得到復制。例如,指定如 \obj\ 或 .obj 的字符串會排除目錄 obj 下面的所有文件或帶有.obj 擴展名的件。exclude.txt文檔是排除文件或者目錄,如果有排除多種類型的文件或者目錄,則用戶換行分割
排除 .pdb后綴的文件,和web.config 文件
構建后操作(tab) 此項主要是配置郵件通知 將編譯情況發送給開發者
編譯錯誤時發送通知:
編譯成功時發送郵件通知:
說明:
Recipient List :接收郵件的郵箱(如果有多個用英文逗號隔開)
Content :發送郵件的模板

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次構建日志</title> </head> <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0"> <table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif"> <tr> <td><br /> <b><font color="#0B610B">構建信息</font></b> <hr size="2" width="100%" align="center" /></td> </tr> <tr> <td> <ul> <li>項目名稱 : ${PROJECT_NAME}</li> <li>項目描述:${JOB_DESCRIPTION}</li> <li>構建編號 : 第${BUILD_NUMBER}次構建</li> <li>SVN 版本: ${SVN_REVISION}</li> <li>觸發原因: ${CAUSE}</li> <li>構建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li> <li>構建 Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li> <li>工作目錄 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li> <li>項目 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li> </ul> </td> </tr> <tr> <td><b><font color="#0B610B">變更集</font></b> <hr size="2" width="100%" align="center" /></td> </tr> <tr> <td>${JELLY_SCRIPT,template="html"}<br/> <hr size="2" width="100%" align="center" /></td> </tr> <tr> <td> <ul> <li>歷史變更記錄 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li> </ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat=" %p"} </td> </tr> <tr> <td><b>Failed Test Results</b> <hr size="2" width="100%" align="center" /></td> </tr> <tr> <td><pre style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">$FAILED_TESTS</pre> <br /></td> </tr> <tr> <td><b><font color="#0B610B">構建日志 (最后 9999999行):</font></b> <hr size="2" width="100%" align="center" /></td> </tr> <!-- <tr> <td>Test Logs (if test has ran): <a href="${PROJECT_URL}ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip">${PROJECT_URL}/ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip</a> <br /> <br /> </td> </tr> --> <tr> <td><textarea cols="500" rows="100" readonly="readonly" style="font-family: Courier New">${BUILD_LOG, maxLines=9999999}</textarea> </td> </tr> </table> </body> </html>
到此已經job配置完成,下面來看看 構建結果
構建成功
此次測試安裝的插件: