部署什么的 很简单大家应该都明白
1去官网下个war
2 ubuntu
wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add - sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list' sudo apt-get update sudo apt-get install jenkins
jekins 的主目录是/var/lib/jenkins
下面的workspace 是他默认的checkdown目录
安装后会默认启动
如果想改端口那么更改/etc/init.d/jenkins.sh 里面的8080端口就行
启动起来后 去系统设置里面设置svn版本和地址 账户名密码 jdk
然后新建项目
注意Item名称 就是你后来checkdown下来workspace下的文件夹名称(最好别中文)
然后下一步 进入配置项目的 页面
丢弃旧的构建 选上(多少天自己设置)
源码管理 选 Subversion
Repository URL 填写自己的svn地址
Local module directory (optional) 这个是 /workspace/XXXXX/检出的代码 (其中的XXXX)
没说的 默认
构建触发器 选择Poll SCM 当svn有提交的时候 构建
时间间隔 15 * * * *
去抓取svn更新记录的时间间隔 15分钟 后面依次是 小时 天 月 年
在最下面 你会看到增加构建步骤
选择 execute shell 然后填入 想要 在构建后执行的 linux脚本 命令
比如 ant后 移动war包 然后 重启tomcat
ant BUILD_ID=656412 /opt/temp/tomcat/bin/shutdown.sh rm -rf /opt/temp/tomcat/webapps/ROOT cp -f MobileServer.war /opt/temp/tomcat/webapps/ROOT.war sleep 5 /opt/temp/tomcat/bin/startup.sh
需要注意 build_id 随便填 中间需要睡眠5秒 这样才能执行成功 启动tomcat命令
在tomcat里conf下的tomcat-users.xml 需要开启命令操作tomcat
<role rolename="admin-gui"/> <role rolename="admin-script"/> <role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-script,admin-gui"/>
最后 献上 ant 的build.xml文件
<?xml version="1.0" encoding="UTF-8"?> <!-- 定义一个工程,默认任务为warFile。 --> <project name="MobileServer" default="warFile" basedir="."> <!-- 导入配置信息--> <property file="build.properties"/> <!-- 项目名称 --> <property name="webapp" value="${webapp.name}"/> <!-- 定义属性,打成war包的名称。 --> <property name="warFileName" value="${web.war}"/> <!-- tomcat配置信息 --> <property name="tomcat-home" value="${tomcat.home}"/> <property name="remote-url" value="${tomcat.url}"/> <property name="username" value="${tomcat.username}"/> <property name="password" value="${tomcat.password}"/> <property name="path" value="${tomcat.context}"/> <path id="catalina-ant-classpath"> <fileset dir="${tomcat.home}/lib"> <include name="catalina-ant.jar"/> <include name="tomcat-coyote.jar"/> <include name="tomcat-util.jar"/> </fileset> <fileset dir="${tomcat.home}/bin"> <include name="tomcat-juli.jar"/> </fileset> </path> <!-- 定义路径,编译java文件时用到的jar包。 --> <path id="project-classpath"> <fileset dir="WebRoot/WEB-INF/lib" includes="*.jar" /> <fileset dir="${tomcat-home}/lib" includes="*.jar" /> </path> <!-- Configure the custom Ant tasks for the Manager application --> <target name="_def_tomcat_tasks"> <!-- tasks: deploy,undeploy,reload,stop,start,list,roles,resources --> <taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask" classpathref="catalina-ant-classpath"/> <taskdef name="list" classname="org.apache.catalina.ant.ListTask" classpathref="catalina-ant-classpath"/> <taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask" classpathref="catalina-ant-classpath"/> <taskdef name="resources" classname="org.apache.catalina.ant.ResourcesTask" classpathref="catalina-ant-classpath"/> <!-- <taskdef name="roles" classname="org.apache.catalina.ant.RolesTask" classpathref="catalina-ant-classpath"/> --> <taskdef name="start" classname="org.apache.catalina.ant.StartTask" classpathref="catalina-ant-classpath"/> <taskdef name="stop" classname="org.apache.catalina.ant.StopTask" classpathref="catalina-ant-classpath"/> <taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask" classpathref="catalina-ant-classpath"/> </target> <!-- 定义任务,清空任务:清空原有的class文件,创建新的build路径。 --> <target name="clean"> <delete dir="${basedir}/build" /> <mkdir dir="${basedir}/build" /> </target> <!-- 定义任务,编译src文件夹中的java文件,编译后的class文件放到创建的文件夹下。 --> <target name="compile" depends="clean"> <javac srcdir="${basedir}/src" destdir="${basedir}/build" includeantruntime="false" encoding="utf-8" debug="on" > <classpath refid="project-classpath"> </classpath> </javac> </target> <!-- 定义默认任务,将class文件集合成jar包。 --> <target name="warFile" depends="compile"> <!-- 删除原有war包。 --> <echo message="delete ${basedir}/${warFileName}"/> <delete dir="${basedir}/${warFileName}" /> <!-- 建立新war包。 --> <war destfile="${basedir}/${warFileName}" webxml="${basedir}/WebRoot/WEB-INF/web.xml"> <!-- 将非jar和非class文件拷贝到war包的对应路径下。 --> <fileset dir="${basedir}/WebRoot"> <include name="**/**.*" /> <exclude name="**/*.jar"/> <exclude name="**/*.class"/> </fileset> <!-- 将jar和class文件拷贝到war包的对应路径下。 --> <lib dir="${basedir}/WebRoot/WEB-INF/lib" /> <classes dir="${basedir}/build" /> </war> </target> <target name="redeploy" description="Remove and Install web application" depends="_def_tomcat_tasks"> <antcall target="stop"/> <antcall target="undeploy"/> <antcall target="deploy"/> </target> <target name="deploy" description="Install web application" depends="_def_tomcat_tasks,warFile"> <echo message="${remote-url}"/> <echo message="${username}"/> <echo message="${password}"/> <echo message="${warFileName}"/> <deploy url="${remote-url}" username="${username}" password="${password}" path="${path}" war="${warFileName}" update="true" /> </target> <target name="undeploy" description="Remove web application" depends="_def_tomcat_tasks"> <undeploy url="${remote-url}" username="${username}" password="${password}" path="${path}" /> </target> <target name="reload" description="Reload web application" depends="_def_tomcat_tasks"> <echo message="reload" /> <reload url="${remote-url}" username="${username}" password="${password}" path="${path}"/> </target> <target name="stop" description="stop web application" depends="_def_tomcat_tasks"> <echo message="stop" /> <stop url="${remote-url}" username="${username}" password="${password}" path="${path}"/> </target> </project>
别忘了 javac标签里的 debug="on"
只有这样 才能 让spring mvc的注解参数 省略@标签(模拟在eclipse里 编译) 否则报错
build.properties
webapp.name=MobileServer web.root=web web.war=MobileServer.war increment.file=patch.txt javac.debuglevel=source,lines,vars javac.target=1.6 javac.source=1.6 javac.debug=true tomcat.home=/opt/temp/tomcat tomcat.url=http://192.168.1.250:8888/manager/text tomcat.username=admin tomcat.password=admin tomcat.context=/
这里只用了ant 来编译文件 至于那个delpoy 不好使 不知道为什么 总报错 所以才决定用 shell脚本去重启的 ant以后研究
还有一种决绝方案 就是 提交编译后的class文件 那么 jenkins 就会连同编译后的文件 一起部署了
这里要感谢 安明 童鞋的 ant支持 哇咔咔