Gcloud Run 查询服务最新revision返回旧版本该如何解决?
问题原因
这个异常是gcloud工具的服务端默认分页逻辑和客户端排序的执行顺序冲突导致的:
gcloud run revisions list默认开启服务端分页,首次接口请求只会返回最早创建的少量revision数据--sort-by参数属于客户端排序逻辑,只会对已经拉取到本地的分页数据做排序,不会触发服务端全量排序后再返回- 当你指定
--limit 1时,gcloud只会拉取第一页的1条数据(也就是最早创建的revision),后续排序操作仅针对这1条数据生效,最终返回的自然是旧版本 - 你执行
--limit 2时,拉取的分页刚好包含了最新的两条revision,所以排序后可以正常显示最新版本
解决方案
方法1:关闭分页后再查询
在原命令中添加--no-paging参数,强制gcloud全量拉取该服务的所有revision,再执行排序和limit操作,即可正常返回最新revision:
gcloud run revisions list --service service-foo --platform managed --region europe-west4 --no-paging --limit 1 --sort-by ~creationTimestamp --format="value(name,creationTimestamp)"
方法2:直接查询服务元数据(更适合自动化场景)
不需要遍历所有revision,直接读取Cloud Run服务元数据中记录的最新创建revision名称,执行效率更高,也不会受分页、排序逻辑影响,更适合Jenkins流水线使用:
gcloud run services describe service-foo --platform managed --region europe-west4 --format="value(status.latestCreatedRevisionName)"
内容的提问来源于stack exchange,提问作者Luis Costa
相关产品推荐
相关产品推荐

