说明:
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,注意端口占用情况,如下图:
说明:第一次登陆需要使用默认的密码,密码在服务器上的文件中,拷贝即可。
登录之后,选择"安装推荐的插件",如下图:
相关命令:
说明:只需要在访问jenkins服务器的网址url地址后加上相关操作单词即可,如下:
1、关闭Jenkins
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
如下图:
3)全局工具配置
选择左上角的系统管理=>全局工具配置
主要设置以下几项:
配置:Maven Configuration
配置:JDK
如下图:
四、jenkins编译发布
jenkin基础配置完成后,可以进行任务工程配置,主要包括以下几个步骤:
1)新建任务
2)源码配置
3)构建触发器
4)构建环境
5)Build
6)构建后操作
具体明细如下:
1)新建任务,如下图:
2)源码配置,如下图:
3)构建触发器,如下图:
图上是每个两分钟检测一次源代码,如果有变化就执行任务
说明:
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)构建环境,如下图:
5)Build,如下图:
输入clean package
或者是
clean package -Dmaven.repo.local=/home/svr/software/mvn_res
前者是使用默认的maven仓库路径即:/root/.m2/repository,可以使用第二个命令-Dmaven.repo.local指定仓库地址;
6)构建后操作,如下图:
选择Deploy war/ear to container
发布到容器
至此配置完成,可以启动任务了:
PS:
如果出现以下错误,需要关注下耗时及内存情况,在编译发布的过程中是比较消耗内存的,如果内存不够系统会强制停止
Downloaded from alimaven: xxx (223 kB at 3.0 kB/s)
Started
Finished: ABORTED