小伙伴想学Jenkins自动构建发布项目,我:安排上了!!
写在前面
趁着十一长假,很多小伙伴都在悄悄学习,有些是为了能够顺利通过面试,进入大厂升职加薪。有些则是为了进一步巩固和提高自己的专业技能,希望有朝一日能过成为互联网架构师乃至技术专家。这不,就有小伙伴问我:如何通过Jenkins自动构建和发布项目,我:安排上了!!
小伙伴的疑问
我们还是通过一张图来直观的了解下小伙伴的疑问吧。
老规则,我们直接进入正题。
基础环境
所有的环境均搭建在CentOS 6.5 x64服务器上,IP:192.168.209.121 主机名:liuyazhuang121 , 并在服务器上配置了主机名到IP的映射。
构建Web项目
环境配置
首先,我们来看下如何通过Jenkins自动构建发布Web项目到远程Tomcat。我们使用的环境是:Jdk1.8+Maven3.6.3+Tomcat9.0+Jenkins2.19.3+SSH+Shell
其中,JDK、Maven和Tomcat小伙伴们可以自行下载安装并配置系统环境,可以到链接http://download.csdn.net/download/l1028386804/10127368 下载jenkins2.19.3。
配置SSH免密码登录
ssh-keygen -t rsa
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys/
配置Jenkins
启动Jenkins
下载的Jenkins war包拷贝到${TOMCAT_HOME}/webapp目录下,并启动Tomcat,在浏览器中输入http://192.168.209.121:8080/jenkins,如下图所示,则证明Jenkins启动成功。
安装插件
上述默认安装的插件还不够
依次点击 系统管理->插件管理-> 可选插件-> 过滤搜索框中 查找如下插件:
- Maven Integration plugin
- SSH plugin
- Deploy to container Plugin
设置系统管理-Global Tool Configuration
在系统管理-Global Tool Configuration中配置JDK和Maven,如下:
配置系统管理-Configure Global Security
注册并登录用户
配置SSH remote hosts
在系统管理-系统设置,配置SSH remote hosts
点击Add按钮设置登录方式,如下图所示:
点击Check connection按钮 ,如果页面上输出Successfull connection,则SSH配置成功,如下图所示:
新建项目构建
配置项目构建
General-配置项目名称
源码管理-配置SVN信息
配置Pre Steps
配置Post Steps
配置完成后保存。
构建项目
回到主页,点击立即构建项目按钮,如下图:
可看到页面上出现对maven_test的构建进度条,点击进度条即可进入日志输出页面,如下图:
输出如下日志,则代表构建并部署到tomcat成功。
tomcat.sh脚本
最后,我们给出tomcat.sh脚本的内容,如下所示。
#!/bin/sh
## java env
## service name
SERVICE_NAME=tomcat_service
case "$1" in
start)
/usr/local/tomcat/test-tomcat-10000/bin/startup.sh
;;
stop)
sleep 5
##
## edu-service-aa.jar
## edu-service-aa-bb.jar
P_ID=`ps -ef | grep -w "test-tomcat-10000" | grep -v "grep" | awk '{print $2}'`
if [ "$P_ID" == "" ]; then
echo "=== $SERVICE_NAME process not exists or stop success"
else
echo "=== $SERVICE_NAME process pid is:$P_ID"
echo "=== begin kill $SERVICE_NAME process, pid is:$P_ID"
kill $P_ID
fi
;;
restart)
$0 stop
sleep 2
$0 start
echo "=== restart $SERVICE_NAME"
;;
*)
## restart
$0 stop
sleep 2
$0 start
;;
esac
exit 0
构建Java项目
Jenkins构建Jar包发布到远程服务器和构建War包发布到远程服务器配置基本一致,只是Post Steps配置稍有不同。
配置Post Steps
配置Jar包发布到远程服务器的Post Steps配置如下:
构建项目
account-server.sh脚本
最后,我们也给出account-server.sh脚本的内容,如下所示。
#!/bin/sh
## java env
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_144
export JRE_HOME=$JAVA_HOME/jre
## service name
APP_NAME=account
SERVICE_DIR=/usr/local/dubbo-server/$APP_NAME
SERVICE_NAME=medcare-dubbo-$APP_NAME
JAR_NAME=$SERVICE_NAME\.jar
PID=$SERVICE_NAME\.pid
cd $SERVICE_DIR
case "$1" in
start)
nohup $JRE_HOME/bin/java -Xms256m -Xmx512m -jar $JAR_NAME >/dev/null 2>&1 &
echo $! > $SERVICE_DIR/$PID
echo "=== start $SERVICE_NAME"
;;
stop)
kill `cat $SERVICE_DIR/$PID`
rm -rf $SERVICE_DIR/$PID
echo "=== stop $SERVICE_NAME"
sleep 5
##
## edu-service-aa.jar
## edu-service-aa-bb.jar
P_ID=`ps -ef | grep -w "$SERVICE_NAME" | grep -v "grep" | awk '{print $2}'`
if [ "$P_ID" == "" ]; then
echo "=== $SERVICE_NAME process not exists or stop success"
else
echo "=== $SERVICE_NAME process pid is:$P_ID"
echo "=== begin kill $SERVICE_NAME process, pid is:$P_ID"
kill -9 $P_ID
fi
;;
restart)
$0 stop
sleep 2
$0 start
echo "=== restart $SERVICE_NAME"
;;
*)
## restart
$0 stop
sleep 2
$0 start
;;
esac
exit 0
重磅福利
微信搜一搜【冰河技术】微信公众号,关注这个有深度的程序员,每天阅读超硬核技术干货,公众号内回复【PDF】有我准备的一线大厂面试资料和我原创的超硬核PDF技术文档,以及我为大家精心准备的多套简历模板(不断更新中),希望大家都能找到心仪的工作,学习是一条时而郁郁寡欢,时而开怀大笑的路,加油。如果你通过努力成功进入到了心仪的公司,一定不要懈怠放松,职场成长和新技术学习一样,不进则退。如果有幸我们江湖再见!
另外,我开源的各个PDF,后续我都会持续更新和维护,感谢大家长期以来对冰河的支持!!
小伙伴想学Jenkins自动构建发布项目,我:安排上了!!的更多相关文章
- jenkins自动构建前端项目(window,vue)
我们把一个多人协作的vue前端项目发布服务器,一般要经过以下步骤: git更新最新的代码 构建项目 把构建后的代码上传到服务器 如果用jenkins来构建的话,只需要点击一次构建按钮,就可以自动完成以 ...
- Jenkins自动构建gitlab项目(jenkins+maven+giltlab+tomcat)
环境准备: System:CentOS 7.3 (最小化安装) JDK: 8u161 (1.8_161) tomcat: 8.5.29 Jenkins: Jenkins 2.107.1 Gitlab: ...
- CentOS 7.2安装Jenkins自动构建Git项目
1.环境 本文使用VMWare虚拟机进行实验. 最终实现目标,在Jenkins服务器上新建构建任务,从Git服务器上拉取master HEAD(不编译,仅演示),部署到"目标服务器" ...
- jenkins 自动构建gitlab项目
安装的plugin: - kubernetes:1.7.1 - workflow-aggregator:2.5 - workflow-job:2.21 - credentials-b ...
- Linux下Jenkins与GitHub自动构建Node项目(Vue)
根据上篇文章<Linux下Jenkins与GitHub自动构建NetCore与部署>,我们知道了Jenkins的强大功能,自动构建,部署了一个NetCore的Web,让开发人员专注于开发, ...
- DEVOPS技术实践_02:jenkins自动构建项目
一.用户名密码错误 打开jenkins发现用户名密码错误,解决 1.1 找到config.xml文件 [root@jenkins-master ~]# ll -a drwxr-xr-x. root r ...
- Jenkins自动部署Tomcat项目
Jenkins自动部署Tomcat项目 1.安装jenkins 插件 启动Jenkins,进入系统管理-插件管理: 选择Deploy to container Plugin 插件安装:
- Yeoman自动构建js项目
Aug 19, 2013 Tags: bowergruntJavascriptjsnodejsyeomanyo Comments: 10 Comments Yeoman自动构建js项目 从零开始nod ...
- Gitlab源码库里代码提交后,如何触发jenkins自动构建?
版本库里代码提交后,如何触发jenkins自动构建?这是一个面试题,感觉自己回答的并不好,因为并没有用过这个功能,之前公司实际项目用的是svn版本管理,一般都用立刻构建,和定时任务构建(不管代码是否有 ...
随机推荐
- js中map()、some()、every()、filter()的区别
js的Array对象有map.some.every.filter几个方法都能对数组中的每个对象进行处理,但是他们之间的功能又各有差别,所以在记下. map():通过指定函数处理数组的每个元素,并返回处 ...
- Android开发之viewpager导报错误解决方法:错误代码 Caused by: java.lang.ClassNotFoundException: Didn't find class
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 Caused by: java.lang.ClassNotFoundException: Didn't ...
- 使用powershell完成定时get任务
最近公司网站需要在后台定时请求和更新数据,但PHP毕竟是一种后端语言,不能自动运行,所以整理了几个方法. 1.在前端定时请求页面. 2.使用批处理. 3.使用windows计划任务. 第一种方案必须要 ...
- Linux下命令设置别名--alias(同实用于mac)
最近在搞appium自动化脚本编写,过程中经常会使用 uiautomatorviewer这个工具查看UI布局和元素,但是不得不说这个单词太长了.. 如何快速使用,有三个小技巧,分别是: 1.设置好改工 ...
- Unity NGUI C#性能优化
建议读者先看这篇博文:http://blog.csdn.net/zzxiang1985/article/details/43339273,有些技术已经变了,比如第1招,unity5的打包机制已经变许多 ...
- Kubernetes K8S之资源控制器Job和CronJob详解
Kubernetes的资源控制器Job和CronJob详解与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2 ...
- 深入理解Go系列一之指针变量
指针变量 基本概念 &a,代表 a 变量的内存地址 p,代表一个句柄引用(句柄由实例数据指针与实例类型指针两部分组成) ,句柄的好处是,当实例数据值改变时,不需要改动实例数据指针与实例类型指针 ...
- Oracle数据库正则表达式
正则表达式: 无论是在前端还是后台正则表达式都是一个至关重要的知识点,例如判断一个手机号码输入是否正确,如果使用Java.C或者其他语言进行字符串进行判断,也许写几十行代码都不一定能解决,而且漏洞百出 ...
- jzoj1497. 景点中心
Description 话说宁波市的中小学生在镇海中学参加计算机程序设计比赛,比赛之余,他们在镇海中学的各个景点参观.镇海中学共有n个景点,每个景点均有若干学生正在参观.这n个景点以自然数1至n编号, ...
- python里面的project、package、module分别是什么
2020/5/25 1.project(项目) project 即项目,是一个很大的文件夹,里面有好多的 .py 文件. 在Spyder 中点击菜单栏 projects -----> new ...