天天看点

jenkins+mawen+svn实现自动化构建部署

jenkins+mawen+svn实现自动化构建部署

说明:

    jenkins采用war包方式安装,运行在tomcat下

    java工程可采用maven打包(如:开发使用myeclipse maven打包)(开发负责)

    jenkins所在服务器安装maven

    jenkins通过svn将代码拉取到本地,使用maven进行打包,将生成的war包放到jenkins根目录下,然后执行shell脚本(python脚本)

步骤:

    tomcat安装参考:http://732233048.blog.51cto.com/9323668/1703053

    jenkins安装:

        下载地址:http://jenkins-ci.org/

jenkins+mawen+svn实现自动化构建部署
        将war包放到tomcat的根目录下,如:/opt/tomcat7/webapps/

cd /opt/tomcat7/webapps/
unzip  jenkins.war -d jenkins
rm jenkins.war

/opt/tomcat7/bin/startup.sh      

        访问:ip:8080/jenkins

jenkins+mawen+svn实现自动化构建部署

        配置系统设置:

jenkins+mawen+svn实现自动化构建部署
##################################################      
jenkins+mawen+svn实现自动化构建部署

            默认的主目录是放在/root/.jenkins/目录下

jenkins+mawen+svn实现自动化构建部署
###################################################      

            安装jdk和mawen:

jenkins+mawen+svn实现自动化构建部署
####################################################      
jenkins+mawen+svn实现自动化构建部署
####################################################      
jenkins+mawen+svn实现自动化构建部署
#####################################################      

           安装mawen:

                下载地址:http://maven.apache.org/download.cgi

jenkins+mawen+svn实现自动化构建部署
cd /usr/local/src/
tar -zxf apache-maven-3.3.9-bin.zip
cp -a apache-maven-3.3.9 /usr/local/maven-3.3.9      

            点击应用,保存:

jenkins+mawen+svn实现自动化构建部署

        创建第一个任务:

jenkins+mawen+svn实现自动化构建部署
#####################################################      
jenkins+mawen+svn实现自动化构建部署
#####################################################      
jenkins+mawen+svn实现自动化构建部署
######################################################      

            配置svn:

jenkins+mawen+svn实现自动化构建部署
#####################################################      
jenkins+mawen+svn实现自动化构建部署
#####################################################      
jenkins+mawen+svn实现自动化构建部署
######################################################      
jenkins+mawen+svn实现自动化构建部署
######################################################      

            执行shell命令:

jenkins+mawen+svn实现自动化构建部署
#######################################################      
jenkins+mawen+svn实现自动化构建部署
########################################################      
jenkins+mawen+svn实现自动化构建部署

        优化jenkins:

            参考:https://wiki.jenkins-ci.org/display/JENKINS/Tomcat

vi /opt/tomcat7/bin/catalina.sh
##添加:
JAVA_OPTS='-server -Xms1024m -Xmx2048m -XX:PermSize=512M -XX:MaxNewSize=512m -XX:MaxPermSize=512m'
export CATALINA_OPTS="-DJENKINS_HOME=/data/jenkins"    ##修改主目录,修改jvm栈内存

/opt/tomcat7/bin/shutdown.sh               ##重启tomcat
/opt/tomcat7/bin/startup.sh      
jenkins+mawen+svn实现自动化构建部署

        开始构建:

jenkins+mawen+svn实现自动化构建部署
############################################################      
jenkins+mawen+svn实现自动化构建部署
#############################################################      

            构建成功:

jenkins+mawen+svn实现自动化构建部署

        创建jenkins登陆用户:

jenkins+mawen+svn实现自动化构建部署
############################################################      
jenkins+mawen+svn实现自动化构建部署
###############################################################      
jenkins+mawen+svn实现自动化构建部署
################################################################      
jenkins+mawen+svn实现自动化构建部署
################################################################      
jenkins+mawen+svn实现自动化构建部署
#################################################################      
jenkins+mawen+svn实现自动化构建部署

使用ANT构建结果输出:

jenkins+mawen+svn实现自动化构建部署
vim /data/jenkins/jobs/jinzhuan/workspace/build.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="jinzhuan" default="war" basedir="">

    <property name="project.name" value="jinzhuan"/>
    <property name="war.name" value="jinzhuan"/>

    <property file="build/build.properties"/>

    <property name="compiler.args" value="-encoding UTF-8"/>
    <property name="build.dir" value="${basedir}/build"/>
    <property name="class.dir" value="${build.dir}/classes"/>
    <property name="src.dir" value="${basedir}/src"/>
    <property name="web.dir" value="${basedir}/WebContent"/>
    <property name="lib.dir" value="${web.dir}/WEB-INF/lib"/>

    <tstamp>
        <format property="datestamp" pattern="yyyy-MM-dd"/>
    </tstamp>

    <presetdef name="my.javac">
        <javac includeantruntime="false"/>
    </presetdef>

    <!--     定义Class Path    -->
    <path id="compile.classpath">
        <fileset dir="${lib.dir}">
            <include name="**/*.jar"/>
        </fileset>
        <fileset dir="${java.home}">
            <include name="**/*.jar"/>
        </fileset>
    </path>
    <patternset id="compiler.resources">
        <include name="**/?*.properties"/>
        <include name="**/?*.script"/>
        <include name="**/?*.groovy"/>
        <include name="**/?*.drl"/>
        <include name="**/?*.ftl"/>
        <include name="**/?*.dsl"/>
        <include name="**/?*.xml"/>
        <include name="**/?*.html"/>
        <include name="**/?*.dtd"/>
        <include name="**/?*.tld"/>
        <include name="**/?*.gif"/>
        <include name="**/?*.png"/>
        <include name="**/?*.jpeg"/>
        <include name="**/?*.jpg"/>
        <include name="**/?*.xsd"/>
        <include name="**/?*.schemas"/>
    </patternset>

    <!--删除任务-->
    <target name="clean" description="删除">
        <echo message="删除目录"/>
        <delete dir="${build.dir}/classes"/>
    </target>
    <target name="init" description="创建目录" depends="clean">
        <echo message="创建目录--以执行"/>
        <mkdir dir="${build.dir}/classes"/>
        <mkdir dir="${class.dir}"/>
    </target>

    <!--编译java源文件-->
    <target name="compile" description="编译文件" depends="init">
        <echo message="编译文件"/>
        <!-- 编译 src目录 -->
        <javac destdir="${class.dir}" encoding="UTF-8" includeantruntime="false" bootclasspath="${java.home}/lib/rt.jar">
            <classpath refid="compile.classpath"/>
            <compilerarg line="${compiler.args}"/>
            <src path="${src.dir}"/>
        </javac>
        <!-- copy src目录 -->
        <copy todir="${class.dir}">
            <fileset dir="${src.dir}">
                <patternset refid="compiler.resources"/>
            </fileset>
        </copy>
    </target>

        <!-- 打成war包, 名称默认为 项目名 -->
    <target name="war" depends="compile" description="将工程打成war包">
        <!-- 删除build下原来的war -->
        <delete dir="${build.dir.war}/**" />
        <war destfile="${build.dir}/${war.name}.war" >
                <!-- 拷贝WebContent -->
                        <fileset dir="WebContent">
                                <include name="**"/>
                        <exclude name="lib/*.*" />
                </fileset>
                        <!-- 拷贝build/classes下的class文件 -->
                        <classes dir="${class.dir}"/>
        </war>
        <!-- 输出war位置 -->
        <echo message="${build.dir}/${war.name}.war"/>
    </target>

    <!--  显示可选任务,并接受用户的选择 -->
    <target name="usage">
        <echo message="${project.name}"/>
        <echo message="------------------------------------------------------"/>
        <echo message=""/>
        <echo message="可选Target:"/>
        <echo message=""/>
        <echo message="deploy           --&gt; Deploy Project to server"/>
        <echo message="compile          --&gt; 编译Java文件并复制资源文件"/>
        <echo message="clean            --&gt; 清除环境"/>
        <echo message=""/>
        <input message="请选择一个Target" validargs="deploy,compile,clean" addproperty="ant.task"/>
    </target>

</project>      

使用maven构建结果输出:

jenkins+mawen+svn实现自动化构建部署