您的位置:首页 > 运维架构 > Linux

在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/tomcat
1
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'
;;
esac
1
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 tomcat
1

配置符号链接
sudo ln -s /etc/init.d/tomcat /etc/rc1.d/K99tomcat
sudo ln -s /etc/init.d/tomcat /etc/rc2.d/S99tomcat
1
2

安装sysv-rc-conf
sudo apt-get install sysv-rc-conf
1
sudo sysv-rc-conf
1

这时候会进入启动项管理 

在刚才添加的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/lib
1
2
3
4
5

编辑完成后,使更改立即生效
source /etc/profile
1

对应地替换系统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 300
1
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/mvn
1
2
3

这里就完成了 maven的下载解压以及移动到/usr/local/mvn目录 

然后配置系统环境变量
vi /etc/profile
#在文件末尾追加
export MAVEN_HOME=/usr/local/maven
export PATH=$PATH:MAVEN_HOME
1
2
3
4

编辑完成后,使更改立即生效
source /etc/profile
1


git 安装

sudo apt-get install git
1


开始安装


Jenkins的安装

sudo apt-get install jenkins
1

这里也可以选择去官网下载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 xclip
1


cat ~/.ssh/id_rsa.pub |xclip -selection c
1

这样新生成的公钥就进到我们的粘贴板里面了

把这个公钥扔进远程仓库的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.xml
1
<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"/>
<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"/>
1
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=true
1

这里,我的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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: