Jenkins+maven+Tomcat+SVN一键自动打包部署应用到服务器
今天请教了大神,终于把jenkins给搞明白了
现在做下笔记,防止自己老年痴呆又忘了怎么配置
(截图可能不够清晰,有不清楚的随时评论打call)
机器配置:
安装配置规划 |
|
机器 |
192.168.169.139(本机虚拟机) 192.168.169.140(本机虚拟机) |
系统 |
Red Hat Enterprise Linux Server release 6.4 (Santiago) |
系统内核 |
2.6.32-358.el6.x86_64 |
安装包 |
jenkins.war |
路径 |
Tar包路径:/home/admin |
192.168.169.140作为Jenkins的部署服务器
192.168.169.139作为远程服务器,部署war到Tomcat容器
jenkins打包部署到远程服务器,需要以下安装包:
1)jenkins.war(服务器140上解压执行)
2)apache-maven-3.5.3-bin.tar.gz(服务器140上面解压部署)
3)jdk-8u161-linux-x64.tar.gz(二者均需配置jdk)
4)apache-tomcat-7.0.85.tar.gz(远程服务器139上面解压部署)
上述包提取地址:https://pan.baidu.com/s/1YoEAw34CI0HjTgDyveN43g
提 取 密 码: 5itt
正式进入jenkins安装环节:
1、139、140服务器均新建admin用户并设置密码
useradd admin
passwd admin
输入密码并再次确认即可
2、上传jdk-8u161-linux-x64.tar.gz到两台服务器下的admin用户,
配置局部环境变量.bash_profile并使之生效
参考(局部jdk配置):
http://www.cnblogs.com/qingqing74647464/p/8617212.html
3、上传apache-maven-3.5.3-bin.tar.gz到140服务器进行安装解压
解压安装maven参考:
http://www.cnblogs.com/qingqing74647464/p/8796870.html
4、上传apache-tomcat-7.0.85.tar.gz到远程服务器139,直接解压修改bin目录下的catalina.sh文件,
添加jdk的安装路径等信息
执行:
1) tar -zxvf apache-tomcat-7.0.85.tar.gz
2) rm -rf apache-tomcat-7.0.85.tar.gz
3) mv apache-tomcat-7.0.85/ tomcat7/
4) cd tomcat7/bin
5) vi catalina.sh
添加如下内容并保存:
export JAVA_HOME=/home/admin/jdk1.8(自行修改成自己的)
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
5、上传jenkins.war到140服务器(jdk和maven已经配置好并生效)
执行:java -jar jenkins.war --httpPort=8888 指定端口号,可自行修改
(需自定义jenkins访问端口执行java -jar jenkins.war --httpPort=8081 ,启动jenkins,
其中httpPort就是访问端口设置,否则可直接将war包放在Tomcat里面去跑,一样的效果;
如果想后台一直运行,那么启动命令为nohup java -jar jenkins.war --httpPort=8888 &
或者 java -jar jenkins.war --httpPort=8888 后执行bg,再Ctrl + z执行bg后,输入exit也可以实现效果)
6、打开浏览器访问链接http://ip地址:8888(链接中ip根据实际情况更改)
7、进入jenkins系统后出现下面界面,点击下面图片中红框中的按钮
8、点击后出现如下页面:
9、等待安装完毕,出现下面界面,设置用户名和密码:
10、点击Start using Jenkins按钮后进入下面页面,点击“系统管理”:
11、“系统管理”出现下面页面,点击“管理插件”:
12、点击“管理插件”后点击“可选插件”出现先下面页面,
13、在过滤位置搜索“maven”,选择“Maven Integration plugin”,点击“直接安装”按钮:
14、安装需要等待一段时间,出现下面页面代表安装成功,点击“返回首页”:
15、在“系统管理”-“管理插件”-“可选插件”下,在过滤中搜索“deploy”,选择“Deploy to container Plugin”
和“WebSphere Deployer Plugin”,点击“直接安装”
16、等待一段时间,显示完成代表安装成功
17、在“系统配置”页面,点击“Global Tool Configuration”
18、在Global Tool Configuration配置maven和jdk
解释下面三张图的参数输入:
Maven Configuration
Default settings provider:
File path:/home/admin/maven3.5.3/conf/settings.xml(maven的setting.xml文件路径)
Default global settings provider:
File path:/home/admin/maven3.5.3/conf/settings.xml(maven的setting.xml文件路径)
JDK
别名:随便取
JAVA_HOME:服务器上面配置的JAVA_HOME
MAVEN
name:随便取
MAVEN_HOME:服务器上面配置的MAVEN_HOME
|
19、新增JDK
20、新增Maven
21、配置完成后点击“Save”保存
22、点击“系统管理”-> “系统设置”
23、更改Maven项目配置
全局MAVEN_OPTS:-Xms128m -Xmx512m
Local Maven Repository 选择Local to the executor
创建项目
1、 登录
2、 点击登录进入Jenkins主界面
3、 在 Jenkins主界面点击右边“新建”
4、 在出现下面的界面中,创建一个新的Job
1)“Enter an item name”: 输入新建一个Job的名称。
2)选择“构建一个自由风格的软件项目”,点击OK即可创建一个新的Job,如图
5、找到“源码管理”,选择“Subversion”,如下图:
6、在“Repository URL” 设置你的代码的svn地址,控制好访问到哪一个文件夹,然后点击“Add”
下拉按钮,选择点击“Jenkins”:
在打开的页面中选择连接repository路径的密钥,具体方式在“Kind”中选择(默认选择使用
username with password即使用用户名和密码方式):
填写完密钥后点击“Add”按钮保存,在“Credentials”标签右边的下拉菜单中选择对应的密钥:
Local module directory:这是让你自己设置代码存储到本地工作区的自定义目录,如果不写,则代
码直接放在当前工作区目录下;如果自定义目录,则会在工作区创建这个目录结构,然后代码存储
到这个目录下。例如:
1) 当jenkins的工作空间为默认路径时“Local module directory”默认值为”.”,如下图,
代码将保存到Jenkins工作目录下的名称为Job名称的文件夹中,举例:
Jenkins工作目录为/home/admin/.jenkins/workspace
Job名称为:Test
那么保存的代码位置也就是job的工作区路径就为: /home/admin/.jenkins/workspace/Test
1) 自定义Local module directory时,如下图,举例说明:
Jenkins工作目录为/home/admin/.jenkins/workspace
Job名称为:Test
Local module directory:Helloworld
那么保存的代码位置就为: /home/admin/.jenkins/workspace/Test/Helloworld
7、 找到“构建触发器”,勾选“Poll SCM”
在“日程表”中填写0 0 * * * :表示每天凌晨自动检查一次,源码改变了则自动下载构建。
H/5 * * * * : 表示每5分钟自动检查一次,源码改变了则自动下载构建。
两种方案如下图所示:
8、 找到“构建”,点击“增加构建步骤”,选择“Execute shell”
选择“Execute shell”后会在页面生成如下页面:
在command中填写shell脚本来执行mvn操作.
举例(红色部分根据实际情况修改):
cd $WORKSPACE
cd Helloworld
MAVEN_BIN=/home/admin/maven3.5.3/bin
$MAVEN_BIN/mvn clean install -Dmaven.test.skip=true
注释:
$WORKSPACE: Job的工作空间路径,例如:
Jenkins的工作目录时/home/admin/.jenkins/workspace
Job的名称为Helloworld
那么,该Job下的$WORKSPACE为:/home/admin/.jenkins/workspace/Helloworld, $WORKSPACE会根据
Job名称而改变,当Job为test时,TT中的$WORKSPACE也就为/home/admin/.jenkins/workspace/test
MAVEN_BIN : maven的bin文件夹的绝对路径
zkClient: pom.xml所在的文件夹,这个根据具体pom.xml文件的路径来写
-Dmaven.test.skip=true : 这个是指不执行测试用例,也不编译测试用例类。
9、点击“保存”,即可保存该job
打包项目
1、在Jenkins主界面,点击每个Job的下拉按钮,然后再点击“立即构建”
2、任务构建状态说明
- 当前构建状态分为以下几种
项目构建完成,同时被认为是稳定的 |
|
项目构建完成,但被认定为不稳定 |
|
构建失败 |
|
作业已经禁止 |
- 构建稳定行,Jenkins会基于一些后处理器任务为构建发布一个稳健指数(从0-100 ),越高越稳定
构建成功率>80% |
|
构建成功率60%-79% |
|
构建成功率40%-59% |
|
构建成功率20%-39% |
|
构建成功率0-19% |
期待任务编译都处于和 状态。
job远程部署(自动部署)
进入系统管理》插件管理,下载“SSH plugin”和 “Publish Over SSH”插件
1、配置SSH Server
点击“系统管理”-“系统设置”,找到“Publish over SSH”
Passphrase:全局的ssh密码
SSH Servers : 远程服务器信息设置区
Name:当前SSH Server的名称(随意取)
Hostname:远程服务器ip地址
Username:远程服务器的用户名
Remote Directory :连接远程服务器路径(绝对路径),也是在此路径下执行shell命令,
默认为/home/admin(根据每台服务器用户名而改变)。
点击“高级”,如上图所示
勾选“Use password authentication, or use a different key”,在“Passphrase / Password”
中输入远程服务器用户名的密码,比如该处输入用户名为“admin”的密码。
使用“Test Configuration”进行校验该配置是否通过,如下图:
当出现“Success”表示通过,也就是可以使用,使用“增加”,可以再创建一个连接远程服务器的SSH Server。
2、在jobs的配置中找到“构建后操作”,点击“增加构建后操作步骤”,选择“Send build artifacts over SSH”
3、配置“Send build artifacts over SSH”
配置说明:
Name:选择一个SSH Server(包含了远程服务器的信息)
Source files:这是一个相对路径,相对于该job的工作区的路径(存放源码的路径),例如:
Source file 为“test/test/target/HelloWorld.war”,那么绝对路径为:$WORKSPACE/test/test/target/HelloWorld.war,
此处的$WORKSPACE为/home/admin/.jenkins/workspace/test
Remove prefix :移除Source files中的前缀,
例如 Source file为“test/test/target/HelloWorld.war”,如果Remove prefix为空,
jenkins就会在远程服务器上目标位置创建test/test/target路径,并在该路径下存放war包;
如果Remove prefix为“test/test/target”jenkins只会讲war包移动至远程服务器的目标位置。
Remote directory:远程服务器的目标位置,相对路径,相对于在“系统设置”中的“Publish over SSH”里
的“SSH Server”设置里的“Remote Directory”的路径。
例如“Publish over SSH”里的“SSH Server”设置里的“Remote Directory”的没写路径就为默认路径,
而此处的“Remote directory”为history,那么war包保存在远程服务器路径为/home/admin/history中
Exec command :此处写在远程服务器上执行的shell脚本
Exec command 脚本:
#jdk环境
export JAVA_HOME=/home/admin/jdk1.8
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
#进入admin用户主目录
cd
#执行该文件
sh HelloWorld.sh
HelloWorld.sh文件内容
#tomcat路径
TOMCAT_HOME=/home/admin/tomcat7
#查看进程并杀掉进程
ID=`ps -ef | grep "$TOMCAT_HOME" | grep -v "$0" | grep -v "grep" | awk '{print $2}'`
echo $ID
for id in $ID
do
kill -9 $id
echo "killed $id"
done
#删除旧的war包等
cd $TOMCAT_HOME/webapps
rm -rf site-web*
#拷贝新war包到Tomcat下
cd ../../history/
cp HelloWorld.war $TOMCAT_HOME/webapps
cd ../tomcat7/bin
#启动tomcat
nohup ./startup.sh
大功告成~~~~~~~~~~~~
Jenkins+maven+Tomcat+SVN一键自动打包部署应用到服务器的更多相关文章
- Jenkins +Maven+Tomcat+SVN +Apache项目持续集成构建
详解Jenkins +Maven+Tomcat+SVN +Apache项目持续集成 一:前言 1. Jenkins jenkins版本大全http://mirrors.jenkins-ci.org/ ...
- CentOS6.8下Jenkins+maven+tomcat+git+shell自动构建、部署web应用环境的搭建
参考资料:http://www.cnblogs.com/cheng95/p/6542036.html http://www.cnblogs.com/software-test/p/7068278.ht ...
- Docker实战 | 第二篇:IDEA集成Docker插件实现一键自动打包部署微服务项目,一劳永逸的技术手段值得一试
一. 前言 大家在自己玩微服务项目的时候,动辄十几个服务,每次修改逐一部署繁琐不说也会浪费越来越多时间,所以本篇整理通过一次性配置实现一键部署微服务,实现真正所谓的一劳永逸. 二. 配置服务器 1. ...
- 解放双手 | Jenkins + gitlab + maven 自动打包部署项目
前言 记录 Jenkins + gitlab + maven 自动打包部署后端项目详细过程! 需求背景 不会偷懒的程序员不是好码农,传统的项目部署,有时候采用本地手动打包,再通过ssh传到服务器部署运 ...
- Jenkins结合shell脚本实现(gitLab/gitHub)前端项目自动打包部署服务器
原始发布部署: 石器时代的我们,先是本地打包好项目,在去服务器上把原来的文件删了,然后回到本地copy到服务器: 这操看起来简单,实际部署的人就知道多烦了,假如来几个项目都要重新发布:那就爽了: 今天 ...
- DevOps系列——Jenkins/Gitlab自动打包部署
前面只说了DevOps的两个基础组件Jenkins和GitLab,客官也不要着急,我们玩就玩的深入一点,Gitlab和Jenkins的各种配置和 插件很多,也够啃一阵子的,不要照着操作一通就感觉万事大 ...
- jenkins+svn 打包部署上传服务器并正常运行项目,从安装到使用
以前写过一个版本,jenkins打包部署的全果然,然后...没保存,现在重新写一个版本从按照开始. 项目平时部署情况,svn拉代码,开发打包后进行给测试,测试上传到跳板机,杀掉以前项目进程,上传到服务 ...
- jenkins+maven+tomcat集群发布
jenkins+Gitlab+maven+tomcat实现自动集成.打包.部署 - 李栋94 - 博客园https://www.cnblogs.com/lidong94/p/7427923.html ...
- jenkins + maven + nexus + [ svn 或 GitLab 或 GitHub ]
目录 介绍 DevOps平台四大模块 针对DevOps开源项目 Jenkins 介绍 Maven 介绍 maven的核心概念介绍 SVN介绍 Nexus介绍 Maven私服的 个特性: 流程图 环境搭 ...
随机推荐
- java 读写文件常用方法
package study.bigdata; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; ...
- jquery Ajax Queue 队列实现
有时候我们需要按顺序调用一组ajax,这些ajax需要有先后顺序,类似于同步的ajax,那么我们可以通过以下的方式来实现: (这个Ajax用到jQuery.post) //定义一个AJAX队列 $.n ...
- 排查PHP-FPM占用CPU过高
发现 如何发现的呢?当然是使用top命令,发现系统的load average>3,这说明系统已经处于比较高的负载中. 尝试解决 当我把php-fpm重启后,没过一会儿又开始cpu狂飙!这是什么鬼 ...
- poj3020 Antenna Placement 匈牙利算法求最小覆盖=最大匹配数(自身对应自身情况下要对半) 小圈圈圈点
/** 题目:poj3020 Antenna Placement 链接:http://poj.org/problem?id=3020 题意: 给一个由'*'或者'o'组成的n*m大小的图,你可以用一个 ...
- R语言安装openxl包报错解决办法
在R语言中使用openxlsx包,会报错 解决办法就是: 下载安装Set-Rtool,安装时注意勾选对话框 然后在R中运行以下代码: Sys.setenv("R_ZIPCMD" = ...
- SVN版本库的备份、还原、移植(初级篇、中级篇和高级篇)
版本库数据的移植:svnadmin dump.svnadmin load 导出: $svnlook youngest myrepos //查看到目前为止最新的版本号 $svnadmin dump my ...
- VIM配置入门
原文链接: http://www.ruanyifeng.com/blog/2018/09/vimrc.html 个人增加了两张收集来的图.
- 第一百五十节,封装库--JavaScript,表单验证--密码验证
封装库--JavaScript,表单验证--密码验证 效果图 html <div id="reg"> <h2 class="tuo">& ...
- 【BZOJ】3203: [Sdoi2013]保护出题人(几何+三分+特殊的技巧)
http://www.lydsy.com/JudgeOnline/problem.php?id=3203 wa无数次QAQ,犯sb错....一是数组没有引用...二是输出转成了int(越界了sad). ...
- iOS开发-你真的会用SDWebImage?
SDWebImage作为眼下最受欢迎的图片下载第三方框架,使用率非常高.可是你真的会用吗?本文接下来将通过例子分析怎样合理使用SDWebImage. 使用场景:自己定义的UITableViewCell ...