From 600701364a8eb1b2fd2a60b81d971d0c390ca83d Mon Sep 17 00:00:00 2001 From: Sheogorath <sheogorath@shivering-isles.com> Date: Sat, 28 Oct 2023 15:05:01 +0200 Subject: [PATCH] feat(cowsay): Add distroless cowsay image --- images/.utils/gitlab-ci.yaml | 1 + images/cowsay/.release | 1 + images/cowsay/Earthfile | 65 ++++++++++++++++++++++++++++++++++++ images/cowsay/static.patch | 19 +++++++++++ images/mirror/Earthfile | 3 ++ 5 files changed, 89 insertions(+) create mode 100644 images/cowsay/.release create mode 100644 images/cowsay/Earthfile create mode 100644 images/cowsay/static.patch diff --git a/images/.utils/gitlab-ci.yaml b/images/.utils/gitlab-ci.yaml index a0d2cfd48..31f039ea4 100644 --- a/images/.utils/gitlab-ci.yaml +++ b/images/.utils/gitlab-ci.yaml @@ -14,6 +14,7 @@ container-build: - query-exposer - findmydevice-server - opentf + - cowsay script: - cd images/${IMAGE} - | diff --git a/images/cowsay/.release b/images/cowsay/.release new file mode 100644 index 000000000..fb32648f8 --- /dev/null +++ b/images/cowsay/.release @@ -0,0 +1 @@ +release=3.7.0 \ No newline at end of file diff --git a/images/cowsay/Earthfile b/images/cowsay/Earthfile new file mode 100644 index 000000000..c6035ecc6 --- /dev/null +++ b/images/cowsay/Earthfile @@ -0,0 +1,65 @@ +VERSION 0.7 + +build-base: + FROM docker.io/library/debian:12.2 + + RUN apt-get update + RUN apt-get install -y \ + build-essential \ + perl-base \ + perl-tk \ + libperl-dev \ + libpar-perl + RUN cpan PAR::Packer + SAVE ARTIFACT /lib/x86_64-linux-gnu/libcrypt.so.1 ./lib/libcrypt.so.1 + SAVE ARTIFACT /lib/x86_64-linux-gnu/libz.so.1 ./lib/libz.so.1 + +distroless-perl: + FROM ../mirror+distroless-base + WORKDIR /lib/x86_64-linux-gnu + COPY +build-base/lib/libcrypt.so.1 ./libcrypt.so.1 + COPY +build-base/lib/libz.so.1 ./libz.so.1 + WORKDIR / + + +src: + FROM +build-base + # renovate: datasource=github-releases depName=cowsay-org/cowsay + ARG COWSAY_VERSION=v3.7.0 + GIT CLONE --branch ${COWSAY_VERSION} https://github.com/cowsay-org/cowsay.git ./cowsay + #RUN git apply static.patch + COPY ./static.patch static.patch + RUN patch -u ./cowsay/cowsay -i static.patch + SAVE ARTIFACT ./cowsay ./cowsay + +build: + FROM +build-base + COPY +src/cowsay /src + WORKDIR /src + RUN make install + WORKDIR / + RUN pp -x --xargs="Building!" -a "/usr/local/share/cowsay/cows;script/share/cows" --output=cowsay.bin "/usr/local/bin/cowsay" + RUN ./cowsay.bin "Great Success!" + SAVE ARTIFACT /cowsay.bin ./cowsay + +container-internal: + FROM +distroless-perl + COPY +build/cowsay /cowsay + + WORKDIR /workdir + ENTRYPOINT [ "/cowsay" ] + +container: + FROM ../mirror+golang + ARG registry=quay.io/shivering-isles/cowsay + COPY .release ./ + ARG tag=$(awk -F'=' '$1 == "release" {print $2}' .release) + ARG latest=false + IF [ $latest = "true" ] + FROM +container-internal --branch=v$(awk -F'=' '$1 == "release" {print $2}' .release) + SAVE IMAGE --push ${registry}:latest + ELSE + FROM +container-internal --branch=v$(awk -F'=' '$1 == "release" {print $2}' .release) + LABEL "quay.expires-after"="12w" + END + SAVE IMAGE --push ${registry}:${tag} \ No newline at end of file diff --git a/images/cowsay/static.patch b/images/cowsay/static.patch new file mode 100644 index 000000000..6ba98382f --- /dev/null +++ b/images/cowsay/static.patch @@ -0,0 +1,19 @@ +diff --git a/cowsay b/cowsay +index 3f75c5c..2c7aeaa 100755 +--- a/cowsay ++++ b/cowsay +@@ -87,6 +87,13 @@ sub pick_cowpath { + $prefix_dir = dirname($parent_dir); + $share_cowsay = "$prefix_dir/share/cowsay"; + $real_prefix_dir = $prefix_dir; ++ } elsif (defined $ENV{PAR_TEMP}) { ++ # We're running as static compiled cowsay using pp ++ $prefix_dir = "$ENV{PAR_TEMP}/inc/$parent_dir"; ++ $share_cowsay = "$prefix_dir/share"; ++ # Default to default installation location, so in-repo cowsay can still see the ++ # system cowpath.d directory. ++ $real_prefix_dir = "/usr/local"; + } else { + # We're running from the source repo + $prefix_dir = $parent_dir; + diff --git a/images/mirror/Earthfile b/images/mirror/Earthfile index b6e2eb162..b126b7870 100644 --- a/images/mirror/Earthfile +++ b/images/mirror/Earthfile @@ -7,6 +7,9 @@ MIRROR: DO ../.utils/+LABEL --image=mirror --version=main SAVE IMAGE --cache-hint +distroless-base: + DO +MIRROR --image=gcr.io/distroless/base-debian12:nonroot@sha256:5a779e9c2635dbea68ae7988f398f95686ccde186cd2abf51207e41ed2ec51f4 + distroless-static-debug: DO +MIRROR --image=gcr.io/distroless/static:debug-nonroot@sha256:cdb2034c38b2f2bd0a99f08191a44831a04220c81aab97b2397d2ecf1082db5f -- GitLab