updates to 1.18.1 and uses common functions
This commit is contained in:
parent
4c01b95b0b
commit
8bd3f00e70
@ -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
|
|
||||||
"""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user