You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins使用Active Choice插件拉取AWS ECR镜像标签按日期排序问题咨询

ECR镜像标签按日期排序的解决代码

你当前使用的listImages接口仅返回镜像ID信息,不含镜像推送时间元数据,因此无法实现按日期排序,改用describeImages接口拉取完整镜像属性后排序即可,修改后的完整代码如下:

import com.amazonaws.services.ecr.AmazonECR;
import com.amazonaws.services.ecr.model.DescribeImagesRequest;
import com.amazonaws.services.ecr.model.DescribeImagesResult;
import com.amazonaws.services.ecr.AmazonECRClientBuilder;
import com.amazonaws.regions.Regions;
import jenkins.model.*;

AmazonECR client = AmazonECRClientBuilder.standard().withRegion("eu-west-1").build();
DescribeImagesRequest request = new DescribeImagesRequest().withRepositoryName("super-hero-repo");
DescribeImagesResult res = client.describeImages(request);

// 构建标签与推送时间的映射,过滤无标签镜像
def tagTimeMap = [:]
res.getImageDetails().each { imageDetail ->
    def tags = imageDetail.getImageTags()
    if (tags) {
        tags.each { tag ->
            tagTimeMap[tag] = imageDetail.getImagePushedAt().getTime()
        }
    }
}

// 按推送时间倒序排列,最新标签排在最前,如需正序将闭包内的负号删除即可
def sortedTags = tagTimeMap.sort { -it.value }.keySet() as List

return sortedTags

原有Jenkins Active Choices插件配置无需调整:
示意图
参数说明:

  • "eu-west-1" 为ECR仓库所在区域,可替换为实际使用的区域
  • "super-hero-repo" 为目标ECR仓库名称,可替换为实际的仓库名

补充说明:如果仓库内镜像总量超过100个,需要通过返回结果中的nextToken循环拉取全量镜像数据,否则仅会返回前100个镜像的标签。

内容的提问来源于stack exchange,提问作者Dmitrii Kalashnikov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 06:51:04