IDE 加载器(Loader) 是启动工作区时显示的加载页面,承担两种职责:
- 工作区模式(路由
/ide/:namespace/:workspaceName):打开已存在的工作区,标题「正在启动工作区 」 - 工厂模式(路由
/load-factory?url=...):通过工厂 URL 创建并启动新工作区,标题「创建工作区」
页面提供 进度 / 日志 / 事件 三个 Tab。工作区尚未创建时(工厂模式早期),日志与事件 Tab 不可用。
加载进度步骤
加载器以向导形式展示工作区创建与启动进度,共五步:
| 步骤 | 说明 |
|---|---|
| 初始化 | 校验工厂参数、来源信任与创建策略 |
| 检查运行工作区数量限制 | 确认未超过平台允许的运行中工作区上限 |
| 创建工作区 | 包含 4 个子步骤:获取 devfile → 检查现有工作区 → 等待 SCC 权限 → 应用 devfile |
| 等待工作区启动 | 等待工作区容器就绪 |
| 打开 IDE | 在新标签页打开 IDE |
打开已有工作区时,向导会跳过”创建工作区”子步骤,仅展示初始化 → 启动 → 打开 IDE 的流程。
工厂(Factory)加载
工厂加载是 Che 的 URL 驱动一键创建 机制:只要拿到一个 Git 仓库地址,就能自动创建并启动对应的云开发环境。
触发方式
- 在 创建工作区 页面从 Git 导入或选择示例后,会自动跳转到工厂加载流程(详见 创建工作区)
- 直接访问带仓库地址的链接,例如:
https://<che-host>#/<仓库地址>https://<che-host>/dashboard/github.com/组织/仓库- 链接中带
remotes等工厂参数
访问上述链接后,浏览器自动重定向到 /load-factory?url=<仓库地址> 并开始创建。
支持的工厂参数
| 参数 | 说明 |
|---|---|
url | 远程 devfile 或 Git 仓库地址 |
che-editor / editor-image | 编辑器定义 / 编辑器镜像 |
ai-provider | AI 提供商(逗号分隔多个) |
revision | Git 分支(也支持从 /tree/<branch> 提取) |
remotes | 附加 Git 远程仓库 |
image | 覆盖容器镜像 |
storageType | per-workspace / ephemeral / per-user |
memoryLimit / cpuLimit | 资源限制 |
name | 指定工作区名称 |
policies.create | peruser(复用)/ perclick(每次新建) |
devfilePath / df | 仓库内 devfile 的相对路径 |
override.* | 覆盖 devfile 属性 |
工厂创建流程
- 初始化:校验
url参数完整性、来源是否被平台允许、是否受信任(受信任或已允许则跳过信任确认弹窗);处理error_code(invalid_request/access_denied/ssl_exception等) - 获取 devfile:从远程 devfile 或 Git 仓库解析出 devfile;私有仓库会触发 OAuth 认证跳转;仓库内 devfile 无效时降级使用默认 devfile
- 检查现有工作区:按创建策略(复用/每次新建)检查同仓库是否已有工作区
- 等待 SCC 权限 / 应用 devfile:等待安全上下文约束权限后生成并应用 DevWorkspace 资源
- 启动并打开 IDE
加载页操作
- 加载页右上角的 ⋮ 菜单提供 启动 / 停止 操作(按当前状态启用/禁用)
- 特殊启动模式在标题追加后缀:
- 使用默认 devfile:仓库 devfile 无效时使用默认开发镜像
- 调试模式:以调试模式启动(调试器端口开放)
- 非进度 Tab 激活时,进度中的错误会以提示条(Toast)形式弹出,可切换到日志/事件 Tab 查看详情
FAQ
Q: 加载进度长时间卡在「获取 devfile」?
原因: 私有仓库需要认证,或仓库网络访问慢/不可达。
解决方法: 确保已配置 个人访问令牌 或完成 Git 服务 OAuth 授权;检查仓库地址与网络。
Q: 工厂创建时提示来源不受信任?
说明: 从不受信任的仓库创建工作区会弹出「您信任此仓库的作者吗?」确认框,勾选「不再询问其他仓库」后加入信任列表。
解决方法: 仅对可信来源确认;平台管理员也可配置允许的来源列表。
Q: 打开已有工作区时标题显示「使用默认 devfile」?
说明: 表示仓库中未找到有效 devfile,使用了平台默认的通用开发镜像。
解决方法: 在仓库中添加 devfile.yaml 后重新创建工作区,即可使用自定义开发环境。