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

如何为删除AWS ECR镜像的Jenkins任务添加选择删除项的下拉列表?

给Jenkins ECR镜像删除任务添加下拉选择功能

完全可以实现,你可以通过Jenkins流水线的input步骤,动态拉取ECR仓库中的镜像列表生成下拉选项,让你选择要删除的具体镜像。以下是修改后的流水线代码:

pipeline {
    agent any
    environment {   
      AWS_ACCOUNT_ID="0000000021764"
      AWS_DEFAULT_REGION="us-east-1"
      REPOSITORY_NAME = "testio"
      ECR_REGISTRY = "${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com"
    }
    
  stages{    
    stage('获取镜像列表并选择要删除的项') {
      steps {
        script {
          // 拉取ECR仓库中所有镜像的ID(包含标签和镜像摘要)
          def imageIdsJson = sh(
            script: "aws ecr list-images --repository-name ${REPOSITORY_NAME} --query 'imageIds[*]' --output json",
            returnStdout: true
          ).trim()
          
          // 解析JSON,生成下拉选项:将镜像标签或摘要作为显示文本,保留完整imageId结构作为值
          def imageList = readJSON text: imageIdsJson
          def choices = imageList.collect { imageId ->
            def displayText = imageId.imageTag ? "Tag: ${imageId.imageTag}" : "Digest: ${imageId.imageDigest.split(':')[1].take(12)}"
            ["${displayText}": groovy.json.JsonOutput.toJson(imageId)]
          }.sum()
          
          // 弹出输入框让用户选择要删除的镜像(支持单选,需多选可改为multiChoice参数)
          selectedImages = input(
            id: 'imageSelection',
            message: '选择要删除的镜像:',
            parameters: [
              choice(
                name: 'TARGET_IMAGES',
                choices: choices.keySet().sort(),
                description: '选择需要删除的镜像项'
              )
            ]
          )
          
          // 将选中的选项转换回imageIds格式的JSON数组
          selectedImageIds = "[${choices[selectedImages]}]"
        }
      }
    }

    stage('删除选中的镜像') {
      steps {
        script{
          docker.withRegistry("https://${ECR_REGISTRY}") {
            sh """
              aws ecr batch-delete-image \
                --repository-name ${REPOSITORY_NAME} \
                --image-ids '${selectedImageIds}'
            """
          }
        }
      }                
    }    
  }
}

关键说明:

  • 动态生成选项:通过aws ecr list-images拉取仓库内所有镜像的ID信息,解析后生成易识别的显示文本(优先显示标签,无标签则显示镜像摘要的前12位)。
  • 用户选择交互:使用input步骤弹出下拉选择框,默认单选,若需要多选可将参数改为multiChoice。
  • 镜像删除:将用户选中的镜像ID转换为AWS CLI要求的JSON格式,执行batch-delete-image命令完成删除。

注意事项:

  • 确保运行Jenkins任务的节点已配置AWS权限(通过IAM角色、环境变量或凭证),能正常调用ECR API。
  • 如果仓库内镜像数量极多,下拉列表会过长,可考虑添加过滤逻辑(比如只显示近30天的镜像)或改用文本输入匹配标签。

内容的提问来源于stack exchange,提问作者Peter Penzov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 01:12:07