Skip to main content

· 3 min read
Vapao

Web 终端

本次更新对 Web 终端做了很多的改进和增强。

文件管理模式

当某些时候只想让一些用户能够查看服务器上文件但不需要操作命令行时,可以只给这些用户分配 文件管理 权限。

image-20220419160200191

这时用户访问 Web 终端 时看到如下效果

image-20220419160312272

标签栏菜单

在主机标签栏新增了右键菜单及双击标签快速复制的功能。

image-20220419160722334

窗口宽度自由调整

再也不怕主机名称过长显示不完整了

1650356388120

批量执行模版参数化

现在的模版支持配置参数了,提供在执行时的交互能力,目前仅支持3种创建的参数类型

image-20220419163520281

当执行模版时会弹出交互的参数输入框

image-20220419162842796

自定义发布配置调整动作顺序

现在自定义发布的动作顺序可以自由调整,不需要删了再加了

image-20220419163111158

补偿发布功能

在之前每次发布都会完整执行所有关联主机的发布,现在可以在发布异常后,仅发布失败的主机。

image-20220419163342008

其他优化更新

  • 工作台的便捷导航模块新增了几个默认图标,省得找logo了
  • 主机excel导入增加密码字段并优化导入体验,再也不用一个个点着验证了
  • Webhook自动发布支持Coding
  • 优化发布申请列表页展示效果(展示字段很多,可以通过表格右上角的设置来控制显示隐藏字段)
  • 优化发布配置的克隆功能
  • 优化角色关联账户显示问题,感谢 @Lucius-chen 的贡献
  • 发布配置里的Git仓库配置难到一些同学,新增了对私有仓库的辅助配置功能
  • 新建主机现在默认选中当前分组
  • 自定义发布新建发布申请已支持文件拖拽上传

注意事项

  • 自 3.1.0 开始不再使用系统自身(~/.ssh/目录下)的密钥,如果有主机依赖这些密钥则可能需要重新验证。
提示

升级方法:点击查看

· One min read
Vapao

通过视频讲解如何通过 Spug Webhook 结合 Git 仓库实现自动发布更新。

· 3 min read
Fighter
提示

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社区

Spug社区

· 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 和一些静态文件,这里一般就不需要额外的处理了。