# 从 Deploy Classic 迁移

Deno 官方把 Deploy Classic 与 Subhosting v1 的关停日期标为 **2026-07-20**。该日期已经过去；仍有 Classic 资源时，不要假设项目已自动迁移，立即在 `console.deno.com` 与当前官方状态中确认，并按下面清单处理。

## 不是原地升级

- Classic 项目不会自动转成新 app；新平台需要 organization。
- `deployctl` 迁移为内置 `deno deploy`。
- GitHub integration 使用新平台集成构建，不再沿用旧 Action 配置假设。
- Classic 一套环境变量要拆成 Production、Development 与 Build contexts。
- 自定义域名需要重新配置并保留 DNS 传播窗口。

## 代码与数据差异

```diff
- import { serve } from "https://deno.land/std/http/server.ts";
- serve(() => new Response("hello"));
+ Deno.serve(() => new Response("hello"));
```

- 旧 std `serve()` 在新 Deploy warmup 可能超时；升级依赖并使用 `Deno.serve()`。
- `Deno.cron()` 可以继续使用，但要复核 UTC、重试与 timeline 行为。
- Classic KV 数据不会自动迁移，需要联系官方支持并验证数据完整性。
- 新 Deploy 当前不支持 `Deno.Kv.enqueue()` / `listenQueue()`；改用外部消息队列或数据库 job queue。
- Subhosting v1 的 project/deployment 模型迁移为 v2 的 app/revision，并需要新的 API/SDK 映射。

## 切流清单

1. 盘点项目、域名、变量、cron、KV、queues、region 和 Subhosting 调用。
2. 在新 organization 创建 app，用非生产 timeline 验证构建与运行。
3. 迁移 secret/context，验证不泄漏。
4. 迁移数据库与后台任务，做数量、hash 或业务级对账。
5. 配置域名证书挑战和新 DNS，保留回滚窗口。
6. 验证 logs、traces、metrics、告警与成本，再停旧资源。

官方依据：[Migration guide](https://docs.deno.com/deploy/migration_guide/)、[About Deno Deploy](https://docs.deno.com/deploy/)。
