updates to declarative pipeline

This commit is contained in:
Hyatt 2022-03-31 07:03:20 -05:00
parent e6523afd24
commit b17f820236
Signed by: nhyatt
GPG Key ID: C50D0BBB5BC40BEA

View File

@ -1,11 +1,37 @@
#!groovy
def repository = "registry.c.test-chamber-13.lan" def repository = "registry.c.test-chamber-13.lan"
def repositoryCreds = "harbor-repository-creds" def repositoryCreds = "harbor-repository-creds"
def paperVersion = "1.18.1" def workspace
def memoryMin = "1g" def dockerFile
def memoryMax = "48g" def paperVersion
def memoryMin
def memoryMax
def dockerFile = """FROM registry.c.test-chamber-13.lan/library/alpine:latest as builder def label = "kubernetes-${UUID.randomUUID().toString()}"
def templateName = "pipeline-worker"
pipeline {
agent {
kubernetes {
yaml functions.podYaml(
repo: repository,
templateName: templateName,
kaniko: true,
alpine: true
)
}
}
stages {
stage ('Initalize Jenkins') {
steps {
script {
workspace = pwd()
paperVersion = "1.18.2"
memoryMin = "1g"
memoryMax = "48g"
dockerFile = """FROM registry.c.test-chamber-13.lan/library/alpine:latest as builder
ARG paperDownload ARG paperDownload
@ -31,44 +57,54 @@ WORKDIR /minecraft/data
ENTRYPOINT ["/usr/bin/java", "-Xms${memoryMin}", "-Xmx${memoryMax}", "-jar"] ENTRYPOINT ["/usr/bin/java", "-Xms${memoryMin}", "-Xmx${memoryMax}", "-jar"]
CMD ["../paper-mc.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 (label) {
def workspace = pwd()
stage ("Get Paper-MC Version") {
container ("alpine") {
sh "apk add --no-cache curl jq"
paperDownload = sh (
script: """
paperBuild=\$(curl --silent --location --fail https://nexus.c.test-chamber-13.lan/repository/paper-io/api/v2/projects/paper/versions/${paperVersion} | jq '.builds | max')
paperFile=\$(curl --silent --location --fail https://nexus.c.test-chamber-13.lan/repository/paper-io/api/v2/projects/paper/versions/${paperVersion}/builds/\${paperBuild} | jq '.downloads.application.name')
echo https://nexus.c.test-chamber-13.lan/repository/paper-io/api/v2/projects/paper/versions/${paperVersion}/builds/\${paperBuild}/downloads/\${paperFile}
""",
returnStdout: true
).trim()
} }
} }
functions.buildContainer( stage ("Get Paper-MC Version") {
repository: repository, steps {
imageDest: "${repository}/library/minecraft:latest", container ("alpine") {
dockerFile: dockerFile, script {
repoCreds: repositoryCreds, sh """
[ if [ ! -f "/usr/bin/curl" ] || [ ! -x "/usr/bin/curl" ]; then
"paperDownload=${paperDownload}" apk add --no-cache curl
] fi
) if [ ! -f "/usr/bin/jq" ] || [ ! -x "/usr/bin/jq" ]; then
apk add --no-cache jq
fi
"""
paperDownload = sh (
script: """
paperBuild=\$(curl --silent --location --fail https://nexus.c.test-chamber-13.lan/repository/paper-io/api/v2/projects/paper/versions/${paperVersion} | jq '.builds | max')
paperFile=\$(curl --silent --location --fail https://nexus.c.test-chamber-13.lan/repository/paper-io/api/v2/projects/paper/versions/${paperVersion}/builds/\${paperBuild} | jq '.downloads.application.name')
echo https://nexus.c.test-chamber-13.lan/repository/paper-io/api/v2/projects/paper/versions/${paperVersion}/builds/\${paperBuild}/downloads/\${paperFile}
""",
returnStdout: true
).trim()
}
}
}
}
stage ('Build & Push') {
steps {
container ('kaniko') {
script {
declarativeFunctions.buildContainerMultipleDestinations(
dockerFile: dockerFile,
repositoryAccess: [
[
repository: repository,
credentials: repositoryCreds
],
],
destination: [
"${repository}/library/minecraft:latest",
]
)
}
}
}
}
} }
} }