一键部署脚本-linux
做个人项目的时候,有时候开发和部署可能不在一台电脑,,为了方便所以编辑了该脚本。该脚本功能主要是从码云上拉取代码,然后前端vue打包,将打包后内容放置到后端代码中后,再打包成jar包形式,最后再运行即可。编辑使用脚本的时候遇到了几个坑,这个在最后进行介绍,现在上脚本:
#!/bin/bash
echo =====================
echo 自动化部署开始
echo =====================
echo =====================
echo 执行过程一:拉取最新代码
echo =====================
echo git clone https://gitee.com/wyt_zyc/wyt01homepage.git
git clone https://gitee.com/wyt_zyc/wyt01homepage.git
echo =====================
echo 执行过程二:前端打包、删除已有前端包、移动最新包
echo =====================
echo cd wyt01homepage/wyt01homepage-ft
cd wyt01homepage/wyt01homepage-ft
echo npm install
npm install
echo npm run build
npm run build
echo rm -rf ../wyt01homepage-bk/src/main/resources/templates/*
rm -rf ../wyt01homepage-bk/src/main/resources/templates/*
echo rm -rf ../wyt01homepage-bk/src/main/resources/static/*
rm -rf ../wyt01homepage-bk/src/main/resources/static/*
echo mv ./dist/index.html ../wyt01homepage-bk/src/main/resources/templates/
mv ./dist/index.html ../wyt01homepage-bk/src/main/resources/templates/
echo mv ./dist/* ../wyt01homepage-bk/src/main/resources/static/
mv ./dist/* ../wyt01homepage-bk/src/main/resources/static/
echo =====================
echo 执行过程三:后端打包、移动成果物、删除代码
echo =====================
echo cd ../wyt01homepage-bk/
cd ../wyt01homepage-bk/
echo mvn clean package
mvn clean package
echo mv ./target/wyt01homepage.jar ../../
mv ./target/wyt01homepage.jar ../../
echo cd ../../
cd ../../
echo rm -rf wyt01homepage/
rm -rf wyt01homepage/
nohup java -jar wyt01homepage.jar --server.port=17001 > /dev/null 2>&1 &
echo =====================
echo 自动化部署结束
echo =====================
上面便是完整的部署脚本,其中为了显示脚本执行的具体情况,所以使用了较多的echo显示要执行的脚本。最后的jar包则是以后台运行的方式启动,其它的启动情况可以参考我的上一篇文章:https://blog.csdn.net/Interest1_wyt/article/details/112644608
下面介绍遇到的三个问题:
问题1:前端npm打包总是失败
这是没有配置npm仓库的原因,默认的仓库好像不是国内的,所以下载速度比较慢。可以通过 npm config set registry https://registry.npm.taobao.org/
问题2:maven打包下载太慢或者下载不下来
这是没有配置maven远程仓库的原因,默认的仓库与npm类似,好像也不是国内的。我修改的时候是进入maven的conf目录,然后在mirrors模块配置上阿里云的仓库
<mirrors>
<mirror>
<id>ali maven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
</mirrors>
问题3:maven打包的时候会有一个测试流程,测试报错又依赖另外的包,因为本地运行正常,所以这块可以直接跳过。跳过的方式比较多,有兴趣的可以上网搜搜,这里展示我用的一种方式。
在pom.xml文件的properties添加跳过测试声明,详情如下:
<properties>
<skipTests>true</skipTests>
</properties>
最后如果有错误和待改进的地方,欢迎各位大佬留言!