kkkkk67

71 阅读1分钟

当将这段脚本放入Jenkins Pipeline的script步骤中时,你可以按照以下格式进行编写:

pipeline {
    agent any
    
    stages {
        stage('Execute Script') {
            steps {
                script {
                    def imageFamily = 'gce-image-type3-rhel7-parquetservice-vaultssh'
                    def keepingCopies = 3

                    sh '''
                        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脚本,其中包含一个阶段(stage)用于执行脚本。在脚本步骤中,我们使用了Groovy的sh命令来执行Shell脚本代码。将你的原始脚本粘贴到这个sh命令中,并确保缩进正确。