feat(���𹤾�): webtool ����������3�ڡ����� SSH �ֶ���ģʽ(P4) #306

Merged
redxin merged 1 commit from claude/sleepy-germain-98e119 into main 2026-06-29 11:51:35 +00:00
Owner

��ִ�мƻ��� ��5 �� 3 �ڡ�Ŀ�������� SSH Ҳ��װ:webtool ���ɡ��ű�+���ð���,����Ա tar xzf && sudo ./install.sh��role.Deploy һ�в����������� packageExecutor �Ѳ���ԭ��תд�� install.sh + bundle + config��

����

  • Target �� Package/PackageDir;newExecutor ·�ɵ� packageExecutor
  • packageexecutor.go:̽���෵�ؿ��� Deploy �տڡ�mutation(mkdir/chown/compose/�ϴ�/����)�ǽ� install.sh;������ compose ǰ;HTTPGetOK �� true;HTTPGetBody ���ա��ڵ����˳�������
  • package_endpoint.go:POST /api/package + GET /api/package/download(����Խ)
  • �������Ųֿ�����ʱĿ¼(���� P1 �԰����ݹ�:�������ֿ��ڡ�Ship ���ִ���������д�� bundle��archive/tar: write too long;������֤�˵��˷���)
  • ���� 4 ��(����/̽�ⲻ���ű�/bundle ���԰���/�������ڲֿ���)

ǰ��

  • Mode �������ڡ������ֶ�����(�� SSH)��;Package.tsx ����(Bearer blob)+install ָ��+NextSteps;ConfigSummary packageMode ��֧

��֤

�Ž�ȫ��(go build/vet/test+typecheck+vitest 15+build)��������֤ PASS(�ز�5��+�����޸� P1)������:���� static-site ����scp ������sh install.sh �������� nginx(Up healthy,:8092 HTTP 302,config/bundle ��λ),�� webtool SSH��

?? Generated with Claude Code

��ִ�мƻ��� ��5 �� 3 �ڡ�Ŀ�������� SSH Ҳ��װ:webtool ���ɡ��ű�+���ð���,����Ա `tar xzf && sudo ./install.sh`��**role.Deploy һ�в���**�������� packageExecutor �Ѳ���ԭ��תд�� install.sh + bundle + config�� ## ���� - Target �� Package/PackageDir;newExecutor ·�ɵ� packageExecutor - packageexecutor.go:̽���෵�ؿ��� Deploy �տڡ�mutation(mkdir/chown/compose/�ϴ�/����)�ǽ� install.sh;������ compose ǰ;HTTPGetOK �� true;HTTPGetBody ���ա��ڵ����˳������� - package_endpoint.go:POST /api/package + GET /api/package/download(����Խ) - **�������Ųֿ�����ʱĿ¼**(���� P1 �԰����ݹ�:�������ֿ��ڡ�Ship ���ִ���������д�� bundle��`archive/tar: write too long`;������֤�˵��˷���) - ���� 4 ��(����/̽�ⲻ���ű�/bundle ���԰���/�������ڲֿ���) ## ǰ�� - Mode �������ڡ������ֶ�����(�� SSH)��;Package.tsx ����(Bearer blob)+install ָ��+NextSteps;ConfigSummary packageMode ��֧ ## ��֤ �Ž�ȫ��(go build/vet/test+typecheck+vitest 15+build)��������֤ PASS(�ز�5��+�����޸� P1)��**����**:���� static-site ����scp ������`sh install.sh` �������� nginx(Up healthy,:8092 HTTP 302,config/bundle ��λ),�� webtool SSH�� ?? Generated with [Claude Code](https://claude.com/claude-code)
feat(部署工具): webtool 体验改造第3期——无 SSH 手动包模式(P4)
Some checks failed
CI / Frontend (Tauri/TS) (pull_request) Has been cancelled
CI / Backend (Go) (pull_request) Has been cancelled
6b6dbd615c
目标机不开 SSH 也能装:webtool 生成「脚本+配置包」,操作员手动拷到目标机
`tar xzf <role>.tar.gz && sudo ./install.sh`。复用 role.Deploy 一行不改。

后端:
- Target 加 Package/PackageDir;newExecutor 最前 if t.Package 返回 packageExecutor
- packageexecutor.go(新):实现 Executor,把部署原语动作转写成 install.sh 脚本行 +
  bundle.tar.gz(gzip 包 writeShipTar 仓库子集) + config/* 配置文件;探测类(test -d/
  docker compose ls/ss)返回空让 role.Deploy 顺利收口(无冲突/通过);mkdir/chown 记进脚本;
  HTTPGetOK 返 true 不空转;HTTPGetBody 返空→code_hash 空→main preauth 空→节点接入回退
  超管审批(手动模式 boot-seed 适配);解包行排 compose 之前
- package_endpoint.go(新):POST /api/package(两 reconcile 预热→逐条 Package=true 跑
  role.Deploy 生成包→buildNextSteps)+ GET /api/package/download?name=(白名单防穿越,流式 tar.gz)
- **产物根放仓库外 OS 临时目录**(根治 P1:产物落仓库内→Ship 整仓打包会自包含正在写的
  bundle.tar.gz→archive/tar: write too long,每角色必失败;独立验证端到端发现)
- packageexecutor_test.go:序列断言+探测不入脚本+bundle 不自包含+产物根在仓库外

前端:
- Mode 第三入口「引导手动部署(无 SSH)」;ConfigSummary packageMode 时 onConfirm→runPackage
  →Package 屏;Package.tsx 每包下载(apiFetch Bearer 取 blob)+install 指引+NextSteps 4步;
  useWizard 加 packageMode/packageResult/choosePackage/runPackage;App 注册 package 屏

门禁:go build/vet/test(含新 packageexecutor_test 4 例)+typecheck+vitest(15)+vite build 全绿。
独立验证 PASS(必查5条+发现并修复 P1 自包含递归)。真机:生成 static-site 包→scp 主机→
sh install.sh 独立跑起 nginx 容器(Up healthy,:8092 HTTP 302,config/bundle 就位),零 webtool SSH。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
redxin merged commit 543dd1039c into main 2026-06-29 11:51:35 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
redxin/DentalFlow!306
No description provided.