一个面向前端静态项目的轻量发布平台,包含:
admin-vue3:管理后台前端tp8-migrate:ThinkPHP 8 后端服务public/script:项目初始化与发布脚本
它的目标很直接:在平台中维护项目、环境、公钥和发布记录,然后在业务项目目录里执行一条命令完成打包、签名、上传和发布。
- 项目管理:创建项目,生成
project_key与初始化命令 - 环境管理:为项目配置
test、prod等环境 - 公钥管理:上传和管理项目可用公钥
- 初始化脚本:自动生成或复用本机全局密钥,写入
.deploy_project - 发布脚本:本地构建、压缩产物、签名、申请上传令牌、上传部署包
- 发布记录:保留上传与发布日志,支持后续扩展回滚能力
.
├── admin-vue3/ # Vue 3 + Vite 管理后台
├── tp8-migrate/ # ThinkPHP 8 后端
├── scripts/ # 辅助脚本
├── .deploy_project.example
└── DEPLOY_CLIENT.md
- 前端:Vue 3、Vite、Element Plus、Pinia
- 后端:ThinkPHP 8、MySQL
- 客户端发布脚本:Node.js CommonJS
- Node.js 16+
- PHP 8.0+
- MySQL 5.7+ 或 8.0+
进入后端目录:
cd tp8-migrate安装依赖:
composer install配置数据库:
- 修改
tp8-migrate/.env - 导入仓库里的数据库脚本
启动服务:
php think run进入前端目录:
cd admin-vue3安装依赖:
npm install启动开发环境:
npm run dev平台为业务项目提供一组公共初始化脚本,推荐直接在线下载。
curl -fsSL https://deploy.wfsever.cn/script/init.sh | bash -s -- --project-key <project_key> --init-token <init_token> --api-base https://deploy.wfsever.cnirm https://deploy.wfsever.cn/script/init.ps1 | iex也可以先下载再执行,并带上参数:
./init.ps1 -ProjectKey <project_key> -InitToken <init_token> -ApiBase https://deploy.wfsever.cn- 下载
deploy.cjs与deploy-init.cjs - 生成或复用本机全局密钥
- 默认密钥位置:
- macOS / Linux / Windows:
~/.wf-deploy/deploy_private.pem
- macOS / Linux / Windows:
- 生成项目配置文件
.deploy_project - 如果带了
init_token,自动将公钥同步到平台 - 自动补全业务项目里的
package.json发布命令
在业务项目根目录执行:
npm run deploy -- test
npm run deploy -- prod发布脚本默认会:
- 读取
.deploy_project - 自动识别构建命令
- 构建业务项目
- 打包
dist/build目录 - 使用私钥对上传信息签名
- 调用平台接口申请上传令牌
- 上传部署包
可以参考根目录的 .deploy_project.example。
常用字段:
API_BASE:平台地址PROJECT_KEY:项目唯一标识PRIVATE_KEY_FILE:私钥路径PACKAGE_SOURCE_DIR:构建产物目录BUILD_COMMAND:构建命令ALLOWED_ENVS:允许发布的环境
当前默认策略是“一台机器一套密钥”,而不是“一个项目一套密钥”。
这样做的好处:
- 同一台电脑初始化多个项目时无需重复生成密钥
- 降低项目目录里的敏感文件数量
- 更符合日常开发者使用习惯
发布脚本已兼容 Node 16+:
- 不依赖内置
fetch - 不依赖
node:readline/promises - 使用
http/https与普通readline实现
- 不要提交真实的
.env - 不要提交真实的
.deploy_project - 不要提交私钥文件
- 检查前端
node_modules、构建产物dist是否需要从仓库移除 - 如果准备公开演示地址,建议替换示例中的真实域名、Token 和数据库信息
- 当前更适合静态前端构建产物发布
- 环境配置必须先在平台中创建并启用,否则上传令牌申请会失败
- 如果业务项目构建产物不是
dist或build,需要在.deploy_project中显式配置
- Docker 化部署
- 回滚执行器
- 更细的权限模型
- 发布通知与 Webhook
- 更完整的数据库初始化文档
建议在开源前补充一个明确的 LICENSE 文件,例如 MIT。