48 lines
1.2 KiB
Groovy
48 lines
1.2 KiB
Groovy
#!groovy
|
|
|
|
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}
|
|
"""
|
|
}
|
|
}
|
|
}
|
|
} |