在Linux上使用Jenkins持续集成JavaWeb项目
2017-11-25 15:19
627 查看
什么是Jenkins?
Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 用于监控持续重复的工作,功能包括:
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。
为什么要用Jenkins?
是所有CI产品中在安装和配置上最简单的。 基于Web访问,用户界面非常友好、直观和灵活,在许多情况下,还提供了AJAX的即时反馈。
Jenkins是基于Java开发的(如果你是一个Java开发人员,这是非常有用的),但它不仅限于构建基于Java的软件。
Jenkins拥有大量的插件。这些插件极大的扩展了Jenkins的功能;它们都是开源的,而且它们可以直接通过web界面来进行安装与管理。
准备工作
这里需要说明下,本次搭建是在Ubuntu16.04上完成的搭建(Maven + git + Tomcat ),不同的Linux系统搭建可能有些细微的差别
Tomcat的安装
Tomcat 8.0.43官方下载地址下载完把Tomcat目录下面的东西放到 /usr/local/tomcat 下面
然后把CATALINA_HOME配置好,并想办法开机启动Tomcat
mv apache-tomcat-8.0.43 /usr/local/tomcat1
2
配置开机启动Tomcat
在/etc/init.d/ 新建脚本 命名为tomcat
#!/bin/sh #tomcat auto-start # description: Auto-starts tomcat # processname: tomcat # pidfile: /var/run/tomcat.pid export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun case $1 in start) sh /usr/lib/tomcat/bin/startup.sh ;; stop) sh /usr/lib/tomcat/bin/shutdown.sh ;; restart) sh /usr/lib/tomcat/bin/shutdown.sh sh /usr/lib/tomcat/bin/startup.sh ;; *) echo 'Usage:tomcat start|stop|restart' ;; esac1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
给tomcat赋予可执行权限
sudo chmod +x tomcat1
配置符号链接
sudo ln -s /etc/init.d/tomcat /etc/rc1.d/K99tomcat sudo ln -s /etc/init.d/tomcat /etc/rc2.d/S99tomcat1
2
安装sysv-rc-conf
sudo apt-get install sysv-rc-conf1
sudo sysv-rc-conf1
这时候会进入启动项管理
在刚才添加的tomcat上面使用空格选中上2 3 4 5( X 代表被选中)
在Tomcat安装这里其实没什么特别的,楼主刚开始就踩坑了,图方便用apt-get直接装的tomcat 7,结果出了很多问题,后来去apache官网下的Tomcat 9结果更坑爹了,Tomcat 9 M19版里面使用Jenkins自动化部署会报错FAIL - Deploy Upload Failed,查看了下host-Manager的启动日志,发现报的错误是Exception: Cannot find operation isServiced,去谷歌一搜,发现Tomcat M19版这里面确实是有问题的,已经提了Bug,并且将会在Tomcat
M20版本解决这个问题,楼主只好下了个Tomcat 8,结果立马就好使了。。。
JDK的安装
我这边是从官网下载的JDK,解压完之后替换掉系统的JDK。 我这里把jdk解压完放在了/usr/local/jdk/
配置环境变量
vi /etc/profile #在文件默认追加 export JAVA_HOME=/usr/local/jdk PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib1
2
3
4
5
编辑完成后,使更改立即生效
source /etc/profile1
对应地替换系统SDK
sudo update-alternatives --install /usr/bin/java java /usr/local/jdk/bin/java 300 sudo update-alternatives --install /usr/bin/javac javac /usr/local/jdk/bin/javac 3001
2
Maven安装
wget http://apache.fayea.com/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz tar -xvzf apache-maven-3.3.9-bin.tar.gz sudo mv apache-maven-3.3.9-bin /usr/local/mvn1
2
3
这里就完成了 maven的下载解压以及移动到/usr/local/mvn目录
然后配置系统环境变量
vi /etc/profile #在文件末尾追加 export MAVEN_HOME=/usr/local/maven export PATH=$PATH:MAVEN_HOME1
2
3
4
编辑完成后,使更改立即生效
source /etc/profile1
git 安装
sudo apt-get install git1
开始安装
Jenkins的安装
sudo apt-get install jenkins1
这里也可以选择去官网下载Jenkins的war包扔到Tomcat的webapps目录
安装完需要修改Jenkins的默认端口号(默认8080与Tomcat冲突)
准备插件
因为GFW的影响,Jenkins安装过程可能不能把全部插件都能安装完毕,有红叉的时候直接跳过,过后再从Jenkins官网安装即可必备的插件有
Github
SSH
Deploy to container Plugin
邮件提醒插件(可能已经内置了)
去官网下好后进到本地Jenkins管理界面->系统管理->插件管理->高级
把刚才下载的插件上传上去
一起安装完毕再重启
然后进系统管理->Global tool configuration
把安装好的JDK、Maven、git设置好,然后就可以新建项目了,我这里面比较偷懒,直接让Jenkins在线安装了一个JDK
完成安装,新建项目
源码管理
源码管理这里我们选择git,上面添上你的远程仓库地址
配置SSH免密登录
下面的Credentials可以配置SSH免密登录远程仓库需要在本地生成一个SSHKey
ssh-keygen -t rsa -P ''1
输入一次回车即可
Ubuntu 不像Mac里面有Pbcopy这样方便的工具,需要安装一个xclip来复制我们生成的公钥。
sudo apt-get install xclip1
将
cat ~/.ssh/id_rsa.pub |xclip -selection c1
这样新生成的公钥就进到我们的粘贴板里面了
把这个公钥扔进远程仓库的SSHkey里面
同样地、在刚才的Credentials新建,类型选择 SSH with private key,选择from ~/.ssh
Username 随便起 比如起24k
然后回到Credentials就可以选择24k了
配置构建触发器
构建触发器这里,可以配置定时任务用来定时构建你的Web项目这里我选的是POLL SCM,它会按照你给定的时间去检查远程代码仓库的版本信息,并自动拉取到你的机器上完成构建动作,这里可以配置日程表定时构建,这里面给出常用日程表配置
每15分钟构建一次:H/15 * * * * 或/5 * * *
每天8点构建一次:0 8 * * *
每天8点~17点,两小时构建一次:0 8-17/2 * * *
周一到周五,8点~17点,两小时构建一次:0 8-17/2 * * 1-5
每月1号、15号各构建一次,除12月:H H 1,15 1-11 *
配置构建完成后自动部署至Tomcat容器
构建完成后可以配置构建后的操作,这里就要用到刚才安装的deploy to container插件了。新增构建后操作,选择deploy war/ear to container
这里面选择的Tomcat 7.x
这里对参数解释一下
WAR/EAR就是你要发布的WAR包,用的是相对路径
Context Path 就是你的项目发布后的访问路径 比如http://xxx.xxx.xx:8080/Context Path
Manager user name
Manager password
Tomcat Manager是Tomcat自带的、用于对Tomcat自身以及部署在Tomcat上的应用进行管理的web应用。Tomcat是Java领域使用最广泛的服务器之一,因此Tomcat Manager也成为了使用非常普遍的功能应用。Tomcat 默认Manager User是没有启用的,所以我们要启用Manager的用户
Manager应用使用的是 Tomcat安装目录下conf/tomcat-users.xml的文件,找到并打开
sudo vi /usr/local/tomcat/conf/tomcat-users.xml1
<role rolename="tomcat"/> <role rolename="role1"/> <user username="both" password="both" roles="tomcat,role1"/> <user username="role1" password="role1" roles="role1"/>1
2
3
4
5
上面这几行 默认是被注释掉的,把注释干掉,并加上下面的几行
<role rolename="manager"/> <role rolename="manager-gui"/> <role rolename="admin"/> <role rolename="admin-gui"/> <role rolename="manager-script" /> <user username="tomcat" password="tomcat" roles="admin-gui,admin,manager-gui,manager,manager-script"/>1
2
3
4
5
6
7
文件尾部的完整配置
<role rolename="tomcat"/>1
<role rolename="role1"/>
<user username="both" password="both" roles="tomcat,role1"/>
<user username="role1" password="role1" roles="role1"/>
<role rolename="manager"/> <role rolename="manager-gui"/> <role rolename="admin"/> <role rolename="admin-gui"/> <role rolename="manager-script" /> <user username="tomcat" password="tomcat" roles="admin-gui,admin,manager-gui,manager,manager-script"/>
2
3
4
5
6
7
8
9
10
11
文件里面的 user 现在用户名密码全都是 tomcat,需要的话可以自行修改成别的。
我们这里现在就可以在Manager 的username上添上你填好的username和password和tomcat-users.xml配置文件里面的对应,我的这里面全都是tomcat.
这样就算配置完成了.
完成所有配置后对项目立即构建,然后点开Console Output就可以查看到构建日志了,没有什么问题的话就完成了构建。Enjoy~
可能遇到的问题
1.Linux 系统是多用户的,所以在这种环境的配置上不同的用户很容易出问题2.使用Maven搭建项目的时候,依赖包解析失败,我的POM里面有个Ojdbc14,因为Oracle已经收费了,所以我们需要把这个jar包打到自己的Maven本地仓库里面
这里需要切到对应的jar包目录执行下面的命令,注意用Jenkins部署的时候会产生一个Jenkins用户,所以打包时候一定要切到Jenkins用户,否则就需要自己把jar包拖拽到/home/Jenkins/目录下的maven仓库下面了
打包命令是
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.3.0 -Dpackaging=jar -Dfile=ojdbc14.jar -DgeneratePom=true1
这里,我的Ojdbc14.jar是10.2.0.3.0版本,在下载的时候,可以自行改成你对应的版本
Pom.xml里面也要依赖就写你打包的jar版本就可以了,比如我这里
<dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc14</artifactId> <version>10.2.0.3.0</version> </dependency>
相关文章推荐
- 在Linux上使用Jenkins持续集成JavaWeb项目
- 使用Jenkins持续集成JavaWeb项目(War包部署方式)
- 使用Jenkins持续集成JavaWeb项目(War包部署方式)
- 使用Jenkins持续集成JavaWeb项目(War包部署方式)
- jenkins 持续集成, 使用sbt多项目同时package
- Docker+Jenkins持续集成环境(2)使用docker+jenkins构建nodejs前端项目
- Jenkins构建Android项目持续集成之findbugs的使用
- 使用Jenkins持续集成maven项目
- Python Web项目中使用Jenkins进行持续集成CI
- Docker+Jenkins持续集成环境(2)使用docker+jenkins构建nodejs前端项目
- 在Python Web项目中使用Jenkins进行持续集成
- 在Python Web项目中使用Jenkins进行持续集成
- 使用Jenkins进行持续集成ionic3项目
- linux-centos下持续集成工具jenkins部署使用教程
- Jenkins构建Android项目持续集成之findbugs的使用
- 手游项目使用Jenkins搭建持续集成系统
- Jenkins构建Android项目持续集成之findbugs的使用
- 如何使用Jenkins持续集成C#网站项目
- 软件项目管理(二)——用jenkins持续集成、Maven、Github的使用
- 使用Jenkins持续集成maven项目