From adf2ceaaf42b4857bcf3b6ba56203a0aaa13ff65 Mon Sep 17 00:00:00 2001 From: TheSp1der Date: Wed, 30 Oct 2019 20:07:01 -0500 Subject: [PATCH] More pipeline development --- build-factario-container.jenkins | 145 +++++++++++++++++++++++-------- 1 file changed, 111 insertions(+), 34 deletions(-) diff --git a/build-factario-container.jenkins b/build-factario-container.jenkins index 70efab6..8f7ec66 100644 --- a/build-factario-container.jenkins +++ b/build-factario-container.jenkins @@ -1,38 +1,115 @@ +def ImageRepository = "registry.test-chamber-13.lan:5000" +def ImageName = "factorio" +def ImageTag = "latest" + +def AlpineGlibcBaseURL = "https://github.com/sgerrand/alpine-pkg-glibc/releases/download" +def AlpineGlibcPackageVersion = "2.30-r0" +def AlpineGlibcBasePackageFilename = "glibc-${AlpineGlibcPackageVersion}.apk" +def AlpineGlibcBinPackageFilename = "glibc-${AlpineGlibcPackageVersion}.apk" +def AlpineGlibcI18nPackageFilename = "glibc-${AlpineGlibcPackageVersion}.apk" + +def FactorioDownloadURL = "https://www.factorio.com/get-download/stable/headless/linux64" +def FactorioFileName = "/tmp/factorio.tar" + +def dockerFile = """ FROM alpine:3.10 +MAINTAINER The_Spider + RUN \ - ALPINE_GLIBC_BASE_URL="https://github.com/sgerrand/alpine-pkg-glibc/releases/download" && \ - ALPINE_GLIBC_PACKAGE_VERSION="2.30-r0" && \ - ALPINE_GLIBC_BASE_PACKAGE_FILENAME="glibc-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \ - ALPINE_GLIBC_BIN_PACKAGE_FILENAME="glibc-bin-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \ - ALPINE_GLIBC_I18N_PACKAGE_FILENAME="glibc-i18n-$ALPINE_GLIBC_PACKAGE_VERSION.apk" && \ - apk add --no-cache --virtual=.build-dependencies wget 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" && \ - wget \ - "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \ - "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \ - "$ALPINE_GLIBC_BASE_URL/$ALPINE_GLIBC_PACKAGE_VERSION/$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" && \ - apk add --no-cache \ - "$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \ - "$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \ - "$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" && \ - rm -v "/etc/apk/keys/sgerrand.rsa.pub" && \ - /usr/glibc-compat/bin/localedef --force --inputfile POSIX --charmap UTF-8 "$LANG" || true && \ - echo "export LANG=$LANG" > /etc/profile.d/locale.sh && \ - apk del glibc-i18n && \ - rm -v "/root/.wget-hsts" && \ - apk del .build-dependencies && \ - rm -v \ - "$ALPINE_GLIBC_BASE_PACKAGE_FILENAME" \ - "$ALPINE_GLIBC_BIN_PACKAGE_FILENAME" \ - "$ALPINE_GLIBC_I18N_PACKAGE_FILENAME" + apk add --update --no-cache \ + pwgen \ + su-exec \ + binutils \ + gettext \ + libintl \ + shadow && \ + 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 \ + "${AlpineGlibcBasePackageFilename}" \ + "${AlpineGlibcBinPackageFilename}" \ + "${AlpineGlibcI18nPackageFilename}" && \ + rm -v "/etc/apk/keys/sgerrand.rsa.pub" && \ + /usr/glibc-compat/bin/localedef --force --inputfile POSIX --charmap UTF-8 "$LANG" || true && \ + mkdir -p /opt /factorio && \ + curl -sSL "${FactorioDownloadURL}" -o ${FactorioFileName} && \ + tar -x -f ${FactorioFileName} --directory /opt && \ + apk del glibc-i18n && \ + apk del .build-dependencies && \ + rm -v \ + "${AlpineGlibcBasePackageFilename}" \ + "${AlpineGlibcBinPackageFilename}" \ + "${AlpineGlibcI18nPackageFilename}" \ + ${FactorioFileName} && \ + rm -v "/root/.wget-hsts" || true && \ + addgroup -g 1000 -S factorio && \ + adduser -u 1000 -G factorio -s /bin/sh -SDH factorio && \ + chown -R factorio:factorio /opt/factorio /factorio """ + +podTemplate( + containers: [ + containerTemplate( + name: "docker", + image: "docker:19.03", + command: "sleep", + args: "99d", + envVars: [ + envVar( + key: "DOCKER_HOST", + value: "tcp://localhost:2375" + ) + ] + ), + containerTemplate( + name: "docker-daemon", + image: "docker:19.03-dind", + command: "dockerd-entrypoint.sh", + args: "--insecure-registry registry.test-chamber-13.lan:5000", + privileged: true, + envVars: [ + envVar( + key: "DOCKER_TLS_CERTDIR", + value: "" + ) + ], + ) + ] +) { + node(POD_LABEL) { + container("docker") { + stage("Test DinD Daemon") { + sh """ + docker version + """ + } + stage("Write Dockerfile"){ + writeFile(file: "Dockerfile", text: dockerFile) + } + stage("Build Container"){ + sh """ + docker build --tag ${ImageRepository}/${ImageName}:${ImageTag} ./ + """ + } + stage("Push Container"){ + sh """ + docker push ${ImageRepository}/${ImageName}:${ImageTag} + """ + } + } + } +} \ No newline at end of file