kkkkk70

79 阅读1分钟

好的,根据您的要求,我将帮助您将脚本放入Jenkins Pipeline的withCredentials块中执行。请注意,您需要确保在Jenkins中配置了正确的凭证来执行脚本。以下是一个示例的Jenkins Pipeline脚本,其中包含了withCredentials块和执行脚本的步骤:

pipeline {
    agent any
    
    stages {
        stage('Execute Script') {
            steps {
                withCredentials([
                    string(credentialsId: 'your-credentials-id', variable: 'GCP_CREDENTIALS')
                ]) {
                    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
                        '''
                    }
                }
            }
        }
    }
}

在上面的示例中,我们将withCredentials块包裹在steps块内,并在其中定义了凭证的配置。请替换credentialsId为您在Jenkins中配置的实际凭证ID,并将脚本的其余部分插入到sh步骤中,确保正确缩进。这样,您就可以在Jenkins Pipeline中使用凭证来执行脚本了。