198 lines
7.7 KiB
Groovy
198 lines
7.7 KiB
Groovy
#!groovy
|
|
|
|
def repository = "registry.c.test-chamber-13.lan"
|
|
def repositoryCreds = "harbor-repository-creds"
|
|
|
|
def workspace
|
|
def dockerFile
|
|
|
|
def AlpineGlibcBaseURL = "https://nexus.c.test-chamber-13.lan/repository/github-releases/sgerrand/alpine-pkg-glibc/releases/download"
|
|
def AlpineGlibcPackageVersion
|
|
def AlpineGlibcBasePackageFilename
|
|
def AlpineGlibcBinPackageFilename
|
|
def AlpineGlibcI18nPackageFilename
|
|
|
|
def staticVersion = "2.34-r0"
|
|
def GlibcLanguage = "C.UTF-8"
|
|
def TimeZone = "America/Chicago"
|
|
|
|
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()
|
|
container ('alpine') {
|
|
sh """
|
|
if [ ! -f "/usr/bin/curl" ] || [ ! -x "/usr/bin/curl" ]; then
|
|
apk add --no-cache curl
|
|
fi
|
|
if [ ! -f "/usr/bin/jq" ] || [ ! -x "/usr/bin/jq" ]; then
|
|
apk add --no-cache jq
|
|
fi
|
|
"""
|
|
|
|
AlpineGlibcPackageVersion = sh (
|
|
script: "curl --silent --location --fail \"https://api.github.com/repos/sgerrand/alpine-pkg-glibc/releases\" | jq -r .[0].tag_name",
|
|
returnStdout: true
|
|
).trim()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
stage ('Build & Push (latest)') {
|
|
steps {
|
|
container ('kaniko') {
|
|
script {
|
|
AlpineGlibcBasePackageFilename = "glibc-${AlpineGlibcPackageVersion}.apk"
|
|
AlpineGlibcBinPackageFilename = "glibc-bin-${AlpineGlibcPackageVersion}.apk"
|
|
AlpineGlibcI18nPackageFilename = "glibc-i18n-${AlpineGlibcPackageVersion}.apk"
|
|
|
|
dockerFile = """
|
|
FROM registry.c.test-chamber-13.lan/library/alpine:latest
|
|
|
|
LABEL org.opencontainers.image.authors="The_Spider <spider@smoothnet.org>"
|
|
LABEL org.opencontainers.image.title="alpine-glibc"
|
|
|
|
ARG TZ
|
|
ARG LANG
|
|
|
|
RUN apk add --update --no-cache --virtual=.build-dependencies \\
|
|
curl \\
|
|
ca-certificates && \\
|
|
printf '%s\\n' \\
|
|
"-----BEGIN PUBLIC KEY-----" \\
|
|
"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApZ2u1KJKUu/fW4A25y9m" \\
|
|
"y70AGEa/J3Wi5ibNVGNn1gT1r0VfgeWd0pUybS4UmcHdiNzxJPgoWQhV2SSW1JYu" \\
|
|
"tOqKZF5QSN6X937PTUpNBjUvLtTQ1ve1fp39uf/lEXPpFpOPL88LKnDBgbh7wkCp" \\
|
|
"m2KzLVGChf83MS0ShL6G9EQIAUxLm99VpgRjwqTQ/KfzGtpke1wqws4au0Ab4qPY" \\
|
|
"KXvMLSPLUp7cfulWvhmZSegr5AdhNw5KNizPqCJT8ZrGvgHypXyiFvvAH5YRtSsc" \\
|
|
"Zvo9GI2e2MaZyo9/lvb+LbLEJZKEQckqRj4P26gmASrZEPStwc+yqy1ShHLA0j6m" \\
|
|
"1QIDAQAB" \\
|
|
"-----END PUBLIC KEY-----" > "/etc/apk/keys/sgerrand.rsa.pub" && \\
|
|
curl -sSLO "${AlpineGlibcBaseURL}/${AlpineGlibcPackageVersion}/${AlpineGlibcBasePackageFilename}" && \\
|
|
curl -sSLO "${AlpineGlibcBaseURL}/${AlpineGlibcPackageVersion}/${AlpineGlibcBinPackageFilename}" && \\
|
|
curl -sSLO "${AlpineGlibcBaseURL}/${AlpineGlibcPackageVersion}/${AlpineGlibcI18nPackageFilename}" && \\
|
|
apk add --no-cache --force-overwrite \\
|
|
"${AlpineGlibcBasePackageFilename}" \\
|
|
"${AlpineGlibcBinPackageFilename}" \\
|
|
"${AlpineGlibcI18nPackageFilename}" && \\
|
|
rm -v "/etc/apk/keys/sgerrand.rsa.pub" && \\
|
|
(/usr/glibc-compat/bin/localedef --force --inputfile POSIX --charmap UTF-8 "\${LANG}" || true) && \\
|
|
printf '%s\\n' \\
|
|
"export LANG=\${LANG}" >> /etc/profile.d/locale.sh && \\
|
|
apk del glibc-i18n && \\
|
|
apk del .build-dependencies && \\
|
|
rm -v \\
|
|
${AlpineGlibcBasePackageFilename} \\
|
|
${AlpineGlibcBinPackageFilename} \\
|
|
${AlpineGlibcI18nPackageFilename}
|
|
"""
|
|
|
|
declarativeFunctions.buildContainerMultipleDestinations(
|
|
dockerFile: dockerFile,
|
|
repositoryAccess: [
|
|
[
|
|
repository: repository,
|
|
credentials: repositoryCreds
|
|
],
|
|
],
|
|
destination: [
|
|
"${repository}/library/alpine-glibc:latest",
|
|
],
|
|
[
|
|
"LANG=${GlibcLanguage}",
|
|
"TZ=${TimeZone}"
|
|
]
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
stage ('Build & Push (Static Version)') {
|
|
steps {
|
|
container ('kaniko') {
|
|
script {
|
|
AlpineGlibcBasePackageFilename = "glibc-${staticVersion}.apk"
|
|
AlpineGlibcBinPackageFilename = "glibc-bin-${staticVersion}.apk"
|
|
AlpineGlibcI18nPackageFilename = "glibc-i18n-${staticVersion}.apk"
|
|
|
|
dockerFile = """
|
|
FROM registry.c.test-chamber-13.lan/library/alpine:latest
|
|
|
|
LABEL org.opencontainers.image.authors="The_Spider <spider@smoothnet.org>"
|
|
LABEL org.opencontainers.image.title="alpine-glibc"
|
|
|
|
ARG TZ
|
|
ARG LANG
|
|
|
|
RUN apk add --update --no-cache --virtual=.build-dependencies \\
|
|
curl \\
|
|
ca-certificates && \\
|
|
printf '%s\\n' \\
|
|
"-----BEGIN PUBLIC KEY-----" \\
|
|
"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApZ2u1KJKUu/fW4A25y9m" \\
|
|
"y70AGEa/J3Wi5ibNVGNn1gT1r0VfgeWd0pUybS4UmcHdiNzxJPgoWQhV2SSW1JYu" \\
|
|
"tOqKZF5QSN6X937PTUpNBjUvLtTQ1ve1fp39uf/lEXPpFpOPL88LKnDBgbh7wkCp" \\
|
|
"m2KzLVGChf83MS0ShL6G9EQIAUxLm99VpgRjwqTQ/KfzGtpke1wqws4au0Ab4qPY" \\
|
|
"KXvMLSPLUp7cfulWvhmZSegr5AdhNw5KNizPqCJT8ZrGvgHypXyiFvvAH5YRtSsc" \\
|
|
"Zvo9GI2e2MaZyo9/lvb+LbLEJZKEQckqRj4P26gmASrZEPStwc+yqy1ShHLA0j6m" \\
|
|
"1QIDAQAB" \\
|
|
"-----END PUBLIC KEY-----" > "/etc/apk/keys/sgerrand.rsa.pub" && \\
|
|
curl -sSLO "${AlpineGlibcBaseURL}/${staticVersion}/${AlpineGlibcBasePackageFilename}" && \\
|
|
curl -sSLO "${AlpineGlibcBaseURL}/${staticVersion}/${AlpineGlibcBinPackageFilename}" && \\
|
|
curl -sSLO "${AlpineGlibcBaseURL}/${staticVersion}/${AlpineGlibcI18nPackageFilename}" && \\
|
|
apk add --no-cache --force-overwrite \\
|
|
"${AlpineGlibcBasePackageFilename}" \\
|
|
"${AlpineGlibcBinPackageFilename}" \\
|
|
"${AlpineGlibcI18nPackageFilename}" && \\
|
|
rm -v "/etc/apk/keys/sgerrand.rsa.pub" && \\
|
|
(/usr/glibc-compat/bin/localedef --force --inputfile POSIX --charmap UTF-8 "\${LANG}" || true) && \\
|
|
printf '%s\\n' \\
|
|
"export LANG=\${LANG}" >> /etc/profile.d/locale.sh && \\
|
|
apk del glibc-i18n && \\
|
|
apk del .build-dependencies && \\
|
|
rm -v \\
|
|
${AlpineGlibcBasePackageFilename} \\
|
|
${AlpineGlibcBinPackageFilename} \\
|
|
${AlpineGlibcI18nPackageFilename}
|
|
"""
|
|
|
|
declarativeFunctions.buildContainerMultipleDestinations(
|
|
dockerFile: dockerFile,
|
|
repositoryAccess: [
|
|
[
|
|
repository: repository,
|
|
credentials: repositoryCreds
|
|
],
|
|
],
|
|
destination: [
|
|
"${repository}/library/alpine-glibc:${staticVersion}",
|
|
],
|
|
[
|
|
"LANG=${GlibcLanguage}",
|
|
"TZ=${TimeZone}"
|
|
]
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|