zoukankan      html  css  js  c++  java
  • jenkins svn tomcat ant自动部署

    这里写图片描述
    Jenkins

    Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:
    1、持续的软件版本发布/测试项目。
    2、监控外部调用执行的工作。
    跟其他持续集成相比,它的主要优点有:
    开源,即免费。
    支持多种平台(windows、linux、os x都支持)。
    安装、配置简单。
    Web可视化管理界面,并且有丰富的tips帮助信息。

    svn

    Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库 (repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。

    ant

    是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。
    Ant的构建文件:
    当开始一个新的项目时,首先应该编写Ant构建文件。构建文件定义了构建过程,并被团队开发中每个人使用。Ant构建文件默认名为build.xml,也可以取其他的名字。只不过在运行的时候把这个命名当作参数传给Ant。构建文件可以放在任何的位置。一般做法是放在项目顶层目录中。这样可以保持项目的简洁和清晰。下面是一个典型的项目层次结构。

    (1) src存放文件。

    (2) class存放编译后的文件。

    (3) lib存放第三方JAR包。

    (4) dist存放打包,发布以后的代码。

    Ant构建文件是XML文件。每个构建文件定义一个唯一的项目(Project元素)。每个项目下可以定义很多目标(target元素),这些目标之间可以有依赖关系。当执行这类目标时,需要执行他们所依赖的目标。每个目标中可以定义多个任务,目标中还定义了所要执行的任务序列。Ant在构建目标时必须调用所定义的任务。任务定义了Ant实际执行的命令。Ant中的任务可以为3类。

    (1)核心任务。核心任务是Ant自带的任务。

    (2)可选任务。可选任务是来自第三方的任务,因此需要一个附加的JAR文件。

    (3)用户自定义的任务。用户自定义的任务是用户自己开发的任务。

    Jenkins 的安装:
    进入https://jenkins.io/
    直接下载war包即可。
    将war直接放到tomcat下的webapps。
    直接在浏览器输入 192.168.0.219:8080/Jenkins
    就可以进入Jenkins界面。
    在进入jenkins界面时,会自动下载插件。

    ant 的安装:
    下载地址:http://ant.apache.org/
    配置环境变量
    vim /etc/profile

    export ANT_HOME=/usr/local/ant
    export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$ANT_HOME/bin:$PATH

    查看

    #使生效
    source /etc/profile
    #查看版本
    ant -version

    svn的安装

    #安装
     yum install -y subversion
     #验证安装版本
     svnserve --version
    #创建SVN 版本库
     mkdir /opt/svndata
     svnadmin create /opt/svndata/test  #test为版本库名称
     #创建版本库后,在这个test目录下会生成3个配置文件
     authz  passwd  svnserve.conf1)svnserve.conf:  svn服务配置文件下。
    (2)passwd: 用户名口令文件。
    (3)authz: 权限配置文件。 
    svnserve.conf 文件, #该文件配置项分为以下5项:
           anon-access: #控制非鉴权用户访问版本库的权限。
           auth-access: # 控制鉴权用户访问版本库的权限。
           password-db: #指定用户名口令文件名。
           authz-db:#指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。
           realm:#指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文件
    
    
    Passwd 文件 :
           我们在svnserve.conf文件里启用这个文件。然后配置如下:
     cat passwd
    ### This file is an example password file for svnserve.
    ### Its format is similar to that of svnserve.conf. As shown in the
    ### example below it contains one section labelled [users].
    ### The name and password for each user follow, one account per line.
    
    [users]
    # harry = harryssecret
    # sally = sallyssecret
    test = test   #新建用户
    test1 = test1
    
     ```
    
    

    authz 文件

    #在网上找到一个很好的配置例子:
    [groups]
    admin = john, kate
    devteam1 = john, rachel, sally
    devteam2 = kate, peter, mark
    docs = bob, jane, mike
    training = zak
    --这里把不同用户放到不同的组里面,下面在设置目录访问权限的时候,用目录来操作就可以了。
    
    # 为所有库指定默认访问规则
    # 所有人可以读,管理员可以写,危险分子没有任何权限
    [/]  --对应我测试里的:/opt/svndata 目录
    * = r
    @admin = rw
    
    
    # 允许开发人员可以完全访问他们的项目版本库
    [proj1:/]
    @devteam1 = rw
    [proj2:/]
    @devteam2 = rw
    [bigproj:/]
    @devteam1 = rw
    @devteam2 = rw
    trevor = rw
    
    # 文档编写人员对所有的docs目录有写权限
    [/trunk/doc]
    @docs = rw
    
    # 培训人员可以完全访问培训版本库
    [TrainingRepos:/]
    @training = rw
     ```
    下面我们来配置我们的authz文件:
        cat authz
    [groups]
    admin = test
    dev=test1
    [davesvn:/]
    @admin = rw
    @dev = rw

    启动和停止SVN服务

    #启动SVN服务:
     svnserve -d -r /opt/svndata
     #-d表示后台运行
      #-r 指定根目录是 /opt/svndata
    #停止SVN服务:
    ps -aux |grep svn
    kill -9  进程号

    客户端连接
    新建测试目录svn,进入后右键,点checkout:
    填写服务器地址
    这里写图片描述

    配置Jenkins
    1, 新建一个项目,名字自己定义,
    2, 选择构建一个自由风格的软件项目
    源码管理: 这里选择Subversion

    也就是什么时候开始自动构建。我这里选择Poll SCM,该方案能定时检代码版本库是否有新的提交,如果有则自动构建。我设置的日程表是“H/5 * * * *”,即5分钟自动检查一次代码版本库是否有新的提交。
    这里写图片描述
    Schedule的配置规则是有5个空格隔开的字符组成,从左到右分别代表:分 时 天 月 年。代表所有,0 6,18 * * 表示“在任何年任何月任何天的6和18点0分”进行构建。
    构建:
    这里写图片描述

    构建后操作:
    首先Jenkins提供了一个发布的插件deploy plugin,来帮助我们实现远程部署,这个插件默认是不安装的,所以需要我们自己手动的来安装。
    手动安装deploy plugin 插件,我们可以在线安装,也可以通过官方下载相关插件,下载地址:https://updates.jenkins-ci.org/download/plugins

    1. 系统管理->管理插件->可选插件->搜索“Deploy to container Plugin”,勾选插件直接安装,等着Jenkins自动安装完成。此时我们打开我们之前新建的项目选择“增加构建后的操作”中增加了一项“Deploy war/ear to a Container”,将我们的war和ear工程部署到容器。

    2. 我们添加一个deploywar/ear to a container选择,Jenkins中构建后操作多出一个发布选项
      这里写图片描述
      记住这里要把应用服务器的防火墙关闭。
      tomcat默认的登录是注释的,我们需要打开。在tomcat/conf/tomcat-users.xml下添加,

      tomcat-users.xml

    <role rolename="tomcat" /> 
    
    <role rolename="admin"/> 
    
    <role rolename="admin-gui"/> 
    
    <role rolename="manager"/> 
    
    <role rolename="manager-gui"/> 
    
    <role rolename="manager-script"/> 
    
    <user username="tomcat" password="tomcat" roles="tomcat,admin-gui,admin,manager,manager-gui,manager-script"/>

    找到Jenkins仓库 在workspace下面会在你构建的时候生成你构建项目名称,然后在你项目名称下面拷入build.xml

    <!-- 定义一个工程,默认任务为warFile。 -->  
    <project name="test" default="warFile" basedir=".">  
          <echo>开始构建</echo>
        <!-- 定义属性,打成war包的名称。 -->  
        <property name="warFileName" value="test.war"></property>  
           <property name="catalina.home" value="/usr/local/tomcat/" />
        <!-- 定义路径,编译java文件时用到的jar包。 -->  
        <path id="project.lib">  
            <fileset dir="${basedir}/WebContent/WEB-INF/lib">  
                <include name="**/*.jar"/>  
            </fileset>  
        </path>  
    
        <!-- 定义任务,清空任务:清空原有的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">  
                <classpath refid="project.lib"/>  
           <compilerarg line="-encoding UTF-8" />  
    <compilerarg value="-XDignore.symbol.file"/> 
            </javac>  
        </target>  
    
        <!-- 定义默认任务,将class文件集合成jar包。 -->  
         <echo>定义默认任务,将class文件集合成jar包。</echo>
        <target name="warFile" depends="compile">  
            <!-- 删除原有war包。 -->  
            <delete dir="${basedir}/${warFileName}" />  
            <!-- 建立新war包。 -->  
            <war destfile="${basedir}/${warFileName}" webxml="${basedir}/WebContent/WEB-INF/web.xml">  
                <!-- 将非jar和非class文件拷贝到war包的对应路径下。 -->  
                <fileset dir="${basedir}/WebContent">  
                    <include name="**/**.*" />  
                    <exclude name="**/*.jar"/>  
                    <exclude name="**/*.class"/>  
                </fileset>  
                <!-- 将jar和class文件拷贝到war包的对应路径下。 -->  
                <lib dir="${basedir}/WebContent/WEB-INF/lib" />  
                <classes dir="${basedir}/build" />  
            </war>  
        </target>  
    
    </project>  
  • 相关阅读:
    java实现第六届蓝桥杯格子中输出
    java实现第六届蓝桥杯格子中输出
    java实现第六届蓝桥杯循环节长度
    java实现第六届蓝桥杯循环节长度
    java实现第六届蓝桥杯格子中输出
    java实现第六届蓝桥杯格子中输出
    java实现第六届蓝桥杯循环节长度
    java实现第六届蓝桥杯循环节长度
    java实现第六届蓝桥杯加法变乘法
    深入研究java.lang.ThreadLocal类 (转)
  • 原文地址:https://www.cnblogs.com/flyhgx/p/6367964.html
Copyright © 2011-2022 走看看