updates to 1.18.1 and uses common functions

This commit is contained in:
Hyatt 2022-01-19 13:58:12 -06:00
parent 4c01b95b0b
commit 8bd3f00e70
Signed by: nhyatt
GPG Key ID: C50D0BBB5BC40BEA

View File

@ -1,69 +1,51 @@
// Node Label
def nodeLabel = "${UUID.randomUUID().toString()}"
// Kaniko Image
def repository = "registry.c.test-chamber-13.lan" def repository = "registry.c.test-chamber-13.lan"
def kanikoImage = "${repository}/library/kaniko:latest"
def repositoryCreds = "harbor-repository-creds" def repositoryCreds = "harbor-repository-creds"
// Container Variables
def buildImage = "${repository}/library/alpine"
def buildImageTag = "latest"
// PaperMC URL
def paperVersion = "1.18.1" def paperVersion = "1.18.1"
// Minecraft Configuration
def memoryMin = "1g" def memoryMin = "1g"
def memoryMax = "48g" def memoryMax = "48g"
podTemplate( def dockerFile = """FROM registry.c.test-chamber-13.lan/library/alpine:latest as builder
name: "pipelineContainer",
label: nodeLabel,
yaml: """---
apiVersion: v1
kind: Pod
metadata:
name: kaniko
spec:
containers:
- name: kaniko
image: ${kanikoImage}
imagePullPolicy: Always
tty: true
command:
- /busybox/cat
- name: alpine
image: ${repository}/library/alpine:latest
imagePullPolicy: Always
tty: true
command:
- /bin/sh
""") {
node (nodeLabel) {
// Set working directory
def workspace = pwd()
stage ("Prepare Kaniko") { ARG paperDownload
container ("kaniko") {
withCredentials([usernameColonPassword( RUN addgroup -S -g 1000 minecraft && \\
credentialsId: repositoryCreds, adduser --disabled-password -G minecraft --gecos "application account" --home "/minecraft" --shell "/sbin/nologin" --uid 1000 minecraft && \\
variable: "dCreds", apk add --no-cache curl && \\
)]) { mkdir /minecraft/data && \\
def dockerJSON = """{ mkdir /minecraft/html && \\
"auths": { curl --location --fail --silent \${paperDownload} -o /minecraft/paper-mc.jar
"${repository}": {
"auth": "${dcreds.bytes.encodeBase64().toString()}" FROM gcr.io/distroless/java17:latest
}
} LABEL org.opencontainers.image.authors="The_Spider <spider@smoothnet.org>"
}"""
sh """ COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
set +x COPY --from=builder /etc/passwd /etc/group /etc/
echo '${dockerJSON}' > /kaniko/.docker/config.json COPY --from=builder --chown=minecraft:minecraft /minecraft/ /minecraft/
"""
} USER minecraft
}
} WORKDIR /minecraft/data
ENTRYPOINT ["/usr/bin/java", "-Xms${memoryMin}", "-Xmx${memoryMax}", "-jar"]
CMD ["../paper-mc.jar"]
"""
def label = "kubernetes-${UUID.randomUUID().toString()}"
def templateName = "pipeline-worker"
podTemplate(
label: label,
name: templateName,
yaml: functions.podYaml(
repo: repository,
templateName: templateName,
kaniko: true,
alpine: true
)
) {
node (nodeLabel) {
def workspace = pwd()
stage ("Get Paper-MC Version") { stage ("Get Paper-MC Version") {
container ("alpine") { container ("alpine") {
@ -79,50 +61,14 @@ spec:
} }
} }
stage ("Create Dockerfile") { functions.buildContainer(
// Set dockerfile repository: repository,
def dockerFile = """ imageDest: "${repository}/library/the-spider:latest",
FROM ${buildImage}:${buildImageTag} as builder dockerFile: dockerFile,
repoCreds: repositoryCreds,
ARG paperDownload [
"paperDownload=${paperDownload}"
RUN addgroup -S -g 1000 minecraft && \\ ]
adduser --disabled-password -G minecraft --gecos "application account" --home "/minecraft" --shell "/sbin/nologin" --uid 1000 minecraft && \\ )
apk add --no-cache curl && \\
mkdir /minecraft/data && \\
mkdir /minecraft/html && \\
curl --location --fail --silent \${paperDownload} -o /minecraft/paper-mc.jar
FROM gcr.io/distroless/java17:latest
MAINTAINER The_Spider <spider@smoothnet.org>
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
COPY --from=builder /etc/passwd /etc/group /etc/
COPY --from=builder --chown=minecraft:minecraft /minecraft/ /minecraft/
USER minecraft
WORKDIR /minecraft/data
ENTRYPOINT ["/usr/bin/java", "-Xms${memoryMin}", "-Xmx${memoryMax}", "-jar"]
CMD ["../paper-mc.jar"]
"""
writeFile(file: workspace + '/Dockerfile', text: dockerFile)
}
stage ("Build & Push") {
container ("kaniko") {
sh """
/kaniko/executor \\
--cleanup \\
--context "${workspace}" \\
-f "${workspace}/Dockerfile" \\
--destination "${repository}/library/minecraft:latest" \\
--build-arg "paperDownload=${paperDownload}" \\
--single-snapshot
"""
}
}
} }
} }