通过视频讲解如何通过 Spug Webhook 结合 Git 仓库实现自动发布更新。
Spug主机管理
提示
Spug主机管理 包含:主机信息同步、主机硬件配置信息自动同步、主机在线终端管理、文件在线上传下载删除等功能。 视频链接:https://www.bilibili.com/video/BV1Fb4y1B7fR/
主机分组
在主机管理 / 主机分组 可以鼠标右键创建、重命名、删除分组
新建主机
新主机可以通过多种方式添加:
- 1、通过页面表单新建
- 2、通过Excel表格导入
- 3、也可以通过输入阿里云、腾讯云Access密钥Key同步到spug系统里面
spug平台不会在数据库保存目标主机的账号密码,用户第一次输入账号密码后,后续spug会使用自动生成的密钥对进行主机连接
默认Spug会自动生成一个新密钥对,然后使用生成的密钥去链接目标主机,你也可以在【 系统管理 / 系统设置 / 密钥设置 】将自己管理机(例如公司的跳板机服务器)的密钥上传到Spug系统里面,这样就可以直接通过上传的密钥去添加管理主机
主机扩展信息
添加完主机spug会自动获取主机配置,点击主机名称,可以打开主机扩展信息(内存、cpu、硬盘、IP信息)也可以对扩展信息进行编辑
WEB在线终端
主机管理 / Web终端 / 双击要链接的主机后,就可以在线Console管理主机,也可以多次双击主机打开多个窗口
在线文件管理
打开主机Web终端后,可以在线对主机文件进行在线管理,可以在线上传、下载、删除文件
更多资讯、视频、欢迎关注公众号“Spug社区”
Java项目配置
概览
以 若依管理系统
https://gitee.com/y_project/RuoYi 作为例子,最终大概是这样子的。
注意
以下基于 spug v2.3.4 版本,如果低于 v2.3.4 可以参考 版本升级文档 进行升级,例子仅作为演示,一般情况下你都需要结合自己的项目情况调整配置。
安装 jdk / maven
如果已安装可跳过该步骤,这里以安装 jdk-8u251
和 maven-3.6.3
为例,如果你使用 Docker 部署的 Spug
,可参考以下步骤进行安装
因 Oracle JDK 下载需要登录账户请自行下载,这里直接使用下载完成的 jdk-8u251-linux-x64.tar.gz
文件。
# 自行至 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 下载jdk
# 把已下载的压缩包拷贝进容器
docker cp jdk-8u251-linux-x64.tar.gz spug:/
docker exec -it spug bash
tar xf jdk-8u251-linux-x64.tar.gz -C /opt
# 安装maven
curl -o apache-maven-3.6.3-bin.tar.gz http://apache.mirrors.pair.com/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar xf apache-maven-3.6.3-bin.tar.gz -C /opt/
echo -e 'export JAVA_HOME=/opt/jdk1.8.0_251\nexport PATH=$PATH:$JAVA_HOME/bin:/opt/apache-maven-3.6.3/bin' > /etc/profile.d/java.sh
# [可选]配置阿里云镜像加速下载,在159-164行(<mirrors\>标签内)添加以下内容
vi /opt/apache-maven-3.6.3/conf/settings.xml
159 <mirror>
160 <id>aliyunmaven</id>
161 <mirrorOf>*</mirrorOf>
162 <name>阿里云公共仓库</name>
163 <url>https://maven.aliyun.com/repository/public</url>
164 </mirror>
# 退出并重启容器
exit
docker restart spug
文件过滤
只需要发布编译过的 jar 包,所以这里选择了 包含
规则。
ruoyi-admin.jar
自定义变量
该例子中并不需要特殊的 全局变量,如果你需要的话可以在这里定义,然后在下边的钩子中类似 $SPUG_DEPLOY_ID
那样去引用。
代码检出前
该例子中也不需要执行。
代码检出后
在这里进行项目的依赖包安装和编译工作,该钩子中当前目录即为按发布申请中选择 Git 分支/版本
检出后的代码目录。
# 执行maven编译
mvn clean package -Dmaven.test.skip=true
cp ruoyi-admin/target/ruoyi-admin.jar .
这里拷贝 ruoyi-admin.jar
至项目根目录,因为咱们文件过滤规则指定的就是相对于项目根目录。
应用发布前
发布前停止现有的服务。
# 停止服务
PID=$(ps -ef | grep ruoyi-admin | grep -v grep | awk '{print $2}')
if [ ! -z $PID ]; then
kill -9 $PID
fi
应用发布后
在这里启动服务。
# 添加jdk至PATH变量
PATH=$PATH:/usr/local/jdk1.8.0_231/bin
nohup java -jar ruoyi-admin.jar &> run.log &
更多资讯、视频、欢迎关注公众号“Spug社区”
Node项目配置
概览
以 Spug
的前端 spug_web
作为例子来说下前端项目的配置,最终大概是这样子的。
注意
以下基于 spug v2.3.4 版本,如果低于 v2.3.4 可以参考 版本升级文档 进行升级,例子仅作为演示,一般情况下你都需要结合自己的项目情况调整配置。
安装 node(npm)
如果已安装可跳过该步骤,这里以目前的最新版 v12.18.1
为例,如果你使用 Docker 部署的 Spug
,可参考以下步骤进行安装。
# 进入容器
docker exec -it spug bash
curl -o node-v12.18.1-linux-x64.tar.xz https://nodejs.org/dist/v12.18.1/node-v12.18.1-linux-x64.tar.xz
tar xf node-v12.18.1-linux-x64.tar.xz -C /opt
echo 'export PATH=$PATH:/opt/node-v12.18.1-linux-x64/bin' > /etc/profile.d/node.sh
# 安装yarn,推荐使用yarn来代替npm
source /root/.bashrc
npm install -g yarn
# 退出并重启容器
exit
docker restart spug
文件过滤
前端项目发布的时候只需要编译后的内容就可以,这里选择了 包含
条件,内容为 spug_web/build
,这样最终发布到目标主机上的代码仅包含
spug_web/build
,并不会把 spug_api
及 spug_web
中的前端源代码发布出去。
自定义变量
该例子中并不需要特殊的全局变量,如果你需要的话可以在这里定义,然后在下边的钩子中类似 $SPUG_DEPLOY_ID
那样去引用。
代码检出前
作为前端项目免不了要处理项目依赖包的问题,依赖安装一般在 package.json
所在的目录(在本示例中即spug_web
)中执行 npm install
或 yarn
来安装。这里使用了 全局环境变量 中的
SPUG_REPOS_DIR
和 SPUG_DEPLOY_ID
来切换到源码目录创建公共的 node_modules
目录,以后每次发布时都通过软链接的形式使用它来避免每次
发布都需要全量安装依赖包。
# 创建公共node_modules目录
mkdir -p $SPUG_REPOS_DIR/$SPUG_DEPLOY_ID/node_modules
代码检出后
在这里进行项目的依赖包安装和编译工作,该钩子中当前目录即为按发布申请中选择 Git 分支/版本
检出后的代码目录,我们需要先把上一步创建的公共 node_modules
目录链接到当前目录(这样可以避免每次都完整的执行npm install
来重复安装依赖包),然后执行 yarn build
来进行项目编译。
# 创建软链接,指向公共的node_modules,避免每次发布重复安装依赖包
cd spug_web
ln -s $SPUG_REPOS_DIR/$SPUG_DEPLOY_ID/node_modules .
# 执行依赖安装
yarn
# 执行 编译
yarn build
编译后也就生成了我们在 文件过滤 中设置的 spug_web/build
目录。
应用发布前
由于我们设置的文件过滤规则 spug_web/build
,所以传输到目标主机上文件结构也是 spug_web/build/xx
,我们需要调整下目录结构,
让 spug_web/build
目录下内容放到项目的根目录中。
# 调整目录结构,把编译结果放在项目根目录
mv spug_web/build/* .
rm -rf spug_web
应用发布后
前端项目编译后就是纯静态的 html
、js
和一些静态文件,这里一般就不需要额外的处理了。
更多资讯、视频、欢迎关注公众号“Spug社区”