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

前言

前段时间写了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项目

CI持续集成环境搭建-Java篇_第1张图片
构建一个Maven项目.png

第二步 Global Tool Configuration

配置 Jenkins 的 Maven 和 JDK 环境

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

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

CI持续集成环境搭建-Java篇_第2张图片
JDK.png

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

CI持续集成环境搭建-Java篇_第3张图片
设置.png
CI持续集成环境搭建-Java篇_第4张图片
Java控制面板.png
CI持续集成环境搭建-Java篇_第5张图片
Java运行时环境设置.png

找到Java的路径

MAVEN_HOME为Maven安装路径

CI持续集成环境搭建-Java篇_第6张图片
Maven.png

第三步 源码管理

CI持续集成环境搭建-Java篇_第7张图片
源码管理.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 保存

然后点击立即构建

CI持续集成环境搭建-Java篇_第8张图片
构建.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成功后才能去执行下一步操作

CI持续集成环境搭建-Java篇_第9张图片
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

CI持续集成环境搭建-Java篇_第10张图片
构建后操作.png

保存,构建,完成☕️

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









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

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

Over!

你可能感兴趣的:(CI持续集成环境搭建-Java篇)