jenkins自动部署到tomcat/weblogic

Posted z_java_20150812

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jenkins自动部署到tomcat/weblogic相关的知识,希望对你有一定的参考价值。

转载自:http://blog.csdn.net/minebk/article/details/72763859


记录初衷:

由于每次项目部署非常痛苦,很麻烦,遂使用jenkins来部署项目,只需点击即可,但是网上不论是百度还是google关于jenkins集成weblogic部署项目的资料非常少,至少通过我的搜索没有找到一篇非常完整的,所以以次来记录,给大家提供一点参考。(此次记录包含了集成weblogic和tomcat)


整合过程:

Jenkins搭建环境

CentOS6.5(系统环境)

JDK6u45(由于系统用的是weblogic10.3.5只能用JDK6了,官方提供了升级JDK7的方法,先不折腾了)

SVN

Jenkins-1.596.3(貌似是JDK6u45能支持到的最高版本,有兴趣的可以继续升级试试)

Jenkins官网:https://jenkins.io/index.html

Jenkins资源地址(各个版本及插件):http://mirrors.jenkins.io

Tomcat7.x(随便一个版本即可)

Weblogic10.3.5(坑爹的版本,跟weblogic集成各种坑)

       Maven3.2.5(JDK6u45最高支持到该版本,否则就得升级为JDK7.x)

Ant1.9.7(这个好像没啥要求,主要用来编译打包非Maven项目,非Maven项目的Ant编译也有问题,再此做记录!!!)

Jenkins启动

       将jenkins的war包部署到应用服务器(我用的是Tomcat7)启动即可

jenkins启动完成后会生成一个目录:/用户/.jenkins

.jenkins目录中会有workspace这么个目录(执行构建后会从svn上down下来文件并根据项目类型执行具体的编译打包如Ant或Maven [该目录下也会按项目分目录 如:ECP])

Jenkins基础配置

       主界面(就这个熊样子)

             

1.    系统设置

里面的配置项非常多,截图显示不全,只需要配置我们关心的配置!!!

其他的都不管,直接找到这里,全部配好!!!省的别的地方报错!别管用不用得到,配上再说(一定要保证配对!!!)。

JDK配置

ANT配置(规则同上)

MAVEN配置(规则同上)

最后别忘了保存!!!

2.    权限配置

Jenkins1.596.3+Jdk6u45+Maven3.2.5+Tomcat7.x+SVN自动部署项目(很简单只要步骤对都能成功)

       在这之前,需要先在Jenkins里新增一个插件(deploy-1.10.hpi)


       直接选<高级>即可,<可更新>和<可选插件>可能报错,用不到不用管。

开始新建

配置svn地址(此处svn地址最后需要跟上@HEAD:https://10.2.254.79/svn/CCI/EBT1/02-Engineering_工程/04-Code_实现/ECP@HEAD否则jenkins同步svn代码会有延迟!


设置svn用户名密码,设置完后回到项目配置页面重新配置svn地址即可

构建后操作(只有当deploy-1.10.hpi插件安装后才会有该选项!!!)

选择完tomcat后需要配置tomcat的用户名密码!!!

在tomcat目录(此处的tomcat目录一定是你要把项目发布到的tomcat的目录!!!)/conf/tomcat-users.xml中配置用户名密码,省事儿直接copy下面这段

<role rolename="tomcat"/>

  <role rolename="role1"/>

  <rolerolename="manager-gui"/>

  <rolerolename="manager-script"/>

  <rolerolename="manager-jmx"/>

  <role rolename="manager"/>

  <rolerolename="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="admin"password="admin"roles="manager,manager-gui,manager-script,manager-jmx,manager-status"/>

执行构建 会在.jenkins/workspace目录下生成一个文件夹ECP(jenkins中建的项目叫啥就生成啥)会把项目从svn上全down下来进行构建

Jenkins1.596.3+Jdk6u45+Ant+Weblogic10.3.5+SVN自动部署项目(巨TM费劲,weblogic需要单独插件才能部署,并且插件的使用方法非常模糊,关于jenkins部署weblogic的文档网上资源稀少,特此记录)

在这之前,需要先在Jenkins里新增一个插件(weblogic-deployer-plugin-3.6.hpi)

添加插件步骤跟之前一样,不重复了

非Maven项目选这个吧

和之前一样

非Maven项目需要用Ant编译打包

Ant Version:只有在jenkins系统设置里配过,这里才能选择!!!

Targets:ant构建时默认会执行 ant 命令,如果需要另外的参数写到这里就行

选这个(只有安装了weblogic-deployer-plugin-3.6.hpi插件才有该选项)

此时你会毛都没看到,页面上没有任何显示,也不报错,第一个坑来了

看jenkins所在tomcat的日志catalog.out文件

点击这个选项时报了这么个错

2017-1-10 13:51:27hudson.widgets.RenderOnDemandClosure$1 generateResponse

警告: Failed toevaluate the template closure

org.apache.commons.jelly.JellyTagException:jar:file:/root/.jenkins/plugins/weblogic-deployer-plugin/WEB-INF/lib/classes.jar!/org/jenkinsci/plugins/deploy/weblogic/WeblogicDeploymentPlugin/config.jelly:17:138:<j:invokeStatic> Could not load class: org.jenkinsci.plugins.deploy.weblogic.jdk.JdkToolService.Reason: java.lang.NoSuchMethodException:org.jenkinsci.plugins.deploy.weblogic.jdk.JdkToolService.getJDKHomeByName(java.lang.Object)

        atorg.apache.commons.jelly.tags.core.InvokeStaticTag.createLoadClassFailedException(InvokeStaticTag.java:177)

        atorg.apache.commons.jelly.tags.core.InvokeStaticTag.doTag(InvokeStaticTag.java:139)

        atorg.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)

        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)

        atorg.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)

        atorg.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:95)

        at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:147)

        atorg.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)

        atorg.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)

        atorg.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)

        atorg.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)

        atorg.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)

        atorg.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)

        atorg.apache.commons.jelly.tags.core.OtherwiseTag.doTag(OtherwiseTag.java:41)

        atorg.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)

        atorg.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)

        atorg.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)

        atorg.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:38)

        atorg.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)

        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)

        atorg.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)

        atorg.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)

        at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)

        atorg.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:63)

        atorg.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:53)

        athudson.widgets.RenderOnDemandClosure$1.generateResponse(RenderOnDemandClosure.java:99)

        atorg.kohsuke.stapler.HttpResponseRenderer$Default.handleHttpResponse(HttpResponseRenderer.java:124)

        at org.kohsuke.stapler.HttpResponseRenderer$Default.generateResponse(HttpResponseRenderer.java:69)

        atorg.kohsuke.stapler.Function.renderResponse(Function.java:113)

        atorg.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:98)

        at org.kohsuke.stapler.MetaClass$javascriptProxyMethodDispatcher.doDispatch(MetaClass.java:470)

        atorg.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)

        atorg.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)

        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)

        atorg.kohsuke.stapler.MetaClass$12.dispatch(MetaClass.java:391)

        atorg.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)

        atorg.kohsuke.stapler.Stapler.invoke(Stapler.java:876)

        atorg.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:813)

        atorg.kohsuke.stapler.Stapler.invoke(Stapler.java:876)

        atorg.kohsuke.stapler.Stapler.invoke(Stapler.java:649)

        atorg.kohsuke.stapler.Stapler.service(Stapler.java:199)

        atjavax.servlet.http.HttpServlet.service(HttpServlet.java:722)

        atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:306)

        atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

        athudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96)

        athudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88)

        atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:244)

        atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

        at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)

        atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:244)

        atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

        athudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)

        athudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)

        athudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)

        atjenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)

        athudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)

        atorg.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)

        athudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)

        atorg.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)

        athudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)

        atorg.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)

        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)

        atjenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)

        athudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)

        at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)

        athudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)

        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)

        athudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)

        athudson.security.HudsonFilter.doFilter(HudsonFilter.java:168)

        atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:244)

        atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

        atorg.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)

        atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:244)

        atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

        at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)

        atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:244)

        atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

        atorg.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)

        atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:244)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

        atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)

        atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)

        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:589)

以上是关于jenkins自动部署到tomcat/weblogic的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins自动化部署到多台服务器配置

Jenkins 自动化(CI/DI)部署

如何使用jenkins部署jar包

怎么把java自动化代码提交到jenkins

使用 Jenkins 将 .Net 应用程序自动部署到本地计算机 IIS

jenkins自动部署到tomcat/weblogic