kkkkkk65

80 阅读1分钟

当您在Jenkins Pipeline的阶段中添加脚本时,可以使用以下代码来删除GCE Images:

stage('Delete GCE Images') {
    steps {
        sh '''
            #set the image family and no of copy to be kept
            imageFamily=gce-image-type3-rhel7-parquetservice-vaultssh
            keepingCopies=3
            
            rm -f /tmp/images_being_used.txt /tmp/images_being_used_sorted.txt
            
            gcloud compute instances list --format="value[](name,zone)" | while IFS=$'\t' read gceName zone ;
            do
                gcloud compute disks describe ${gceName} --zone ${zone} | grep sourceImage | grep -v sourceImageId | awk -F '/' '{print $NF}' >> /tmp/images_being_used.txt
            done
            
            gcloud compute images list --filter="family = ${imageFamily}" --format="value[](name)" > /tmp/all_images_created.txt
            
            cat /tmp/images_being_used.txt | sort -r | uniq > /tmp/images_being_used_sorted.txt
            cat /tmp/all_images_created.txt | sort -r | uniq > /tmp/all_images_created_sorted.txt
            
            for imageName in $(grep -Fxv -f /tmp/images_being_used_sorted.txt /tmp/all_images_created_sorted.txt | tail -n +${keepingCopies});
            do
                gcloud compute images delete ${imageName} --quiet
                echo "deleted compute image: ${imageName}"
            done
        '''
    }
}

请确保您在Jenkins Pipeline中的适当位置添加了这个阶段,并确保您已经安装并配置了适当的gcloud命令行工具。