jenkins+shell自动化部署的实现步骤

 更新时间:2022年04月11日 10:10:59   作者:渐落叶无声  
本文主要介绍了jenkins+shell自动化部署的实现步骤,通过jenkins与shell脚本相结合,实现war包自动部署到多台服务器上,感兴趣的可以了解一下

通过jenkins与shell脚本相结合,实现war包自动部署到多台服务器上

环境:

  • 192.168.2.120 jenkins服务器
  • 192.168.2.117 tomcat服务器

设置jenkins服务器免密钥登陆tomcat服务器

117服:执行命令ssh-keygen -t rsa
120服:cd .ssh/;scp -p id_rsa.pub root@192.168.2.117:/root/.ssh/authorized_keys

scp -p ~/.ssh/id_rsa.pub root@192.168.2.117:/root/.ssh/authorized_keys

单击helloworld再点击配置按钮进入配置界面

1)选择execute shell

这里写图片描述

这里写图片描述

点击保存按钮

脚本:

cp /root/.jenkins/jobs/helloworld/workspace/target/edu.war /var/www/html/download/
chown apache:apache /var/www/html/download/edu.war
ssh  root@192.168.2.117  'bash -x -s' < /data/sh/auto_install.sh

此处由于直接通过网页上下载war包,所以需要开启httpd
service httpd start(yum install httpd apr apr-util)

在120服上添加脚本名称

mkdir -p /data/shcd /data/sh

添加脚本内容:

#!/bin/bash
TOMCAT_PID=`ps -ef| grep tomcat | grep -v grep |awk '{print $2}'`
TOMCAT_DIR="/usr/local/tomcat"
FILES="edu.war"
DES_DIR="/usr/local/tomcat/webapps/ROOT"
DES_URL="http://192.168.2.120/download"
BAK_DIR="/data/backup/`date +%Y%m%d-%H%M`"
[ -n "$TOMCAT_PID" ] && kill -9 $TOMCAT_PID
cd $DES_DIR
rm -rf $FILES
mkdir -p $BAK_DIR
\cp -a $DES_DIR/* $BAK_DIR/
rm -rf $DES_DIR/*
wget -c $DES_URL/$FILES
/usr/java/jdk1.8.0_151/bin/jar  -xvf  $FILES
cd $TOMCAT_DIR
rm -rf work
. /etc/profile
set -m;/bin/sh $TOMCAT_DIR/bin/startup.sh

在jenkins的web界面,进入job后,点击立即构建按钮

1)

这里写图片描述

2)进入构建页面,点击console output按钮,可以看到相关输出信息

这里写图片描述

构建完成后,可以在120的web界面看到下载的文件edu.war

这里写图片描述

在117上启动tomcat,浏览器输入网址,可以看到如下部署好的web页面

这里写图片描述

至此自动部署web完成

如果要部署多个,可以在ip.txt设置多个ip,然后通过for循环取部署即可

添加个119服务器,并配置好tomcat,然后设置120服免密钥登陆119服
此时有两个tomcat服务器,分别为117服和119服

在工程的配置界面,修改脚本为

cp /root/.jenkins/jobs/helloworld/workspace/target/edu.war /var/www/html/download/
chown apache:apache /var/www/html/download/edu.war
for  I  in  `cat /data/sh/ip.txt`;do ssh  root@${I}  'bash -x -s' < /data/sh/auto_install.sh ;done

在/data/sh目录下手动建立文本ip.txt,里面填写上要自动部署web的ip地址

[root@localhost sh]# cat /data/sh/ip.txt 
192.168.2.117
192.168.2.119

然后点击立即构建按钮,此时就可以在117服和119服上看到自动部署的web界面

1)117服

这里写图片描述

2)119服

这里写图片描述

如果tomcat服务器数量较多,可以借助ansible工具与jenkins的结合来实现批量部署

备注:

1) tomcat服务器要安装jdk

2) 在tomcat服上手动去下载,提示权限问题

这里写图片描述

yum安装的apache,默认的执行用户为apache,而脚本里cp的文件edu.war的所有者和所属组均为root,所以提示没有权限

3) tomcat服务器的jdk路径要统一

4) 默认文件路径为/root/.jenkins/jobs/helloworld/workspace/target

5) 这里结合了httpd来获取下载的路径,实际上,可以在项目helloworld的配置界面,设置文档存储路径
A. 点击增加构建后操作步骤按钮,设置路径

这里写图片描述

B. 点击立即构建后,war包就会存放在该路径下,url为http://192.168.2.120:8080/job/helloworld/lastSuccessfulBuild/artifact/target/edu.war

这里写图片描述

这里写图片描述

C. 通过url可以直接获取war包,
比如

wget http://192.168.2.120:8080/job/helloworld/lastSuccessfulBuild/artifact/target/edu.war

对应的服务器路径为/root/.jenkins/jobs/helloworld/lastSuccessful/archive/target

auto_install.sh

#!/bin/bash
TOMCAT_PID=`ps -ef| grep tomcat | grep -v grep |awk '{print $2}'`
FILENAME="edu.war"
TOMCAT_DIR="/usr/local/tomcat"
DES_DIR="/usr/local/tomcat/webapps/ROOT"
DES_URL="http://192.168.2.120:8080/job/helloworld/lastSuccessfulBuild/artifact/target"
BAK_DIR="/data/backup/`date +%Y%m%d-%H%M`"
[ -n "$TOMCAT_PID" ] && kill -9 $TOMCAT_PID
cd $DES_DIR
rm -rf $FILENAME
mkdir -p $BAK_DIR
\cp -a $DES_DIR/* $BAK_DIR/
rm -rf $DES_DIR/*
wget -c $DES_URL/$FILENAME
/usr/java/jdk1.8.0_151/bin/jar  -xvf  $FILENAME
cd $TOMCAT_DIR
rm -rf work
. /etc/profile
set -m;/bin/sh $TOMCAT_DIR/bin/startup.sh

到此这篇关于jenkins+shell自动化部署的实现步骤的文章就介绍到这了,更多相关jenkins shell自动化部署内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Shell实现的Oracle启动脚本分享

    Shell实现的Oracle启动脚本分享

    这篇文章主要介绍了Shell实现的Oracle启动脚本分享,本文直接给出实现代码,需要的朋友可以参考下
    2015-01-01
  • 开发必备Linux常用的几个命令分享

    开发必备Linux常用的几个命令分享

    Linux作为一个高度成熟和强大的操作系统,拥有非常丰富的命令行工具,对于Java开发者来说,掌握一些常用的Linux命令可以大大提高工作效率,尤其是在服务器端开发时,本文小编给大家分享了一些常用命令,需要的朋友可以参考下
    2023-10-10
  • shell脚本实现监控某个进程意外停止后拉起进程

    shell脚本实现监控某个进程意外停止后拉起进程

    今天小编就为大家分享一篇关于shell脚本实现监控某个进程意外停止后拉起进程,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • 检测网段IP使用情况的shell脚本

    检测网段IP使用情况的shell脚本

    检测网段IP使用情况的shell脚本,有需要的朋友可以参考下
    2013-02-02
  • Python创建、删除桌面、启动组快捷方式的例子分享

    Python创建、删除桌面、启动组快捷方式的例子分享

    这篇文章主要介绍了Python创建、删除桌面、启动组快捷方式的例子分享,需要的朋友可以参考下
    2014-04-04
  • Shell中关于处理方法返回值问题详解

    Shell中关于处理方法返回值问题详解

    最近工作接触到了一些Linux上面的文本处理,数据量还是蛮大的,不可避免的学期了shell,awk等脚本语言。下面这篇文章主要给大家介绍了关于Shell中关于处理方法返回值问题的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-12-12
  • 在Linux与Windows上获取当前堆栈信息的方法

    在Linux与Windows上获取当前堆栈信息的方法

    下面小编就为大家带来一篇在Linux与Windows上获取当前堆栈信息的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • 使用Systemctl列出Linux中所有服务的操作步骤

    使用Systemctl列出Linux中所有服务的操作步骤

    在 Linux 系统中,Systemctl 是一个强大的工具,用于管理系统的服务和守护进程,它可以让用户轻松地启动、停止、重启以及管理各种系统服务,本文将详细介绍如何使用 Systemctl 来列出 Linux 中的所有服务,需要的朋友可以参考下
    2024-05-05
  • Linux中sftp常用命令整理

    Linux中sftp常用命令整理

    sftp命令是一款交互式的文件传输程序,不仅对传输的所有信息使用ssh加密,它还支持公钥认证和压缩等功能。这篇文章整理了Linux中sftp的常用命令,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Shell脚本批量清除Nginx缓存

    Shell脚本批量清除Nginx缓存

    这篇文章主要介绍了Shell脚本批量清除Nginx缓存,本文直接给出实现代码和执行效果图,需要的朋友可以参考下
    2014-12-12

最新评论