jenkins的安装这里就不做描述了,很简单的  百度搜索一下即可

  这里安装的jenkins-2.39-1.1

wget http://pkg.jenkins-ci.org/redhat/jenkins-2.39-1.1.noarch.rpm
sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins.io.key
sudo yum -y install jenkins-2.39-1.1.noarch.rpm
安装完后防火墙放行端口

  安装不是重点  重点是去配置jenkins

1.先配置好jenkins需要用到的其他外部组件  jdk,maven,git/svn

   安装git: yum install git

  git地址使用命令查询  whereis git

  maven  jdk 安装好后配置好环境变量   自行百度

  查询环境变量中的jdk和maven地址

启动  停止 重启

service jenkins start

service jenkins stop

service jenkins restart

进入配置阶段

  1.1 进入系统设置- 全局工具配置中配置 jdk  maven  git     不要勾选自动安装

        jdk  maven 使用的是环境变量中的地址

 2.开始新建一个jenkins任务

 2.1 general 

  这里是一些通用的设置,  丢弃旧的构建  多次构建又不手动清除  会生成很多文件 ,占用磁盘空间  这里的丢弃旧的构建的配置大家按需配置即可

2.2源码管理

  版本控制这里使用的是git   git的地址填进去  点击Add  添加  git的账号密码  然后在下拉框中选择刚刚新增的账号密码

  选择了正确的git账号密码   红色的报错信息就会消失   下面也会显示git代码的主干    如果需要的是其中的分支   修改成对应的分支名称就行

2.3构建触发器

  这里一般默认的触发器就行 如果你需要定时构建 比如每隔一段时间重新部署  或者每隔一段时间检测有没有提交  有提交就部署

  定时构建  “日程表”格式为   和cron表达式一样  如果你想实现什么  对应着去百度就行

## 每行由 5 个值组成(空格或TAB分隔),分别表示分(0-59)、时(0-23)、日(1-31)、月(1-12)、周(0-7, 0/7=周日)
## "M,N" 表示M和N;"M-N" 表示范围[M,N];"M-N/X" 表示范围[M,N]内每隔X;"*/X" 表示整个范围内每隔X
## 前面提到的M/N/X的值都可以用H(意为Hash)代替,散列值起到随机值的效果,且同一项目取值稳定,这对于项目多时分散压力很有用。
H/10 H(0-8) * * 1-5 ## 触发时间: 工作日、Hour为0~8按哈希随机、Minute以10为间隔
H/10 H * * 0,6,7 ## 触发时间: 周末、Hour为全天按哈希随机、Minute以10为间隔
## “日程表”修改后,下方会给出下次执行时间点的预告。

2.4 构建环境和pre steps

  这里使用的是默认的,有需要的对应着去查询资料

2.5 Build 

  因为 本文中项目结构  图中红框框出来的都是一个个子项目

  这里我只想build 其中的mobile模块  就需要配置 -pl  mobile -am

  加上其他的mvn打包的命令  clean package  -pl  mobile -am  -Dmaven.test.skip=true

2.6 构建设置  构建后操作  

  这里可以设置构建后邮件通知

-------------------------------------------------------------------------------------------------------最重要的一部分当然要有华丽的分割线-----------------------------------------------------------------------------------------------------------------------------------------

2.7 Post Steps 

  构建完成后操作 这里使用的执行shell命令 

  shell脚本里面写的就是无非就是把编译好的war包放到对应的容器中去 然后启动容器

       最关键得地方,  不同的项目.不同的容器这里的shell脚本肯定是有不一样,网络上的这类shell只能参考,具体还得自己动手去写

这里放一个shell示例,    容器是tomcat

  思路: 先查对应的tomcat时候启动,  启动了就kill掉, 然后删除webapps中的包,  把jenkins编译的包复制到对应的容器,  重命名包 ,  启动容器

#!/bin
#kill tomcat pid
#有错的shell
pidlist=`ps -ef|grep tomcat_mobile|grep -v "grep"|awk '{print $2}'`
function stop(){
if [ "$pidlist" == "" ]
then
echo "----tomcat_mobile 已经关闭----" else
echo "tomcat_mobile 进程号 :$pidlist"
kill -9 $pidlist
echo "KILL $pidlist:"
fi
} stop
pidlist2=`ps -ef|grep tomcat_mobile|grep -v "grep"|awk '{print $2}'`
if [ "$pidlist2" == "" ]
then
echo "----关闭tomcat_mobile成功----"
else
echo "----关闭tomcat_mobile失败----"
fi rm -rf /usr/local/tomcat_mobile/webapps/ROOT*
cp -r /var/lib/jenkins/workspace/baiyangjinrong-mobile/mobile/target/mobile.war /usr/local/tomcat_mobile/webapps
sleep 3s
mv /usr/local/tomcat_mobile/webapps/mobile.war /usr/local/tomcat_mobile/webapps/ROOT.war
cd /usr/local/tomcat_mobile/bin
./startup.sh

问题1:上述shell脚本执行后   肯定会出现tomcat没有启动的情况
  1.这里如果tomcat和jenkins 在同一台linux上可以 加上 export BUILD_ID=tomcat_mobile_build_id
    原因是: jenkins在执行sh脚本的时候,如果脚本中有启动后台进程的情况,例如tomcat的关闭和启动,jenkins在job构建结束之后,会kill所有的脚本里面衍生出的子进程。修改环境变量BUILD_ID的值,这样,衍生出来的子进程就不会被kill了
  2.tomcat和jenkins不在一台linux上
  
    假如部署jenkins的机器是A,部署tomcat的机器是B。那可以在A机器上写一个脚本,把需要在B机器上执行的命令封装在A机器上的这个脚本里面,这样也能保证衍生进程正确执行结束。

  就是相当于把上面的shell写到一个sh文件中  jenkins执行这个sh文件

  因为我便是jenkins和Tomcat在同一台linux上  所以这里就没有把shell脚本写在sh文件中

#!/bin/sh
#kill tomcat pid
#这句尤为重要
export BUILD_ID=tomcat_mobile_build_id # 1.关闭tomcat
pidlist=`ps -ef|grep tomcat_mobile|grep -v "grep"|awk '{print $2}'`
function stop(){
if [ "$pidlist" == "" ]
then
echo "----tomcat 已经关闭----" else
echo "tomcat进程号 :$pidlist"
kill -9 $pidlist
echo "KILL $pidlist:"
fi
} stop
pidlist2=`ps -ef|grep tomcat_mobile|grep -v "grep"|awk '{print $2}'`
if [ "$pidlist2" == "" ]
then
echo "----关闭tomcat成功----"
else
echo "----关闭tomcat失败----"
fi # 2.移除原来tomcat中webapps中的项目文件夹
rm -rf /usr/local/tomcat_mobile/webapps/ROOT*
# 3.复制jenkins生成的war包到tomcat中webapps中
cp -r /var/lib/jenkins/workspace/baiyangjinrong-mobile/mobile/target/mobile.war /usr/local/tomcat_mobile/webapps
sleep 3s
# 4.修改war包的名称
mv /usr/local/tomcat_mobile/webapps/mobile.war /usr/local/tomcat_mobile/webapps/ROOT.war
# 5.启动tomcat
cd /usr/local/tomcat_mobile/bin
./startup.sh

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2.8 可能出现的问题:

   1. 这里如果出现如下的问题  就是因为linux上没有安装git

  安装 yum install git  后去全局工具配置你配置好git的路径

  2. jenkins部署失败 首先去看对应任务的日志

  从日志中可以看出来这里jenkins  编译是成功的  但是在复制war的时候报错,  图中是因为不小心把空格敲成换行了

参考文档:

  https://blog.csdn.net/aosica321/article/details/64441541

  https://blog.csdn.net/shuizhihun07/article/details/80168076

jenkins自动部署应用到tomcat中,编译后shell脚本的简单示例的更多相关文章

  1. Jenkins自动部署到(远程)tomcat服务器

    Jenkins的流程: 1.从版本控制中获取代码 ->2. 使用maven编译生成相应的包(jar,war) ->3. 部署到指定的地点. 其中2.主要是解决依赖的问题,或许你需要先mvn ...

  2. 内存溢出导致jenkins自动部署到tomcat失败

    原文地址:http://openwares.net/java/jenkens_deploy_to_tomcat_error_of_outofmemoryerror.html jenkins自动部署wa ...

  3. Jenkins自动部署Tomcat项目

    Jenkins自动部署Tomcat项目 1.安装jenkins 插件 启动Jenkins,进入系统管理-插件管理: 选择Deploy to container Plugin 插件安装:

  4. 使用jenkins自动部署java工程到jboss-eap6.3 -- 1.环境搭建

    使用jenkins自动部署java工程到jboss-eap6.3 -- 1.环境搭建 目录 使用jenkins自动部署java工程到jboss-eap6.3 -- 1.环境搭建 使用jenkins自动 ...

  5. 使用Jenkins自动部署博客

    title: 使用Jenkins自动部署博客 toc: true comment: true date: 2017-12-17 19:48:10 tags: ['Jenkins', 'CI'] cat ...

  6. Jenkins自动部署spring boot

    Jenkins自动部署spring boot 背景介绍 本公司属于微小型企业,初期业务量不高,所有程序都写在一个maven项目里面,不过是多模块开发. 分了login模块,service模块,cms模 ...

  7. Maven入门示例(3):自动部署至外部Tomcat

    Maven入门示例(3):自动部署至外部Tomcat 博客分类:  maven 2012原创   Maven入门示例(3):自动部署至外部Tomcat 上一篇,介绍了如何创建Maven项目以及如何在内 ...

  8. maven自动部署到远程tomcat教程

    使用maven的自动部署功能可以很方便的将maven工程自动部署到远程tomcat服务器,节省了大量时间. 本文章适用于tomcat的7.x ,8.x, 9.x版本. 下面是自动部的步骤 1,首先,配 ...

  9. Eclipse自动部署项目到Tomcat的webapps下的有效方法

    开发JavaEE项目,常用的工具有MyEclipse,Eclipse,netBeans等,我比较喜欢用Eclipse,因为相比MyEclipse体积小很多,响应速度也快,且足以满足需求,我喜欢简洁的编 ...

随机推荐

  1. turnserver 配置说明记录

    coTurn工程提供了较完整的STUN和TURN服务,记录其主要的命令行参数配置说明 针对TURN/STUN服务进程turnserver.exe的使用参数做简单说明 -L 监听的IP地址 -p 监听端 ...

  2. Linux中对逻辑卷进行扩容与缩小

    一.在扩容之前,先查看自己逻辑卷,卷组,物理卷的信息:(在上一篇的基础上:Linux中对逻辑卷的建立) 查看物理卷: # pvdisplay /dev/sdc1 查看卷组: vgdisplay /de ...

  3. cve-2017-11882 poc分析

    目录 CVE-2017-11882 poc分析 0x00 工具&实验环境 0x01 分析行为 第一步:观察poc行为 第二步:找出计算器被弹出的地方 0x02 调试定位漏洞触发点 0x03 分 ...

  4. 如何用Jupyter notebook打开本地数据集

    首先打开本地Jupyter notebook,出现类似页面并进入网页端Home. 网页端界面类似如下: 需要注意的是,Jupyter notebook只能打开当前目录下的数据集,如csv,所以需要使用 ...

  5. 20个必不可少的Python库

    转载:http://www.python123.org/tutorials/58b41f2a28c8f30100bd41dc 读者们好.今天我将介绍20个属于我常用工具的Python库,我相信你看完之 ...

  6. python3编写网络爬虫15-Splash的使用

    Splash是一个JavaScript渲染服务 是一个带有HTTP API的轻量级浏览器 同时对接了python的Twisted 和QT库 利用它可以实现对动态渲染页面的抓取 功能介绍 1.异步方式处 ...

  7. keepalived 安装篇-个人实践-编译安装

    官网地址:http://www.keepalived.org/官网文档:http://www.keepalived.org/documentation.html Keepalived的作用是检测服务器 ...

  8. ant.design React使用Echarts,实力踩坑

    最近项目用到Echarts(以下用ec代替),于是照猫画虎得引入到团队的antd项目中,但是遇到2个棘手问题: 1. ec对dom不渲染,检查后发现,原来是全局存在id重复,所以使用React时,最好 ...

  9. (转)Spring Boot (十):邮件服务

    http://www.ityouknow.com/springboot/2017/05/06/spring-boot-mail.html Spring Boot 仍然在狂速发展,才几个多月没有关注,现 ...

  10. dp 动态规划 蘑菇

    蘑菇真的贵,友情价更高   Description 由于提莫为巡逻准备的蘑菇太多了,多余的蘑菇路上种不下,于是他精心挑选了一些蘑菇拜访他的好朋友小炮 提莫的蘑菇一共有n个,对于编号为i的蘑菇魔力值是a ...