mcpField
T
tilt

tilt

github.com/alleneubank云与 DevOps50269 次安装18 周前更新
代码仓库

关于 tilt

tilt 是一项帮助开发者检查和操作 Tilt 部署资源的技能,重点在于先识别错误,并区分构建状态与容器健康状态。

主要功能

  1. 01优先筛查资源错误
  2. 02查看待处理与进行中状态
  3. 03检查 Docker Compose 健康状态
  4. 04查看日志并触发更新
  5. 05启动、停止和等待资源就绪

适用场景

  1. 01定位 Tilt 资源的构建错误
  2. 02排查 Docker Compose 健康检查失败
  3. 03监控部署并查看资源状态

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alleneubank/claude-code --skill tilt

安装后在 Claude Code 中输入/tilt确认已加载。

附带文件CLI_REFERENCE.mdTILTFILE_API.md

详细介绍

Tilt

首先:检查错误

在调查问题或验证部署之前,先检查资源健康状态。首先单独检查 错误,再检查待处理/进行中状态——否则,真正的故障会淹没在 20 多行待处理项中:

# 1. Errors only — surface the buildHistory[0].error so you see WHY, not just THAT
tilt get uiresources -o json | jq -r '.items[] | select(.status.runtimeStatus == "error" or .status.updateStatus == "error") | "\(.metadata.name): runtime=\(.status.runtimeStatus) update=\(.status.updateStatus)\n  reason: \((.status.buildHistory[0].error // "(no buildHistory error; check tilt logs)") | gsub("\n"; " ") | .[0:240])"'

# 2. In-progress and pending — informational; an in-progress build may flip to error any moment
tilt get uiresources -o json | jq -r '.items[] | select(.status.updateStatus == "in_progress" or .status.updateStatus == "pending" or .status.runtimeStatus == "pending") | "\(.metadata.name): runtime=\(.status.runtimeStatus) update=\(.status.updateStatus)"'

# 3. Docker-compose container health — MISSED by the error filter above.
#    An `Up (unhealthy)` compose container keeps runtimeStatus=ok/update=ok, so
#    queries 1-2 never flag it; the red UI badge comes from healthStatus here.
tilt get uiresources -o json | jq -r '.items[] | select(.status.composeResourceInfo.healthStatus == "unhealthy") | "\(.metadata.name): compose healthStatus=unhealthy (HEALTHCHECK failing — service may still be up)"'

# 4. Quick status overview
tilt get uiresources -o json | jq '[.items[].status.updateStatus] | group_by(.) | map({status: .[0], count: length})'

如果检查时某项资源处于 in_progress 状态,请重新轮询,然后再判断它是否健康——它可能直接转为 error,并在 buildHistory[0].error 中填入错误信息。updateStatus 字段只反映当前构建尝试;即使 updateStatus 为 none 或 not_applicable,最近一次错误也始终位于 buildHistory[0].error 中。

Docker-compose 资源存在盲点。 它们的 runtimeStatus/updateStatus 只反映构建/启动状态,不反映容器的 docker HEALTHCHECK——因此,探针失败的容器(docker ps → Up (unhealthy))会显示为 runtimeStatus=ok,从而绕过查询 1–2,但 Tilt UI 仍会将其标记为红色。权威信号是 .status.composeResourceInfo.healthStatus(healthy/unhealthy/服务未配置健康检查时为空),查询 3 可以捕获这些资源。此类资源的 k8sResourceInfo 也为 null(spec.type == "docker-compose");要查明探针失败的原因,请改用 docker:docker inspect <compose-project>-<svc> --format '{{json .State.Health}}' 可以读取探针最近一次的退出代码和输出。一个常见原因是健康检查脚本调用了镜像中未包含的 CLI(例如在精简镜像中移除了 curl/grpcurl)——服务本身正常,出问题的是探针。

非默认端口

Tilt 使用非默认端口运行时,添加 --port:

tilt get uiresources --port 37035
tilt logs <resource> --port 37035

资源状态

# All resources with status
tilt get uiresources -o json | jq '.items[] | {name: .metadata.name, runtime: .status.runtimeStatus, update: .status.updateStatus}'

# Single resource detail
tilt get uiresource/<name> -o json

# Wait for ready
tilt wait --for=condition=Ready uiresource/<name> --timeout=120s

状态值:

  • RuntimeStatus:ok、error、pending、none、not_applicable
  • UpdateStatus:ok、error、pending、in_progress、none、not_applicable

日志

tilt logs <resource>
tilt logs <resource> --since 5m
tilt logs <resource> --tail 100
tilt logs --json                    # JSON Lines output

触发和生命周期

tilt trigger <resource>             # Force update
tilt up                             # Start
tilt down                           # Stop and clean up

运行 tilt up

遵循 zmx 技能的模式——检查是否存在已有会话,根据 git 根目录推导名称,并使用 zmx run(而非 attach):

PROJECT=$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" || basename "$PWD")
SESSION="${PROJECT}-tilt"

if zmx list --short 2>/dev/null | grep -q "^${SESSION}$"; then
  echo "Tilt session already exists: $SESSION"
else
  zmx run "$SESSION" 'tilt up'
  echo "Started tilt in zmx session: $SESSION"
fi

重要:代码变更时切勿重启

Tilt 会自动实时重新加载。对于以下情况,切勿建议重启 tilt up:

  • Tiltfile 编辑
  • 源代码变更
  • Kubernetes 清单更新

仅在以下情况重启:Tilt 版本升级、端口/主机变更、崩溃、集群上下文切换。

参考资料

评论

支持 Markdown