说明:
   jenkins maven svn实现自动编译及自动发布,svn也可以切换成git,看自己需要!之前也配置过几次,都没有做记录,后面再次配置很多忘记了,又得网上找资料,发现网上的资料很多都不全,要走很多弯路,因此这次把相关的配置记录下来,把每一步都做上备注。

具体配置主要分为几步:
一、环境准备(配置JDK,MAVEN,TOMCAT,SVN);
二、jenkins安装;
三、jenkins基础配置;
四、jenkins编译发布;


一、环境准备(配置JDK,MAVEN,TOMCAT,SVN);
1)下载JDK,MAVEN,TOMCAT
过程省略...
需要配置环境变量:

[root@vm2018 ~]# vi /etc/profile
#set jdk environment
export JAVA_HOME=/home/svr/software/java/jdk8
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
#set Maven environment
export MAVEN_HOME=/home/svr/software/maven
export PATH=$MAVEN_HOME/bin:$PATH

环境变量生效:

[root@vm2018 ~]# source /etc/profile

2)Tomcat配置:

[root@vm2018 conf]# vi tomcat-users.xml

进入到tomcat的conf目录下,编辑tomcat-users.xml配置文件

添加manager-script角色,并赋予角色给admin

<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin" password="admin" roles="admin-gui,manager-gui,manager-script"/>

打开webapps下的host-manager和manager,都有一个共同的文件夹META-INF,里面都有context.xml,这个文件的内容是:

<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127.d+.d+.d+|::1|0:0:0:0:0:0:0:1" />
</Context>

说明:

修改allow值,因为allow设置了IP限制,在后面jenkins发布的时候会被限制,因此修改为允许访问,

即:设置 allow="^.*$" 表示允许任何ip访问;


3)SVN配置(该项可以省略,如果svn是自己安装的话需要设置):

具体配置参考:

重点是*=r和anon-access = read

这个配置在后面jenkins检测源码变动的时候需要访问,因此需要设置权限。


二、jenkins安装

[root@vm2018 ~]# wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo  
[root@vm2018 ~]# rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
[root@vm2018 ~]# yum install jenkins

或者rpm安装

官网下载jenkins:https://pkg.jenkins.io/redhat-stable/

[root@vm2018 ~]# rpm -ih jenkins-2.9-1.1.noarch.rpm

说明:

自动安装完成之后相关配置问目录: 

/usr/lib/jenkins/jenkins.war    WAR包 

/etc/sysconfig/jenkins       配置文件

/var/lib/jenkins/       默认的JENKINS_HOME目录

/var/log/jenkins/jenkins.log    Jenkins日志文件


访问:http://ip:8080 默认端口为8080,注意端口占用情况,如下图:

jinkens 自动部署java jenkins自动部署maven项目_重启


说明:第一次登陆需要使用默认的密码,密码在服务器上的文件中,拷贝即可。

登录之后,选择"安装推荐的插件",如下图:

jinkens 自动部署java jenkins自动部署maven项目_Jenkins_02

jinkens 自动部署java jenkins自动部署maven项目_重启_03

jinkens 自动部署java jenkins自动部署maven项目_jinkens 自动部署java_04

相关命令:

说明:只需要在访问jenkins服务器的网址url地址后加上相关操作单词即可,如下:


1、关闭Jenkins

http://localhost:8080/exit

2、重启Jenkies

http://localhost:8080/restart


3、重新加载配置信息

http://localhost:8080/reload


三、jenkins基础配置;

jenkins安装好之后,需要相关配置,基础配置主要有三个

1)插件管理
2)系统设置
3)全局工具配置


1)插件管理

选择左上角的系统管理=>插件管理

搜索插件进行安装:

安装Deploy to container(自动化部署插件)
安装Maven Integration(Maven集成插件)
安装Publish Over SSH(SSH远程连接插件)

安装Deploy Plugin (远程发布插件)



说明:在"可选插件"中如果搜索不到以上插件,可以到"已安装"选项中搜索是否以及安装了!

注意:因插件安装以后,需要重启Jenkins才能够使用。所以在安装插件时,可以勾选安装完成后重启Jenkins,即:在选择插件页面最后勾选上"重启Jenkins",如果不小心忘记勾选,也没有关系,可以在浏览器网址端口后面输入/restart来重启Jenkins。

2)系统设置

选择左上角的系统管理=>系统设置

主要配置以下几项:

其它的可以自己摸索配置以下,不配也不影响正常流程;

配置:Subversion
配置:Publish over SSH

如下图:

jinkens 自动部署java jenkins自动部署maven项目_jinkens 自动部署java_05

jinkens 自动部署java jenkins自动部署maven项目_jinkens 自动部署java_06


3)全局工具配置

选择左上角的系统管理=>全局工具配置

主要设置以下几项:

配置:Maven Configuration
配置:JDK

如下图:

jinkens 自动部署java jenkins自动部署maven项目_jinkens 自动部署java_07

jinkens 自动部署java jenkins自动部署maven项目_重启_08








四、jenkins编译发布

jenkin基础配置完成后,可以进行任务工程配置,主要包括以下几个步骤:

1)新建任务

2)源码配置

3)构建触发器

4)构建环境

5)Build

6)构建后操作

具体明细如下:

1)新建任务,如下图:

jinkens 自动部署java jenkins自动部署maven项目_Jenkins_09



2)源码配置,如下图:

jinkens 自动部署java jenkins自动部署maven项目_JAVA_10

3)构建触发器,如下图:

jinkens 自动部署java jenkins自动部署maven项目_jinkens 自动部署java_11


图上是每个两分钟检测一次源代码,如果有变化就执行任务

说明:

Jenkins提供了6中构建触发器,分别是:

build whenever a snapshot dependency is built ,当job依赖的快照版本被build时,执行本job;

触发远程构建 (例如,使用脚本);

build after other projects are built 当本job依赖的job被build时,执行本job;

build periodically 隔一段时间build一次,不管版本库代码是否发生变化,通常不会采用此种方式;

GitHub hook trigger for GITScm polling 通过Github钩子触发;

轮询 scm 隔一段时间比较一次源代码,如果发生变更,那么久build。否则,不进行build,通常采用这种方式。


定时构建 轮询 SCM说明:

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

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

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

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

第五个参数代表的是星期 week,取值0~7,0和7都是表示星期天

查看后"问号帮助"说明Examples:

# every fifteen minutes (perhaps at :07, :22, :37, :52)
H/15 * * * *
# every ten minutes in the first half of every hour (three times, perhaps at :04, :14, :24)
H(0-29)/10 * * * *
# once every two hours at 45 minutes past the hour starting at 9:45 AM and finishing at 3:45 PM every weekday.
45 9-16/2 * * 1-5
# once in every two hours slot between 9 AM and 5 PM every weekday (perhaps at 10:38 AM, 12:38 PM, 2:38 PM, 4:38 PM)
H H(9-16)/2 * * 1-5
# once a day on the 1st and 15th of every month except December
H H 1,15 1-11 *



4)构建环境,如下图:

jinkens 自动部署java jenkins自动部署maven项目_jinkens 自动部署java_12



5)Build,如下图:

输入clean package

或者是

clean package -Dmaven.repo.local=/home/svr/software/mvn_res

前者是使用默认的maven仓库路径即:/root/.m2/repository,可以使用第二个命令-Dmaven.repo.local指定仓库地址;

jinkens 自动部署java jenkins自动部署maven项目_jinkens 自动部署java_13



6)构建后操作,如下图:

选择Deploy war/ear to container 

发布到容器

jinkens 自动部署java jenkins自动部署maven项目_jinkens 自动部署java_14



至此配置完成,可以启动任务了:

jinkens 自动部署java jenkins自动部署maven项目_Jenkins_15

jinkens 自动部署java jenkins自动部署maven项目_Jenkins_16



PS:

如果出现以下错误,需要关注下耗时及内存情况,在编译发布的过程中是比较消耗内存的,如果内存不够系统会强制停止

Downloaded from alimaven: xxx (223 kB at 3.0 kB/s)

Started

Finished: ABORTED