This repository has been archived on 2025-03-20. You can view files and clone it, but cannot push or open issues or pull requests.
build-containers/build-alpine-glibc.jenkins
2024-03-17 13:09:01 -05:00

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}"
]
)
}
}
}
}
}
}