持续集成之Jenkins自动部署war包到远程服务器

时间:2023-01-09 14:52:45

一、无war包链接的情况

无war包链接时,需先下载war包到本地,然后执行:

---------------------------------------------以下部分为转载----------------------------------------------------

1、下载插件Deploy to container

首先需要下载一个Jenkins的插件:Deploy to container Plugin ,可以在Jenkins的系统管理->插件管理->可选插件中查找

持续集成之Jenkins自动部署war包到远程服务器

持续集成之Jenkins自动部署war包到远程服务器

下载安装后重启jenkins。

持续集成之Jenkins自动部署war包到远程服务器

持续集成之Jenkins自动部署war包到远程服务器

去服务器重启jenkins:

持续集成之Jenkins自动部署war包到远程服务器

2、重启Jenkins后,在增加构建后操作步骤中会多出一个选项Deploy war/ear to a container:

持续集成之Jenkins自动部署war包到远程服务器

3、新建一个任务,只需要配置代码获取方式和部署war包配置即可。

持续集成之Jenkins自动部署war包到远程服务器

WAR/EAR files:输入war包的相对路径,如我的war包在新建目录的target下

context path:输入用来访问tomcat的名称,localhost:8080/p**

add container:增加容器,一般选tomcat 7X就可以。这里的username与password需要到tomcat的conf文件夹中的tomcat-users.xml修改。tomcat URL就是你希望把war包部署到的tomcat所在IP地址,最后面不需要再加斜杠/。

tomcat-users.xml中的用户名及密码默认是注释掉的,所以需要删除注释,也可以直接复制以下代码到</tomcat-users>之前。如果只是删除注释的话好像部署不会成功,还需要增加manager开头的三个role才可以。

  <role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager-gui" />
<role rolename="manager-script" />
<role rolename="manager-status" />
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="deploy" password="tomcat" roles="manager-gui,manager-script,manager-status" />

4、最后需要启动远程机器上的tomcat服务器,由于不想这一步也需要手动操作,我的办法是在部署war包之前先执行启动tomcat脚本的操作,之后再执行部署。

我的部分代码,判断是否有包含tomcat-7.0.57/conf/logging.pro字段的进程,如果有则执行关闭tomcat,之后再判断一遍是否关闭成功,如果进程还存在则直接杀进程。

以下代码保存成ready.sh,不能忘记加执行权限:chmod +x ready.sh

if test $(ps -ef | grep tomcat-7.0./conf/logging.pro |wc -l) -eq
then
echo "------------no running ,can't shutdown------------"
else
echo $(ps -ef | grep conf/logging.pro |wc -l)
/usr/local/apache-tomcat-7.0./bin/shutdown.sh
echo "------------tomcat shutdowning--------------"
sleep
if test $(ps -ef | grep conf/logging.pro |wc -l) -eq
then
echo "------------no running ,can't kill------------"
else
ps -ef|grep tomcat-7.0./conf/logging.pro |cut -c -|xargs kill -s
echo "------------tomcat killing--------------"
fi
fi

在部署war包之前需要执行的操作:

1、判断tomcat是否启动,启动则关闭;(中间也可以进行一些备份数据的操作)

2、休眠10s,给tomcat关闭的时间;

3、启动tomcat;

4、休眠20s,给tomcat启动的时间;

持续集成之Jenkins自动部署war包到远程服务器

5、最后直接点击job的立即构建即可,war包会自动部署到tomcat的webapp下

----------------------------------------------转载部分结束-------------------------------------------------

(转自https://blog.csdn.net/songjiaping/article/details/51454243)

二、有war包链接的情况

1、点击“构建”-执行shell:

持续集成之Jenkins自动部署war包到远程服务器

2、写入shell命令:

持续集成之Jenkins自动部署war包到远程服务器

3、点击“立即构建”:

持续集成之Jenkins自动部署war包到远程服务器

持续集成之Jenkins自动部署war包到远程服务器

这里我起了两个tomcat,tomcat里放的是服务,tomcat2里放jenkins。

如果进程数<2,就不用关闭;否则执行关闭命令,再次判断,如果未关闭,就kill掉。

wget http://${ip}:${port}/software/iFusion_GA/devToPro/iFusion_V4.1-20181106.war
cd /home/hadoop/.jenkins/workspace/${JOB_NAME}
mv iFusion_V4.-.war iFusion4.1_${JOB_NAME}.war
mv iFusion4.1_${JOB_NAME}.war /home/hadoop/apache-tomcat-8.5./webapps/
if test $(ps -ef|grep tomcat|grep conf/logging.p|wc -l) -lt
then
echo "----------no running, can't shutdown----------"
else
cd /home/hadoop/apache-tomcat-8.5./bin/
./shutdown.sh
echo "------------tomcat shutdowning--------------"
sleep
if test $(ps -ef|grep tomcat|grep conf/logging.p|wc -l) -lt
then
echo "------------no running ,can't kill------------"
else
ps -ef|grep tomcat|grep -v grep|grep -v tomcat2|awk '{print $2}'|xargs kill -
echo "------------tomcat killing--------------"
fi
fi
cd /home/hadoop/apache-tomcat-8.5./bin
./startup.sh

还需要执行:

1)服务的配置工作

2)判断服务是否正常启动运行我还没想好该怎么判断

3)由于还要触发接口测试工程,为了避免jmeter脚本里的文件夹名(url里的最后部分)改动,目前我决定不改变每次更新的war包名称,解压后都叫同一个名字,最后在发邮件时邮件配置项里再用参数形式,使用jenkins的参数,随给我的链接地址中war包的名字变化。但是jenkins参数保存我还不知道怎么弄。

2018年11月16日记


1)服务的配置工作 :我采用移动新配置文件到其他地方,然后将写好的配置文件替换回来的方式(配置文件内容固定,只需修改为我服务器上的ip和端口号)。

2)判断服务是否正常启动运行我还没想好该怎么判断 :我写了一个while循环专门判断是否启动。

3)jenkins参数保存使用shell中的$1,每次执行该shell脚本时传入参数,shell会自动识别出来;配置邮件也采用这种方式,使用shell执行python命令,python中有sys.argv专门用来保存执行时取的参数。

具体shell代码如下:

#!/bin/bash
#保存路径、保存war包名########################################
#testwar="http://xx.xx.xx.xx:1111/software/iFusion_GA/devToPro/iFusion_V4.1-20181121asf.war"
testwar=$ #每次执行该脚本时传入参数即可
cd /software/iFusion_CI/
touch dir
echo $testwar >dir
touch war_filename
awk -F '/' '{print $NF}' /software/iFusion_CI/dir |awk -F '-' '{print $NF}'>>/software/iFusion_CI/war_filename
warfilename="`awk -F '/' '{print $NF}' /software/iFusion_CI/dir`" #``表示执行里面的命令
#下载war包,删除原应用########################################
wget $testwar
cd /home/hadoop/apache-tomcat-8.5./webapps/
if test $(ps -ef|grep iFusionV4-|grep -v grep |wc -l) -eq
then
echo "---------file exists, delete it first-----------"
else
echo "--------file not exist, go on---------"
fi
#放war包,重启tomcat解压war包#################################
cd /software/iFusion_CI/
mv $warfilename iFusionV4-.war
mv iFusionV4-.war /home/hadoop/apache-tomcat-8.5./webapps/
if test $(ps -ef|grep tomcat|grep conf/logging.p|wc -l) -lt
then
echo "----------no running, can't shutdown----------"
else
cd /home/hadoop/apache-tomcat-8.5./bin/
./shutdown.sh
echo "------------tomcat shutdowning--------------"
sleep
if test $(ps -ef|grep tomcat|grep conf/logging.p|wc -l) -lt
then
echo "------------no running ,can't kill------------"
else
ps -ef|grep tomcat|grep -v grep|grep -v tomcat2|awk '{print $2}'|xargs kill - #xargs是将前面的结果保存为后面的参数的意思
echo "------------tomcat killing--------------"
fi
fi
cd /home/hadoop/apache-tomcat-8.5./bin
./startup.sh
#停掉tomcat,替换配置文件######################################
if test $(ps -ef|grep tomcat|grep conf/logging.p|wc -l) -lt #lt是小于的意思,我的服务器里面有一个tomcat专门用来放jenkins
then
echo "----------no running, can't shutdown----------"
else
cd /home/hadoop/apache-tomcat-8.5./bin/
./shutdown.sh
echo "------------tomcat shutdowning--------------"
sleep
if test $(ps -ef|grep tomcat|grep conf/logging.p|wc -l) -lt
then
echo "------------no running ,can't kill------------"
else
ps -ef|grep tomcat|grep -v grep|grep -v tomcat2|awk '{print $2}'|xargs kill -
echo "------------tomcat killing--------------"
fi
fi
cd /home/hadoop/apache-tomcat-8.5./webapps/iFusionV4-/WEB-INF/classes/config
rm -f x-isinonet.properties
cp /software/iFusion_CI/config_files/x-isinonet.properties /home/hadoop/apache-tomcat-8.5./webapps/iFusionV4-/WEB-INF/classes/config
#重启tomcat####################################################
cd /home/hadoop/apache-tomcat-8.5./bin
while [[ "$(ps -ef|grep tomcat|grep conf/logging.p|wc -l)" -lt ]] #注意中括号与字母之间要有空格
do
./startup.sh
done

邮件的shell命令我写在另一篇博客里了。

持续集成之Jenkins自动部署war包到远程服务器

持续集成之Jenkins自动部署war包到远程服务器

持续集成之Jenkins自动部署war包到远程服务器

至此,部署自动化、邮件发送自动化持续集成配置完毕(接口测试自动化就不在此描述了)。

2018年11月28日记

持续集成之Jenkins自动部署war包到远程服务器的更多相关文章

  1. jenkins自动部署war包到jetty

    1.把jenkins.war包复制到jetty的webapps下面 2.在jetty的webapps下面新建jenkins.xml文件 内容如下: <?xml version="1.0 ...

  2. jenkins部署war包到远程服务器的tomcat

    一.目的 jenkins上将war包,部署到远程服务器的tomcat上. 这边tomcat在windows 主机A上,版本apache-tomcat-8.5.23. jenkins在主机B上,cent ...

  3. 如何在阿里云上部署war包到tomcat服务器

    一. 准备工作:xshell和xftp 首先我们得确保,xshell能够远程连接阿里云ECS,xftp能够保证windows和linux之间的文件传输(当然也可以选择FileZilla,但xftp感觉 ...

  4. jenkins自动部署代码到多台服务器

    下面讲一下如何通过一台jenkins服务器构建后将代码分发到其他的远程服务器,即jenkins自动部署代码到多台服务器. 1.下载 pulish over ssh 插件 2.系统管理 -> 系统 ...

  5. 通过Jenkins调用自动部署war包及jar包到服务器上的Shell脚本

    1)部署war包#!/bin/bashif [ id>0];then echo"stopproject" kill −9 idelse echo "project ...

  6. 【持续集成】jenkins安装部署从git获取代码

    一:持续集成的概念: 1.1:总体的概括 持续集成Continuous Integration 持续交付Continuous Delivery 持续部署Continuous Deployment 1. ...

  7. 如何在windows上部署war包到tomcat服务器

    一. 什么是war包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将很多文件组合成一个压缩文件.war专用在web方面,一个war包可以理解为一个web项 ...

  8. Jenkins自动打war包,并部署到tomcat服务器

    由于每次修改完代码,都要手动打包部署,很麻烦.今天研究了一下Jenkins自动化部署,大概有以下几个步骤: 1.先配置tomcat 7的访问用户和密码.文件位于conf/tomcat-users.xm ...

  9. 自动部署war包脚本

    war 包所在路径为:/home/wars/ROOT.war tomcat 所在路径为: ①:/home/search-3 ②:/home/search-4 部署单个war到一个tomcat中 #!/ ...

随机推荐

  1. 设计模式C&num;合集--工厂方法模式

    简单工厂,代码: public interface ISpeak { public void Say(); } public class Hello : ISpeak { public void Sa ...

  2. &lbrack;转&rsqb;&lbrack;iOS&rsqb;NSHash&ZeroWidthSpace;Table &amp&semi; NSMap&ZeroWidthSpace;Table

    NSSet and NSDictionary, along with NSArray are the workhorse collection classes of Foundation. Unlik ...

  3. IE下同样的&dollar;&period;ajax&lpar;&rpar;被调用两次,只能执行一次(第一次)

    今天发现了这个问题,仅限于IE下所有浏览器包括Edge 百度了一下原来问题就在这句话:如果第二次请求与第一次请求完全相同,会直接从缓存获取. 那么就在请求时让URL变得不一样吧 $.ajax({ ty ...

  4. amoeba安装与实现amoeba for mysql读写分离

    运行环境 l  CentOS6.3 l  Jdk1.6.0_30 l  amoeba-mysql-binary-2.2.0 l  amoeba:192.168.88.17 l  master1:192 ...

  5. Spring源码情操陶冶-AbstractApplicationContext&num;initMessageSource

    承接前文Spring源码情操陶冶-AbstractApplicationContext#registerBeanPostProcessors 约定web.xml配置的contextClass为默认值X ...

  6. 计算几何细节梳理&amp&semi;模板

    点击%XZY巨佬 向量的板子 #include<bits/stdc++.h> #define I inline using namespace std; typedef double DB ...

  7. ajax 调用webservice 跨域问题

    注意两点 1. 在webservice的config中加入这段位置 (注意不是调用webservice的webconfig中加入) <system.webServer>     <! ...

  8. Vue以CDN方式调用Swiper轮播异常

    问题概览: 有一个小型单页应用项目,嫌用组件式调用vue-swiper麻烦,因此以CDN的方式调用swiper,结果轮播的图不动了! 爬了半天百度和谷歌都无解决方案,最后曲线救国的方式解决了问题. 解 ...

  9. Spark Strcutured Streaming中使用Dataset的groupBy agg 与 join 示例&lpar;java api&rpar;

    Dataset的groupBy agg示例 Dataset<Row> resultDs = dsParsed .groupBy("enodeb_id", "e ...

  10. 【DeepLearning】Exercise&colon;Self-Taught Learning

    Exercise:Self-Taught Learning 习题链接:Exercise:Self-Taught Learning feedForwardAutoencoder.m function [ ...