kkkkk66

132 阅读1分钟

非常抱歉给出的代码中存在语法错误。在Shell脚本中,变量的赋值应该使用等号(=),而不是冒号(:)。以下是修正后的代码:

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 -r 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

            grep -Fxv -f /tmp/images_being_used_sorted.txt /tmp/all_images_created_sorted.txt | tail -n +$keepingCopies | while IFS= read -r imageName;
            do
                gcloud compute images delete "$imageName" --quiet
                echo "deleted compute image: $imageName"
            done
        '''
    }
}

请使用更新后的代码,并确保在Jenkins Pipeline中的适当位置添加该阶段。如有其他问题,请随时提问。