zoukankan      html  css  js  c++  java
  • Jenkins+maven+SVN+Tomcat一键自动打包war部署到应用服务器

    一、准备2台服务器(CentOS 7+),一台用于jenkins构建用,一台用于项目 tomcat应用部署

    二、安装jenkins服务器

    2.1 安装JDK1.8(/usr/java/jdk1.8.0_131)、安装apache-maven-3.6.3-bin.tar.gz(/home/apache-maven-3.6.3)

    2.2 编辑 /etc/profile 文件:

    export JAVA_HOME=/usr/java/jdk1.8.0_131
    export JRE_HOME=${JAVA_HOME}/jre
    export MAVEN_HOME=/home/apache-maven-3.6.3
    export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
    export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin

    执行:source /etc/profile  命令生效

    2.3 下载jenkins war 包上传至/home 目录下(地址:https://www.jenkins.io/download/  选择Generic Java package (.war))

     启动jenkins服务:       

    cd /home
    nohup java -jar jenkins.war --httpPort=8080 &

    访问jenkins: http://服务器IP:8080/

    三、配置jenkins

    3.1 进入“系统管理”-“插件管理”-“可选插件”中搜索安装以下3类插件:

    (1)Subversion Revert Plugin、Subversion Workspace Cleaner、SVN 1.4 Compatibility Plugin

    (2)Maven Integration plugin、Deploy to container Plugin、WebSphere Deployer  Plugin

    (3)Publish Over SSH、SSH Build Agents plugin、SSH plugin

    3.2 进入“系统管理”-“全局工具配置”

    (1)Maven 配置

    默认 settings 提供:文件系统中的settings文件, 文件路径:/home/apache-maven-3.6.3/conf/settings.xml

    默认全局 settings 提供:文件系统中的全局settings文件,文件路径:/home/apache-maven-3.6.3/conf/settings.xml

    (2)JDK配置

      别名:jdk1.8.0_131

     JAVA_HOME:/usr/java/jdk1.8.0_131

    (3)Maven

    name:maven3.6.3

    MAVEN_HOME:/home/apache-maven-3.6.3

    3.3 进入“系统管理”-“系统配置”

     (1)Maven项目配置

    全局MAVEN_OPTS:-Xms128m -Xmx512m

    (2)Publish over SSH

    3.4 进入“新建任务”-“构建一个自由风格的软件项目”

    (1)源码管理

    选择Subversion,设置Repository URL、Credentials

    (2)构建触发器

    (3)构建-增加构建步骤-执行shell  命令:

    cd $WORKSPACE
    MAVEN_BIN=/home/apache-maven-3.6.3/bin
    $MAVEN_BIN/mvn clean install -Dmaven.test.skip=true

    (4)构建后操作-增加构建后操作步骤-send build artifacts over SHH

    name:服务器IP

    Source files:target/jjdemo.war

    Remove prefix:target

    Exec command:

    #jdk环境
    export JAVA_HOME=/usr/java/jdk-11.0.4
    export CLASSPATH=.:$JAVA_HOME/lib:$CLASSPATH
    export PATH=$JAVA_HOME/bin:$PATH
    #进入sh文件目录
    cd /home
    #执行该sh文件
    dos2unix autoDeploy.sh
    sh autoDeploy.sh

     

    3.5 配置pom.xml文件

    进入/root/.jenkins/workspace/jjdemo2   任务文件夹目录:

    (1)创建resource文件夹,将一些项目配置资源文件(如.properties、.xml等)统一放到此目录;

    (2)创建pom.xml文件,内容如下:

    <project xmlns="http://maven.apache.org/POM/4.0.0" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <!-- 模型版本。maven2.0必须是这样写,现在是maven2唯一支持的版本 -->
        <modelVersion>4.0.0</modelVersion>
        <!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 
           如com.winner.trade,maven会将该项目打成的jar包放本地路径:/com/winner/trade -->  
        <groupId>com.xrh</groupId>
        <!-- 本项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->  
        <artifactId>jjdemo</artifactId>
         <!-- 本项目目前所处的版本号 -->  
        <version>1.0</version>  
        <!-- 打包的机制,如pom,jar, maven-plugin, ejb, war, ear, rar, par,默认为jar -->  
        <packaging>war</packaging>
        <!-- 为pom定义一些常量,在pom中的其它地方可以直接引用 使用方式 如下 :${file.encoding} -->
        <properties>
            <file.encoding>UTF-8</file.encoding>
            <java.source.version>1.8</java.source.version>
            <java.target.version>1.8</java.target.version>
            <java.home>/usr/java/jdk1.8.0_131</java.home>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
        <build>
            <!-- 产生的构件的文件名,默认值是${artifactId}-${version}。 -->  
            <finalName>jjdemo</finalName> 
            <!-- 构建产生的所有文件存放的目录,默认为${basedir}/target,即项目根目录下的target -->  
            <directory>${basedir}/target</directory>
            <!--项目源码目录,当构建项目的时候,构建系统会编译目录里的源码。该路径是相对于pom.xml的相对路径。 -->  
            <sourceDirectory>${basedir}/src</sourceDirectory>  
            <!--被编译过的应用程序class文件存放的目录。 -->  
            <outputDirectory>${basedir}/WebRoot/WEB-INF/classes</outputDirectory> 
            <!--描述存放资源的目录,该路径相对POM路径--> 
            <resources>  
               <resource>
                <!--描述存放资源的目录,该路径相对POM路径 -->  
                <directory>resource</directory>  
                <!--包含的模式列表 -->  
                <includes>  
                    <include>*.properties</include> 
                    <include>*.json</include>            
                    <include>*.xml</include>  
                </includes>
                <!--排除的模式列表 如果<include>与<exclude>划定的范围存在冲突,以<exclude>为准
                <excludes>  
                    <exclude>jdbc.properties</exclude>  
                </excludes>
                 -->
               </resource>
            </resources>
            
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
    <!-- https://repo.maven.apache.org/maven2/org/apache/maven/plugins/ 查询可用的版本号 --> <version>3.6.2</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> <compilerArguments> <!-- <bootclasspath><extdirs>两个标签 如果配置多个数据,mac、linux用冒号(:),而windows用分号(;) windows路径用(),mac、linux用(/) --> <extdirs>${basedir}/WebRoot/WEB-INF/lib</extdirs> <bootclasspath>${java.home}/jre/lib/rt.jar:${java.home}/jre/lib/jce.jar:${java.home}/jre/lib/servlet-api.jar</bootclasspath> </compilerArguments> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.1</version> <configuration> <webResources> <resource> <directory>${basedir}/WebRoot</directory> <targetPath></targetPath> <!-- 排除jar包,以加快网络传输部署效率; 相关的jar包调整至web服务器tomcat的 /home/tomcat-8.5.46-jjdemo/applib 目录下, 同时修改 /home/tomcat-8.5.46-jjdemo/conf/catalina.properties的common.loader=配置,增加,"${catalina.home}/applib","${catalina.home}/applib/*.jar" --> <excludes> <exclude>/WEB-INF/lib/*.jar</exclude>
    <exclude>/page/**</exclude> </excludes> </resource> </webResources> </configuration> </plugin> </plugins> </build> </project>

    目录结构,如下所示:

    四、配置远程应用服务器

    (1)编辑autoDeploy.sh 并上传至/home  目录下,sh内容如下:

    #tomcat路径
    
    TOMCAT_HOME=/home/tomcat-8.5.46-jjdemo
    
    #查看进程并杀掉进程
    
    ID=`ps -ef | grep "$TOMCAT_HOME" | grep -v "$0" | grep -v "grep" | awk '{print $2}'`
    echo $ID
    for id in $ID
    do
    kill -9 $id
    echo "killed $id"
    done

      #删除日志文件
      cd $TOMCAT_HOME/logs
      rm -rf *

      #删除缓存文件
      cd $TOMCAT_HOME/work
      rm -rf *

    #删除旧的war包等
    cd $TOMCAT_HOME/webapps
    rm -rf jjdemo*
    
    #拷贝新war包到Tomcat下
    cd /home
    cp jjdemo.war $TOMCAT_HOME/webapps
    cd /home/tomcat-8.5.46-jjdemo/bin
    
    #启动tomcat
    nohup ./startup.sh

    tomcat 部署目录结构:

     五、自动构建部署

    进入任务界面,点击“立即构建”,顺利的话控制台输出可以看到如下效果:

    这样就可以体验最新版本的web应用服务了!

    六、注意事项

    应用服务器执行sh出现错误信息:

    sh autoDeploy.sh] ...
    autoDeploy.sh: line 2: $' ': command not found
    autoDeploy.sh: line 4: $' ': command not found
    autoDeploy.sh: line 6: $' ': command not found


    autoDeploy.sh: line 10: syntax error near unexpected token `$'do ''
    autoDeploy.sh: line 10: `do
    '
    SSH: EXEC: completed after 201 ms
    SSH: Disconnecting configuration [47.107.86.152] ...
    ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [2]]
    Build step 'Send build artifacts over SSH' changed build result to UNSTABLE
    Finished: UNSTABLE

    处理方法:

    Linux下有命令dos2unix

    你只要输入dos2unix *.sh就可以完成转换工作了

    如果命令不存在的话就用如下命令在远程web服务器上安装:

    yum install dos2unix -y

                                 ------    create by 李小家 2020-09-11

  • 相关阅读:
    JAVA 大数相加 POJ 1503
    Gao the Grid ZOJ 3647 数三角形
    为Layouts中的页面应用站点母版页的方法
    跨页面传值
    SharePoint Designer + InfoPath 无代码工作流设计实例
    自定义moss主题样式
    修改sharepoint文档库文件类型显示图标
    Workflow成功案例展示BingoSoft
    Walkthrough: 应用EventHandle开发的一个发邮件的小项目
    InfoPath + Workflow + MOSS
  • 原文地址:https://www.cnblogs.com/101key/p/13652768.html
Copyright © 2011-2022 走看看