[轉]使用Jenkins搭建持續集成(CI)環境

轉自:魔のkyo的工做室java

首先從官網http://jenkins-ci.org/下載 Java Web Archive (.war)瀏覽器

例如我保存到 D:\jenkins\jenkins.war服務器

運行Jenkins須要JRE的支持Java5 or latersvn

在命令行下輸入工具

java -jar D:\jenkins\jenkins.warpost

便可啓動jenkins。默認會運行在8080端口,正常啓動完成以下圖測試

Screenshot0 

咱們能夠在瀏覽器輸入127.0.0.1:8080來查看,如圖咱們的Jenkins已經跑起來了ui

Screenshot1

接下來演示如何讓一個SVN的項目和Jenkins關聯起來,如何讓每次上傳都能觸發Jenkins的自動構建,並在構建失敗時經過E-mail發送通知。spa

假設咱們已經有一個名爲Test的SVN項目,路徑爲file:///D:/SVNRepository/Test/trunk插件

內容爲

Screenshot6

首先新建一個Job,咱們就使用第一項「建立一個自由風格的軟件項目」

Screenshot2

點擊OK自動跳轉到配置界面,咱們須要作一下初始化設置,固然這些配置也能夠在後期隨時修改

 

配置源碼管理工具

在源碼管理這裏咱們選擇Subversion(由於咱們使用SVN管理代碼,若是你使用其餘版本管理工具好比Git能夠從官網上得到相應的插件)

在Repository URL除填入咱們的SVN路徑 file:///D:/SVNRepository/Test/trunk

Screenshot3

 

配置構建方法

點擊增長構建步驟,選擇Execute Windows batch command,並輸入

"%VS90COMNTOOLS%..\IDE\devenv.com" "%WORKSPACE%\Test.sln" /Build "Debug|Win32"

Screenshot7

devenv.com是MSVC提供的命令行構建工具。

爲了便於維護也能夠將命令寫在批處理文件中,並將文件簽入到代碼管理系統,在這裏寫上批處理文件的路徑,這樣下次修改構建命令就不須要打開Jenkins的頁面進行配置而能夠直接修改批處理文件。

另外構建是否成功是由構建後的ERRORLEVEL決定的,非0表示失敗,若是要同時構建多個配置版本好比Debug和Release要注意判斷任一版本失敗時中止構建,保持失敗的ERRORLEVEL。

點擊保存,配置就完成了,咱們能夠點擊當即構建,Jenkins就會從配置好的SVN更新代碼,運行構建命令。在Build History會多出一個條目,若是構建成功會是藍色標記,若是構建失敗會是紅色標記。

Screenshot5

 

自動構建

要作到在每次上傳代碼後自動構建,須要在svn的倉庫配置中加入hook。

新建D:\SVNRepository\Test\hooks\post-commit.bat

這個批處理會在每次成功commit以後被自動執行,而後咱們複製下剛纔「當即構建」按鈕的超連接,應該是相似下面這樣

http://127.0.0.1:8080/job/Test/build?delay=0sec

其中參數delay=0sec表示當即構建,若是想延遲構建以減輕服務器壓力,能夠設置delay=120sec之類的。

如今咱們只須要讓批處理訪問這個URL就能夠了,能夠本身寫一個小工具幫助實現,也可使用已有的工具好比wget.exe來作這件事,我就使用wget,在批處理中寫上

%~dp0wget.exe -q http://127.0.0.1:8080/job/Test/build?delay=0sec

由於我把wget.exe放在了和批處理同目錄,因此路徑使用了%~dp0

OK,如今每次成功上傳就會觸發當即構建了。

 

失敗通知

還差最後一步就是構建失敗時的通知,若是使用E-mail進行通知,須要在Jenkins的項目配置中勾選E-mail Notification,並在Recipients中輸入須要接受通知的E-mail地址

Screenshot4

此外若是是第一次配置,那麼還要記得在Jenkins的系統管理-系統設置中對SMTP服務器的相關內容進行配置。

Screenshot9

官網上還提供了自定義郵件內容的插件,甚至還有發佈twitter的插件

插件:https://wiki.jenkins-ci.org/display/JENKINS/Plugins

 

補充:編譯多個版本帶自動測試以及崩潰轉儲的構建批處理

REM 將此.bat放在Solution文件同目錄下
REM 替換下面的<SolutionFile>、<EXEPath>、<EXEFile>、<PDBFile>
 
@echo off
 
"%VS90COMNTOOLS%..\IDE\devenv.com" "%~dp0<SolutionFile>.sln" /build "Release|Win32"
IF %ERRORLEVEL% NEQ 0 goto error
"%VS90COMNTOOLS%..\IDE\devenv.com" "%~dp0<SolutionFile>.sln" /build "Debug|Win32"
IF %ERRORLEVEL% NEQ 0 goto error
 
REM AutoTest
echo Testing...
cd /d <EXEPath>
<EXEFile>.exe -AUTO_TEST
IF NOT ERRORLEVEL 0 (
  echo Test broke with Error^(%ERRORLEVEL%^).
  goto dump
)
 
goto success
 
:dump
FOR /F "delims=" %%i IN ('dir *.dmp /b') DO (
  md %%~ni
  echo Dumping to %%~ni
  move %%~ni.* %%~ni
  copy <EXEFile>.exe %%~ni
  copy <PDBFile>.pdb %%~ni
)
:next
goto error
 
:error
echo Error.
exit 1
goto end
 
:success
echo Success.
exit 0
goto end
 
:end
@echo on
 
 

補充:崩潰時屏蔽崩潰對話框並生成DUMP文件的代碼

相關文章
相關標籤/搜索