有了jenkins 自动部署,为什么还需要一个独立的部署系统

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周刊内容合作:027-
广告热线:027-
客服热线:027-
加入微博,记录点滴,分享感动,握手明星
& 大楚网媒体库 & 湖北3C媒体库 & 正文
Win2008 R2下使用jenkins搭建vc构建
  【IT168技术
  】本文的目标是在windows Server 2008 R2中,搭建一个Visual Studio 2010项目的每日构建、发布环境,实现代码的自动编译、打包、数字签名、发布,其中使用jenkins作为每日构建工具,通过MSBuild对VC工程进行编译,使用nsis(Nullsoft Scriptable Install System)对生成的程序进行打包,而签名、打包、发布等整个过程通过ant脚本调度。
  Jenkins是一款Java平台的开源持续集成(Continuous Integration,CI)软件。它易于安装,配置简单,具有丰富的插件支持和高度的可扩展性,可用于监控重复作业运行情况,如持续集成、每日构建等。Windows下的jenkins需要安装jdk、.net framework环境。
  1、安装jdk 1.5以上版本
  可以在这里下载,安装
  在环境变量中设置JAVA_HOME,值为jdk安装目录
  把%JAVA_HOME%/bin加到系统的path路径中
  新打开一个命令行窗口,输入:
  回车,有帮助信息则说明JDK配置成功。
  2、安装.net framework 3.5 sp1
  配置jenkins作为windows服务运行时,需要.net framework 2.0及以上版本(4.0以上版本不行),否则会提示如下错误:
  Windows Server 2008 R2 SP1中不允许直接安装下载的.net framework 3.5文件,运行时会报错“必须用‘角色管理工具’安装或配置Microsoft .NET Framework 3.5”。其实在Windows Server 2008 R2 SP1下已经集成了.NET Framework 3.5.1,只需要在管理界面打开就行了,步骤如下:
  服务器管理器=>功能>添加功能
  选择.NET Framework 3.5.1 功能,在添加功能向导中,点击添加所需的角色服务,然后一直下一步进行安装即可
3、安装nsis(Nullsoft Scriptable Install System)  NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 下安装程序制作工具,它提供了安装、卸载、系统设置、文件解压缩等功能。就像它名字里所说的那样,NSIS 是通过它的脚本语言来描述安装程序的行为和逻辑,NSIS 的脚本语言和通常的编程语言有类似的结构和语法。 我们将在ant脚本中,调用NSIS的makensis.exe执行我们编写的nsi脚本,对程序进行打包。
  到http://nsis.sourceforge.net/Download 下载最新版本的NSIS,并进行安装;项目中使用到了processwork.dll插件,注意要放到对应的plugins目录下
  注意需要在系统的环境变量PATH中,增加NSIS的安装目录以及下面的bin目录
  可以在命令行中运行makensis命令,验证是否正确配置了环境变量
  4、安装ant
  Apache Ant是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,我们在这里使用ant脚本统一调度其他软件,进行数字签名、打包、发布等。
  a.下载
  在http://ant.apache.org/bindownload.cgi 下载最新压缩包,如apache-ant-1.8.3-bin.zip ,解压到d:\ant即可。
  b.ant的配置
  1) 在环境变量中设置ANT_HOME,值为ANT安装目录d:\ant
  2) 把%ANT_HOME%/bin,%JAVA_HOME%/bin加到你系统的path目录中去。
  c.测试是否成功
  新打开一个命令行窗口,输入:
  ant -version
  回车,看到输出ant说明配置成功。
  5、安装MSBuild 4.0
  Microsoft Build Engine (MSBuild) 是 Microsoft 和 Visual Studio 的新的生成平台。MSBuild 在如何处理和生成软件方面是完全透明的,使开发人员能够在未安装 Visual Studio 的生成实验室环境中组织和生成产品。
  可以通过安装对应版本的.net framework来安装MSBuild,需要安装的是.net framework 4.0。
  因为编译的是vc++的程序,依赖于C运行时库,所以还需要安装sdk,在这里下载Windows SDK for windows 7 and .Net Framework 4
  安装整个MSBuild 4.0比较复杂,简单起见,可以安装vs2010整个开发开发环境,这里就是安装了整个vs2010。
  6、安装jenkins
  下载最新版本的jenkins,存放到待安装目录,如d:\jenkins
  在命令行中运行如下命令,指定 -D参数,这样就可以把jenkins的home目录指定到d:\jenkins(注意在windows Server 2008 中,需要以管理员身份运行)
  java -DHUDSON_HOME=D:\jenkins -jar jenkins.war
  启动后,在浏览器中就可以通过http://localhost:8080来访问了,然后可以配置jenkins作为windows服务运行
  在系统管理中,选择“Install as Windows Service”,并指定路径,因为刚才已经使用-D参数指定了路径,在这里选择默认路径即可,安装完成后会提示重新启动。
  这样jenkins就可以作为一个服务随Windows启动了,也可以通过命令行启动和停止,如:net start jenkins,net stop jenkins
  7、安装插件
  jenkins具有丰富的插件,扩展jenkins的功能,对于刚安装的jenkins,需要先获取插件资料,才可以在线安装、更新插件。在系统管理=>管理插件中,点击高级选项卡,点击立即获取,检查更新信息。检查完成后,就可以看到最新的插件信息。已安装选项卡中列出jenkins中已经安装的插件,而更新选项卡中,则列出可以更新的插件,在这里选择安装MSBuild插件,以便hudson可以调用msbuild。
  选中当安装成功并且没有运行中的任务时重启jenkins,点击签名的绿色箭头,则安装完成后,如果没有运行的任务,则会重新启动jenkins,使插件生效
  也可以自己下载插件,在高级选项卡中选择上传插件进行安装。
  8、设置
  系统管理=>系统设置中设置jdk
  设置MSBuild
  在系统设置里,设置MSBuild,如下图,path to MSBuild中,设置完整的msbuild路径;同时注意把MSBuild目录,添加到系统的path路径里面
  设置Ant
  9、配置windows 2008防火墙
10、配置数字签名环境  SignCode是微软在.NET Framework SDK 1.0 和 1.1 版中提供的一个数字签名工具,使用 Authenticode 数字签名对可移植可执行 (PE) 文件(.dll 或 .exe 文件)进行签名。但是使用SignCode进行签名时,需要人工参与进来,手工输入key\密码等信息,不能在ant脚本里面调用。有人写了个程序signcode-pwd,允许在命令行中调用SingCode,可以在http://www./?page_id=9下载signcode-pwd.zip文件。
  压缩包中包括三个文件:signcode-pwd.exe、sign-with-pwd.bat、版本说明。Signcode-pwd.exe可以将SignCode.exe用到的密码存为一个密码文件,sign-with-pwd.bat调用SignCode.exe、sighcode-pwd.exe,自动在进行签名时为SignCode.exe填写密码,从而实现不需要人工参与的进行数字签名。
  Signcode-pwd中需要使用包含软件发布证书的 SPC 文件和包含私钥的私钥的.pvk文件,可以在这里找到如何在不同格式的证书之间转换的方法。
  注意:需要使用时间戳服务器进行签名时,一定要保证能连上互联网,否则由于无法访问时间戳服务器而失败。
  注意:不能仅签名NSIS打包后的文件,应该对包含的所有DLL文件都要先签名后再打包,再签名打包的文件,否则IE浏览器会显示为“未验证的发行者”而影响正常使用,甚至杀毒软件会认为是病毒而被删除!
  首先用sign-code-pwd.exe生成密码文件myPassword.pwd
  sign-code-pwd.exe -e myPassword.pwd testpassword
  sign-with-pwd.bat是一个批处理文件,需要修改文件,指定SignCode.exe、Signcoe-pwd.exe的路径,指定spc、pvk证书文件、密码文件、时间戳服务器等信息,如下:
  @echo off
  rem TODO: Modify this constants before using
  set strFile=%1
  set strSignCode=D:\signtool\signcode.exe
  set strSignCodePwd=D:\signtool\signcode-pwd.exe
  rem spc、pvk证书文件
  set strSpc=D:\signtool\mycert.spc
  set strPvk=D:\signtool\mykey.pvk
  rem 刚刚生成的密码文件
  set strPwd=D:\signtool\myPassword.pwd
  rem wosign的时间戳
  set strTimeStampUrl=/timestamp
  echo Start signcode-pwd.exe
  %strSignCodePwd% -f %strPwd%
  echo Execute signcode.exe
  rem echo %strSignCode% %strFile% -spc %strSpc% -v %strPvk% -a sha1 -t %strTimeStampUrl%
  rem %strSignCode% %strFile% -spc %strSpc% -v %strPvk% -a sha1 -t %strTimeStampUrl%
  %strSignCode% %strFile% -spc %strSpc% -v %strPvk% -a sha1
  if errorlevel 0 goto end_success
  end_error
  echo Error occured while signing
  %strSignCodePwd% -t
  rem exit 1
  end_success
  echo Singing was successfully
  %strSignCodePwd% -t
  这样,我们就可以使用sign-with-pwd.bat对文件进行签名了,例如
  sign-with-pwd.bat D:\test\Release\test.dll
  另外,也直接可以使用signtool.exe进行数字签名,脚本如下:
  @echo off
  rem TODO: Modify this constants before using
  set strFile=%1
  set strSignCode=D:\signtool\signtool.exe
  set strPfx=D:\signtool\mysign.pfx
  set strPwd=helloworldx
  set strTimeStampUrl=/timestamp
  echo Execute signtool.exe
  rem %strSignCode% sign /f %strPfx% /p %strPwd% /t %strTimeStampUrl% %strFile%
  %strSignCode% sign /f %strPfx% /p %strPwd% %strFile%
  if errorlevel 1 goto :end_error
  if errorlevel 0 goto :end_success
  end_error
  echo Error occured while signing
  Goto :eof
  end_success
  echo Singing was successfully
  注意:现在wosign不再提供免费的时间戳服务,上面的脚本已经把使用时间戳的命令注释掉
  11、简单的ant脚本
  Clean all output directories
  签名可执行程序\dll
  打包可执行程序
  签名安装包
  12、Job配置
  下面就可以进行配置job了,在svn中下载代码,然后用msbuild编译程序,再用ant脚本进行签名、打包、发布。
关注微信,享受大楚新折扣。
打开微信――发现――扫一扫,扫描左侧的微信二维码。
精彩推荐焦点今日热评
Copyright & 1998 - 2017 Tencent. All Rights Reserved51CTO推荐博文
luoahong 的BLOG
用户名:luoahong
文章数:25
访问量:813
无忧币:277
注册日期:
回复 YuriGagarin: 在一线城市月..
错误1:SQL Server 服务的登录帐户..
我有一个学渣朋友,他有一个很好的天赋,就是声音。以前高中的时候就经常会主持一些学校的晚会,或者被市里省里邀请去朗诵,参加比赛之类的。在艺术这方面他很有优势,而且很有天赋,每次都是老师稍微指点,他就..
ls―list directory contents(显示目录内容)【语法】:ls【选项】【参数】【功能介绍】ls指令用来显示目录列表,在Linux系统中有着较高的使用率。ls指令的输出信息可以进行颜色加亮显示,以区分不同类型的文件..
忘了密码的用这方法就可以啦1、现在我说你做。先进入iCloud点击某某账户(要删的账户)2、第二栏密码那里删除原来的再输入ios(任意密码)3、然后点完成之后会出现错..
Word选项-高级-不勾选输入法控制处于活动状态。
我叫罗阿红,经过老男孩教育运维班5-7个月学习后,我一定要达到的薪水目标是6K,为了达到此目标我将采取如下10大行动或方案:1、坚持平均每天学习4个小时以上2、完成每次课前预习3、完成每次课后复习总结(标准化..
最近明星们的婚事很多,有结婚有离婚的,然后满屏的“女孩子一定要嫁给爱情”。这让我想起钱夫人的故事,一个处心积虑要嫁有钱人的女同学。那时我们刚升中学,课堂上老师让大家说说理想,科学家、老师、企业家热..
人生的道理很简单,你选择什么、付出什么,你就会得到什么。如果你想成为工程师,你就会致力研究技术;如果你想成为老师,你可能会先取得博士学位;你想成为金融家,你很可能就会去念财务相关科系;你选择什么、..
正确的回退方法如下:1、打开设置→更新和安全→恢复,找到“回退到Windows7(或Windows 8.1)”,点击“开始”。2、选择“回退”理由(可多选),然后点击“下一步”继续(以下每一步随时都可以取消“回退”操作..
作者介绍徐桂林当前在FIT2CLOUD负责公司的技术布道和生态合作。在此之前先后供职于意法半导体、Autodesk和阿里云。徐桂林热衷于云计算(尤其是公有云IaaS平台),有过多年AWS的生产环境工作经历,是较早在国内分..
2015年,技术岗如何变化?在IT技术的大舞台,各个垂直细分的技术领域都能占据一席之地,但不同的领域有不同的「供需关系」。Java毫不意外地荣登程序员数量之首,PHP、C语言和Node.js继续供不应求,大数据、安全和..
作者介绍周小军腾讯高级运维工程师,目前在腾讯社交负责社交业务海量NoSQL集群运维和团队管理。曾在天涯社区任运维副总监。对互联网网站架构、数据中心、云计算及自动化运维等领域有深入研究和理解,积累了十多年..
作者介绍周小军腾讯高级运维工程师,目前在腾讯社交负责社交业务海量NoSQL集群运维和团队管理。曾在天涯社区任运维副总监。对互联网网站架构、数据中心、云计算及自动化运维等领域有深入研究和理解,积累了十多年..
本文根据高效运维专家群友文章整理并发布。欢迎关注“高效运维”公众号,以抢先赏阅诚意满满的各种原创文章。嘉宾简介王津银他,曾经从业腾讯、YY、UC等知名互联网公司他,维护的微信订阅号《互联网运维杂谈》每..
移动互联网、云计算和大数据的成熟和发展,让更多的好想法得以在很短的时间内实现为产品。此时,如果用户需求抓得准,用户数量将很可能获得爆发式增长,而不需要像以往一样需要精心运营几年的时间。然而用户数量..
很多人认为,电商都没有什么技术含量,电商没有什么门槛,入门的门槛并不高,电商很痛苦,需要不停地去扫街,不停地去拜访各个商家,要在用户和商家之间拉客接客。国内曾经出现的团购类网站有6400多家,到四年多..
故障现象如下图:第一种办法:(记得一定要重启计算机)1、打开电脑360安全卫士,进入主界面,点击右下角【更多】选项。错误代码1022、进入【我的工具】界面,点击上方的【全部工具】。错误代码1023、..
故障现象如下图:第一种办法:(记得一定要重启计算机)1、打开电脑360安全卫士,进入主界面,点击右下角【更多】选项。错误代码1022、进入【我的工具】界面,点击上方的【全部工具】。错误代码1023、..
引导盘下载链接:/News_Detail.asp?id=16请复制安装界面如下面图例:copyright by http://www./&n..
快捷键:1、 ctrl + a : 移动光标到行首2、 ctrl + e :移动光标到行尾3、 ctrl + d :删除光标之后的一个字符4、 ctrl + w : 删除行首到当前光标所在位置的所有字符5、 crtl + k : 删除当前光标到行尾的..
原因分析:1、Win7操作系统,默认禁用了管理员和来宾账户2、无法访问共享的机器,访问共享文件时使用的是默认的管理员,没有设置密码由于win7共享服务器端的同名账户是禁用的,当客户端还用同名账户(普遍..
访问win7上面的共享文件时,出现登陆失败:禁用当前用户的错误原因分析:1、Win7操作系统,默认禁用了管理员和来宾账户2、无法访问共享的机器,访问共享文件时使用的是默认的管理员,没有设置密码由于win7..
快捷键:1、 ctrl + a : 移动光标到行首2、 ctrl + e :移动光标到行尾3、 ctrl + d :删除光标之后的一个字符4、 ctrl + w : 删除行首到当前光标所在位置的所有字符5、 crtl + k : 删除当前光标到行尾的..
故障现象: [root@rsync yum.repos.d]# yum install lrzsz -y Loaded plugins: fastestmirror, securityExisting lock /var/run/yum.pid: another copy is running as pid 983.Another app i..
昨天搞定了一个十万火急的issue,客户抱怨产品升级后系统会变慢和CPU使用率相当高,客户脾气很大,声称不尽快解决这个问题就退货,弄得我们 R&D压力很大,解决这个issue的任务分给了我,客户是南非的一个公..
今天要跟朋友分享的是linux 系统Give root password for maintenance 问题的解决方法 ,希望能帮上朋友们!问题原因应该是/usr /home /boot分区磁盘检测出了问题。Give root password for maintenance(or type Co..Jenkins自动部署时出现的一个问题 - 简书
Jenkins自动部署时出现的一个问题
今天在部署项目的时候出现:
20:12:50 Deploying /home/deploy/.jenkins/workspace/uac-api-test/uac-api/target/uac-api.war to container Tomcat 7.x Remote
[/home/deploy/.jenkins/workspace/uac-api-test/uac-api/target/uac-api.war] is not deployed. Doing a fresh deployment.
Deploying [/home/deploy/.jenkins/workspace/uac-api-test/uac-api/target/uac-api.war]
20:12:56 Deploying /home/deploy/.jenkins/workspace/uac-api-test/uac-api/target/uac-api.war to container Tomcat 7.x Remote
Redeploying [/home/deploy/.jenkins/workspace/uac-api-test/uac-api/target/uac-api.war]
Undeploying [/home/deploy/.jenkins/workspace/uac-api-test/uac-api/target/uac-api.war]
20:12:56 ERROR: Build step failed with exception
20:12:56 org.codehaus.cargo.container.ContainerException: Failed to undeploy [/home/deploy/.jenkins/workspace/uac-api-test/uac-api/target/uac-api.war]
at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.undeploy(AbstractTomcatManagerDeployer.java:140)
at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:178)
at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:73)
at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:116)
at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:103)
at hudson.FilePath.act(FilePath.java:990)
at hudson.FilePath.act(FilePath.java:968)
at hudson.plugins.deploy.CargoContainerAdapter.redeploy(CargoContainerAdapter.java:103)
at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:61)
at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:782)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:723)
at hudson.model.Build$BuildExecution.post2(Build.java:185)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:668)
at hudson.model.Run.execute(Run.java:1763)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:98)
at hudson.model.Executor.run(Executor.java:410)
20:12:56 Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: FAIL - Context /uac-api is defined in server.xml and may not be undeployed
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:566)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:480)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.undeploy(TomcatManager.java:420)
at org.codehaus.cargo.container.tomcat.Tomcat7xRemoteDeployer.performUndeploy(Tomcat7xRemoteDeployer.java:62)
at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.undeploy(AbstractTomcatManagerDeployer.java:130)
... 17 more
20:12:56 org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: FAIL - Context /uac-api is defined in server.xml and may not be undeployed
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:566)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:480)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.undeploy(TomcatManager.java:420)
at org.codehaus.cargo.container.tomcat.Tomcat7xRemoteDeployer.performUndeploy(Tomcat7xRemoteDeployer.java:62)
at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.undeploy(AbstractTomcatManagerDeployer.java:130)
at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:178)
at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:73)
at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:116)
at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:103)
at hudson.FilePath.act(FilePath.java:990)
at hudson.FilePath.act(FilePath.java:968)
at hudson.plugins.deploy.CargoContainerAdapter.redeploy(CargoContainerAdapter.java:103)
at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:61)
at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:782)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:723)
at hudson.model.Build$BuildExecution.post2(Build.java:185)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:668)
at hudson.model.Run.execute(Run.java:1763)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:98)
at hudson.model.Executor.run(Executor.java:410)
20:12:56 Build step 'Deploy war/ear to a container' marked build as failure
20:12:56 Sending e-mails to:
20:13:01 ERROR: 535 Error: authentication failed, system busy
20:13:01 javax.mail.AuthenticationFailedException: 535 Error: authentication failed, system busy
at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:809)
at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:752)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:669)
at javax.mail.Service.connect(Service.java:317)
at javax.mail.Service.connect(Service.java:176)
at javax.mail.Service.connect(Service.java:125)
at javax.mail.Transport.send0(Transport.java:194)
at javax.mail.Transport.send(Transport.java:124)
at hudson.tasks.MailSender.run(MailSender.java:128)
at hudson.tasks.Mailer.perform(Mailer.java:170)
at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:78)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:782)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:723)
at hudson.model.Build$BuildExecution.post2(Build.java:185)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:668)
at hudson.model.Run.execute(Run.java:1763)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:98)
at hudson.model.Executor.run(Executor.java:410)
20:13:01 Email was triggered for: Failure - Any
20:13:01 Sending email for trigger: Failure - Any
20:13:01 An attempt to send an e-mail to empty list of recipients, ignored.
20:13:01 Finished: FAILURE
解决方案:1、tomcat下的项目,包括work/Catalina下的文件2、重启服务器
原因:因为你之前删除了这个项目,但是tomcat是没有delete选项的。所以,尽管你删除了,但是在首页列表中,该项目还是存在,而实际上是不存在的。所以你无法进行部署。
以上是 网上的,自己的情况是这样的,有两台jenkins,之前是部署在A上的,后来应该一些问题想部署在B上,然后就出现了这个异常,在解决的过程中,按照这个方案没有成功,但是后来一想,自己的实例是采用Nginx进行负载均衡的,当时脑子一热只是删除了一台tomcat上面的项目,另外一台没有删除,为什么要这么做的原因还没有想清楚。}

我要回帖

更多关于 jenkins war 部署 的文章

更多推荐

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

点击添加站长微信