我有这个 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_NAME
和REGION
适用于您的任何价值观。
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(使用前将#替换为@)