Skip to main content

3 posts tagged with "Tutorials"

View All Tags

· 4 min read
Vapao

概览

若依管理系统 https://gitee.com/y_project/RuoYi 作为例子,最终大概是这样子的。

注意

以下基于 spug v2.3.4 版本,如果低于 v2.3.4 可以参考 版本升级文档 进行升级,例子仅作为演示,一般情况下你都需要结合自己的项目情况调整配置。

about

安装 jdk / maven

如果已安装可跳过该步骤,这里以安装 jdk-8u251maven-3.6.3 为例,如果你使用 Docker 部署的 Spug,可参考以下步骤进行安装

注意

以下仅适用于 2.3.4 及以后的镜像(基于 Centos)启动的容器(这里的 2.3.4 并不是 Spug 的版本号,请在 hub.docker.com 查询镜像版本)。

因 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 至项目根目录,因为咱们文件过滤规则指定的就是相对于项目根目录。

应用发布前

发布前停止现有的服务。

# 停止服务
set +e
ps -ef | grep ruoyi-admin | grep -v grep | awk '{print $2}' | xargs kill -9

因为 Spug 会检测每个钩子内脚本最终退出状态码,如果非 0 则认为执行异常终止发布,所以如果你的目标主机是 Centos 则需要通过 if 来判断进程 是否存在,如果存在才执行 kill

# 停止服务
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 &

· 5 min read
Vapao

概览

Spug 的前端 spug_web 作为例子来说下前端项目的配置,最终大概是这样子的。

注意

以下基于 spug v2.3.4 版本,如果低于 v2.3.4 可以参考 版本升级文档 进行升级,例子仅作为演示,一般情况下你都需要结合自己的项目情况调整配置。

about

安装 node(npm)

如果已安装可跳过该步骤,这里以目前的最新版 v12.18.1 为例,如果你使用 Docker 部署的 Spug,可参考以下步骤进行安装。

注意

以下仅适用于 2.3.4 及以后的镜像(基于 Centos)启动的容器(这里的 2.3.4 并不是 Spug 的版本号,请在 hub.docker.com 查询镜像版本)。

# 进入容器
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_apispug_web 中的前端源代码发布出去。

自定义变量

该例子中并不需要特殊的全局变量,如果你需要的话可以在这里定义,然后在下边的钩子中类似 $SPUG_DEPLOY_ID 那样去引用。

代码检出前

作为前端项目免不了要处理项目依赖包的问题,依赖安装一般在 package.json 所在的目录(在本示例中即spug_web)中执行 npm installyarn 来安装。这里使用了 全局环境变量 中的 SPUG_REPOS_DIRSPUG_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

应用发布后

前端项目编译后就是纯静态的 htmljs 和一些静态文件,这里一般就不需要额外的处理了。