jenkins能jenkins远程部署warr包么

jenkins通过 ssh插件部署war包
jenkins通过 ssh插件部署war包
Jenkins自动化部署调研文档
一 ,文档概述
&& 根据目前公司部署的要求,本文档主要介绍Jenkins通过获得部署war包,实现java项目的自动化部署。
&& 需要告知的一点是:
Jenkins常用的情况是,通过集成maven/ant,svn/cvs实现项目的自动下载,自动编译,自动测试,自动打包,自动部署。
Jenkins也能能通过ssh执行shell的方式,对其他项目(如c++项目)进行自动化部署。
&& 本次调研介绍的是war包通过Jenkins的ssh插件对java项目进行自动部署。
&二 ,本次测试步骤简介
&&&&& 使用svn进行源码war包管理
&&&&&&&& test和test1分别为svn中两个文件夹,放置了名称都为hello.war,代表一个javaee项目的两个版本。
&&&&& 其中test中的hello.war前台jsp页面输出& Hello,world!
&&&&&&&& Test1中的hello.war前台jsp页面输出 Hello,CCC!
&&&&& 2.&&&& Jenkins安装简述
&&&&&&&& &&& Jenkins使用java开发,所以从官网上下载相应jenkins.war,放置在tomcat的webapps下面,运行&&
&&&&&& &&&&& tomcat后访问。访问例子:http://localhost:8080/Jenkins/
&&& 3.&&& 安装Jenkins ssh 插件
&&&&&& 系统管理→管理插件→可选插件→Artifact Uploaders→Publish Over SSH
&&& 4.&& 对Jenkins进行相关的配置(测试使用,没有设置登陆验证相关的内容)
&&&&&&& 配置jdk,在系统管理-系统配置中,如下图:
&&&&&&&& 配置发送邮件的地址,这里测试,写了自己的,实际中会是一个系统账号
&&&&&&&& 配置smtp邮件配置,用以发送邮件使用
&&&&&&&& 配置Jenkins ssh功能
&&&&&&&&&其中,ssh到ip地址为192.168.100.226,root用户。并把ssh的文件放到/jenkins/data目录下
&&& 5.&& 编写shell服务器端执行脚本
&&&&&&& 因为测试使用,shell脚本没有经过优化,简单的实现了功能,实现的功能为:
&&&&&&& 杀掉tomcat的进程,把线上tomcat中项目的war包和文件包删除掉,放入新的war包,并且启动
&&&&&&&&&&&& tomcat.
&&& 6.&& 新建名称为test的job
&&&&&&&&&&& Jenkins能创建不同类型的构建方式,主要取决于,项目的构建需求,如下图,本次测试的目的是部署
&&&&&&&&&&& war包,只创建了自由风格的构建方式
&&& 7.&& 配置刚刚创建的自由风格job
&&&&&&& 配置源码获取方式,这里获取的是svn上的war包
&&&&&&& 构建方式选择ssh方式,如下图配置
&&&&&&&&&这个地方配置,选择在系统配置中配置的server name,选择从jenkins的workspace为根目录的文件路径
&&&&&&&& remove&profile,要去掉的路径前缀
&&&&&&&&&Exec&command:执行在ssh端的sh脚本文件的路径
&&&&&&& 设置构建出现问题时的接收邮箱地址
&&&& 8.& 创建另一个job,在新建中复制test的job成一个test1的job,这时设置test1的svn地址为
&&&&&&&&&&&&& svn://192.168.100.226/test1(test的svn地址为192.168.100.226/test)
& 这样就创建了一个新的名称为test1的job。
&& Test和test1两个job的作用分别为:
&& Test这个job,构建后,tomcat中运行的hello项目页面为Hello,World!
&& Test1这个job,构建后,tomcat中运行的hello项目页面为Hellp,CCC!
& 这样就好比一个项目的两个版本,比如当前运行的项目为test1 job构建的hello项目,有一个新的版&
& 本的test1种的hello项目的新war包需要部署,通过test1这个job对新的svn地址为
&& svn://192.168.100.226/test1种的hello项目进行自动部署,toncat中的项目变成了新的test1的
&& hello项目
实验如预期一样,在进行各自的自动部署后,出现了相对应的页面输出
&&&& 9.&& 怎么样进行部署?
&&&&&& 在进行了上述的所有配置之后,以后的项目进行部署时,只需要复制一个job,改变下svn的地址成新版
&&&&&& 的war包地址,点击创建,自动完成war包传递,tomcat的关闭和重启,部署结果返回等。如下图:
&&&&&& 构建时操作
&&&&&& 当构建成功时,前面的小球为蓝色,当部署出现问题时,前面的小球变成红色。
&&&&&&&& 10.&&& Jenkins记录了每次构建的信息,服务器端shell执行中的bug,构建的步骤,同时在构建出现不稳
&&&&&&& 定的时候,对相关人员进行邮件的通知
&&&&&&& 并且在每次构建中可以读取控制台的输出,源码文件的变更等信息。
&&&&&&&&&&&&&&&&&&
&&&&&&&&& 11.&& Jenkins的回滚和其他
&暂时还没有发现jenkins的自动回滚功能(不代表jenkins没有,因为jenkins可以对每次构建的代码进
&行tag,这很可能是用来回滚使用的,这还需要测试),因为jenkins是基于svn的最新版本进行构建。
&目前考虑可以每个项目有两个job,一个job是前一次构建的job,一个job是新的job,如果新的job出
&现的很重要的问题,短期内无法恢复,直接执行上一次执行的job,对项目进行回滚。
& Jenkins能对代码自动的完成测试,并且集成很多插件,完成性能分析等。
&&&&&& 12.& 个人感觉,jenkins啥也不做,只是做了配置管理,所有的工作都由其他的软件或者自己的插件
&&&&&&&&&&&& 完成。
感谢关注 Ithao123精品文库频道,是专门为互联网人打造的学习交流平台,全面满足互联网人工作与学习需求,更多互联网资讯尽在 IThao123!
Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
产品设计是互联网产品经理的核心能力,一个好的产品经理一定在产品设计方面有扎实的功底,本专题将从互联网产品设计的几个方面谈谈产品设计
随着国内互联网的发展,产品经理岗位需求大幅增加,在国内,从事产品工作的大部分岗位为产品经理,其实现实中,很多从事产品工作的岗位是不能称为产品经理,主要原因是对产品经理的职责不明确,那产品经理的职责有哪些,本专题将详细介绍产品经理的主要职责
IThao123周刊Jenkins详细安装与构建部署使用教程
Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins是基于开发的一种持续集成工具,用于监控持续重复的工作,功能包括:
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。
本文使用的:Ubuntu
其中JDK、Tomcat、SVN服务器请看这里Ubuntu安装配置JDK、Tomcat、SVN服务器
一、安装Jenkins
本文直接使用war包安装
下载地址:
war包有两种安装方法
下载jenkins.war, 拷贝到D:\Java\Tool\jenkins()下,然后运行java -jar jenkins.war. (注意需要先安装JDK,然后设置JAVA_HOME环境变量且将%JAVA_HOME%\bin加入到PATH环境变量中)
运行如下:
访问http://localhost:8080 , jenkins的主界面如下:
把Jenkins 1.409.1版解压,把得到的war包直接扔到tomcat下,启动tomcat,Jenkins就安装完毕,访问http://localhost:8080
二、构建一个Maven项目
1、新建一个job
2、输入名称和项目类型
3、设置编译的版本号等信息
4、设置svn库地址:
输入项目托管的svn的地址,如果有出现要输入账号和密码的地方,输入即可。
如果有出现如下说明用户或密码不对:
点击进去重新设置用户和密码
5、配置jdk和maven
第一次打开出现如下,点击进去。要求提示设置JDK和Maven
点击管理-》系统设置,找到JDK和Maven的设置位置
选择本电脑的:
9、到这里已经可以构造这个项目了。
构建输出的信息:
构建成功输出如下 :
这时它已经自动把这个项目打包了一个war包,默认打包到了C:\Users\linbingwen\.jenkins\workspace\JavaWeb\JavaWeb\target
或者点击如下:
三、自动远程部署到tomcat
接下来要完成自动构建成war包后,将些war包上传到远程linux的tomcat的webapps目录,更新项目的war包,并重启tomcat.
1、安装插件
系统管理-》管理插件,在可选插件里找到下面这个,然后点击直接安装命令,安装成功后要重启jenkins
t笔者在安装插件时报错如下:
这应该是天朝的墙所导致的,所以笔者就使用了手动安装的方式。
解决方法:
到https://wiki.jenkins-ci.org/display/JENKINS/Publish+Over+SSH+Plugin,下载hpi到本地电脑到
在系统管理--管理插件--高级--浏览-上传插件即可
然后它自动上传并安装:
红色的是笔者在线安装不成功的,蓝色的是笔者安装成功的了,之后重启jenkis即可。
2、配置ssh内容:
在系统管理-》系统设置里
找到Publish over SSH
然后输入:
3、配置Post Steps
这里还是接着上面的JavaWeb项目,这个配置得安装了上面的插件后才会显示!
Transfer SetSource files:表示要上传的本地的war包及路径,可到工作空间去看
Remove prefix:表示要上传时要去除的文件夹,即只上传war包
remote driectory:即表示执行时的路径,相当于把war包上传到这里了
exec commad:要执行的命令
要执行的脚本的内容:
TOMCAT_HOME=&/usr/java/tomcat/apache-tomcat-7.0.67/&
ID=`ps -ef | grep java | grep tomcat|awk '{print $2}'`
echo &kill tomcat&
kill -9 $ID
echo &remover war file&
cd &$TOMCAT_HOME&/webapps
rm -rf JavaWeb-0.0.1-SNAPSHOT
rm -rf JavaWeb-0.0.1-SNAPSHOT.war
echo &copy war to webapp&
cd /home/lin
cp JavaWeb-0.0.1-SNAPSHOT.war &$TOMCAT_HOME&/webapps
cd &$TOMCAT_HOME&/bin
echo &start tomcat&
./startup.sh
先停掉tomcat
删除webapp下对应的war包
复制war到webapps
重启tomcat
4、构建部署
点击项目的构建按钮,最终出现如下:
在linux上打开,输入http://localhost:8080/JavaWeb-0.0.1-SNAPSHOT/
注意:这里配置的ssh用户:lin要有root的权限,要不可以会报错没有权限执行kill 或rm 命令
本文使用的Linux:Ubuntu14.04
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'17:16 提问
jenkins可以进行本地构建吗?
我本地代码,在提交代码库之前想要进行静态检查,jenkins在配置源码的时候只有CSV
和SVN,难道jenkins不能进行本地构建吗?
按赞数排序
方法1:可以将源码拷贝到Jenkins的workspace
方法2:不用Jenkins,直接使用maven 命令
其他相似问题Jenkins加Shell实现最简单的持续部署
JAVA_HOME不起作用
我的图书馆
Jenkins加Shell实现最简单的持续部署
JAVA_HOME不起作用
大量的有关持续集成的书籍与文档中,基本都提到了持续部署这个步骤,然而具体怎么实现,并没有通行的做法,对于典型的Java Web应用来说,大致有两个思路,一是通过web容器(如Tomcat、JBoss)提供的接口部署,这方面的代表就是,然而,其缺点是配置复杂且不够稳定,我的经验是,部署了很多次之后,容器的JVM就会内存溢出,当然这个和具体容器有关,部署多少次之后才溢出,也要看Web应用的大小。第二种初看起来会更复杂的做法是自己写Shell脚本来停止容器、更新Web应用、然后再启动容器,其实,如果你懂点Shell,这种方法非常简单,而且这种方法非常稳定,因为每次直接杀JVM进程,直接避免了内存溢出的问题。以下是具体的步骤,以Jenkins和Tomcat为例:1. 配置Jenkins的Build Job在完成之后Archive war文件备用这样每次Build完之后,到对应的Job,如:http://10.12.136.115:8080/job/fileserver/lastSuccessfulBuild/artifact/my-app/target/my-app.war。另一种方法是直接让Jenkins Build完了之后直接deploy到Nexus,之后就可以直接从Nexus获取了,细节这里就不解释了。2. 编写部署脚本并测试脚本的基本思路就是,看有没有容器在运行,如果有就kill掉,然后从Jenkins/Nexus下载最新的war文件,替换掉旧的,再启动容器,如:为什么要export JAVA_HOME环境变量稍后解释。这里的的lsof命令根据tomcat监听的端口来获取其进程ID然后杀掉,其他命令基本一目了然。在部署机器上运行该脚本确保其能工作,然后提交到源码仓库里。3. 建一个Jenkins Job专门做部署建一个freestyle的Job,然后scm等配置也照常,当然,部署脚本要在scm仓库中,然后Jenkins的Build配置像这样:这条命令就是通过ssh远程登陆到部署机器上运行部署部署脚本deploy.sh,-x参数让shell打印每一行执行的命令,-s则表示从标准输入读取要运行的脚本,这里重定向了我们的deploy.sh。(如何设置ssh key实现免密码登陆请自理)需要注意的是,这种远程执行脚本的方式,属于非交互式Shell,,这也是我为什么在Shell脚本中export JAVA_HOME,这个环境变量本来是在~/.bash_profile中的,当然,你也可以直接source整个~/.bash_profile。最后,你可以通过Jenkins的Pipeline,使得当my-app Build成功之后,自动触发deploy这个任务,做到自动持续。如果有多个应用,按照类似的方法创建多个Jenkins Job就可以了,由于Shell脚本是自己写的,不论什么容器都OK,有所放弃的是,由于要重启容器,相比直接通过容器接口部署,会稍微耗时些,但考虑到稳定性的大幅提高及配置的简化,我觉得还是值得的。
发表评论:
TA的最新馆藏[转]&[转]&}

我要回帖

更多关于 jenkins远程部署war 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信