原始的war包上传因为有第三方库,上传非常慢,所以采取新的方案,使用git先拉项目,再用maven打包项目,这样由于本地maven缓存的存在,不需要从服务器下载第三方库的jar包了,并且由于git的局
.
原始的war包上传因为有第三方库,上传非常慢,所以采取新的方案,使用git先拉项目,再用maven打包项目,这样由于本地maven缓存的存在,不需要从服务器下载第三方库的jar包了,并且由于git的局部更新,所以每次同步代码非常快。缺陷是开发环境和线上环境不同,打包可能会失败,所以要求开发人员熟悉线上环境,每次提交代码需要仔细检查。
.1. 从git拉取项目
需要注意分支的管理,因为我默认用master分支作为发布版本,所以直接运行以下命令即可
- 第一次运行,使用clone语句初始化
git clone http://git.reminding.cn:xx/group-xx/xx-demo.git
- 非第一次运行,使用pull语句更新源码
git pull http://git.reminding.cn:xx/group-xx/xx-demo.git
2. maven编译项目
- 在源码根目录下,使用maven编译打包项目
mvn clean package
3. 配置centos服务
- 创建service文件,
ddns
为服务器的名称
vim /etc/systemd/system/ddns.service
- 插入以下内容,注意修改成自己环境的值,重要的值就两个,/usr/bin/java是java所在路径,使用
whereis java
即可找到,/devops/ddns/target/ddns.jar
就是前一步maven打包的jar包路径。
[Unit]Description=ddns serviceAfter=syslog.target[Service]ExecStart=/usr/bin/java -jar /devops/ddns/target/ddns.jarSuccessExitStatus=143[Install]WantedBy=multi-user.target
4. 启动服务
- 先刷新以下服务
systemctl daemon-reload
- 再启动服务
systemctl start ddns.service
5. 疑难解决
- 运行命令
systemctl status ddns.service
查看服务启动失败,提示”没有主清单属性”。第一反应是缺少MANIFEST.MF文件,但是一看jar包大小才几十k,缺少第三方库,说明打包错误。检查了pom的parent设置了spring-boot-starter-parent
,所以,只需要在pom.xml文件中,添加如下插件即可:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId></plugin>
.If you use the Spring Boot starter parent pom, you only need to add the plugin, there is no need for to configure it unless you want to change the settings defined in the parent.【查看原文】
.6.半自动化部署脚本
- 创建脚本
vim /devops/ddns.sh
- 插入以下内容,注意修改成自己环境的值,ddns为项目名
cd /devops/ddns/;git pull;systemctl stop ddns;mvn clean package;systemctl start ddns;cd /devops;
- 远程代码更新后,只要执行以下命令,即可自动部署最新版本代码。
sh /devops/ddns.sh