Jenkins 搭建企业实战案例 (发布与回滚)
转载互联网
Jenkins
2019年04月24日
相关文章
环境说明
服务器IP 服务 备注 10.4.82.119 Jenkins 第一次配置不会的可以按照我的步骤来 10.4.82.120 gitlab、tomcat 测试环境tomcat端口8083 10.4.82.115 tomcat 测试环境tomcat端口8083 Jenkins发布回滚流程
一、Jenkins介绍及安装
安装和介绍都是老生常谈的内容了,说了N+1+2+3+4+5+…..的话题了,这里直接跳过了
Jenkins yum安装https://www.abcdocker.com/abcdocker/3174
Jenkins War安装https://www.abcdocker.com/abcdocker/2897
二、Jenkins 安装配置
安装完成后的界面如下
Jenkins插件安装
Jenkins主要依赖于插件化,我们进行插件的安装
Maven Integration
Maven编译插件
Role-based Authorization Strategy
权限控制插件 ## 标题 ##
AnsiColor
输出Log颜色优化插件
安装插件的步骤不详细讲解了 https://i4t.com/3174.html详细介绍
Jenkins 全局配置
1.配置jdk环境
下载
wget http://down.i4t.com/jdk1.8.0_66.tar.gz
$ tar zxf jdk1.8.0_66.tar.gz -C /usr/local/
$ ln –s /usr/local/jdk1.8.0_66 /usr/local/jdk
$ vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
$ java -version 检查
$ java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode) 2.配置maven环境 $ wget http://down.i4t.com/apache-maven-3.6.1-bin.tar.gz
$ tar xf apache-maven-3.6.0-bin.tar.gz
$ mv apache-maven-3.6.0-bin.tar.gz /usr/local/
$ ln -s /usr/local/apache-maven-3.6.0/ /usr/local/maven
$ vim /etc/profile
export M2_HOME=/usr/local/maven
export PATH=${M2_HOME}/bin:$PATH
$source /etc/profile
验证
$ mvn -v
Apache Maven 3.6.0 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T03:58:13-04:00)
Maven home: /usr/local/maven
Java version: 1.8.0_151, vendor: Oracle Corporation
Java home: /usr/local/jdk1.8.0_151/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-327.el7.x86_64", arch: "amd64", family: "unix"
我们需要配置Java环境,以及maven等
配置JDK环境
配置Maven环境
下面进行gitlab安装,用于上传测试代码,Jenkins基本上已经配置完毕!
三、gitlab 安装及配置
Gitlab安装目前只需要配置一个yum源,yum install 安装即可
gitlab安装文档https://i4t.com/2041.html
我这里提供了一份hello 的Java代码用于测试
一共分为2步
1.在gitlab web界面创建test项目
2.将Java代码下载push到gitl
代码下载
wget http://down.i4t.com/hello-world-war-master.zip
[root@abcdocker hello-world-war-master]# yum install -y git && git remote add origin http://10.4.82.120/root/test.git #这里需要在gitlab上创建项目,并且复制git地址进行push [root@abcdocker hello-world-war-master]# git push -u origin master
Username for 'http://10.4.82.120': root
Password for 'http://root@10.4.82.120':
fatal: Authentication failed for 'http://10.4.82.120/root/test.git/' [root@abcdocker hello-world-war-master]# git push -u origin master
Username for 'http://10.4.82.120': root
Password for 'http://root@10.4.82.120':
Counting objects: 16, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (11/11), done.
Writing objects: 100% (16/16), 4.64 KiB | 0 bytes/s, done.
Total 16 (delta 0), reused 0 (delta 0)
To http://10.4.82.120/root/test.git
* [new branch] master -> master
当我们将测试代码上传完毕后
四、创建项目演示
准备工作
1.tomcat 地址相同 (多套情况)
2.tomcat 端口相同 (多套情况)
3.web 服务器添加tomcat重启脚本
4.Jenkins – web免密 (Jenkins-tomcat服务器免密)
5.修改好项目名
进入Jenkins,进行创建项目
简单说一下,我这里环境的配置
tomcat路径(多套环境只需要改后缀和端口)
/usr/local/abcdocker-test tomcat端口 8083 tomcat服务器 10.4.82.115 10.4.82.120
我们进入82.115和82.120服务器,配置jdk和tomcat,设置端口 配置Tomcat JDK
wget http://down.i4t.com/jdk1.8.0_66.tar.gz
$ tar zxf jdk1.8.0_66.tar.gz -C /usr/local/
$ ln –s /usr/local/jdk1.8.0_66 /usr/local/jdk
$ vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
$ java -version 下载Tomcat
wget wget http://down.i4t.com/apache-tomcat-8.5.39.tar.gz
tar xf apache-tomcat-8.5.39.tar.gz
mv apache-tomcat-8.5.39 abcdocker1-test #修改端口 sed -i s#8080#8083#g abcdocker1-test/conf/server.xml
## 将默认端口修改为8083
我们先访问默认tomcat,检查是否会因为JDK环境问题导致默认tomcat就无法启动
访问地址ip:8083 tomcat安装配置参考
现在我们的tomcat测试基本上没有问题
配置Jenkins
1.配置Jenkins 参数化构建
[ 1 ] 创建选项参数
[ 2 ] 创建Git commit版本参数
2.Git地址配置
我们通过https://i4t.com/2041.html安装完gitlab之后,将代码上传完毕。这里需要输入项目的git地址
温馨提示:我这里已经将测试代码上传到gitlab上,怎么上传代码看上面的步骤吧。
复制git地址之后需要配置一点,那就是gitlab的地址。有2种认证方式,一种是通过账号密码,在Jenkins上创建账号密码,另外就是通过key来认证。key认证实际上就是复制Jenkins服务器的ssh公钥到gitlab上的SSH key选项。 我这里以账号密码为主
配置完成后
只要没有红色报错即可
3.日志代码高亮配置
其他选项我们不配置,这里只配置一个日志输出高亮的参数。 没有的安装上面的插件
4.maven编译参数配置
我这里的编译参数就是maven默认的编译参数,具体不讲解了。每个公司的环境不一样
clean package -Dmaven.test.skip=true
测试Jenkins就用我这个配置就OK
5.构建完执行脚本
我们需要将构建完执行脚本点开,默认Jenkins不配置shell脚本,Jenkins只是将程序设置成war包,存储下来。这样并没有发布到web服务器上
6.发布及滚回脚本
脚本内容比较多,请直接下载查看
wget http://down.i4t.com/abcdocker-jenkins.txt
脚本解释
除了这几个要修改,我们还需要修改tomcat启动和重启脚本
内容如下
下载地址wget http://down.i4t.com/abcdocker-test
还需要添加权限+x
#需要修改一下tomcat启动目录 #!/bin/bash
# description: Tomcat is a Java Servlet Container
. /etc/profile
TOMCAT_HOME=/usr/local/abcdocker1-test
start () {
TOMCAT_PID=`ps -ef |grep "$TOMCAT_HOME" |grep -v "grep" |awk '{print $2}'`
if [ -z $TOMCAT_PID ];then
/bin/bash $TOMCAT_HOME/bin/startup.sh
else
echo "$0 is running"
fi
}
stop () {
TOMCAT_PID=`ps -ef |grep "$TOMCAT_HOME" |grep -v "grep" |awk '{print $2}'`
if [ -z $TOMCAT_PID ];then
echo "$0 is not running"
else
echo "shutting down $0"
kill -9 "$TOMCAT_PID" && echo "PID $TOMCAT_PID killed."
fi
}
status () {
TOMCAT_PID=`ps -ef |grep "$TOMCAT_HOME" |grep -v "grep" |awk '{print $2}'`
if [ -z $TOMCAT_PID ];then
echo "$0 is not running"
else
echo "$0 is running PID is $TOMCAT_PID"
fi
}
case $1 in
start)
start
#tail -f $TOMCAT_HOME/logs/catalina.out
;;
stop)
stop
;;
status)
status
;;
restart)
stop
start
#tail -f $TOMCAT_HOME/logs/catalina.out
;;
*)
echo "Usage:$0 {start|stop|status|restart}."
;;
esac
我们Jenkins点击保存save
,现在Jenkins就配置完毕,我们进行测试
tomcat需要启动正常
启动目录和启动脚本都要写好
访问验证结果
现在我们开始使用Jenkins发布
1.发布前确认Jenkins和web做免密(我这里已经做了,不介绍) https://i4t.com/1353.html
2.确保tomcat启动正常
3.获取gitlab的git commit地址
我们现在获取git commit地址
git commit版本不区分分支,不一定必须在master分支上,其他分支也会有
我这里只配置了test环境,我们就只演示test环境,其他环境脚本配置都差不多
点击项目---->点击构建
点击小圆圈
结果说明
git拉代码
Maven编译步骤
执行shell命令
启动服务判断,如果有一台服务启动异常,将会暂停发布。通过nginx upstream_check_module会自动停止异常tomcat请求
同时web服务器会自动在data
目录创建备份
发版完毕,在shell脚本部分我们后期可以修改成salt
,不推荐使用Publish over SSH
主要是由于配置麻烦,环境不好区分。要创建多个Jenkins,使用shell或者引用批量分发脚本最为简单
发布回滚脚本流程
Jenkins 搭建企业实战案例 (发布与回滚)的更多相关文章
- 3.awk数组详解及企业实战案例
awk数组详解及企业实战案例 3.打印数组: [root@nfs-server test]# awk 'BEGIN{array[1]="zhurui";array[2]=" ...
- (转)awk数组详解及企业实战案例
awk数组详解及企业实战案例 原文:http://www.cnblogs.com/hackerer/p/5365967.html#_label03.打印数组:1. [root@nfs-server t ...
- 2、jenkins+svn自动发布和回滚
Jenkins配置回滚思路: 目前只能实现使用salt来管控配置文件的管控,配置文件的版本回滚需要后续定制化开发,或者进行格外其他的管理操作.后续实现 以下配置可以为每个项目备份构建文件到本地指定路径 ...
- Jenkins搭建.NET自动编译发布远程环境
继上一篇文章Jenkins搭建.NET自动编译发布本地环境 发布到本地成功后,接下来配置发布到远程环境. Build配置——发布到远程 根据前面VS中发布项目,生成的CustomProfile2 来配 ...
- Jenkins搭建.NET自动编译发布本地环境
最近在做一个团队项目的时候,用到了自动编译发布部署环境[也可以说是持续集成],于是顺便学习了下这个环境的搭建过程. 持续集成 持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通常每个成员 ...
- Jenkins实用发布与回滚PHP项目生产实践
目录 1.概述 2.项目实践 2.1.环境说明 2.2.Jenkins配置 2.2.1.修改Jenkins的运行用户 2.2.2.配置Jenkins用户和Gitlab的ssh-key 2.2.3.Je ...
- Jenkins使用FTP进行一键部署及回滚2(Windows)(项目实践)
转载:http://www.cnblogs.com/EasonJim/p/6295372.html Jenkins使用FTP进行一键部署及回滚2(Windows)(项目实践) 前提: 这一篇是继上一 ...
- 9.2 k8s结合Jenkins与gitlab实现代码升级与回滚
1.部署Jenkins 1.1 安装jdk # apt 安装jdk11 apt install openjdk-11-jdk # 查看 root@jenkins:~# java -version op ...
- Jenkins使用FTP进行一键部署及回滚(Windows)
前提条件: 1.必须有两台服务器,一个是生产环境,另一个是测试环境. 2.两台服务器上都必须安装了Jenkins. 3.其中,生产环境上的Jenkins已经开通的CLI的权限(Windows参考:ht ...
随机推荐
- javascript冒泡事件详解
冒泡事件: 定义:当多个Dom元素互相嵌套的时候,一个元素触发了某个事件(例如Click事件),那么嵌套此事件的所有元素都会被触发一次Click事件,注意:只会触发他的直系亲属元素,而与其自己,父级, ...
- 单元测试自动生成工具evosuite
github地址:https://github.com/EvoSuite/evosuite 官网地址:http://www.evosuite.org 快速开始: 1. junit <de ...
- python实践总结与反思
2019.6.20 python近期实践总结与反思 记录一些这两天python犯的一些低级却易犯的错误.千万不要犯第二次啊!! 1. py文件名字问题 py文件命名不能和调用的模块名一样! 比如,我要 ...
- Python概要介绍
Python的由来 Python的创始人(Guido Van Rossum)吉多·范罗苏姆——龟叔,1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做 ...
- idou老师教你学Istio :5分钟简析Istio异常检测
异常检测 异常检测和踢出异常主机是一个动态检查上游主机是否正常工作,对不健康主机进行移除的过程.异常检测是一种被动健康检查,根据返回状态码来判断是否满足移除条件,最后将主机移除,首先我们来了解下驱逐算 ...
- web开发原生开发混合开发的区别优势
最近有人在讨论是原生开发好还是,混合开发好,以下是引用了数据来说: 最近原生应用.Web应用.混合应用的名字让我们听得比较熟悉了,现在我们就通过评析各种应用的优缺点来更进一步看看这三者的区别. 一.原 ...
- 视觉SLAM关键方法总结
点"计算机视觉life"关注,置顶更快接收消息! 最近在做基于激光信息的机器人行人跟踪发现如果单独利用激光信息很难完成机器人对行人的识别.跟踪等功能,因此考虑与视觉融合的方法,这样 ...
- Java基础 反射的基础应用和Class笔记
笔记: /**直接 throws Exception,完美包含全部异常! * --------------------------- * Class: * 首先创建一个类, 接着编译程序: javac ...
- git ls-files 列出被修改或者被删除的文件
git ls-files 列出被修改或者被删除的文件 git ls-files -m -d
- C语言I 博客作业03
这个作业属于哪个课程 C语言程序设计II 这个作业要求在哪里 作业要求 我在这个课程的目标是 掌握关系运算.if-else语句.格式化输入语句scanf(),以及常用的数学库函数 这个作业在那个具体方 ...