部署什么的 很简单大家应该都明白
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支持 哇咔咔