通过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自动化部署内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?