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

      以前团队每次构建应用都要通过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 TZ

2.安装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/webapps

root@f945b6723f41:/usr/local/tomcat/webapps# ls

CumstomerManage      ROOT  examples manager

CumstomerManage.war  docs  host-manager

root@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.sh

ps.这个地方还解决了一个mvn打包编译问题,mvn packge的时候提示

原因为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,实现持续集成。

猜你喜欢

转载自blog.csdn.net/jzd1997/article/details/79801976