个人环境搭建——搭建jenkins持续构建集成环境

---恢复内容开始---

搭建jenkins持续构建集成环境

 要搭建jenkins持续构建集成环境,首先要安装tomcat和JDK;

 

第一部分,基本说明:

 

敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。

它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。

持续集成的核心价值在于:

  1. 1.  持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;
  2. 2.  持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能;
  3. 3.  持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心。

持续集成的原则

业界普遍认同的持续集成的原则包括:

1)需要版本控制软件保障团队成员提交的代码不会导致集成失败。常用的版本控制软件有 IBM Rational ClearCase、CVS、Subversion 等;

2)开发人员必须及时向版本控制库中提交代码,也必须经常性地从版本控制库中更新代码到本地;

3)需要有专门的集成服务器来执行集成构建。根据项目的具体实际,集成构建可以被软件的修改来直接触发,也可以定时启动,如每半个小时构建一次;

4)必须保证构建的成功。如果构建失败,修复构建过程中的错误是优先级最高的工作。一旦修复,需要手动启动一次构建。

持续集成系统的组成

由此可见,一个完整的构建系统必须包括:

1,一个自动构建过程,包括自动编译、分发、部署和测试等。

2,一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库。

3,一个持续集成服务器。本文中介绍的 Jenkins 就是一个配置简单和使用方便的持续集成服务器。

基于Jenkins 快速搭建持续集成环境

正如前文中所描述的那样,一个持续集成环境需要包括三个方面要素:代码存储库、构建过程和持续集成服务器。对Jenkins 有了初步了解后,我们通过一个实例来集中展示如何快速搭建一个简单的基于Jenkins 的持续集成环境。

 

 

第二部分,jenkins和svn的持续构建环境构建:

SVN(subversion)是目前比较流行的版本管理工具。很多开源软件都是用 SVN 作为代码版本管理软件。为了让实例更具有代表性,本文中我们使用 SVN 作为代码存储器。

接下来,我们开始新建一个 Jenkins 项目, 由于我们需要连接 SVN 的代码存储器, 我们选择 Build a free-style software project

 

一, 安装jenkins;                        (第一步,下载安装jenkins)

从官网下载jenkins.war包,放到tomcat中的webapps目录下作为tomcat的一个应用;

官方下载地址: http://mirrors.jenkins-ci.org/war/

或直接使用命令行,按照官网上的方法安装:

wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
deb http://pkg.jenkins-ci.org/debian binary/
sudo apt-get update
sudo apt-get install jenkins

 

 

二, 对jenkins系统全局配置;              (第二步,全局配置jenkins)

   配置Jenkins全局变量,进入菜单:系统管理 -> 系统设置

2.1  配置JDK

因为buildr启动时需要jvm,所以我们这里需要配置下jdk,如下图:

2.2  配置版本控制库,这里用的是SVN,如图所示:

Name可以自由定制,下面的Path需设置成svn代码仓库的目录,

 

2.3  配置emai-ext,如图所示:

这里没有用jenkins自带的邮件配置,因为它没有模板,也不能配置触发机制。下图字段的如果不清楚其含义,请点击问号,看帮助。



2.4  配置邮件通知(如果使用email-ext,这里可不设置)

2.5  安装插件

配置声音插件

首先,需要在另一台jenkins服务器添加jenkins服务器的public key,并加入信任列表,具体步骤如下图

然后,配置系统设置,在此之前,请在需要播放声音的远程linux上安装play插件,sudo apt-get install sox

 

安装ClearCase的插件:

假设我们使用的代码存储库是 IBM Rational ClearCase。Jenkins 提供了对 ClearCase 的插件支持,它能方便地让我们连接到 Base ClearCase 或者 UCM ClearCase,使其成为 Jenkins Project 的代码控制器。另外,这个插件是基于 cleartool 命令的,所以必须在 Jenkins 的持续集成服务器上安装 ClearCase 的客户端程序。

在 Jenkins 的插件管理界面中选择 ClearCase Plugin,点击页面下方的 Install 按钮。

在打开的页面中提示安装完成后,Jenkins 需要重新启动来激活这个插件。重新执行 java -jar Jenkins.war 后,在 Jenkins 的页面中,我们就能看到 ClearCase plugin 已经被安装到 Jenkins 了。

 

2.6 Jenkins的授权和访问控制

1 Jenkins的授权和访问控制

默认地Jenkins不包含任何的安全检查,任何人可以修改Jenkins设置,job和启动build等。显然地在大规模的公司需要多个部门一起协调工作的时候,没有任何安全检查会带来很多的问题。我们可以通过以下2方面来增强Jenkins的安全:

1
Security Realm
,用来决定用户名和密码,且指定用户属于哪个组;

2
Authorization Strategy
,用来决定用户对那些资源有访问权限;

Manage Jenkins -> Configure
System -> Enable Security
下可以看到可以使用多种方式来增强Jenkins的授权和访问控制。

 

2)创建管理员账号+匿名只读

简单地设置一个管理员账号,用来管理jenkins设置,修改job和执行build等。其他的匿名访问的用户将只有只读的权限,不能修改Jenkins的设置,不能修改job,且不能运行build,但是可以访问build的结构,查看buildlog等。

1)需要对Jenkins增加如下的启动参数来创建管理员账号:

java -jar jenkins.war --argumentsRealm.passwd.user=password
—argumentsRealm.roles.user=admin

例如设置管理员用户为jenkins且密码为swordfish,如下:

java -jar jenkins.war --argumentsRealm.passwd.jenkins=swordfish
—argumentsRealm.roles.jenkins=admin

2)在启动后需要在Manage Jenkins ->
Configure System
来选择enable security,然后选择对Security Realm选择Delegate to servlet container,对Authorization选择Legacy Mode

 

3)然后可以在右上角点击login或者http://yourhost/jenkins/loginEntry来登录,登录后此时你用户管理员权限,可以执行任何的操作。执行完操作后可以选择logout

 

4developers增加rebuild的权限。

使用管理员登录对需要developer rebuildjob,选择Trigger builds remotely,且设置Authentication Token,例如设置为devbuild,然后developers可以访问http://jenkinsHost/job/project/build?token=token
来启动build

其中Project为你需要启动buildjob。其中token为你设置的Authentication Token

如果你有webserver,你可以创建如下的webpage来让developers来启动build

<h1>Jenkins Force
Build Page</h1>
<ul>
    <li>
    <a href="http://jenkins:8080/job/FOO/build?token=build">Force
build of Project FOO on Jenkins</a>
    </li>
</ul>


3使用Jenkins的数据库管理用户且设置用户的访问权限

1)在Manage Jenkins -> Configure
System -> Enable Security
下为Security Realm选择Jenkins‘s own user database,且确保Allow users to sign up选中,为Authentication选择Matrix-based security。如下:

2)接着在主页上signup创建第一个管理员账号jenkins如下:

 

3)除了第一个账号以后signup的账号将为只读账号需要管理员分配权限。例如你可以signup来创建dev账号,然后分配权限使得dev可以启动jobbuild。如下:

 

注意:%JENKINS_HOME%\config.xml中可以查看和修改所有用户的权限设置,但是修改后需要重新启动Jenkins

可以参考:

https://wiki.jenkins-ci.org/display/JENKINS/Quick+and+Simple+Security

https://wiki.jenkins-ci.org/display/JENKINS/Standard+Security+Setup

 

 

 

三, 使用jenkins新建项目并配置;                   (第三步,新建项目并配置)

在浏览器中输入:http://localhost:8080/jenkins ,打开jenkins配置管理首页面,下面的操作都是基于jenkins的首页面的操作;假如是第一次或新建一个jenkins管理项目,则需要按如下基本步骤进行配置:

 

(1) 新建
JenkinsTest Job

填写job name项:JenkinsTest;并选择创建一个“Build a free-style software project”,如下图:

点击“OK”后,进入到项目配置页面,然后进行自己配置;

 

(2)配置 JenkinsTest

然后我们就可以很方便的配置这个 JenkinsTest 项目了。Jenkins 很人性化的一点是在每个配置项的右侧都有一个帮助的图标,点击这个图标,Jenkins 会告诉您如何配置这个配置项。在“source code management”中选择“Subversion”项,如下图:

 

(3)配置版本控制库 SVN 服务器

源代码管理根据自己的需要进行选择,根据实际的 SVN 服务器服务器信息配置 Source Code Management,这能让 Jenkins 知道如何从哪里获取最新的代码,我的源代码是使用svn管理的,这里选择“Subversion Modules”,在"Repository
URL"
录入你的svn仓库地址;第一次录入时还需要输入登录svn仓库的用户名和口令。本例中假设 Repository 就在本地。

本地路径格式:
file:///home/sun/svn/myproject

远程路径格式: svn://localhost/myproject

             
http://localhost/myproject
(只适用于已经搭建好SVN的web服务器的情况)

 

(4)选择如何触发构建

通过构建触发器“Build Triggers”配置如何进行触发构建,jenkins内置的构建触发器有四种选择:

1 build after other projects are
built 
    可以设置多个依赖的jobs,当任意一个依赖的jobs成功后启动此build  多个依赖的jobs间使用,隔开。

2 Trigger builds remotely (e.g.,
from scripts)
 Authentication Token中指定TOKEN_NAME,然后可以通过连接JENKINS_URL/job/JOBNAME/build?token=TOKEN_NAME来启动build

3  build periodically   schedule中设置,语法类似于cron中语法。

4 Poll SCM      schedule中设置时间间隔来抓取SCM server,如果有新的修改,则启动build所以这里的作用相当于continous build

根据开发需要,假设每一个小时我们需要重新构建一次。选择
“Build
periodically”
,在
“Schedule” 中填写 0 * * * *。

第一个参数代表的是分钟 minute,取值 0~59;

第二个参数代表的是小时 hour,取值 0~23;

第三个参数代表的是天 day,取值 1~31;

第四个参数代表的是月 month,取值 1~12;

最后一个参数代表的是星期 week,取值 0~7,0 和 7 都是表示星期天。

所以 0 * * * * 表示的就是每个小时的第 0 分钟执行一次构建。

 

下图是 设置为轮询SVN的代码服务器

若还不甚明白,可以点击后面的帮助图标,点击这个图标,Jenkins 就会告诉您应该如何配置这个配置项。

 

(5)选择build 方式

接下来就是要添加 build 的步骤了。Jenkins 提供了四个选项供我们选择,可以根据需要执行或调用外部命令和脚本。

在本例中,我们通过调用和执行Shell脚本 ,将 SVN repository 中 C/C++ 代码编译并生成elf二进制文件。也可以根据项目的实际编写自己的 shell 脚本配置在这里。在编写shell脚本时,需要注意可以使用一些jenkins自己的环境变量。

 

配置 Execute Shell

    例如:cd ${WORKSPACE}/myproject ;
/bin/bash ./build.sh

附注:jenkins内置的环境变量

BUILD_NUMBER,   唯一标识一次build,例如23;

BUILD_ID,         基本上等同于BUILD_NUMBER,但是是字符串,例如2011-11-15_16-06-21;

JOB_NAME,        job的名字,例如JavaHelloWorld;

BUILD_TAG,       作用同BUILD_ID,BUILD_NUMBER,用来全局地唯一标识一此build,例如jenkins-JavaHelloWorld-23;

EXECUTOR_NUMBER,   例如0;

NODE_NAME,          
slave的名字,例如MyServer01;

NODE_LABELS,        
slave的label,标识slave的用处,例如JavaHelloWorld MyServer01;

JAVA_HOME,          
java的home目录,例如C:\Program
Files (x86)\Java\jdk1.7.0_01;

WORKSPACE,          
job的当前工作目录,例如c:\jenkins\workspace\JavaHelloWorld;

HUDSON_URL =
JENKINS_URL

jenkins的url,例如http://localhost:8000/

BUILD_URL,            
build的url 例如http://localhost:8000/job/JavaHelloWorld/23/;

JOB_URL,              
job的url,例如http://localhost:8000/job/JavaHelloWorld/;

SVN_REVISION,         svn
的revison,

 

(6)配置邮件提醒

在选择完成build方式后,选择“Post-build Actions”配置其他的选项,有7种方式可选:

比如邮件提醒设置,

 

(7)配置保存

然后点击 save ,保存jenkins的配置信息。

 

 

四, 项目的构建jenkins使用                            (第四步,jenkins基本使用说明)

(1) JenkinsTest 开始构建

接下来的每小时的第 0 分钟,JenkinsTest Job 就会被构建;或者在工作区域的左边菜单上点“build now”,开始构建项目。我们可以在 Jenkins 中观察构建的进度和最终的状态——成功或者失败。太阳代表之前的构建没有任何失败,如果构建成功,则项目状态的S为蓝色,如果失败则为红色。

 

(2) JenkinsTest 构建的 console 输出

同时我们可以点击 JenkinsTest 查看单次构建的 Console 的输出结果。从中我们能看到构建的第一步是从 SVN 服务器上 check out 代码,然后调用我们先前配置的 shell脚本。

 

构建失败的 Console 输出:

构建完成,左边菜单会显示有“控制台输出”,点击可以查看控制台详细输出。构建错误时也可以根据相应的错误信息进行修改。我们可以看到 build 的最后结果 FAILURE,表明本次构建失败了,从前面可以看到是因为找不到build.sh文件。

 

构建成功的 Console 输出:

最后,可以看到 build 的最后结果 Success,表明本次构建成功。

 

 

五, jenkins与CI插件集成 

5.1  项目中存在的问题

在当前项目中,存在问题:

■ 代码风格各异,同时缺少必要代码注释

 常出现空指针类似的基础bug

■ 代码单元测试缺失,测试场景覆盖不大

■ 重复代码大量出现

■ 转测试后,基础用例需要大量人力去验证

■ 其他:缺少性能测试

 

可能会导致的后果:

 他人阅读代码困难,后期维护成本增加

■ 代码质量不高,后期维护成本增加

■ 开发成本增加,后期维护成本增加

■ 测试成本明显增加

因此需要一个持续代码集成,能够让开发或测试减少成本,提高质量工具,而jenkins正好可以与CI插件集成起来,实现这些功能。

 

5.2 解决方案

■ 代码风格各异,通过统一checkstyle样式来检查

■ 常出现空指针类似的基础bug,可以通过findbugs静态检查

■ 多余if或者try catch,可以通过pmd检查

■ 单元测试用例测试功能结果,可以通过xunit报告检查

■ 大量重复代码,可以通过duplicate code报告来检查

■ 测试用例覆盖度,能够通过clover来检查

■ 基础功能,可以通过selenium自动化测试

■ 性能测试,可以通过jmeter来完成

虽然项目人员能够自己使用这些工具,完善代码,提高质量,但是却不方便项目统一管理。而Jenkins能够集成这些插件,做到统一管理,解决项目问题。

Jenkins,之前叫做Hudson,是基于Java开发的一种持续集成工具,用于监控秩序重复的工作。

主要包括:

1、持续的软件版本发布/测试项目。 

2、监控外部调用执行的工作。 

Jenkins能够集成各式插件,如常用CI插件:deploy,junit,findbugs,pmd,checkstyle,clover, duplicate code,jmeter,selenium等,而这些工具正好可以解决项目存在一些问题。

 

5.3 实施方案

jenkins上CI插件安装

■ 手动安装

第一步,查询需要插件名称 https://wiki.jenkins-ci.org/display/JENKINS/Plugins

第二步,查询插件是否依赖其他插件

第三步,进入插件下载页面http://updates.jenkins-ci.org/download/plugins/?C=N;O=D,下载插件

第四步,将插件放到${jenkins安装目录}/jenkins_home/plugins,手动重启服务。即进去${jenkins安装目录}/tomcat7/bin,使用shutdown.sh与startup.sh关闭或者启动jenkins服务。

 

■ jenkins管理平台安装

第一步,进入jenkins管理平台,点击登录。(第一个注册的即为管理员)

第二步,点击左边菜单系统管理,在弹出页面中选择管理插件

第三步,点击可选插件,找到需要安装插件

勾选安装后重启或者先下载重启后再安装,也可以进入命令行手动重启jenkins。

 

附注:

具体的安装步骤可以参考:http://wchlt.blog.163.com/blog/static/2196057201372833659235/

 

5.4 常用插件安装

pmd

checkstyle

Publish Over FTP
Plugin

Cppcheck Plugin

Static Code
Analysis Plug-ins

Doxygen Plugin,

Dependency Graph
View Plugin
,

cmakebuilder
Plugin
 : 支持cmake的构建;

 

 

第三部分,结束语

本文简单介绍了持续集成的概念并着重介绍了如何基于
Jenkins 快速构建持续集成环境。通过具体实例的描述,相信读者对 Jenkins 的基本功能和实现方法有个更清楚地认识和理解。其实,Jenkins 的功能远不至文中所述的这些,Jenkins 还有详尽的日志处理和持续集成构建状态的分析等功能。希望在进一步的学习和应用中与大家分享。

 

 

 

 

---恢复内容结束---

时间: 2024-08-07 11:32:21

个人环境搭建——搭建jenkins持续构建集成环境的相关文章

谈谈对Jenkins持续构建的认识

通过多次搭建Jenkins持续构建环境,终于对Jenkins有了进一步认识,在此把所学所得和大家分享一下,希望可以帮助大家快速掌握Jenkins的核心思想. 在安装完Jenkins的setup.exe程序后,在浏览器会自动打开Jenkins的主页,通过Jenkins主页配置各种参数.  过程一:安装Jenkins的MsBuild Plugin插件,此插件用于支持MSBuild.exe的构建工作: 过程二:配置插件,告诉MsBuild Plugin插件用哪个版本的MSBuild.exe来构建,比如

docker搭建gitlab+Jenkins持续集成环境

安装docker 此处省略一.使用docker安装gitlab docker pull gitlab/gitlab-ce:latest下载完成之后使用docker生成容器docker run -dit \-p 8443:443 \-p 8080:80 \-p 2222:22 \-p 9090:9090 \--name gitlab \--restart always \-v /home/gitlab/config:/etc/gitlab \-v /home/gitlab/logs:/var/lo

Jenkins持续构建

Jenkins是一个什么?它是一个持续集成的开源工具.它的前身是 Hudson,2011年Hudson社区为摆脱Oracle对'Hudson'命名干扰,将Hudson改名为Jenkins. 一个团队开发比较大型的软件时,比如采用敏捷开发,多次迭代.在第一次迭代完成时,开发和测试就可以同时进行.使用Jenkins构建一个测试环境.这样测试也不会对开发环境造成混乱. Jenkins优点是,可以通过各种手段触发构建.例如提交给版本控制系统时被触发,也可以通过类似Cron的机制调度,也可以在其他的构建已

SVN+Maven+Tomcat+Jenkins持续构建

一.准备工作 1.1安装软件 安装JDK.SVN.Maven.Tomcat.Jenkins及必要插件. 1.2安装jenkins所需插件 最开始安装jenkins时选择安装默认的插件. 其他插件: Maven Integration:构建maven项目 Publish Over SSH:用于将构建好的项目发送至 Subversion Plug-in:连接svn,默认安装插件中有该插件. 1.3配置JAVA_HOME.MAVEN_HOME 此处看一些教程上勾选的是,但是自身在最后构建项目时一直提示

13款国内外知名PHP集成环境的优缺点分析,PHP集成环境推荐、PHP绿色集成环境推荐

在本地测试网站,有个集成环境直接测试还是蛮方便的,下面向各位推荐国内和国外各种牛逼的php集成环境 排名不分先后! Xampp集成环境 下载解压就能使用了,还支持苹果系统,溜的飞起.英文界面,用着B格也提高了不少. 优点:支持的系统多啊,软件使用简单,可视化界面 缺点:没有集成VC运行库,遗憾 然后就是老牌的apmserv,当年刚学会建站,就是这款环境,老牌,可惜版本少了点,但是还是能用的.当年可是用的最多,可惜不更新了,版本旧,目前用的人也很少. 优点:好用,方便,绿色,有知名度 缺点:好像不

windows环境下简单Jenkins持续集成搭建

Jenkins是基于Java开发的持续集成工具,所以在安装Jenkins之前我们要确定电脑上已经安装了Java JDK并且环境变量配置正确,否则在启动使用java -jar Jenkins.war启动jenkins时,由于没有Java环境,将提示java非内部命令,无法启动. java版本:jdk-8u162-windows-i586 jenkins版本:Jenkins 2.89.3 (这里遇到了个坑,java装的java9,启动jenkins之后创建新项目时报错,出现下面图片,由于java版本

tomcat+jenkins搭建持续化集成环境

一.下载安装Tomcat 1.进入官网http://tomcat.apache.org/ 2.解压缩文件到指定目录 3.设置环境变量 a.新建CATALINA_HOME b.在path中设置 %CATALINA_HOME%\bin 3.启动tomcat a.运行CMD b.输入startup.bat 4.启动过程中乱码问题 解决: 1.进入tomcat安装目如下,找到文件logging.properties 2.将文件中java.util.logging.ConsoleHandler.encod

Jenkins自动化构建(一)环境搭建

环境搭建需要先知道的内容: Jenkins是开源的持续集成工具,可以进行持续集成.自动构建.自动编译和部署. 很多项目都在使用Git.SVN进行代码管理:Maven管理多模块和项目依赖 1.安装Jenkins 下载地址:https://jenkins.io/download/ 这里我们下载的是Window环境 安装过程,和安装其它软件大同小异,这里就不多说了. 安装完成后,可以看一下服务,里有Jenkins服务,我们启动 之后打开,网址(安装过程中,会有提示):http://127.0.0.1:

Jenkins持续化集成

Jenkins介绍 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1.持续的软件版本发布/测试项目. 2.监控外部调用执行的工作. 安装环境 操作系统:linux(centOS) 软件:jdk 7 软件:tomcat 软件:jenkins(2.7.1版) 安装步骤 1.由于Jenkins是基于Java开发的,安装前确认操作系统已经安装了jdk,参照http://www.cnblogs.com/activecode/p/9355374.html 2.从官网