Win2008 R2下使用jenkins搭建vc構建

本文的目標是在windows Server 2008 R2中,搭建一個Visual Studio 2010項目的每日構建、發佈環境,實現代碼的自動編譯、打包、數字簽名、發佈,其中使用jenkins做爲每日構建工具,經過MSBuild對VC工程進行編譯,使用nsis(Nullsoft Scriptable Install System)對生成的程序進行打包,而簽名、打包、發佈等整個過程經過ant腳本調度。java

Jenkins是一款Java平臺的開源持續集成(Continuous Integration,CI)軟件。它易於安裝,配置簡單,具備豐富的插件支持和高度的可擴展性,可用於監控重複做業運行狀況,如持續集成、每日構建等。Windows下的jenkins須要安裝jdk、.net framework環境。c++

一、安裝jdk 1.5以上版本apache

能夠在這裏下載,安裝編程

在環境變量中設置JAVA_HOME,值爲jdk安裝目錄windows

把%JAVA_HOME%/bin加到系統的path路徑中瀏覽器

新打開一個命令行窗口,輸入:服務器

java編程語言

回車,有幫助信息則說明JDK配置成功。svn

二、安裝.net framework 3.5 sp1工具

配置jenkins做爲windows服務運行時,須要.net framework 2.0及以上版本(4.0以上版本不行),不然會提示以下錯誤:

Windows Server 2008 R2 SP1中不容許直接安裝下載的.net framework 3.5文件,運行時會報錯「必須用‘角色管理工具’安裝或配置Microsoft .NET Framework 3.5」。其實在Windows Server 2008 R2 SP1下已經集成了.NET Framework 3.5.1,只須要在管理界面打開就好了,步驟以下:

服務器管理器=>功能>添加功能

轉播到騰訊微博

Win2008 R2下使用jenkins搭建vc構建

選擇.NET Framework 3.5.1 功能,在添加功能嚮導中,點擊添加所需的角色服務,而後一直下一步進行安裝便可

轉播到騰訊微博

Win2008 R2下使用jenkins搭建vc構建

三、安裝nsis(Nullsoft Scriptable Install System)

NSIS(Nullsoft Scriptable Install System)是一個開源的 Windows 下安裝程序製做工具,它提供了安裝、卸載、系統設置、文件解壓縮等功能。就像它名字裏所說的那樣,NSIS 是經過它的腳本語言來描述安裝程序的行爲和邏輯,NSIS 的腳本語言和一般的編程語言有相似的結構和語法。 咱們將在ant腳本中,調用NSIS的makensis.exe執行咱們編寫的nsi腳本,對程序進行打包。

到http://nsis.sourceforge.net/Download 下載最新版本的NSIS,並進行安裝;項目中使用到了processwork.dll插件,注意要放到對應的plugins目錄下

注意須要在系統的環境變量PATH中,增長NSIS的安裝目錄以及下面的bin目錄

能夠在命令行中運行makensis命令,驗證是否正確配置了環境變量

四、安裝ant

Apache Ant是一個將軟件編譯、測試、部署等步驟聯繫在一塊兒加以自動化的一個工具,咱們在這裏使用ant腳本統一調度其餘軟件,進行數字簽名、打包、發佈等。

a.下載

在http://ant.apache.org/bindownload.cgi 下載最新壓縮包,如apache-ant-1.8.3-bin.zip ,解壓到d:\ant便可。

b.ant的配置

1) 在環境變量中設置ANT_HOME,值爲ANT安裝目錄d:\ant

2) 把%ANT_HOME%/bin,%JAVA_HOME%/bin加到你係統的path目錄中去。

c.測試是否成功

新打開一個命令行窗口,輸入:

ant -version

回車,看到輸出ant說明配置成功。

五、安裝MSBuild 4.0

Microsoft Build Engine (MSBuild) 是 Microsoft 和 Visual Studio 的新的生成平臺。MSBuild 在如何處理和生成軟件方面是徹底透明的,使開發人員可以在未安裝 Visual Studio 的生成實驗室環境中組織和生成產品。

能夠經過安裝對應版本的.net framework來安裝MSBuild,須要安裝的是.net framework 4.0。

由於編譯的是vc++的程序,依賴於C運行時庫,因此還須要安裝sdk,在這裏下載Windows SDK for windows 7 and .Net Framework 4

安裝整個MSBuild 4.0比較複雜,簡單起見,能夠安裝vs2010整個開發開發環境,這裏就是安裝了整個vs2010。

六、安裝jenkins

下載最新版本的jenkins,存放到待安裝目錄,如d:\jenkins

在命令行中運行以下命令,指定 -D參數,這樣就能夠把jenkins的home目錄指定到d:\jenkins(注意在windows Server 2008 中,須要以管理員身份運行)

java -DHUDSON_HOME=D:\jenkins -jar jenkins.war

啓動後,在瀏覽器中就能夠經過http://localhost:8080來訪問了,而後能夠配置jenkins做爲windows服務運行

在系統管理中,選擇「Install as Windows Service」,並指定路徑,由於剛纔已經使用-D參數指定了路徑,在這裏選擇默認路徑便可,安裝完成後會提示從新啓動。

Win2008 R2下使用jenkins搭建vc構建

這樣jenkins就能夠做爲一個服務隨Windows啓動了,也能夠經過命令行啓動和中止,如:net start jenkins,net stop jenkins

七、安裝插件

jenkins具備豐富的插件,擴展jenkins的功能,對於剛安裝的jenkins,須要先獲取插件資料,才能夠在線安裝、更新插件。在系統管理=>管理插件中,點擊高級選項卡,點擊當即獲取,檢查更新信息。檢查完成後,就能夠看到最新的插件信息。已安裝選項卡中列出jenkins中已經安裝的插件,而更新選項卡中,則列出能夠更新的插件,在這裏選擇安裝MSBuild插件,以便hudson能夠調用msbuild。

選中當安裝成功而且沒有運行中的任務時重啓jenkins,點擊簽名的綠色箭頭,則安裝完成後,若是沒有運行的任務,則會從新啓動jenkins,使插件生效

轉播到騰訊微博

Win2008 R2下使用jenkins搭建vc構建

也能夠本身下載插件,在高級選項卡中選擇上傳插件進行安裝。

八、設置

系統管理=>系統設置中設置jdk

設置MSBuild

在系統設置裏,設置MSBuild,以下圖,path to MSBuild中,設置完整的msbuild路徑;同時注意把MSBuild目錄,添加到系統的path路徑裏面

設置Ant

九、配置windows 2008防火牆

轉播到騰訊微博

Win2008 R2下使用jenkins搭建vc構建

轉播到騰訊微博

Win2008 R2下使用jenkins搭建vc構建

轉播到騰訊微博

Win2008 R2下使用jenkins搭建vc構建

十、配置數字簽名環境

SignCode是微軟在.NET Framework SDK 1.0 和 1.1 版中提供的一個數字簽名工具,使用 Authenticode 數字簽名對可移植可執行 (PE) 文件(.dll 或 .exe 文件)進行簽名。可是使用SignCode進行簽名時,須要人工參與進來,手工輸入key\密碼等信息,不能在ant腳本里面調用。有人寫了個程序signcode-pwd,容許在命令行中調用SingCode,能夠在http://www.stephan-brenner.com/?page_id=9下載signcode-pwd.zip文件。

壓縮包中包括三個文件:signcode-pwd.exe、sign-with-pwd.bat、版本說明。Signcode-pwd.exe能夠將SignCode.exe用到的密碼存爲一個密碼文件,sign-with-pwd.bat調用SignCode.exe、sighcode-pwd.exe,自動在進行簽名時爲SignCode.exe填寫密碼,從而實現不須要人工參與的進行數字簽名。

Signcode-pwd中須要使用包含軟件發佈證書的 SPC 文件和包含私鑰的私鑰的.pvk文件,能夠在這裏找到如何在不一樣格式的證書之間轉換的方法。

注意:須要使用時間戳服務器進行簽名時,必定要保證能連上互聯網,不然因爲沒法訪問時間戳服務器而失敗。

注意:不能僅簽名NSIS打包後的文件,應該對包含的全部DLL文件都要先簽名後再打包,再簽名打包的文件,不然IE瀏覽器會顯示爲「未驗證的發行者」而影響正常使用,甚至殺毒軟件會認爲是病毒而被刪除!

首先用sign-code-pwd.exe生成密碼文件myPassword.pwd

sign-code-pwd.exe -e myPassword.pwd testpassword

sign-with-pwd.bat是一個批處理文件,須要修改文件,指定SignCode.exe、Signcoe-pwd.exe的路徑,指定spc、pvk證書文件、密碼文件、時間戳服務器等信息,以下:

@echo off

rem

rem TODO: Modify this constants before using

rem

set strFile=%1

set strSignCode=D:\signtool\signcode.exe

set strSignCodePwd=D:\signtool\signcode-pwd.exe

rem spc、pvk證書文件

set strSpc=D:\signtool\mycert.spc

set strPvk=D:\signtool\mykey.pvk

rem 剛剛生成的密碼文件

set strPwd=D:\signtool\myPassword.pwd

rem wosign的時間戳

set strTimeStampUrl=http://timestamp.wosign.com/timestamp

echo Start signcode-pwd.exe

%strSignCodePwd% -f %strPwd%

echo Execute signcode.exe

rem echo %strSignCode% %strFile% -spc %strSpc% -v %strPvk% -a sha1 -t %strTimeStampUrl%

rem %strSignCode% %strFile% -spc %strSpc% -v %strPvk% -a sha1 -t %strTimeStampUrl%

%strSignCode% %strFile% -spc %strSpc% -v %strPvk% -a sha1

if errorlevel 0 goto end_success

end_error

echo Error occured while signing

%strSignCodePwd% -t

rem exit 1

end_success

echo Singing was successfully

%strSignCodePwd% -t

這樣,咱們就可使用sign-with-pwd.bat對文件進行簽名了,例如

sign-with-pwd.bat D:\test\Release\test.dll

另外,也直接可使用signtool.exe進行數字簽名,腳本以下:

@echo off

rem

rem TODO: Modify this constants before using

rem

set strFile=%1

set strSignCode=D:\signtool\signtool.exe

set strPfx=D:\signtool\mysign.pfx

set strPwd=helloworldx

set strTimeStampUrl=http://timestamp.wosign.com/timestamp

echo Execute signtool.exe

rem %strSignCode% sign /f %strPfx% /p %strPwd% /t %strTimeStampUrl% %strFile%

%strSignCode% sign /f %strPfx% /p %strPwd% %strFile%

if errorlevel 1 goto :end_error

if errorlevel 0 goto :end_success

end_error

echo Error occured while signing

Goto :eof

end_success

echo Singing was successfully

注意:如今wosign再也不提供免費的時間戳服務,上面的腳本已經把使用時間戳的命令註釋掉

十一、簡單的ant腳本

Clean all output directories

簽名可執行程序\dll

打包可執行程序

簽名安裝包

發佈

十二、Job配置

下面就能夠進行配置job了,在svn中下載代碼,而後用msbuild編譯程序,再用ant腳本進行簽名、打包、發佈。

轉播到騰訊微博

Win2008 R2下使用jenkins搭建vc構建

相關文章
相關標籤/搜索