Jenkins+MSbuild+SVN實現快速搭建.net持續整合環境(構建、編輯、部署到伺服器)

來源:互聯網
上載者:User

標籤:自動部署   idg   準備工作   files   mrp   width   作用   win   any   

Jenkins是一個可擴充的持續整合引擎,Jenkins非常易於安裝和配置,簡單易用,下面開始搭建.net持續整合環境

Jenkins和SVN安裝這裡就不介紹了

一、準備工作

1、Jenkins中系統管理--》管理外掛程式--》可選外掛程式中找到MSBuild Plugin, 安裝外掛程式 MSBuild Plugin,用來對.net項目的自動編輯用

    說明:配置過程中有些功能需要先安裝一些外掛程式,都可以去管理外掛程式中尋找並安裝

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

這裡的配置在後面構建(tab)操作中會用到

3、Jenkins Location 和 系統管理員郵件地址

系統管理--》系統設定 找到Jenkins Location

 

4、郵件通知配置(郵件的寄件者資訊)

郵件通知需要配置兩個地方,一處是在 系統管理 -》系統設定 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    設定用戶端授權碼 

5、每個job項目 構建後操作 裡面郵件通知的配置(配置郵件接收者的資訊),進入配置:

  

 點擊右下角的 Advanced Settings 進入進階設定:

注意需要添加Triggers,沒有添加Triggers就不會發送通知訊息出來,這是一個觸發條件。

主要添加的Triggers有三類:Failure-Any,Success,Unstable (Test Failures),分別對應構建失敗,構建成功,構建不穩定時觸發發送郵件通知。

send to就是指發送給什麼人,預設發送給Developers,也就是對這次構建有過修改動作的人,我一般會選擇Recipient List,就是預設列表中添加的成員郵箱都會被發送通知訊息。

 

說明:

Recipient List :內送郵件的郵箱(如果有多個用英文逗號隔開)

Content :發送郵件的模板

 二、現在開始進行搭建job

點擊 建立

  點擊 OK 按鈕後 進入一下頁面,

這裡我選擇 參數化構建過程,添加參數(一個布爾值參數),名稱自訂為:isAosDeploy,描述也自訂

 

 點擊 原始程式碼控制(tab)--》選中Subversion,這裡我使用SVN作為版本控制工具

  添加登入SVN帳號和密碼 構建觸發器(tab)此項是設定間隔多長時間去檢查一次SVN的代碼有沒有變化,如果有變化則重新編譯 構建環境(tab) 未研究此項配置有何作用,使用預設的,不做任何修改 構建(tab) 此項設定自動編譯方式、並將編譯後的網站檔案拷貝到伺服器IIS的網站目錄下,注意這步很重要,如果不配置這步那麼只能完成項目的構建操作,而並沒有將構建後的 JenkinsWorkplace 工作空間下的項目進行自動編譯並自動部署發布到服務端IIS上完成此步操作需要先去安裝外掛程式 MSBuild Plugin 

說明:這裡示範的例子安裝的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

 D:\JenkinsWorkplace\VueDEMO 要拷貝的檔案目錄

G:\JenkinsWeb\VueDEMO 拷貝檔案到此目錄下

/s 複製目錄和子目錄,除了空的。

/e 複製目錄和子目錄,包括空的。

/y 禁止提示以確認改寫一個現存目標檔案(如果檔案存在則覆蓋)。

exclude:C:\Users\VueDEMO\Desktop\exclude.txt

/exclude 指定含有字串的檔案清單。如果有任何字串與要被複製的檔案的絕對路徑相符,那個檔案將不會得到複製。例如,指定如 \obj\ 或 .obj 的將會排除目錄 obj 下面的所有檔案或帶有.obj 副檔名的檔案。

exclude.txt文檔是排除檔案或者目錄,如果有排除多種類型的檔案或者目錄,則使用者換行分割,如本執行個體中

 

排除 .pdb尾碼的檔案,和 web.config 檔案,obj 檔案夾,等等

構建後操作(tab) 此項主要是配置郵件通知 將編譯情況發送給開發人員,前面已經介紹過 到此已經job配置完成,下面來看看 構建結果 由於構建記錄太長了,這裡我只截取關鍵區段展示出來   三、帳號使用權限設定系統管理--》全域安全配置  
 四、手動安裝的外掛程式如下

MSBuild Plugin

Build Timeout

Email Extension Plugin

Publish Over FTP

FTP publisher plugin

五、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

配置方式同上

 

 

 

  

Jenkins+MSbuild+SVN實現快速搭建.net持續整合環境(構建、編輯、部署到伺服器)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.