Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Windows 2003系統教程 >> Windows 2003常見問題解答 >> Win2008 R2下使用jenkins搭建vc構建

Win2008 R2下使用jenkins搭建vc構建

日期:2017/1/25 11:49:58      編輯:Windows 2003常見問題解答

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

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

  1、安裝jdk 1.5以上版本

  可以在這裡下載,安裝

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

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

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

  java

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

  2、安裝.net framework 3.5 sp1

  配置jenkins作為windows服務運行時,需要.net framework 2.0及以上版本(4.0以上版本不行),否則會提示如下錯誤:

Win2008 R2下使用jenkins搭建vc構建

  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構建

  3、安裝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命令,驗證是否正確配置了環境變量

  4、安裝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說明配置成功。

  5、安裝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。

  6、安裝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

  7、安裝插件

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

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

Win2008 R2下使用jenkins搭建vc構建

  也可以自己下載插件,在高級選項卡中選擇上傳插件進行安裝。

8、設置

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

Win2008 R2下使用jenkins搭建vc構建

  設置MSBuild

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

Win2008 R2下使用jenkins搭建vc構建

  設置Ant

Win2008 R2下使用jenkins搭建vc構建

  9、配置windows 2008防火牆

Win2008 R2下使用jenkins搭建vc構建

Win2008 R2下使用jenkins搭建vc構建

Win2008 R2下使用jenkins搭建vc構建

 

  10、配置數字簽名環境

  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不再提供免費的時間戳服務,上面的腳本已經把使用時間戳的命令注釋掉

  11、簡單的ant腳本

  Clean all output directories

  簽名可執行程序\dll

  打包可執行程序

  簽名安裝包

  發布

  12、Job配置

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

Win2008 R2下使用jenkins搭建vc構建

Copyright © Windows教程網 All Rights Reserved