Jenkins+MSbuild+SVN實現dotnet持續集成 快速搭建持續集成環境


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="&nbsp;&nbsp;&nbsp;&nbsp;%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>  
View Code

 

點擊 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="&nbsp;&nbsp;&nbsp;&nbsp;%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>  
View Code

 

到此已經job配置完成,下面來看看 構建結果

構建成功

 

此次測試安裝的插件:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM