基于jenkins自动打包并部署Tomcat环境
传统网站部署的流程
在运维过程中,网站部署是运维的工作之一。传统的网站部署的流程大致分为:需求分析->原型设计->开发代码->提交代码->内网部署->内网测试->确认上线一>备份数据->外网更新->外网测试->发布完成。如果在内网测试时发现代码有异常,返回代码开发人员名字,调整代码:如果在外网测试时发现外网部署的代码有异常,可以及时进行网站回滚。

传统代码上线的过程
开发人员发起代码上线的需求(邮件中包含开发做好的WAR包)-->运维人员连接线上负载调度器(Nginx)一>隔离一组服务器(Tomcat)->连接服务器(Tomcat)-->备份旧代码(tar打包)-->删除旧代码目录-->上传新的 WAR包->外网测试->测试不通过则通过备份回滚代码->测试通过则利用rsync的脚本推送代码到其他服务器一>统一外网测试一>连接调度器恢复隔离机制一>隔离另一组服务器实施上线步骤一>上线完成
目前主流网站部署的流程
目前主流网站部署方法:通过Hudson/Jenkins工具平台实现全自动部署+测试,是一个可扩展的持续集成引擎,属于开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins非常易于安装和配置,简单易用。
开发人员:写好代码,不需要自己进行源码编译、打包等工作,直接将代码分支存放在SVN, Git仓库即可。
运维人员:减轻人工干预的错误率,同时解放运维人员繁杂的上传代码、手动备份、更新等操作。
测试人员:可以通过Jenkins进行简单的代码及网站测试。

Jenkins.的工作原理是先将源代码从SVN/Git版本控制系统中拷贝一份到本地,然后根据设置的脚本进行build (构建) 。整个系统的关键就是build脚本, build脚本告诉Jenkins在一次集成中需要执行的任务。

一、实验环境
Git 192.168.200.71
Jenkins 192.168.200.72
Tomcat 192.168.200.73
二、关闭安全机制
[root@jenkins ~]# systemctl stop firewalld
[root@jenkins ~]# iptables -F
[root@jenkins ~]# setenforce 0
三:安装jenkins
1、配置环境
[root@localhost ~]# hostname jenkins
[root@localhost ~]# bash
[root@jenkins ~]# systemctl stop firewalld
[root@jenkins ~]# iptables -F
[root@jenkins ~]# setenforce 0
2、安装依赖包
[root@jenkins ~]# yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)
[root@jenkins ~]# rz
anaconda-ks.cfg jenkins-2.205-1.1.noarch.rpm
Starting jenkins (via systemctl): [ 确定 ]
tcp6 0 0 :::8080 :::* LISTEN 59807/java
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# iptables -F
[root@localhost ~]# hostname git
[root@localhost ~]# bash
[root@git ~]# yum -y install git
[root@git ~]# echo "123456" | passwd --stdin git
[git@git ~]$ mkdir probe.git
[git@git ~]$ cd probe.git/
[git@git probe.git]$ git --bare init
初始化空的 Git 版本库于 /home/git/probe.git/
[git@git probe.git]$ exit
[root@git probe]# git add .



2、配置并发数
用于提高执行效率
Manage jenkins --> Configure -->Maven项目配置

3、配置邮箱地址
在测试完成后,主动发送邮件告知测试情况
Manage Jenkins -->ConfigureSystem-->Jenkins Location


#添加域


#添加凭据


在Tomcat机上创建目录



六、配置Jenkins的aven、JDK、Git环境
配置JDk
[root@jenkins ~]# tar xf jdk-8u191-linux-x64.tar.gz
[root@jenkins ~]# mv jdk1.8.0_191/ /usr/local/java
[root@jenkins ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java/
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
[root@jenkins ~]# rm -rf /usr/bin/java
[root@jenkins ~]# source /etc/profile
[root@jenkins ~]# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)


配置Maven环境
[root@jenkins ~]# tar xf apache-maven-3.5.0-bin.tar.gz
[root@jenkins ~]# mv apache-maven-3.5.0 /usr/local/maven-3.5.0
[root@jenkins ~]# vim /usr/local/maven-3.5.0/conf/settings.xml
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

Git环境配置
[root@jenkins ~]# which git
/usr/bin/git

七、web服务器配置
[root@web ~]# ls
anaconda-ks.cfg
apache-tomcat-8.5.16.tar.gz jdk-8u191-linux-x64.tar.gz
[root@web ~]# tar xf apache-tomcat-8.5.16.tar.gz
[root@web ~]# tar xf jdk-8u191-linux-x64.tar.gz
[root@web ~]# mv jdk1.8.0_191/ /usr/local/java
[root@web ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat
[root@web ~]# vim /etc/profile
[root@web ~]# rm -rf /usr/bin/java
[root@web ~]# source /etc/profile
[root@web ~]# java -version
java version "1.8.0_191"
发布公钥给jenkins主机
[root@web ~]# ssh-keygen
[root@web ~]# ssh-copy-id 192.168.200.72
八、新建Maven项目

如果在创建项目时缺少“构建一个Maven项目“这个选项,尝试下载插件
点击“可选插件” 然后在右边的过滤输入框中输入搜索关键字: Maven Integration 或者 Pipeline Maven Integration ,搜索到了以后,点击直接安装



主机jenkins默认使用jenkins用户去连接git,所以jenkins用户生成密钥对,并发送给git
[root@jenkins ~]# su -s /bin/bash jenkins
bash-4.2$ ssh-keygen
bash-4.2$ ssh-copy-id git@192.168.200.71
bash-4.2$ ssh git@192.168.200.71
Last login: Fri Nov 22 14:25:03 2019

配置Build


target/dist/**/*
/usr/local/tomcat/webapps/
scp 192.168.200.72:/var/lib/jenkins/workspace/probe/web/target/probe.war /usr/local/tomcat/webapps/ /usr/local/tomcat/bin/startup.sh


控制台输出


九、验证Jenkins自动打包部署结果


从以上结果来看,jenkins以及把打包好的probe war包拷贝过来了
而且通过Tomcat自动解压好了,Tomcat也已经重新启动了,可以通过浏览器访问测试probe监控系统。
http://192.168.200.73:8080/probe

基于jenkins自动打包并部署Tomcat环境的更多相关文章
- 基于jenkins自动打包并部署docker环境
一.实验环境 git 192.168.200.71 jenkins 192.168.200.72 docker 192.16 ...
- 基于jenkins自动打包并部署docker环境及PHP环境
- Jenkins自动打包并部署(以java -jar形势运行)
1.打包 与平常maven项目打包一致,不再赘述 2.杀死原有进程 通过 pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' ` 获取当前 ...
- Android Jenkins自动打包纪录
关于Jenkins自动打包Android的apk包,网上官方的太多,这里简单纪录一下博主的经历和打包的参数纪录 (本篇文章需要对Jenkins有最基本的基础了解) 博主所在公司曾负责app测试过程中发 ...
- Net 项目构建基于Jenkins + Github + Mono 的持续集成环境
Net 项目构建基于Jenkins + Github + Mono 的持续集成环境 阅读目录 1 安装 2 配置 3 测试 在Redhat enterprise 6.5 的服务器上,为在gutub 上 ...
- Jenkins自动打包配置
当时也是花费了不少时间来配置Jenkins自动打包的问题,觉得还是需要记录一下. 1.安装Jenkins,这个很简单,不需要多说. 2.下载Git Plugin,Gradle Plugin,Andro ...
- 部署Tomcat 环境
部署Tomcat 环境(mysql+tomcat+jdk) 1.下载Tomcat 软件包 2.通过xftp创建root 连接,然后将Tomcat 软件包拖拽到/opt目录下 3.在xshell 上ro ...
- 基于Jenkins自动构建系统开发
1 绪论 1.1 课题的研究背景 随着IT行业的不断发展,软件开发的复杂度也随着不断提高.与此同时,软件的开发团队也越来越庞大,而如何更好地协同整个团队进行高效准确的工作,从而确保软件开发的质量已经 ...
- jenkins+php+svn快速部署测试环境开发环境快速部署
jenkins 虽然作为java常用的打包部署工具,不过也可以使用在phpweb项目部署管理,前段时间帮公司部署了开发环境与测试环境,简单分享一下. 1.内网web环境搭建lnmp,centos下编译 ...
随机推荐
- STL之sstream的用法
STL之sstream的用法 说在前面: 库定义了三种类:istringstream.ostringstream和stringstream,分别用来进行流的输入.输出和输入输出操作.另外,每个类都有一 ...
- Luogu1039 侦探推理
题目描述 明明同学最近迷上了侦探漫画<柯南>并沉醉于推理游戏之中,于是他召集了一群同学玩推理游戏.游戏的内容是这样的,明明的同学们先商量好由其中的一个人充当罪犯(在明明不知情的情况下),明 ...
- Linux命令后面加 & 的作用
在命令的后面加一个 & 的作用是,将这个任务放到后台执行.看下面的例子. 输入gedit回车,可以看到,打开了Linux的文本编辑器,但是命令窗口执行不了其他命令了,只有退出文本编辑器才能继续 ...
- PTA数据结构与算法题目集(中文) 7-39魔法优惠券 (25 分)
PTA数据结构与算法题目集(中文) 7-39魔法优惠券 (25 分) 7-39 魔法优惠券 (25 分) 在火星上有个魔法商店,提供魔法优惠券.每个优惠劵上印有一个整数面值K,表示若你在购买某商 ...
- Linux基础:Day03
Linux的网络 以太网的发明--PC之间文件共享情况出现 网卡硬件设备 -- MAC地址 一层:物理层 HUB -- 集线器 总线型结构 泛洪 广播域/冲突域 二层: 在早期的网络中,PC互通 ...
- php simplexml_load_string 返回的对象print_r后,丢失信息?
<?php $content = '<dblp> <inproceedings key="conf/aaim/He07" mdate="2007- ...
- 给定一个整数数组 nums 和一个目标值 target,求nums和为target的两个数的下表
这个是来自力扣上的一道c++算法题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案 ...
- MySQL数据库二
筛选条件 比较运算符: 等于: = (注意!不是==) 大于等于: >= IS NULL 不等于: != 或 <> 小于: ...
- 【翻译】OpenVINO Pre-Trained 预训练模型介绍
OpenVINO 系列软件包预训练模型介绍 本文翻译自 Intel OpenVINO 的 "Overview of OpenVINO Toolkit Pre-Trained Models& ...
- Android视频悬浮窗口实现
前言 本文例子实现了点击显示悬浮窗口,同时窗口可播放视频,拖动位置,点击关闭及返回APP页面,通过例子来讲述悬浮窗口实现原理及细节处理,效果图如下所示: 原理 WindowManager对View视图 ...