转自:魔のkyo的工作室

首先从官网http://jenkins-ci.org/下载 Java Web Archive (.war)

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

运行Jenkins需要JRE的支持Java5 or later

在命令行下输入

java -jar D:\jenkins\jenkins.war

即可启动jenkins。默认会运行在8080端口,正常启动完成如下图

我们可以在浏览器输入127.0.0.1:8080来查看,如图我们的Jenkins已经跑起来了

接下来演示如何让一个SVN的项目和Jenkins关联起来,如何让每次上传都能触发Jenkins的自动构建,并在构建失败时通过E-mail发送通知。

假设我们已经有一个名为Test的SVN项目,路径为file:///D:/SVNRepository/Test/trunk

内容为

首先新建一个Job,我们就使用第一项“创建一个自由风格的软件项目”

点击OK自动跳转到配置界面,我们需要做一下初始化设置,当然这些配置也可以在后期随时修改

配置源码管理工具

在源码管理这里我们选择Subversion(因为我们使用SVN管理代码,如果你使用其他版本管理工具比如Git可以从官网上获得相应的插件)

在Repository URL除填入我们的SVN路径 file:///D:/SVNRepository/Test/trunk

配置构建方法

点击增加构建步骤,选择Execute Windows batch command,并输入

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

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

为了便于维护也可以将命令写在批处理文件中,并将文件签入到代码管理系统,在这里写上批处理文件的路径,这样下次修改构建命令就不需要打开Jenkins的页面进行配置而可以直接修改批处理文件。

另外构建是否成功是由构建后的ERRORLEVEL决定的,非0表示失败,如果要同时构建多个配置版本比如Debug和Release要注意判断任一版本失败时停止构建,保持失败的ERRORLEVEL。

点击保存,配置就完成了,我们可以点击立即构建,Jenkins就会从配置好的SVN更新代码,运行构建命令。在Build History会多出一个条目,如果构建成功会是蓝色标记,如果构建失败会是红色标记。

自动构建

要做到在每次上传代码后自动构建,需要在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地址

此外如果是第一次配置,那么还要记得在Jenkins的系统管理-系统设置中对SMTP服务器的相关内容进行配置。

官网上还提供了自定义邮件内容的插件,甚至还有发布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文件的代码

[转]使用Jenkins搭建持续集成(CI)环境的更多相关文章

  1. 使用Jenkins搭建持续集成(CI)环境

    转自:http://www.cnitblog.com/luckydmz/archive/2012/01/03/77007.html 首先从官网http://jenkins-ci.org/下载 Java ...

  2. Jenkins: 使用Jenkins搭建持续集成(CI)环境

    http://www.cnitblog.com/luckydmz/archive/2012/01/03/77007.html 首先从官网http://jenkins-ci.org/下载 Java We ...

  3. Jenkins+Gitlab搭建持续集成(CI)环境

    利用Jenkins+Gitlab搭建持续集成(CI)环境 Permalink: 2013-09-08 22:04:00 by hyhx2008in intern tags: jenkins gitla ...

  4. 用MSBuild和Jenkins搭建持续集成环境(2)

    http://www.infoq.com/cn/articles/MSBuild-2   作者 Mustafa Saeed Haji Ali ,译者 李剑 发布于 2012年10月23日 | 注意:  ...

  5. CentOS 7 部署Gitlab+Jenkins持续集成(CI)环境

    持续集成概述及运行流程 : 持续集成概述 :持续集成(Continuous integration)持续集成是指开发者在代码的开发过程中 ,可以频繁的将代码部署集成到主干,并进行自动化测试  开发→代 ...

  6. 【K8S】基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持续集成交付环境(环境搭建篇)

    写在前面 最近在 K8S 1.18.2 版本的集群上搭建DevOps环境,期间遇到了各种坑.目前,搭建环境的过程中出现的各种坑均已被填平,特此记录,并分享给大家! 服务器规划 IP 主机名 节点 操作 ...

  7. 三万字无坑搭建基于Docker+K8S+GitLab/SVN+Jenkins+Harbor持续集成交付环境

    写在前面 最近在 K8S 1.18.2 版本的集群上搭建DevOps环境,期间遇到了各种坑.目前,搭建环境的过程中出现的各种坑均已被填平,特此记录,并分享给大家! 文章和搭建环境所需要的yml文件已收 ...

  8. GitLab、Jenkins结合构建持续集成(CI)环境

    1 持续集成 概述及运行流程 1.1 持续集成概述 持续集成概述:持续集成(Continuous integration)持续集成是指开发者在代码的开发过程中,可以频繁的将代码部署集成到主干,并迚程自 ...

  9. 用MSBuild和Jenkins搭建持续集成环境(1)

     http://www.infoq.com/cn/articles/MSBuild-1 你或其他人刚刚写完了一段代码,提交到项目的版本仓库里面.但等一下,如果新提交的代码把构建搞坏了怎么办?万一出现编 ...

随机推荐

  1. Java各种排序算法详解

    排序大的分类可以分为两种:内排序和外排序.在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序.下面讲的排序都是属于内排序. 内排序有可以分为以下几类: (1).插 ...

  2. ExtJs4 基础必备

    认识ExtJs的开发包 下载路径:http://www.sencha.com/products/extjs/download/ 解压有20多兆,别怕,真正运行的没这么大.认识下这个包的文件结构吧. b ...

  3. 【Win 10应用开发】多窗口视图

    Windows App一般情况下,同一时刻只能有一个应用程序实例在运行,为了在特殊需求下可以同时呈现不同的UI,SDK提供了多视图操作支持. 应用程序可以创建新的应用视图,以新的视图为基础可以呈现与主 ...

  4. Android之线程池深度剖析

    1.线程池的引入   引入的好处:   1)提升性能.创建和消耗对象费时费CPU资源   2)防止内存过度消耗.控制活动线程的数量,防止并发线程过多.   使用条件:      假设在一台服务器完成一 ...

  5. 基于Fragment的百度地图框架的使用

    博客:http://blog.csdn.net/developer_jiangqq (一)基本介绍(Fragment和SupportMapFragment): Fragment的使用现在安卓APP开发 ...

  6. 配置 L3 agent - 每天5分钟玩转 OpenStack(99)

    上一节我们介绍了路由服务(Routing)的基本功能,今天教大家如何配置. Neutron 的路由服务是由 l3 agent 提供的. 除此之外,l3 agent 通过 iptables 提供 fir ...

  7. nodejs与javascript中的aes加密

    简介 1.aes加密简单来说,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用.高级加密标准已然成为对称密钥加 ...

  8. OO中,先有对象还是先有类?

    就是问,在面向对象思想里,先有对象还是先有类,乍一看和先有鸡蛋还是先有鸡是一类问题,其实不然!这个问题,在lz考研复试的时候被面试官问过,一模一样,如今又在一个笔试题里看到了类似的题目,眨一下,有人会 ...

  9. 解析ActionResult子类JsonResult

    前言 MVC我是11开始使用的,当时还是在上地软件园一小型互联网公司,当时是MVC2.0+Linq to sql.后来接着学习MVC3,MVC3的出现确实让我有种眼前一亮的感觉,期间我不断的写各种de ...

  10. uploadify上传错误:uncaught exception: call to startUpload failed原因

    这个不是什么tab的问题,而是可能有多个上传的div或者input(含有相同的name或者ID)导致的 如果有两个不同的上传按钮,那么他们的name,id要设置得不一样. <div id='to ...