# MiniShip **Repository Path**: onefly/MiniShip ## Basic Information - **Project Name**: MiniShip - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-09-21 - **Last Updated**: 2026-09-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 桌面部署工具(DeskDeploy) 本地桌面 GUI:把 **本地构建 → 产物传输 → 服务器命令** 编排成一条流水线,一键发布到 Linux 服务器。 技术栈:Wails v2 + Go 后端 + Vue 3 前端。配置只保存在本机用户目录,不会上传到远端。 ## 能做什么 - 多台服务器、多个项目分开管理,服务器可被项目复用 - 三层编排每层可启用 / 禁用,也可单独测试 - 同一时间只跑一条流水线;实时日志推到前端 - 产物传输只负责上传并校验大小;远端备份、重启等动作写在远程命令里 - 完整部署写入历史,可回看日志 ## 运行(开发) 依赖:Go 1.25+、Node.js 18+、[Wails CLI v2.15](https://wails.io) ```bash go install github.com/wailsapp/wails/v2/cmd/wails@v2.15.0 cd frontend && npm install && cd .. wails dev ``` Windows 上直接弹出桌面窗口。Linux / 无桌面环境可用浏览器预览(同一套后端 API,不依赖 WebView): ```bash cd frontend && npm run build && cd .. go run -tags web . --port 45281 ``` 浏览器打开 `http://127.0.0.1:45281`。 ## 打包成 Windows 程序 在 **Windows** 开发机上(已装 WebView2、GCC / MinGW): ```bash wails build -platform windows/amd64 ``` 产物在 `build/bin/desk-deploy.exe`。需要安装包时再加 `-nsis`。 ## 配置存放位置 | 系统 | 目录 | | --- | --- | | Windows | `%AppData%\desk-deploy\` | | macOS | `~/Library/Application Support/desk-deploy/` | | Linux | `~/.config/desk-deploy/` | 文件:`servers.json`、`projects.json`、`history.json`。可用环境变量 `DESK_DEPLOY_HOME` 覆盖目录(测试或便携模式)。 私钥路径按本机文件读取,MVP 不做加密。密码认证已预留并可用,密码同样明文写在本地 JSON,只适合内网。 ## 流水线规则 1. **本地构建**:关闭则直接使用已有产物;开启则在 `workDir` 依次执行 pre / build / post,并检查产物文件。失败只停本地,不动服务器。 2. **产物传输**:SSH + SFTP 上传并校验远端文件大小。目标若是已存在目录(或路径以 `/` 结尾),则写入该目录下的同名文件。不备份远端旧文件。 3. **远程命令**:逐步执行;`IgnoreError=false` 且退出码非 0 → 终止流水线。远端备份、重启等请写在本阶段步骤中。 4. SSH 使用 `InsecureIgnoreHostKey`,仅限内网工具。 ## 前端调用的后端方法 `GetServerList` / `SaveServer` / `DeleteServer` / `TestServerConn` `GetProjectList` / `SaveProject` / `DeleteProject` / `TestBuild` `RunDeploy` / `StopDeploy` / `TestTransfer` / `TestRemoteCmd` `GetHistoryList` / `GetHistoryLog` / `DeleteHistory` 事件:`pipeline-log`(单行日志)、`pipeline-done`(结束状态)。 ## 测试 ```bash go test ./... ```