Skip to content

q10283245/push_deploy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Push Deploy

一个面向前端静态项目的轻量发布平台,包含:

  • admin-vue3:管理后台前端
  • tp8-migrate:ThinkPHP 8 后端服务
  • public/script:项目初始化与发布脚本

它的目标很直接:在平台中维护项目、环境、公钥和发布记录,然后在业务项目目录里执行一条命令完成打包、签名、上传和发布。

功能概览

  • 项目管理:创建项目,生成 project_key 与初始化命令
  • 环境管理:为项目配置 testprod 等环境
  • 公钥管理:上传和管理项目可用公钥
  • 初始化脚本:自动生成或复用本机全局密钥,写入 .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+

本地开发

1. 启动后端

进入后端目录:

cd tp8-migrate

安装依赖:

composer install

配置数据库:

  • 修改 tp8-migrate/.env
  • 导入仓库里的数据库脚本

启动服务:

php think run

2. 启动前端

进入前端目录:

cd admin-vue3

安装依赖:

npm install

启动开发环境:

npm run dev

初始化业务项目

平台为业务项目提供一组公共初始化脚本,推荐直接在线下载。

macOS / Linux

curl -fsSL https://deploy.wfsever.cn/script/init.sh | bash -s -- --project-key <project_key> --init-token <init_token> --api-base https://deploy.wfsever.cn

Windows PowerShell

irm https://deploy.wfsever.cn/script/init.ps1 | iex

也可以先下载再执行,并带上参数:

./init.ps1 -ProjectKey <project_key> -InitToken <init_token> -ApiBase https://deploy.wfsever.cn

初始化会做什么

  • 下载 deploy.cjsdeploy-init.cjs
  • 生成或复用本机全局密钥
  • 默认密钥位置:
    • macOS / Linux / Windows:~/.wf-deploy/deploy_private.pem
  • 生成项目配置文件 .deploy_project
  • 如果带了 init_token,自动将公钥同步到平台
  • 自动补全业务项目里的 package.json 发布命令

发布业务项目

在业务项目根目录执行:

npm run deploy -- test
npm run deploy -- prod

发布脚本默认会:

  • 读取 .deploy_project
  • 自动识别构建命令
  • 构建业务项目
  • 打包 dist / build 目录
  • 使用私钥对上传信息签名
  • 调用平台接口申请上传令牌
  • 上传部署包

.deploy_project 示例

可以参考根目录的 .deploy_project.example

常用字段:

  • API_BASE:平台地址
  • PROJECT_KEY:项目唯一标识
  • PRIVATE_KEY_FILE:私钥路径
  • PACKAGE_SOURCE_DIR:构建产物目录
  • BUILD_COMMAND:构建命令
  • ALLOWED_ENVS:允许发布的环境

脚本设计说明

为什么使用本机全局密钥

当前默认策略是“一台机器一套密钥”,而不是“一个项目一套密钥”。

这样做的好处:

  • 同一台电脑初始化多个项目时无需重复生成密钥
  • 降低项目目录里的敏感文件数量
  • 更符合日常开发者使用习惯

Node 16 兼容

发布脚本已兼容 Node 16+:

  • 不依赖内置 fetch
  • 不依赖 node:readline/promises
  • 使用 http/https 与普通 readline 实现

开源前的建议

  • 不要提交真实的 .env
  • 不要提交真实的 .deploy_project
  • 不要提交私钥文件
  • 检查前端 node_modules、构建产物 dist 是否需要从仓库移除
  • 如果准备公开演示地址,建议替换示例中的真实域名、Token 和数据库信息

已知边界

  • 当前更适合静态前端构建产物发布
  • 环境配置必须先在平台中创建并启用,否则上传令牌申请会失败
  • 如果业务项目构建产物不是 distbuild,需要在 .deploy_project 中显式配置

后续可以继续完善

  • Docker 化部署
  • 回滚执行器
  • 更细的权限模型
  • 发布通知与 Webhook
  • 更完整的数据库初始化文档

License

建议在开源前补充一个明确的 LICENSE 文件,例如 MIT。

About

自动发布您的项目

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors