您的位置:首页 > 运维架构 > Docker

利用gitlab、maven、docker自动构建web应用

2018-04-03 13:42 711 查看
      以前团队每次构建应用都要通过Eclipse/STS导出war包,然后再上传到服务器,拷贝到tomcat,还要手动停止/启动tomcat服务,实在麻烦,还非常容易出错。
      我利用gitlab、maven、docker工具,加上一个shell脚本,做了个简单的自动构建工具。
1.首先安装jdk 64版、maven,修改/etc/profile文件如下:JAVA_HOME=/home/git/jdk1.8.0_161
JRE_HOME=$JAVA_HOME/jre
#CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/rt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar
export MAVEN_HOME=/home/git/src/apache-maven-3.5.2

PATH=$JAVA_HOME/bin:/home/git/apache-maven-3.5.2/bin:$PATH
export JAVA_HOME CLASSPATH JRE_HOME PATH
TZ='Asia/Shanghai'; export TZ2.安装docker,并利用docker安装gitlab,可以参考我以前的博客。https://blog.csdn.net/jzd1997/article/details/79297250
2.1 下载tomcat镜像,并启动。
sudo docker pull tomcat
sudo docker cp /etc/localtime gitlab:/etc/localtime   #解决容器和主机时间不一致问题

sudo docker run -d -p 8080:8080 --name customer tomcat
启动后可以进入docker tomcat实例,确认tomcat存放位置。sudo docker exec -it customer /bin/bash
root@f945b6723f41:/usr/local/tomcat# cd webapps/root@f945b6723f41:/usr/local/tomcat/webapps# pwd/usr/local/tomcat/webappsroot@f945b6723f41:/usr/local/tomcat/webapps# lsCumstomerManage      ROOT  examples	 managerCumstomerManage.war  docs  host-managerroot@f945b6723f41:/usr/local/tomcat/webapps#
3.编写自动构建脚本文件。#!/bin/bash

#切换目录
cd ~/customermanage_web/

#拉取最新代码
git pull

#生成war包
mvn package -Dmaven.test.skip=true

sudo docker restart customer

#拷贝war包
sudo docker cp ~/customermanage_web/target/CumstomerManage.war customer:/usr/local/tomcat/webapps

#重启tomcat

sudo docker restart customer完成后添加脚本执行权限。chmod 755 deploy_customer.shps.这个地方还解决了一个mvn打包编译问题,mvn packge的时候提示
[Maven]package com.sun.image.codec.jpeg does not exist原因为Oracle在jdk7以后就对com.sun的所有包都退休了。Synopsis: The Non-standard com.sun.image.codec.jpeg Package is Retired

Description: The com.sun.image.codec.jpeg package was added in JDK 1.2 (Dec 1998) as a non-standard way of controlling the loading and saving of JPEG format image files. This package was never part of the platform specification and it has been removed from the Java SE 7 release. The Java Image I/O API was added to the JDK 1.4 release as a standard API and eliminated the need for the com.sun.image.codec.jpeg package.解决这个问题只需要在pom文件当中添加 <plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<compilerArgument>-XDignore.symbol.file</compilerArgument>
</configuration>4. 执行脚本,确认执行结果./deploy_customer.sh


5. 刚才team member用了下觉得很方便,然后又提出了一个小需求,希望每天自动生成daily build版本,测试第二天一早就可以验证最新的代码,实现也很简单,在crontab中添加定时任务。crontab -e

# m h dom mon dow command
0 1 * * * /home/git/deploy_customer.sh第一个参数是分,第二个参数是小时,后面几个*代表每天运行。

到这里就结束后,后续如果有时间准备再折腾下Jenkins,实现持续集成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gitlab