# dev_launcher **Repository Path**: mr-ming/dev_launcher ## Basic Information - **Project Name**: dev_launcher - **Description**: 可视化远程管理在 WSL 内以 worktree 的方式运行多个分支的服务, 并顺带打开 Windows 的防火墙 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-29 - **Last Updated**: 2026-10-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Dev Launcher DevLauncher 是运行在 Windows 上的 bluen_server 多分支管理服务: - Windows 侧 Python 服务提供 Web 管理页面和 API。 - WSL 内通过 `git worktree` 管理 bluen_server 各分支。 - 每个 worktree 使用独立目录、虚拟环境、端口和配置。 - 自动维护 Windows portproxy 和防火墙规则,使手机、Mac 和局域网设备可以访问 WSL 中的服务。 - 使用 TOTP 登录,支持 admin 创建账号、用户管理自己的 TOTP URI 和 Secret。 - 支持服务启动、暂停、重启、拉取代码、回退代码和删除 worktree。 ## 目录约定 主仓库: ```text F:\code\python\bluen_server ``` WSL 路径: ```text /mnt/f/code/python/bluen_server ``` 分支 worktree: ```text /mnt/f/code/python/bluen_server/worktree/<分支名> ``` 示例: ```text /mnt/f/code/python/bluen_server/worktree/master /mnt/f/code/python/bluen_server/worktree/master-v2 /mnt/f/code/python/bluen_server/worktree/master-bak /mnt/f/code/python/bluen_server/worktree/yjm-feat-banlu-18477 ``` worktree 目录直接使用分支名,不再使用 `bluen_数字` 目录命名。 ## 固定端口 | 分支 | 端口 | | --- | ---: | | `master` | 8203 | | `master-v2` | 8303 | | `master-bak` | 8403 | 其他分支从 `8503` 开始按 `+100` 分配: ```text 8503, 8603, 8703, 8803, 8903, 9003 ... ``` ## new-worktree.sh 脚本位置: ```text F:\code\python\bluen_server\new-worktree.sh ``` 本项目也保留一份: ```text F:\code\python\dev_launcher\scripts\new-worktree.sh ``` 主仓库需要预先准备以下模板文件: ```text bluen_server/.env bluen_server/pyproject.toml bluen_server/unicorn.yml bluen_server/config/unicorn.yml bluen_server/pyclipper*.whl ``` 脚本会把配置模板和 pyclipper wheel 复制到新建的 worktree,并执行: ```bash UV_LINK_MODE=copy uv sync ``` ### 命令 查看帮助: ```bash cd /mnt/f/code/python/bluen_server bash new-worktree.sh help ``` 创建 worktree: ```bash bash new-worktree.sh create ``` 示例: ```bash bash new-worktree.sh create yjm-feat-banlu-18477 8703 ``` 从指定基础分支创建 worktree: ```bash bash new-worktree.sh create ``` 列出 worktree: ```bash bash new-worktree.sh list ``` 删除 worktree 和本地分支: ```bash bash new-worktree.sh remove ``` 清理失效的 worktree 管理数据: ```bash bash new-worktree.sh prune ``` ## 启动 DevLauncher ```powershell cd F:\code\python\dev_launcher uv sync $env:DEV_LAUNCHER_PORT = "5800" uv run python main.py ``` 浏览器访问: ```text http://:5800 ``` 根路径会自动跳转到: ```text http://:5800/service ``` 登录地址: ```text http://:5800/login ``` ## TOTP 和账号 首次启动时会在 Postgres 中创建 `admin`,初始 OTP URI 写入: ```text F:\code\python\dev_launcher\data\admin_totp_uri.txt ``` admin 可以通过“账号管理”创建普通账号。每个账号只有一个当前 Secret: - 个人中心可以查看当前 TOTP URI。 - 个人中心可以生成二维码。 - 个人中心可以重新生成 Secret,旧 Secret 会立即失效。 - 账号管理页创建账号后会显示 OTP URI 和二维码。 Docker Postgres 容器: ```text dev_launcher_db 127.0.0.1:5433 -> 5432 ``` ## 权限 - `master`、`master-v2`、`master-bak`、`hot_fix`、`hot_fix_v2`: - 所有登录用户可以查看、拉取、启动、暂停、重启。 - 只有 admin 可以删除。 - 其他开发分支: - 只有拉取并启动该分支的账号可以看到和操作。 - 其他普通账号不可见。 - admin 可以管理和删除。 ## 服务页面 - `/service`:服务管理 - `/proxy_firewall`:端口代理和防火墙管理 - `/profile`:个人中心 - `/account`:账号管理,仅 admin ## 开发 运行测试: ```powershell uv run python -m unittest discover -s tests -v ``` 当前版本: ```text v2.0.0 ```