name: tiltup description: 在tmux中启动Tilt开发环境,监控引导至健康状态,修复Tiltfile错误而不使用硬编码或备用方案。适用于启动tilt、调试Tiltfile错误或引导开发环境时。
Tilt启动
原则(始终有效)
这些原则适用于处理Tiltfiles、Tilt错误或开发环境引导时:
修复Tiltfile,而非症状
- 直接修复源配置 - Tiltfile、Dockerfile、k8s清单或helm值
- 绝不添加shell变通方案 - 无包装脚本、无
|| true、无try/except pass - 绝不硬编码 端口、路径、主机名、镜像标签或容器名称(这些本应是动态的)
- 绝不添加掩盖真实错误的备用方案 - 如果资源失败,失败必须可见
- 绝不添加针对不稳定依赖的睡眠/重试循环 - 通过
resource_deps()或k8s_resource(deps=)修复依赖顺序 - 绝不添加Tilt已处理的就绪轮询 - 使用
k8s_resource(readiness_probe=)或探针配置
声明式表达依赖关系
- 端口冲突:修复端口分配源,不要选择不同端口
- 资源排序:使用
resource_deps(),而非顺序启动脚本 - 环境变量:使用
silo.toml或gen-env输出,而非内联默认值 - 镜像可用性:使用
image_deps或deps,而非睡眠直到就绪
Tilt实时重载
编辑Tiltfile后,Tilt会自动获取更改。绝不重启tilt up 用于:
- Tiltfile编辑
- 源代码更改
- Kubernetes清单更新
仅在以下情况重启:Tilt版本升级、端口/主机配置更改、崩溃、集群上下文切换。
工作流程(当显式启动Tilt时)
步骤1:评估当前状态
-
检查tilt是否已在运行:
SESSION=$(basename $(git rev-parse --show-toplevel 2>/dev/null) || basename $PWD) tmux list-windows -t "$SESSION" -F '#{window_name}' 2>/dev/null | grep -q "^tilt$"如果正在运行,通过
tilt get uiresources -o json检查健康状况,并跳至步骤3。 -
检查必需的环境文件(
.localnet.env、.env.local、silo.toml):- 如果
silo.toml存在,使用silo up路径 - 如果存在gen-env脚本,首先运行它
- 如果都没有,检查项目README以获取引导说明
- 如果
-
检查k3d集群或Docker先决条件。
步骤2:在tmux中启动Tilt
遵循tmux技能模式:
SESSION=$(basename $(git rev-parse --show-toplevel 2>/dev/null) || basename $PWD)
if ! tmux has-session -t "$SESSION" 2>/dev/null; then
tmux new-session -d -s "$SESSION" -n tilt
tmux send-keys -t "$SESSION:tilt" 'tilt up' Enter
elif ! tmux list-windows -t "$SESSION" -F '#{window_name}' | grep -q "^tilt$"; then
tmux new-window -t "$SESSION" -n tilt
tmux send-keys -t "$SESSION:tilt" 'tilt up' Enter
else
echo "Tilt窗口已存在于会话中: $SESSION"
fi
对于silo项目:使用silo up而非tilt up。
步骤3:监控引导
轮询收敛:
- 等待10秒以进行初始资源注册
- 每15秒轮询一次,最多20次迭代:
tilt get uiresources -o json | jq -r '.items[] | select(.status.runtimeStatus == "error" or .status.updateStatus == "error" or .status.updateStatus == "pending") | "\(.metadata.name): runtime=\(.status.runtimeStatus) update=\(.status.updateStatus)"' - 跟踪资源状态:
pending->in_progress->ok - 成功:所有资源达到
runtime=ok, update=ok(或not_applicable) - 如果资源稳定在
error状态,继续步骤4
步骤4:诊断并修复错误
对于每个处于错误状态的资源:
- 读取日志:
tilt logs <resource> --since 2m - 读取Tiltfile和相关的k8s清单
- 在配置中识别根本原因(而非运行中的进程)
- 应用修复,遵循上述原则
- Tilt实时重载 - 重新轮询状态以验证
在同一资源上修复3次迭代而无进展后:
- 报告错误及完整日志
- 识别是Tiltfile错误、上游依赖问题还是基础设施问题
- 不要静默跳过或禁用资源
步骤5:报告
## Tilt状态:<healthy|degraded|errored>
**资源**:X/Y正常
**会话**:tmux $SESSION:tilt
### 错误(如果有)
- <资源>:<根本原因> — <已修复内容或剩余问题>