美文网首页
CI持续集成环境搭建-Java篇

CI持续集成环境搭建-Java篇

作者: softgoto | 来源:发表于2016-12-26 16:07 被阅读0次

    前言

    前段时间写了CI持续集成环境搭建-iOS篇,今天来个Java版

    环境交代:
    macOS Sierra 10.12.1
    版本控制:SVN
    Jenkins ver. 2.34
    Apache Maven 3.3.9
    java version "1.7.0_79"
    Apache Tomcat 7

    在开始之前先说一下项目情况:
    Java后台代码通过 Maven 管理库,其中需要依赖另外一个通过 Maven 管理的 Java 工程, Web 前端使用Vue框架和后台代码独立存放,在部署时需要将 Web 前端文件复制到后台代码的 WAR 包中

    OK 下面开始

    第一步 创建项目

    Jenkins的安装请参考前一篇文章

    因为项目依赖Maven管理,所以这里需要创建一个Maven项目

    构建一个Maven项目.png

    第二步 Global Tool Configuration

    配置 Jenkins 的 Maven 和 JDK 环境

    Jenkins -> 系统管理 -> Global Tool Configuration

    因为用的是系统自带的 JDK ,所以地址为/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home

    JDK.png

    如果是另外安装的 JDK ,可以打开设置,点击左下角的 Java

    设置.png Java控制面板.png Java运行时环境设置.png

    找到Java的路径

    MAVEN_HOME为Maven安装路径

    Maven.png

    第三步 源码管理

    源码管理.png

    第四步 Build

    Root POM 这里需要指定pom.xml文件的路径,需要根据实际情况来调整,${WORKSPACE}/xxxx/pom.xml

    以当前Demo为例,/Users/You name/.jenkins/workspace目录结构如下

    Demo-Server
        |---A                    //后台工程
            |---src              //后台代码
            |---pom.xml          //Maven pom文件
            |---... ...
        |---A-View               //Web前端代码
            |---... ...
    

    所以我这里 Root POM 就填 A/pom.xml

    Build.png

    到这里就完了,点击Apply 保存

    然后点击立即构建

    构建.png

    如果只是单纯的通过 Maven 管理的项目,不和其他项目依赖,理论上到这里就结束了,Jenkins 自动编译打包完成,拿到 WAR 包手动部署到服务器。Good job! ☕️

    但是,我这里却编译失败,错误是找不到xxx依赖工程
    前面已经交代过项目情况了,对于我这个项目,还有三件事没有完成:

    1、有通过 Maven 依赖另外一个项目
    2、Web 前端代码需要手动编译,并且需要复制到后台代码的 WAR 包中
    3、自动部署

    OK,那一个一个来解决。

    1、添加依赖项目

    首先依赖的问题,我的方案是通过 Jenkins 来管理依赖项目,先 Build 依赖项目,再 Build Demo-Server

    操作和上面一样,先创建项目,然后管理源码,配置 POM 文件,最后 Build ,搞定。

    依赖项目 Build 成功后,会将项目打包成 jar 包放到 Maven 本地库中

    在依赖项目编译成功后,再去编译Demo-Server项目,就OK了。

    2、Web前端代码编译,移动

    前端使用 Vue 框架,编译需要使用 npm 命令

    关于 Node.js 和 npm 请自行 Google

    前面编译Demo-Server已经生成了一个WAR包,现在需要先解压WAR,然后将编译好的前端代码Copy进去,最后压缩生成新的WAR

    我们打开Demo-Server的配置页,在Build下面 Add post-build step 选择 Execute shell
    记得上面需要勾选Run only if build succeeds,因为只有当项目Build成功后才能去执行下一步操作

    Post Steps.png

    Command 填写shell脚本代码

    #!/bin/bash
    echo "**************************************"
    echo "xuhui 2016-12-26"
    echo "----------------"
    echo "描述:"
    echo "1、解压war包"
    echo "2、编译前端Vue代码"
    echo "3、将前端编译成功的代码复制到后台代码目录"
    echo "4、将后台和前端代码整合打包war"
    echo "**************************************"
    
    
    WAR_PATH="${WORKSPACE}/A/target"
    A_VIEW_PATH="${WORKSPACE}/A-view"
    
    
    #解压
    cd ${WAR_PATH}
    
    unzip A.war -d A_jenkins_temp/
    
    rm -rf A.war
    
    #编译前端代码
    cd ${A_VIEW_PATH}
    
    #第一次需要执行npm i安装相关依赖
    #npm i
    
    npm run build
    
    #移动前端代码
    cp -r ${A_VIEW_PATH}/dist/* ${WAR_PATH}/A_jenkins_temp/
    
    cd ${WAR_PATH}/A_jenkins_temp/
    
    zip -r A.war ./
    
    mv A.war ../
    
    cd ${WAR_PATH}
    
    rm -rf A_jenkins_temp/
    
    

    脚本经供参考,实际业务需要根据项目实际情况来修改脚本

    3、自动部署

    自动部署需要安装插件Deploy

    插件安装:Jenkins -> 系统管理 -> 管理插件 -> 可选插件
    右上角过滤,输入Deploy,勾选 Deploy to Websphere container Plugin 安装并重启

    插件安装成功后,选择Demo-Server -> 配置 -> 构建后操作 -> 增加构建后操作步骤 选择Deploy war/ear to a container

    构建后操作.png

    保存,构建,完成☕️

    注意事项:
    1、上图 WAR 包文件地址请填写正确
    2、Tomcat 下 webapps 目录下的 manager、host-manager、ROOT 文件夹不要删除,如果删除会导致Deploy插件不能上传WAR到Tomcat中
    3、Tomcat 管理员账号配置在 conf 目录下的tomcat-users.xml文件,配置方式如下

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

    4、Deploy 报内存问题,需要修改 JVM 内存设置,Tomcat 的 bin 下 catalina.sh,在cygwin=false上一行添加下面的代码

    export JAVA_OPTS="-Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m"
    

    Over!😁

    相关文章

      网友评论

          本文标题:CI持续集成环境搭建-Java篇

          本文链接:https://www.haomeiwen.com/subject/rzdjvttx.html