列出要删除到詹金斯作业中的项目

2023-12-12

我有这个 jenkins 作业,用于将所有项目删除到 AWS ECR 存储库中:

pipeline {
    agent any
    environment {   
      AWS_ACCOUNT_ID="0000000021764"
      AWS_DEFAULT_REGION="us-east-1"
      IMAGE_REPO_NAME="testio"
      IMAGE_TAG="latest"
      REPOSITORY_URI = "0000000021764.dkr.ecr.us-east-1.amazonaws.com/testio:latest"
      REPOSITORY_NAME = "testio"
    }
    
  stages{    
    stage('Delete all image in repository') {
            steps {
                
                script{
                        docker.withRegistry('https://0000000021764.dkr.ecr.us-east-1.amazonaws.com') {
                         sh '''
                             aws ecr batch-delete-image --repository-name $REPOSITORY_NAME --image-ids "$(aws ecr list-images --repository-name $REPOSITORY_NAME --query 'imageIds[*]' --output json
                                )" || true
                         '''
                    }
                }

            }                
        }    
    }
    
}

是否可以有一个下拉列表,我可以从中选择要删除的项目?


你可以使用詹金斯输入步骤为了这。由于我没有 AWS 存储库,因此无法给出确切的解决方案,但以下是您可以执行此操作的方法。

pipeline {
    agent any
    environment {
      AWS_ACCOUNT_ID="0000000021764"
      AWS_DEFAULT_REGION="us-east-1"
      IMAGE_REPO_NAME="testio"
      IMAGE_TAG="latest"
      REPOSITORY_URI = "0000000021764.dkr.ecr.us-east-1.amazonaws.com/testio:latest"
      REPOSITORY_NAME = "testio"
    }

  stages{
    stage('Delete all image in repository') {
            steps {

                script{
                        INPUT_IMAGE_TO_DELETE = input message: 'Please Select Docker Image to delete', ok: 'Next',
                                                          parameters: [
                                                          choice(name: 'IMAGE_NAME', choices: getDockerImages(), description: 'Select Docker Image to delete')]
                        docker.withRegistry('https://0000000021764.dkr.ecr.us-east-1.amazonaws.com') {
                         sh """
                             aws ecr batch-delete-image --repository-name $REPOSITORY_NAME --image-ids \"$INPUT_IMAGE_TO_DELETE\" || true
                         """
                    }
                }

            }
        }
    }

}

def getDockerImages() {
  def images = []
  def output = sh(returnStdout: true, script: "aws ecr list-images --repository-name $REPOSITORY_NAME --query 'imageIds[*]'").trim()
  // Process the output to have a List of images
  println output
  return images
}

如果您想选择多个图像,请使用multiselect参数而不是选择参数。确保您更改了REPOSITORY_NAMEREGION适用于您的任何价值观。

Update

这是删除所选标签的完整工作示例。

pipeline {
    agent any

    stages {
        stage('Hello') {
            steps {
                echo 'Hello World'
                script {
                    REPOSITORY_NAME = 'ycr-repository'
                    REGION = 'us-east-1'
                    INPUT_IMAGE_TO_DELETE = input message: 'Please Select Docker Image to delete', ok: 'Next',
                                                          parameters: [
                                                          choice(name: 'IMAGE_NAME', choices: getDockerImages(REPOSITORY_NAME), description: 'Select Docker Image to delete')]
                                                    
                    
                    echo "Deleting the image: ${INPUT_IMAGE_TO_DELETE}" 
                    sh "aws ecr batch-delete-image --repository-name $REPOSITORY_NAME --image-ids imageTag=$INPUT_IMAGE_TO_DELETE --region $REGION"
                }
            }
        }
    }
}

def getDockerImages(REPOSITORY_NAME) {
    output = sh(returnStdout: true, script: "aws ecr list-images --repository-name $REPOSITORY_NAME --output json").trim()
    json = readJSON text: output
    println json
    return json.imageIds.imageTag
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

列出要删除到詹金斯作业中的项目 的相关文章

随机推荐