使用Jenkins构建持续集成平台

前言

持续集成这个概念已经成为软件开发的主流,可以更频繁的进行测试,尽早发现问题并提示。自动化部署就更不用说了,可以加快部署速度,并可以有效减少人为操作的失误。

1. 开发环境

开发环境如下:

  1. Maven做项目管理;
  2. Git做代码管理;
  3. SpringMVC+Spring+Mybatis搭建的程序框架;
  4. Mysql作为数据存储,Druid做连接池;
  5. unitils作为测试框架;
  6. Hibernate Validator作为数据验证;
  7. log4j作为日志输出。

2. Jenkins的部署

Jenkins原名是Hudson,官网地址是http://jenkins-ci.org/。建议直接下载最新版本。

这个软件的安装简单,直接取war包放到tomcat下,启动tomcat即可。

相应的工程配置会在~/.jenkins目录中。

另外提醒一下,建议把Jenkins安装在Linux上,这样就不会出现ssh等命令找不到的问题,否则还要想办法去处理。

3. Jenkins的插件

安装好后直接访问“http://IP:端口/jenkins”即可进入主界面,点击“系统管理”->“管理插件”,首次进入都是空白的,要等1分钟左右才能看到内容。

3.1 Git插件

在“可选插件”中找到“GIT plugin”安装,最下面有个安装完重启的勾选项,选中即可。

3.2 Email插件

在“可更新”中找到“Mailer Plugin”选中并更新即可。另外如果想有更丰富的邮件内容,就去“可选插件”中安装“Email Extension Plugin”即可

3.3 其他插件

默认就装了很多常用插件,比如Maven、Junit等等,如果使用感觉有问题可以尝试升级一下版本。

4. 系统设置

主界面点击“系统管理”->“系统设置”即可进入。重点配置以下内容:

  1. Java、Git、Maven的目录位置,确保可以正确找到命令;
  2. Jenkins URL,自动生成的,检查一下即可;
  3. 邮件的设置。这里注意一下,上面有一个“系统管理员邮件地址”需要填写,另外“Extended E-mail Notification”中填写配置,原来的“邮件配置”就不用再理会了。

5. 项目设置

在主界面直接“新建”,就会有一个新的项目。重点配置以下内容:

1.源码管理:

选择Git,填写“Repository URL”,并加上相应的“Credentials”,其中认证信息用私钥的话干脆直接把私钥内容填上去就好。

2.构建触发器:

这个地方要把“Build periodically”和“Poll SCM”都选上,时间格式都填写成一样的即可,比如“H/15 ”,下面会有个具体执行时间的提示,Build动作会自动比Poll延迟3分40秒,这个设定还是很合理的。

3.构建:

增加两个构建步骤,分别是“Execute shell”和“Invoke top-level Maven target”,注意先后顺序,可以拖拽摆放的。

脚本执行根据自己需要,比如我需要去修改数据库连接配置,官方建议是自己在工程里面写好脚本,这里直接调用,而不是在这写一个完整的脚本。

Maven构建就加上“clean test”即可,就是运行“mvn clean test”的命令。

4.Publish Junit test result report:

在测试报告(XML)上加上“*/target/surefire-reports/.xml”即可,这样就会每次测试完自动找到测试报告,在Jenkins上即可在每个构建结构里面查看到。

5.邮件通知:

在构建后增加“Editable Email Notification”,填写邮件的接受者、内容格式可以直接用全局变量,重点是配置一下发送触发条件。

6. 安全性配置

经过以上配置进行一次构建就会发现,Jenkins可以看到太多内容了,包括pull到的源码,所以非常有必要增加权限控制。

进入“系统管理”->“Configure Global Security”中进行如下步骤:

  1. 启用安全;
  2. Jenkins专有用户数据库,先允许用户注册;
  3. 授权策略选择“安全矩阵”,新加一个“admin”的用户,把所有权限都开给admin用户;
  4. 在主界面的用户中找到admin,进行配置,设置登陆密码;
  5. 先重新登陆测试一下是否admin正常,没有问题就关闭允许用户注册,把匿名用户的所有权限都去掉。

7. 自动化部署

这里我没有让Jenkins每次测试都去部署,一方面是考虑到单元测试基本已经满足需要了,另一方面因为测试太频繁了,一直部署也搞得Stage测试环境要经常重启,反而影响正常的人工测试。

所以自己写了个脚本,在必要的时候去运行一下去自动完成整个部署工作。

#!/bin/sh

# update code
git pull

# package
mvn clean
mvn package -Dmaven.test.skip=true

# deploy
WAR=`ls target | grep war`
TOMCAT=/home/test/apache-tomcat-6.0.41
mv target/$WAR $TOMCAT
cd $TOMCAT
# invoke another deploy script
sh deploy-war.sh $WAR webapps

原文发布于微信公众号 - 马哥Linux运维(magedu-Linux)

原文发表时间:2016-04-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Spark学习技巧

重磅:Flume1-7结合kafka讲解

本文主要是将flume监控目录,文件,kafka Source,kafka sink,hdfs sink这几种生产中我们常用的flume+kafka+hadoo...

6827
来自专栏Java进阶架构师

01: springboot快速入门之三分钟构建可运行项目

Spring Boot英文中是“引导”的意思,是用来简化Spring应用的搭建到开发的过程。可以这么说。SpringBoot是一个服务于框架的框架,服务范围是简...

733
来自专栏Java学习123

shell获取当前工作目录绝对路径

2.1K7

如何自动地将代码从Git平台部署至组件容器

将源代码从Git平台部署至组件容器有很多种可以选择的方法,包括重新部署整个容器,通过卷即时重新部署,或者使用“git clone”的方法。但是,当这个过程自动化...

2379
来自专栏FreeBuf

Kali Shellter 5.1:动态ShellCode注入工具 绕过安全软件

或许你还在为无法绕过反病毒软件获得Meterpreter shell而懊恼,试试Shellter 5.1吧。 首先需要获取一个正常的Windows exe可执行...

2986
来自专栏哈雷彗星撞地球

Mac下Jenkins+SVN+Xcode构建持续导出环境1 安装Jenkins2 安装Jenkins插件3 Xcode以及开发证书设置4 配置构建项目

每一次新版本要发布,都被测试部门催成狗,测试部也耐不住了,想自己打包,研发只管提交代码,听到这个消息,还是很开心的,终于不用打包了。跟同事折腾Jenkins三天...

822
来自专栏黑泽君的专栏

安装最新版本的Oracle公司的虚拟机软件 VirtualBox + 安装虚拟机 Windows XP 系统 + 安装 Oracle 11g 软件 + 出现 ERROR: ORA-12541: TNS

  VirtualBox的下载链接:https://www.virtualbox.org/wiki/Downloads

2571
来自专栏友弟技术工作室

Python虚拟环境

本教程将引导你完成安装和使用 Python 包。 它将向你展示如何安装和使用必要的工具,并就最佳做法做出强烈推荐。请记住, Python 用于许多不同的目的。准...

63015
来自专栏惨绿少年

KICKSTART无人值守安装

1.1 环境说明 [root@test ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [roo...

2790
来自专栏FreeBuf

渗透测试TIPS之删除、伪造Linux系统登录日志

0x00. 引言 擦除日志在渗透测试中是非常重要的一个阶段,这样可以更好地隐藏入侵痕迹,做到不被系统管理人员察觉,实现长期潜伏的目的。 前段时间NSA泄露的渗透...

5026

扫码关注云+社区

领取腾讯云代金券