#!groovy def deletePod( String kubeAuth, String kubeURL, String namespace, String selector ){ def label = "kubernetes-${UUID.randomUUID().toString()}" def ws = pwd() podTemplate( label: label, name: "pipeline-worker", yaml: """ --- apiVersion: v1 kind: Pod metadata: name: pipeline-worker spec: containers: - name: alpine imagePullPolicy: Always image: ${repository}/library/alpine:latest tty: true command: - /busybox/sh """, ){ node(label) { container("alpine") { sh """ apk add --no-cache curl curl -L --silent https://storage.googleapis.com/kubernetes-release/release/\$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl -o /usr/local/bin/kubectl chmod +x /usr/local/bin/kubectl """ withKubeConfig([ credentialsId: kubeAuth, serverUrl: kubeURL, namespace: namespace, ]) { sh "for i in \$(kubectl get pods --selector ${selector} -o name); do kubectl delete \${i}; done" } } } } } def buildContainer(String repository, String imageDest, String dockerFile, String repoCreds) { def label = "kaniko-${UUID.randomUUID().toString()}" def ws = pwd() podTemplate( label: label, name: "pipeline-worker", yaml: """ --- apiVersion: v1 kind: Pod metadata: name: pipeline-worker spec: containers: - name: kaniko imagePullPolicy: Always image: ${repository}/library/kaniko:latest tty: true command: - /busybox/sh """, ){ node(label) { container("kaniko") { writeFile(file: ws + "/Dockerfile", text: DF) withCredentials([usernameColonPassword( credentialsId: repoCreds, variable: "dCreds", )]) { sh "set +x; printf '{\"auths\":{\"%s\":{\"auth\": \"%s\"}}}' \"${repository}\" \"${dcreds.bytes.encodeBase64().toString()}\" > /kaniko/.docker/config.json" } sh """ /kaniko/executor \\ --context "${ws}" \\ -f "${ws}/Dockerfile" \\ --destination "${repository}/${imageDest} """ } } } }