zoukankan      html  css  js  c++  java
  • Win2008 R2下使用jenkins搭建vc构建

    本文的目标是在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以上版本不行),否则会提示如下错误:

    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

    设置MSBuild

    在系统设置里,设置MSBuild,如下图,path to MSBuild中,设置完整的msbuild路径;同时注意把MSBuild目录,添加到系统的path路径里面

    设置Ant

    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:signtoolsigncode.exe

    set strSignCodePwd=D:signtoolsigncode-pwd.exe

    rem spc、pvk证书文件

    set strSpc=D:signtoolmycert.spc

    set strPvk=D:signtoolmykey.pvk

    rem 刚刚生成的密码文件

    set strPwd=D:signtoolmyPassword.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: estRelease est.dll

    另外,也直接可以使用signtool.exe进行数字签名,脚本如下:

    @echo off

    rem

    rem TODO: Modify this constants before using

    rem

    set strFile=%1

    set strSignCode=D:signtoolsigntool.exe

    set strPfx=D:signtoolmysign.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构建

  • 相关阅读:
    PostgreSQL在何处处理 sql查询之六十
    我对 PostgreSQL tidscan的理解
    PostgreSQL在何处处理 sql查询之五十九
    在PostgreSQL中,如何模拟Oracle的hint效果
    PostgreSQL在何处处理 sql查询之六十一
    PostgreSQL在何处处理 sql查询之五十八
    各种JOIN的理解
    对PostgreSQL源代码中的is_pushed_down的理解
    国外主流PHP框架比较
    图解什么是Web2.0
  • 原文地址:https://www.cnblogs.com/happysky97/p/3256971.html
Copyright © 2011-2022 走看看