Jenkins是一個可擴展的持續集成引擎,Jenkins很是易於安裝和配置,簡單易用,下面開始搭建.net持續集成環境html
Jenkins和SVN安裝這裏就不介紹了web
1、準備工做安全
一、Jenkins中系統管理--》管理插件--》可選插件中找到MSBuild Plugin, 安裝插件 MSBuild Plugin,用來對.net項目的自動編輯用服務器
說明:配置過程當中有些功能須要先安裝一些插件,均可以去管理插件中查找並安裝併發
二、配置MSBuild(系統管理--》Global Tool Configuration(全局工具配置)--》MSBuild安裝)app
參數填寫說明:分佈式
MSBuild Name 只是一個名稱能夠隨便填,但建議填有點意義的名稱,例如:MSBuild_v4.0工具
Path to MSBuild 這個是安裝MSBuild所在的路徑,例如:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe測試
這裏的配置在後面構建(tab)操做中會用到網站
三、Jenkins Location 和 系統管理員郵件地址
系統管理--》系統設置 找到Jenkins Location
四、郵件通知配置(郵件的發送者信息)
郵件通知須要配置兩個地方,一處是在 系統管理 -》系統設置 Extended E-mail Notification,
一處是在每一個job項目配置中的 構建後操做Editable Email Notification節點配置:
須要先下載安裝 Email Extension Plugin 插件
系統管理--》系統設置 找到 Extended E-mail Notification(此插件須要安裝,圖中的部分信息須要點擊 高級 按鈕才能顯示)
上面的配置是郵件的發送者的163郵件信息,說明:
SMTP server(SMTP服務器) :登陸163郵箱進行獲取( 設置--》POP3/SMTP/IMAP)
User Name(用戶名):登陸發送者163郵箱的帳號名稱
Password(密碼):登陸發送者163郵箱的帳號密碼
Default Subject:構建通知:$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS
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: 13pt; 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>構建編號: 第${BUILD_NUMBER}次構建</li>
<li>SVN版本: ${SVN_REVISION}</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>
<li>構建緣由: ${CAUSE}</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"}</td>
</tr>
</table>
</body>
</html>
登陸163郵箱--》設置--》POP3/SMTP/IMAP
開啓 服務POP3/SMTP/IMAP 設置客戶端受權碼
五、每一個job項目 構建後操做 裏面郵件通知的配置(配置郵件接收者的信息),進入配置:
點擊右下角的 Advanced Settings 進入高級設置:
注意須要添加Triggers,沒有添加Triggers就不會發送通知郵件出來,這是一個觸發條件。
主要添加的Triggers有三類:Failure-Any,Success,Unstable (Test Failures),分別對應構建失敗,構建成功,構建不穩定時觸發發送郵件通知。
send to就是指發送給什麼人,默認發送給Developers,也就是對此次構建有過修改動做的人,我通常會選擇Recipient List,就是默認列表中添加的成員郵箱都會被髮送通知郵件。
說明:
Recipient List :接收郵件的郵箱(若是有多個用英文逗號隔開)
Content :發送郵件的模板
2、如今開始進行搭建job
點擊 新建
這裏我選擇 參數化構建過程,添加參數(一個布爾值參數),名稱自定義爲:isAosDeploy,描述也自定義
點擊 源代碼管理(tab)--》選中Subversion,這裏我使用SVN做爲版本控制工具
說明:這裏演示的例子安裝的Jenkins和最終發佈的IIS站點的服務器是同一臺機器,所以是自動編譯後在同機器上拷貝文件操做,相對簡單些。若是是不一樣機器上或者網站是分佈式部署到N個服務器上,那麼就須要用FTP方式上傳拷貝文件,那就須要安裝插件 FTP publisher plugin 或者 Publish Over FTP,這兩種插件使用方式不一樣,這種方式後續再介紹
MSBuilder Version 爲以前配置的 "MSBuild_V4.0"
MSBuild Build File 是 JenkinsWorkplace 工做空間下的項目文件或者工程文件的名稱
/t:Rebuild 表示每次都重建,不使用增量編譯
/t:ResolveReferences;Compile /t:_CopyWebApplication
/p:Configuration=Release 表示編譯Release版本
/property:TargetFrameworkVersion=v4.0 表示編譯的目標是.NET 4.0
/p:WebProjectOutputDir=D:\JenkinsWorkplace\VueDEMO 表示網站發佈文件的輸出路徑(本例沒使用)
/p:OutputPath=D:\JenkinsWorkplace\VueDEMO\bin 表示網站發佈dll的輸出路徑 (本例沒使用)
/p:DeployOnBuild=true 表示啓用編譯併發布
/p:VisualStudioVersion=11.0 表示是VS2012
站點的文件拷貝命令
xcopy D:\JenkinsWorkplace\VueDEMO G:\JenkinsWeb\VueDEMO /s/e/y/exclude:C:\Users\VueDEMO\Desktop\exclude.txt
G:\JenkinsWeb\VueDEMO 拷貝文件到此目錄下
/s 複製目錄和子目錄,除了空的。
/e 複製目錄和子目錄,包括空的。
/y 禁止提示以確認改寫一個現存目標文件(若是文件存在則覆蓋)。
exclude:C:\Users\VueDEMO\Desktop\exclude.txt
/exclude 指定含有字符串的文件列表。若是有任何字符串與要被複制的文件的絕對路徑相符,那個文件將不會獲得複製。例如,指定如 \obj\ 或 .obj 的將會排除目錄 obj 下面的全部文件或帶有.obj 擴展名的文件。
exclude.txt文檔是排除文件或者目錄,若是有排除多種類型的文件或者目錄,則用戶換行分割,如本實例中
排除 .pdb後綴的文件,和 web.config 文件,obj 文件夾,等等
5、Jenkins FTP 上傳文件(自動部署到網站服務器IIS)
下面分兩種方式介紹:
第一種:使用 FTP publisher plugin 插件
第一步:系統管理--》系統設置 找到 FTP repository hosts,新增一個,編輯好,保存
Timeout(ms): 超時時間(毫秒)
第二步:打開Job項目配置
增長構建後操做步驟,選擇 Publish artifacts to FTP
第二種:使用 Publish Over FTP Plugin 插件
第一步:系統管理--》系統設置 找到 Publish over FTP,新增一個,編輯好,保存
Timeout(ms): 超時時間(毫秒)
Use active data mode: (未選中)默認選項使用PASV(被動模式),選中使用PORT (主動模式)
Don't make nested dirs:不建立下級目錄(具體的本身看幫助)
第二步:打開Job項目配置
在項目配置中,能夠從下面兩個地方找到此插件的配置。
構建步驟:Send Files over FTP
構建後操做:Send build artifacts over FTP
增長構建步驟,選擇 Send files over FTP
Exclude files:排除的文件(在你傳輸目錄的時候頗有用,使用通配符,例如:**/*.log, **/*.tmp, VueDEMO/obj/**)
Pattern separator:分隔符(配置Exclude files和Source files的分隔符。若是你這兒更改了,上面的內容也須要更改)
No default excludes:禁止默認的排除規則(具體的本身看幫助)
Make empty dirs:此選項會更改插件的默認行爲。默認行爲是匹配該文件是否存在,若是存在則建立目錄存放。選中此選項會直接建立一個目錄存放文件,即便是空目錄。(我的理解)
Flatten files:只在ftp上創建文件,不建立目錄(除了遠程目錄)
Remote directory is a date format:遠程目錄創建帶日期的文件夾(須要在Remote directory中配置日期格式),具體格式參考下表:
Remote directory |
Directories created |
'qa-approved/'yyyyMMddHHmmss |
qa-approved/20101107154555 |
'builds/'yyyy/MM/dd/'build-${BUILD_NUMBER}' |
builds/2010/11/07/build-456 (if the build was number 456) |
yyyy_MM/'build'-EEE-d-HHmmss |
2010_11/build-Sun-7-154555 |
yyyy-MM-dd_HH-mm-ss |
2010-11-07_15-45-55 |
Clean remote:上傳前會刪除遠程目錄中的全部的文件(血的教訓啊,測試的時候用的是運營小組的ftp,而後一不當心就把他們的數據刪除了,害的我去作數據恢復。)
ASCII mode:文件傳輸的方式,通常默認不選。
增長構建後操做步驟,選擇 Send build artifacts over FTP
配置方式同上