Gcloud 运行 - 查找最新版本的名称

Gcloud Run - Find latest revision's name

我正在尝试查找 gcloud 运行 服务的最新版本的名称,以便我可以在 运行 连接 Jenkins 管道时更改其分配的流量。我已经尝试使用 gcloud run revisions list--limit--sort-by--format 标志,但我没有得到我期望的结果。当仅限于一个结果时,将出现倒数第二个修订版而不是最新修订版。我做错了什么吗?

以下是我 运行 的 gcloud 命令及其输出。

>gcloud run revisions list --service service-foo --platform managed --region europe-west4 --limit 2 --sort-by ~creationTimestamp --format="value(name,creationTimestamp)"
service-foo-00302-luq     2021-08-27T11:13:39.883161Z
service-foo-00300-san     2021-08-26T15:45:33.351646Z

>gcloud run revisions list --service service-foo --platform managed --region europe-west4 --limit 1 --sort-by ~creationTimestamp --format="value(name,creationTimestamp)"
service-foo-00300-san     2021-08-26T15:45:33.351646Z

>gcloud run revisions list --service service-foo --platform managed --region europe-west4 --limit 1 --sort-by creationTimestamp --format="value(name,creationTimestamp)"
service-foo-00300-san     2021-08-26T15:45:33.351646Z

目前 似乎是 revisions 子组的 list 命令同时使用 Google 云平台 (GCP) 的错误SDK (gcloud):

gcloud run revisions list \
--format="value(metadata.name)" \
--platform=managed \
--region=$CLOUD_RUN_SERVICE_REGION \
--service=$CLOUD_RUN_SERVICE_NAME \
--sort-by="~metadata.creationTimestamp"

#=>

$CLOUD_RUN_LATEST_REVISION
$CLOUD_RUN_PREVIOUS_REVISION
. . .

当使用 --limit 标志时:

gcloud run revisions list \
--format="value(metadata.name)" \
--limit=1 \
--platform=managed \
--region=$CLOUD_RUN_SERVICE_REGION \
--service=$CLOUD_RUN_SERVICE_NAME \
--sort-by="~metadata.creationTimestamp"

#=>

$CLOUD_RUN_PREVIOUS_REVISION

和带有 limit 查询参数的 GCP REST API:

curl \
--location \
--request GET "https://$CLOUD_RUN_SERVICE_REGION-run.googleapis.com/apis/serving.knative.dev/v1/namespaces/$GCP_PROJECT_NAME/revisions?limit=1" \
--header "Authorization: Bearer $(gcloud auth print-access-token)"

#=>

{
  . . .
  "items": [
    {
      . . .
      "metadata": {
        "name": "$CLOUD_RUN_PREVIOUS_REVISION",
        . . .
      },
      . . .
    },
    . . .
  ]
}

使用最新的 gcloud 版本:

gcloud version

#=>

Google Cloud SDK 357.0.0
. . .

但是,一种获取最新createdready修订的方法使用 services 子组而不是 revisions 子组的 Cloud 运行 服务:

gcloud run services describe $GCLOUD_RUN_SERVICE_NAME \
--format="value(status.latestCreatedRevisionName)" \
--platform=managed \
--region=$CLOUD_RUN_SERVICE_REGION

#=>

$CLOUD_RUN_LATEST_REVISION

和:

gcloud run services describe $GCLOUD_RUN_SERVICE_NAME \
--format="value(status.latestReadyRevisionName)" \
--platform=managed \
--region=$CLOUD_RUN_SERVICE_REGION

#=>

$CLOUD_RUN_LATEST_REVISION

您可以阅读有关 services 子组 heredescribe 命令的更多信息。