1、Jenkins操作手册苏州测试部目 录第 1 章 概 述 .1第 2 章 基础篇 .22.1 Jenkins 安装 .22.1.1 资源下载 22.1.2 运行 Jenkins 的前提 .22.1.3 Jenkins 启动 .22.1.4 Jenkins 访问 .22.2 Jenkins 基本设置 .32.2.1 设置 JDK .32.2.2 设置 ANT.32.2.3 配置邮件信息 42.3 创建任务 42.4 运行并监控构建作业 72.4.1 主控制面板 72.4.2 手动构建一个任务 72.4.3 任务构建状态 8第 3 章 提高篇: .103.1 插件管理: 103.1.1 FindB
2、ugs 插件设置 .103.1.2 Ftp 插件配置 123.1.3 Junit 插件 .133.1.4 通过远程访问触发 133.1.5 WebLogic.Deployer .133.2 安全篇 143.3 个性化设置 15第 4 章 常见问题 .174.1 edit lock 问题 174.2 IOException: Unable to delete 问题 .174.3 not recognized as a valid application type 问题 .18第 5 章 其它说明 .195.1 CI 挑战 195.2 ANT 基本知识 19第 0 页第 1 章 概 述1.1 什么
3、是持续集成随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。持续集成正是针对这一类问题的一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础。它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。持续集成最早由 Martin Fowler 于 1
4、0 年前已经提出,希望通过持续集成能够实现以下过程: 任何人在任何地点,任何时间可以构建整个项目。 在持续集成构建过程中,每一个单元测试都必须被执行。 在持续集成构建过程中,每一个单元测试都必须通过。 持续集成构建的结果是可以发布的软件包。 当以上任何一点不能满足时,整个团队的主要任务就是去解决这个问题。1.2 持续集成的核心价值持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能;持续集成还能利于
5、软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心。1.3 持续集成的原则业界普遍认同的持续集成的原则包括:1)需要版本控制软件保障团队成员提交的代码不会导致集成失败。常用的版本控制软件有 IBM Rational ClearCase、CVS、Subversion 等;第 1 页2)开发人员必须及时向版本控制库中提交代码,也必须经常性地从版本控制库中更新代码到本地;3)需要有专门的集成服务器来执行集成构建。根据项目的具体实际,集成构建可以被软件的修改来直接触发,也可以定时启动,如每半个小时构建一次;4)必须保证
6、构建的成功。如果构建失败,修复构建过程中的错误是优先级最高的工作。一旦修复,需要手动启动一次构建。1.4 持续集成系统的组成由此可见,一个完整的构建系统必须包括: 一个自动构建过程,包括自动编译、分发、部署和测试等。 一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库。 一个持续集成服务器。本文中介绍的 Jenkins/Jenkins 就是一个配置简单和使用方便的持续集成服务器。1.5Jenkins 介绍Jenkins 是一个软件界非常流行的开源 CI 服务器,Hodson 是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 持续的软件版
7、本发布/测试项目。 监控外部调用执行的工作。Jenkins 的新版本取名叫 Jenkins,所以本文档中的指 Jenkins 与 Jenkins 这 2 个词为指同一个软件。使用 Jenkins 人员需要对持续集成的概念有所了解,更多的要求对代码的编译过程很了解,Jenkins 对于maven 工程完整的编译和发布流程如下: Jenkins 从 SVN 上拉取代码到指定的编译机器上。 在编译机器上触发编译命令或脚本。 编译得到的结果文件。 把结果文件传到指定的服务器上。使用 Jenkins 进行编译的人员,需要对自己的代码的编译方法,过程十分了解,对编译任务进行分拆。 第 2 页第 2 章 基
8、础篇2.1 Jenkins 安装2.1.1 资源下载首先从 http:/jenkins-ci.org/下载最新的 jenkins 版本,最新版本为 1.594,下载的文件载体为jenkins.war;Jenkins 为免费开源软件,并且更新速度稳定,每周一次更新。所以网站上会提供有 2 个版本,一个最新版本,一个老但稳定的版本。可自行选择。2.1.2 运行 Jenkins 的前提1) 环境变量的设置:a) JAVA_HOME,设置 JDK 的安装目录,建议采用 JDK1.7,但不建议用 JDK1.8b) ANT_HOME,设置 Ant 的目录,验证过 ant 最新版本 1.9.4 可用。c)
9、JENKINS_HOME,设置 Jenkins 的配置文件目录,默认为用户的目录,建议为 Jenkins 的安装目录,便于控制;d) MEVAN_HOME,设置 Maven 的目录,验证 3.2.3 可用。e) PATH,需要将 java、ant,maven 的 bin 目录配置到 path 目录下;f) CLASSPATH,需要将 JDK 的 tools.jar 配置到 classpath 目录中;2.1.3Jenkins 启动可以有两种方法进行运行 jenkins;a) 直接通过命令行如下:/opt/jdk1.7.0_71/bin/java -jar /opt/jenkins.war -h
10、ttpPort=8089 -logfile=/opt/jenkins/jenkins.log说明:httpPort 为 jenkins 运行的端口,默认端口为 8080,上述命令其实让 Jenkins 运行在Winstone 容器中;以下有一些常用的参数:更多参数可以查看 http:/ Line Parameter Description-httpPort=$HTTP_PORT Runs Jenkins listener on port $HTTP_PORT using standard http protocol. The default is port 8080. To disable (
11、because youre using https), use port -1.-httpListenAddress=$HTTP_HOST Binds Jenkins to the IP address represented by $HTTP_HOST. The default is 0.0.0.0 i.e. listening on all available interfaces. For example, to only listen for requests from localhost, you could use: -第 3 页httpListenAddress=127.0.0.
12、1-httpsPort=$HTTP_PORT Uses HTTPS protocol on port $HTTP_PORT-httpsListenAddress=$HTTPS_HOSTBinds Jenkins to listen for HTTPS requests on the IP address represented by $HTTPS_HOST.-prefix=$PREFIX Runs Jenkins to include the $PREFIX at the end of the URL. For example, to make Jenkins accessible at ht
13、tp:/myServer:8080/jenkins, set -prefix=/jenkins-ajp13Port=$AJP_PORT Runs Jenkins listener on port $AJP_PORT using standard AJP13 protocol. The default is port 8009. To disable (because youre using https), use port -1.-ajp13ListenAddress=$AJP_HOST Binds Jenkins to the IP address represented by $AJP_H
14、OST. The default is 0.0.0.0 i.e. listening on all available interfaces.-argumentsRealm.passwd.$ADMIN_USERSets the password for user $ADMIN_USER. If Jenkins security is turned on, you must log in as the $ADMIN_USER in order to configure Jenkins or a Jenkins project. NOTE: You must also specify that t
15、his user has an admin role. (See next argument below).-argumentsRealm.roles.$ADMIN_USER=adminSets that $ADMIN_USER is an administrative user and can configure Jenkins if Jenkins security is turned on. See Securing Jenkins for more information.-Xdebug -Xrunjdwp:transport=dt_socket,address=$DEBUG_PORT
16、,server=y,suspend=nSets debugging on and you can access debug on $DEBUG_PORT.-logfile=$LOG_PATH/winstone_date +“%Y%m-%d_%H-%M“.logLogging to desired file-XX:PermSize=512M -XX:MaxPermSize=2048M -Xmn128M -Xms1024M -Xmx2048Mreferring to these options for Oracle Java b) 在 Web 容器中运行Jenkins 可以运行在标准的 Web 服
17、务器中,支持 Tomcat、Jboss、WebLogic 中,只需要将Jenkins.war 放置到相应目录,启动服务就可以进行访问;推荐采用这个方式运行,方便配置和迁移。2.1.4 Jenkins 访问验证 jenkins 是否运行正常,通过访问 http:/10.1.200.59:8089 即可。第 4 页Hudosn 应用支持 IE、FireFox 等浏览器。2.1.5 分布式 jenkins 安装为了满足各种编译环境的需求,jenkins 支持分布式,以 jenkins agent 的形式运行 slave 机。1. 在 jenkins 的主机上,选择系统管理 管理节点2. 新节点输入名
18、字3. 选择 Dumb Slave OK第 5 页4. 设置处理器的数量,一般以 CPU 核数来确定,如 4 核的一般写 35. 选择远程根目录,在 slave 机上用来存放 jenkins 自身运行所要的文件6. 使用方式:为了分担 master 机器的负载,可选尽可能多的使用本机器或,只允许运行指定本机的任务7. 启动方法:对于 window 推荐使用 Launch slave agents via Java Web Start 8. 有效性:任何时间有效第 6 页配置好了之后,1. 从 slave 机器上打开浏览器,访问 jenkins 主机:http:/yourjenkinsmaste
19、r:8080)2. 在系统管理管理节点,打开建立的节点。3. 点启动按钮,jenkins agent 就会从浏览器下载包需要的 jar、jnlp 包,然后启动。第 7 页运行程序在 windows 中,可以安装成为服务进程,但如果是运行 selenium 这种自动化工作的机器,则不建议这么做。2.2 Jenkins 基本设置Jenkins 的基本设置都在系统的后台设置中,具体路径为:系统管理-系统管理第 8 页2.2.1 设置 JDK可以在这里进行 JAVA_HOME 设置,假如已经系统已经设置 JAVA_HOME,可以不需要再进行配置,同时可以让 Jenkins 再安装一个 JDK。2.2.
20、2 设置 Maven第 9 页2.2.3 设置 ANT可以在这里进行 ANT_HOME 设置,假如系统已经设置了 ANT_HOME,可以不需要再进行配置,同时可以让 Jenkins 安装一个最新的 ANT。备注:为了让配置更加简单,建议在系统级设置 JAVA_HOME 和 ANT_HOME,MAVEN_HOME,便于系统的迁移。2.2.4 配置邮件信息系统能够在执行计划完成后发送结果邮件,需要配置邮件服务器的相关信息:上面还需要配置 Jenkins 的 URL 地址,作为后期访问地址,一旦设定 URL,就不要轻易修改。左边显示的可过滤的条件及属于当前用户的 BUG2.3 创建任务在 Jenki
21、ns 主菜单点击 “新建任务 ”,出现下图:第 10 页键入任务名称,选择“Build a free-style software project”选项,点击“OK ”按钮后,出现下面的界面:第 11 页说明:a) Project name:项目(任务)名称,项目(任务)名称不能重复,后面通称任务;b) Description:项目描述,主要对任务进行简要说明;c) Discard old builds:是否保留过去的构建,默认是保留。(帮助:这里控制着您想要在 Jenkins 所在的磁盘把构建记录存储的有效期(诸如控制台输出、编译构件等等 )。Jenkins 为此提供了两第 12 页个标准:
22、1。时间驱动。在 Jenkins 中您可以判断如果达到一定时限来删除一条记录 (例如,七天前)。2 。数量驱动。在 Jenkins 中您可以确保它拥有 N 份构建。如果又有新的构建开始,最早的那份(记录)就将被删除。Jenkins 也可以让您建立的个别构建定义为永远保持这个记录 ,以便防止某些重要的构建被自动丢弃。)d) This build is parameterized : 如果选择此选项,Jenkins 将允许您提供一套任意的键值对参数,它们会被传递到构建过程里。配置的参数往往是构建运行环境中的一些环境变量。(帮助:当您使用了 Jenkins 的各种自动化,有时要求在构建过程中提供一组
23、用户的输入,使用“parameterize”就能够更方便构建。例如,您可能会设立一个按需测试,在那里用户可以提交一个二进制文件的压缩文件来进行测试。e) Disable Build:禁止此任务进行构建,默认是不禁止;f) Execute concurrent builds if necessary(beta):g) Advanced Project Options1) Quite period:构建前等待时间;2) Retry Count:从 SCM 仓库中取出尝试时间;3) Block build when upstream project is building:假如上一个仍在构建过程中,
24、停止本次构建任务;4) Use custom workspace:指定当前任务的 workspace,否则默认为 JENKINS_HOME 的工作目录h) Source Code Management:指定编译源代码的获取方式:1) None:手动方式;2) CVS:从 CVS 仓库中获取;备注:CVS 通过 Module(s)获取多个项目工程3) SVN:从 SVN 仓库中获取;备注:SVN 通过“Add more locations”来添加多个工程,在 SVN 的 URL 中需要添加用户名密码信息,例如:svn:/username:passwd192.168.1.15/SKELETON-V
25、2.0/trunk/program/source/skeletonCommoni) Builds Triggers:设置构建触发器第 13 页1) Build after other projects are built:设置构建的流水线,配置在设置的任务构建完成后自动构建此任务,进行设置后,可以在任务统揽中看到以下“下游项目说明”2) Trigger builds remotely (e.g., from scripts):设置远程触发进行任务构建;3) Build periodically:设置构建频率,设置跟 Quartz CronTrigger 设置雷同;4) Poll SCM:设置从
26、 SCM 库中检查源代码是否更新:备注:关于第三和第四两点,基本配置为 分钟 小时 天 月 星期举例: 每分钟进行集成 * * * * *, 每 5 分钟进行集成 5 * * * *,每天 12 点和 23 整点进行集成 0 12,23 * * *j) Build Environment:设置构建环境设置1) Tool Environment:设置工具的环境变量2) Create a formatted version number:设置构建的版本号k) Build:执行构建构建支持 6 种方式,shell(运行于 Linux 环境) 、Maven(支持 Maven 编译) 、Command(
27、windows 批处理命令) 、Ant、EasyAnt、Export job runtime parameters。举例:1) Ant:备注: Targets 主要是执行 ant 脚本中哪几个部分,可以添加多个; Build File:需要指定 Ant 脚本的物理位置; Properties:添加 Ant 指定的属性; Java Options:设置运行 java 时的属性,例如内存、堆大小等;2) Command备注:执行 Windows 的批处理命令,这里不能利用 Hodson 设置的变量;l) Post-build Actions1) Publish Javadoc:设置构建时产生 Ja
28、vaDoc 时的文件目录;2) Archive the artifacts:设置构建后哪些文件需要进行归档处理;3) E-mail Notification:邮件提醒第 14 页备注:可以向多个人发送邮件,通过“;”进行分割4) Status Monitor:构建状态监控;:) ,好,基本的配置到这里结束,可以搭建一个新的任务进行构建了;2.4 运行并监控构建作业2.4.1 主控制面板当配置完成一个任务后,回到主控制面板: 上图中右边列表列举现在已经配置的任务已经任务当前的状态 左边有构建队列,当有构件时,会把当前正在构建的队列在上面进行列举; 上图右下角有 RSS 订阅,支持订阅全部、失败和
29、最后一次等;2.4.2 手动构建一个任务当一个任务配置完成后,可以采用手动构建和触发器构建两种方式,在项目验证阶段,可以通过手动触发方式,点击任务区的“立即构建” ,会在 Build History 中出现以下进度条:点击进度条,可以进入到具体的编译过程,例如下图:第 15 页等构建完毕后,你可以看到最新任务构建的结果图:浏览任务的整体运行状况入下图:最左边列图示为最后一次构建状态,第二列图示为整个任务的构建总体结果,具体如下表示,下图也只截取部分:2.4.3 任务构建状态Jenkins 通过当前构建状态和构建稳定新 当前构建状态分为以下几种项目构建完成,同时被认为是稳定的项目构建完成,但被认
30、定为不稳定构建失败作业已经禁止 构建稳定行,Jenkins 会基于一些后处理器任务为构建发布一个稳健指数( 从 0-100 ),越高越稳定构建成功率80%构建成功率 60%-79%第 16 页构建成功率 40%-59%构建成功率 20%-39%构建成功率 0-19%期待任务编译都处于 和 状态。第 17 页第 3 章 提高篇:3.1 插件管理:由 Jenkins 类库现有的 Jenkins 功能性扩展和开发者们为 Jenkins 提供的新功能都可以称之为 Jenkins 插件。Jenkins 将插件分为 Artifact Uploaders、Authentication and User Ma
31、nagement、Build Notifiers、Build Reports、Build Tools、Build Triggers、Build Wrappers、Cluster Management and Distributed Build、Command Line Interface、External Site/Tool Integrations、Maven、Miscellaneous 、Other Post-Build Actions、Page Decorators、Slave Launchers and Controllers、Source Code Management、User I
32、nterface 等 17 个插件大类。1) Artifact Uploaders:协助把构建结果发布到一些网络终端上,例如 FTP 服务器、Tomcat 应用服务器、J 版本库等等;2) Authentication and User Management:Hodson 基本包不提供用户权限管理,通过此插件,融入 LDAP、MySql 等权限管理插件,丰富权限管理;3) Build Notifiers:任务构建完成后发布通知的方式,支持 Twitter、IRC 、Google 日历等;4) Build Reports:主要针对构建的源代码进行分析的报表,例如 FindBugs、Checkst
33、yle 等等,5) Build Triggers:构建事件监听并触发构建的插件, 例如通过 URL 改变进行触发编译;6) Build Tools:实现额外构建工具的插件,例如 Ruby Plugin、Grails Plugin 等;7) Build Wrappers:8) Cluster Management and Distributed Build:9) Command Line Interface:10) External Site/Tool Integrations:11) Maven:12) Miscellaneous:13) Other Post-Build Actions:14
34、) Page Decorators:15) Slave Launchers and Controllers:16) Source Code Management:17) User Interface:备注:所有的插件安装完毕后,必须重启 Jenkins 才能使插件生效,不支持即插即用模式。具体插件使用说明:3.1.1 FindBugs 插件设置1. 下载 FindBugs,并解压到相应的目录,将 findbugs-ant.jar 拷贝 ANT_HOMElib 目录下;2. 设置 FINDBUGS_HOME 目录为解压目录;3. Build.xml 文件中配置 FindBugs 配置:a) 设置
35、 findBugs 在 build.xml 中的路径b) 声明 Findbugs 任务第 18 页c) 创建 FindBugs 任务,例如:d) Eclipse 中配置 Findbugs选择 Eclipse-Windows-Perference,对 ant 进行编辑,选择 Runtimei. 配置 findbugs-ant.jar 到 Classpath 目录下下,可以通过选择“Add External JARS”;ii. 对 Tasks 进行配置,增加一个 Task,命名为 findbugs,选择 Location 为添加的 findbugs-ant.jar的物理位置,并指定具体为哪个类,如
36、下图:e) 在 Jenkins 中设置 Findbugs选择需要配置任务进行配置,勾选其中 findbugs 选项,如下图:第 19 页f) 编译成功后,fingbugs 的结果和趋势图可以点击具体的链接进行分析 findbugs 的认定结果和具体的代码,趋势图3.1.2Ftp 插件配置a) 在系统的插件管理中下载 FTP 插件;b) 在系统管理中配置 FTP 服务器的相关信息,如下图:第 20 页c) 在选定的任务中配置 FTP在这里选择需要上传的 FTP 服务器,并指定源文件和目的地址。3.1.3Junit 插件3.1.4 通过远程访问触发Jenkins 支持远程触发方式进行构建,具体设置
37、在当前任务的设置中,如下图:用户通过访问上面的 URL 就可以进行相应的构建。3.1.5WebLogic.DeployerWebLogic Server 提供以下四种方式来帮助你配置和部署应用系统:a) Weblogic.Deployerb) 管理控制台c) WLST Weblogic.Deployerweblogic.Deployer 提供基于命令行的界面来执行基本和高级部署任务。当希望命令行访问 WebLogic Server 部署功能时,或者当需要使用管理控制台执行不受支持的部署任务时,使用 weblogic.Deployer。 管理控制台管理控制台提供一系列基于 Web 的部署助手,这
38、些助手可以指导您完成部署过程。管理控制台还提供控件可用于更改和监视部署状态、在部署设备启动并运行时更改所选的部署描述符值。 当需要以交互方式执行基本部署功能并且可以访问受支持的浏览器时,请使用管理控制台。 WLSTWebLogic 脚本工具 (WLST) 是新的命令行界面,可用于使域配置任务(包括应用程序部署配置和部署操作)自动化。第 21 页为了实现系统的自动部署,可以采用 WebLogic.Deployer 和 WLST 两种方式进行,但由于持续集成环境和 WebLogic Server 在物理位置上差异,最终选择采用 WebLogic.Deployer 作为持续继承发布到 WebLogi
39、c Server 方式。下面对其进行基本操作介绍。WebLogic.Deployer 部署采用 java 命令方式进行部署,务必需要把基础篇中 3 个 WebLogic 相关的jar 放到 CLASSPATH 中或则在启动命令行中添加 -classpath 命令参数。下面简单说明几个最常用的WebLogic.Deployer 的命令: 部署或重新部署应用程序或模块java weblogic.Deployer -adminurl t3:/192.168.180.3:7001 -username username -password password -deploy -targets target
40、_list -upload -name deployment_name 停止部署单元并从目标服务器中删除临时文件java weblogic.Deployer -adminurl t3:/192.168.180.3:7001 -username username -password password -undeploy -targets target_list -name deployment_name 详细命令说明:命令或选项 说明-username username 管理员用户名。如果提供 -username 选项但不提供对应的 -password 选项,则 weblogic.Deploye
41、r 会提示您输入密码。-password password 管理员用户密码。 -targets target_list在其上分发和部署应用程序或模块的目标。target_list 参数是以逗号分隔的目标服务器、群集或虚拟主机的列表。-upload 将指定的部署文件(包括部署计划或备用部署描述符)传输到管理服务器。需要发布的 war 或 ear 包的路径-name deployment_name 要分配给新部署的应用程序或独立模块的部署名称,可选。详细可以参考: http:/ 安全篇Jenkins 安装完成后,默认是不进行安全控制的,需要在系统配置中添加安全控制后,具体位置在系统管理的安全域中,
42、Jenkins 支持 Jenkins 专用用户数据库、LDAP、Servlet 容器代理、MySql 数据库。授权策略包括采用安全矩阵、登陆后可以做任何事、任何用户可以做任何事(没有任何限制) 、项目矩阵授权策略、遗留模式等。建议采用 Jenkins 专用数据库,安全策略采用安全矩阵方式,已经能够基本满足现有的模式。第 22 页如下图:选择 Jenkins 专用用户数据库后,勾选允许用户注册选项。在添加用户或组,对其进行附权限。用户注册在首页的右上角,如下图点击注册后,出现如下图:添加用户的基本信息,点击注册按钮后,用户注册完成,用户没有赋权限,登陆后的界面如下:备注:对用户先赋权限或先注册再
43、赋权限没有先后顺序。3.3 个性化设置Jenkins 对用户视图支持个性化定制,保证登陆用户只关注自身关注的项目视图,用户登陆后,默认一般显示如下图:第 23 页可以点击“+”增加个性化视图,出现如下视图:选择 List View 选项,填写 “View name”,以及需要的任务选项,同时可以选择需要展示的列,选择完成后保存即可,可以在首页上显示。用户登陆后,可以选择“Personal View”或“My Views”查看个性化界面。第 24 页第 4 章 常见问题4.1 edit lock 问题现象:当在构建时命令输出行提示:Deployer:149163The domain edit l
44、ock is owned by another session in non-exclusive mode - this deployment operation requires exclusive access to the edit lock and hence cannot proceed.解决方法:到 weblogic 控制台登陆后,应改为 Lock&Edit 状态再构建。4.2 IOException: Unable to delete 问题现象:当构建时报不能删除之前的文件时,具体信息如下:Checking out a fresh workspace because theres
45、 no workspace at D:Jenkinsjobsgazaworkspacegazajava.io.IOException: Unable to delete D:Jenkinsjobsgazaworkspacegazaat Jenkins.Util.deleteFile(Util.java:261)at Jenkins.Util.deleteRecursive(Util.java:303)at Jenkins.Util.deleteContentsRecursive(Util.java:222)at Jenkins.scm.SubversionSCM$CheckOutTask.in
46、voke(SubversionSCM.java:726)第 25 页at Jenkins.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:660)at Jenkins.FilePath.act(FilePath.java:753)at Jenkins.FilePath.act(FilePath.java:735)at Jenkins.scm.SubversionSCM.checkout(SubversionSCM.java:653)at Jenkins.scm.SubversionSCM.checkout(SubversionS
47、CM.java:601)at Jenkins.model.AbstractProject.checkout(AbstractProject.java:1119)at Jenkins.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:479)at Jenkins.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:411)at Jenkins.model.Run.run(Run.java:1324)at Jenkins.model.FreeStyleBuil
48、d.run(FreeStyleBuild.java:46)at Jenkins.model.ResourceController.execute(ResourceController.java:88)at Jenkins.model.Executor.run(Executor.java:139)Finished: FAILURE解决方法:到 Jenkins 安装的机器下,将当前打开 D:Jenkinsjobsgazaworkspacegaza 的目录关闭,当前有在读的文件,Jenkins 对当前在读文件不进行删除。4.3 not recognized as a valid applicatio
49、n type 问题现象:Ant 打包已完成,在推到 weblogic 时报以下错误J2EE:160177The application at “/weblogic923/bea/user_projects/domains/zjport/servers/gaza/stage/gaza/gaza“ was not recognized as a valid application type. If this is an EAR file, please ensure the META-INF/application.xml exists. EJB-JARs should have a META-INF/ejb-jar.xml. WAR files require a WEB-INF/web.xml, and RARs require a META-INF/ra