Skip to content
Snippets Groups Projects
Verified Commit 7b9c6f14 authored by Sheogorath's avatar Sheogorath :european_castle:
Browse files

ci(koolbox): Rework koolbox to use pure earthly build

parent dda595fa
No related branches found
No related tags found
No related merge requests found
Pipeline #18479 passed
# kubectl CLI cache
FROM quay.io/fedora/fedora:38 as kubectl
# renovate: datasource=github-releases depName=kubernetes/kubernetes
ARG KUBECTL_VERSION=v1.28.2
ENV KUBECTL_VERSION=${KUBECTL_VERSION}
RUN curl -LO "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl" \
&& curl -LO "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl-convert" \
&& curl -LO "https://dl.k8s.io/${KUBECTL_VERSION}/bin/linux/amd64/kubectl.sha256" \
&& curl -LO "https://dl.k8s.io/${KUBECTL_VERSION}/bin/linux/amd64/kubectl-convert.sha256" \
&& echo "$(<kubectl.sha256) kubectl" | sha256sum --check \
&& echo "$(<kubectl-convert.sha256) kubectl-convert" | sha256sum --check \
&& install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl \
&& install -o root -g root -m 0755 kubectl-convert /usr/local/bin/kubectl-convert
# Release CLI cache
FROM registry.gitlab.com/gitlab-org/release-cli:latest@sha256:5a71acbadc47c1971100f5246b09f88ba09e84ebe7769e425475dce85245a2bf as release-cli
# Semantic Version Util - svu - https://github.com/caarlos0/svu
FROM ghcr.io/caarlos0/svu:v1.11.0 as svu
# git-chglog cache
FROM quay.io/git-chglog/git-chglog:0.15.4 as git-chglog
# Helm CLI cache
FROM quay.io/fedora/fedora:38 as helm
# renovate: datasource=github-releases depName=helm/helm
ARG HELM_VERSION=v3.13.0
ENV HELM_VERSION=${HELM_VERSION}
RUN curl -L "https://get.helm.sh/helm-${HELM_VERSION}-linux-amd64.tar.gz" | tar xvzf - linux-amd64/helm --strip-components=1 \
&& install -o root -g root -m 0755 helm /usr/local/bin/helm
# Flux CLI cache
FROM quay.io/fedora/fedora:38 as flux
# renovate: datasource=github-releases depName=fluxcd/flux2
ARG FLUX_VERSION=v2.1.1
ENV FLUX_VERSION=${FLUX_VERSION}
RUN curl -L https://github.com/fluxcd/flux2/releases/download/${FLUX_VERSION}/flux_$(sed 's/^v//g' <<<${FLUX_VERSION})_linux_amd64.tar.gz | tar xvzf - flux \
&& install -o root -g root -m 0755 flux /usr/local/bin/flux
# kustomize CLI cache
FROM quay.io/fedora/fedora:38 as kustomize
# renovate: datasource=github-releases depName=kubernetes-sigs/kustomize
ARG KUSTOMIZE_VERSION=4.1.3
ENV KUSTOMIZE_VERSION=${KUSTOMIZE_VERSION}
RUN curl -L https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2Fv${KUSTOMIZE_VERSION}/kustomize_v${KUSTOMIZE_VERSION}_linux_amd64.tar.gz | tar xvzf - kustomize \
&& install -o root -g root -m 0755 kustomize /usr/local/bin/kustomize
# kubeval CLI cache
FROM quay.io/fedora/fedora:38 as kubeval
# renovate: datasource=github-releases depName=instrumenta/kubeval
ARG KUBEVAL_VERSION=v0.16.1
ENV KUBEVAL_VERSION=${KUBEVAL_VERSION}
RUN curl -L https://github.com/instrumenta/kubeval/releases/download/${KUBEVAL_VERSION}/kubeval-linux-amd64.tar.gz | tar xvzf - kubeval \
&& install -o root -g root -m 0755 kubeval /usr/local/bin/kubeval
# SOPS CLI cache
FROM quay.io/fedora/fedora:38 as sops
# renovate: datasource=github-releases depName=mozilla/sops
ARG SOPS_VERSION=v3.8.1
ENV SOPS_VERSION=${SOPS_VERSION}
RUN curl -L https://github.com/getsops/sops/releases/download/${SOPS_VERSION}/sops-${SOPS_VERSION}.linux > ./sops \
&& install -o root -g root -m 0755 sops /usr/local/bin/sops
# yq CLI cache
FROM quay.io/fedora/fedora:38 as yq
# renovate: datasource=github-releases depName=mikefarah/yq
ARG YQ_VERSION=v4.35.1
ENV YQ_VERSION=${YQ_VERSION}
RUN curl -L https://github.com/mikefarah/yq/releases/download/${YQ_VERSION}/yq_linux_amd64 > ./yq \
&& install -o root -g root -m 0755 yq /usr/local/bin/yq
FROM quay.io/fedora/fedora:38 as helm-docs
# renovate: datasource=github-releases depName=norwoodj/helm-docs
ARG HELM_DOCS_VERSION=v1.11.0
ENV HELM_DOCS_VERSION=${HELM_DOCS_VERSION}
RUN curl -L https://github.com/norwoodj/helm-docs/releases/download/${HELM_DOCS_VERSION}/helm-docs_$(sed 's/^v//g' <<<${HELM_DOCS_VERSION})_Linux_x86_64.tar.gz | tar xvzf - helm-docs \
&& install -o root -g root -m 0755 helm-docs /usr/local/bin/helm-docs
# kubectl-krew CLI cache
FROM quay.io/fedora/fedora:38 as kubectl-krew
# renovate: datasource=github-releases depName=kubernetes-sigs/krew
ARG KREW_VERSION=v0.4.4
ENV KREW_VERSION=${KREW_VERSION}
RUN set -x; mkdir -p /opt/krew; cd "/opt/krew" && \
OS="$(uname | tr '[:upper:]' '[:lower:]')" && \
ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" && \
KREW="krew-${OS}_${ARCH}" && \
curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/download/${KREW_VERSION}/${KREW}.tar.gz" && \
tar zxvf "${KREW}.tar.gz" && \
mv "${KREW}" /opt/krew/krew
# kubectl-krew CLI cache
FROM quay.io/fedora/fedora:38 as mdbook
# renovate: datasource=github-releases depName=kubernetes-sigs/krew
ARG MDBOOK_VERSION=v0.4.18
ENV MDBOOK_VERSION=${MDBOOK_VERSION}
RUN curl -L "https://github.com/rust-lang/mdBook/releases/download/${MDBOOK_VERSION}/mdbook-${MDBOOK_VERSION}-x86_64-unknown-linux-gnu.tar.gz" | tar xvzf - mdbook \
&& install -o root -g root -m 0755 mdbook /usr/local/bin/mdbook
# Terraform CLI
FROM quay.io/shivering-isles/opentf:0.2.1 as opentf
# Actual start of container build
FROM quay.io/fedora/fedora:38
ARG MAINTAINER="unmaintained"
LABEL maintainer=$MAINTAINER
RUN dnf install -y \
bash \
ca-certificates \
openssh-clients \
openssl \
gnupg \
ansible \
make \
rsync \
curl \
git \
jq \
httpd-tools \
python3 \
libvirt-client \
vim \
bash-completion \
butane \
iputils \
procps-ng \
findutils \
&& dnf clean all
# Make koolbox self-aware
COPY koolbox.dummy /usr/local/bin/koolbox
# External tools
COPY --from=kubectl /usr/local/bin/kubectl /usr/local/bin/kubectl
COPY --from=kubectl /usr/local/bin/kubectl-convert /usr/local/bin/kubectl-convert
COPY --from=helm /usr/local/bin/helm /usr/local/bin/helm
COPY --from=helm-docs /usr/local/bin/helm-docs /usr/local/bin/helm-docs
COPY --from=flux /usr/local/bin/flux /usr/local/bin/flux
COPY --from=kustomize /usr/local/bin/kustomize /usr/local/bin/kustomize
COPY --from=kubeval /usr/local/bin/kubeval /usr/local/bin/kubeval
COPY --from=sops /usr/local/bin/sops /usr/local/bin/sops
COPY --from=yq /usr/local/bin/yq /usr/local/bin/yq
COPY --from=kubectl-krew /opt/krew/krew /usr/local/bin/kubectl-krew
COPY --from=mdbook /usr/local/bin/mdbook /usr/local/bin/mdbook
COPY --from=release-cli /usr/local/bin/release-cli /usr/local/bin/release-cli
COPY --from=git-chglog /usr/local/bin/git-chglog /usr/local/bin/git-chglog
COPY --from=svu /usr/bin/svu /usr/local/bin/svu
COPY --from=opentf /usr/local/bin/opentf /usr/local/bin/opentf
RUN true \
&& echo "command -v kubectl-krew >/dev/null && export PATH=\"${KREW_ROOT:-$HOME/.krew}/bin:$PATH\"" >> /root/.bashrc \
&& echo "command -v flux >/dev/null && . <(flux completion bash)" >> /root/.bashrc \
&& echo "command -v kustomize >/dev/null && . <(kustomize completion bash)" >> /root/.bashrc \
&& echo "command -v kubectl >/dev/null && . <(kubectl completion bash)" >> /root/.bashrc \
&& echo "command -v helm >/dev/null && . <(helm completion bash)" >> /root/.bashrc \
&& echo "command -v mdbook >/dev/null && . <(mdbook completions bash)" >> /root/.bashrc \
&& ln -s /usr/local/bin/opentf /usr/local/bin/terraform \
&& true
RUN true \
&& /usr/local/bin/kubectl-krew install cyclonus \
&& /usr/local/bin/kubectl-krew install outdated \
&& /usr/local/bin/kubectl-krew install access-matrix \
&& true
# Create workspace
RUN mkdir /workspace
WORKDIR /workspace
VERSION 0.7 VERSION 0.7
container-internal:
# Actual start of container build
FROM ../mirror+fedora
ARG MAINTAINER="unmaintained"
LABEL maintainer=$MAINTAINER
RUN dnf install -y \
bash \
ca-certificates \
openssh-clients \
openssl \
gnupg \
ansible \
make \
rsync \
curl \
git \
jq \
httpd-tools \
python3 \
libvirt-client \
vim \
bash-completion \
butane \
iputils \
procps-ng \
findutils \
&& dnf clean all
# Make koolbox self-aware
COPY koolbox.dummy /usr/local/bin/koolbox
# External tools
COPY ../tools+kubectl/kubectl /usr/local/bin/kubectl
COPY ../tools+kubectl/kubectl-convert /usr/local/bin/kubectl-convert
COPY ../tools+helm/helm /usr/local/bin/helm
COPY ../tools+helm-docs/helm-docs /usr/local/bin/helm-docs
COPY ../tools+flux/flux /usr/local/bin/flux
COPY ../tools+kustomize/kustomize /usr/local/bin/kustomize
COPY ../tools+kubeval/kubeval /usr/local/bin/kubeval
COPY ../tools+sops/sops /usr/local/bin/sops
COPY ../tools+yq/yq /usr/local/bin/yq
COPY ../tools+kubectl-krew/krew /usr/local/bin/kubectl-krew
COPY ../tools+mdbook/mdbook /usr/local/bin/mdbook
COPY ../tools+release-cli/release-cli /usr/local/bin/release-cli
COPY ../tools+git-chglog/git-chglog /usr/local/bin/git-chglog
COPY ../tools+svu/svu /usr/local/bin/svu
COPY ../opentf+build/tofu /usr/local/bin/opentf
RUN true \
&& echo "command -v kubectl-krew >/dev/null && export PATH=\"${KREW_ROOT:-$HOME/.krew}/bin:$PATH\"" >> /root/.bashrc \
&& echo "command -v flux >/dev/null && . <(flux completion bash)" >> /root/.bashrc \
&& echo "command -v kustomize >/dev/null && . <(kustomize completion bash)" >> /root/.bashrc \
&& echo "command -v kubectl >/dev/null && . <(kubectl completion bash)" >> /root/.bashrc \
&& echo "command -v helm >/dev/null && . <(helm completion bash)" >> /root/.bashrc \
&& echo "command -v mdbook >/dev/null && . <(mdbook completions bash)" >> /root/.bashrc \
&& ln -s /usr/local/bin/opentf /usr/local/bin/terraform \
&& true
RUN true \
&& /usr/local/bin/kubectl-krew install cyclonus \
&& /usr/local/bin/kubectl-krew install outdated \
&& /usr/local/bin/kubectl-krew install access-matrix \
&& true
# Create workspace
RUN mkdir /workspace
WORKDIR /workspace
container: container:
FROM ../mirror+alpine FROM ../mirror+alpine
ARG registry=quay.io/shivering-isles/koolbox ARG registry=quay.io/shivering-isles/koolbox
COPY .release ./ COPY .release ./
ARG tag=$(awk -F'=' '$1 == "release" {print $2}' .release) ARG tag=$(awk -F'=' '$1 == "release" {print $2}' .release)
ARG latest=false ARG latest=false
FROM DOCKERFILE --platform=linux/amd64 -f "./Dockerfile" "./"
IF [ $latest = "true" ] IF [ $latest = "true" ]
FROM +container-internal
SAVE IMAGE --push ${registry}:latest SAVE IMAGE --push ${registry}:latest
ELSE ELSE
FROM +container-internal
LABEL "quay.expires-after"="12w" LABEL "quay.expires-after"="12w"
END END
SAVE IMAGE --push ${registry}:${tag} SAVE IMAGE --push ${registry}:${tag}
\ No newline at end of file
release=0.2.1 release=1.6.0-alpha2
...@@ -3,7 +3,7 @@ VERSION 0.7 ...@@ -3,7 +3,7 @@ VERSION 0.7
build: build:
FROM ../mirror+golang FROM ../mirror+golang
WORKDIR /go-workdir WORKDIR /go-workdir
GIT CLONE https://github.com/opentofu/opentofu.git ./ GIT CLONE --branch=v1.6.0-alpha2 https://github.com/opentofu/opentofu.git ./
ENV CGO_ENABLED=0 ENV CGO_ENABLED=0
RUN go build -ldflags "-s -w" -mod=readonly -trimpath ./cmd/tofu RUN go build -ldflags "-s -w" -mod=readonly -trimpath ./cmd/tofu
SAVE ARTIFACT ./tofu ./tofu SAVE ARTIFACT ./tofu ./tofu
......
VERSION 0.7
kubectl:
# kubectl CLI cache
FROM ../mirror+fedora
# renovate: datasource=github-releases depName=kubernetes/kubernetes
ARG KUBECTL_VERSION=v1.28.2
ENV KUBECTL_VERSION=${KUBECTL_VERSION}
RUN curl -LO "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl" \
&& curl -LO "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl-convert" \
&& curl -LO "https://dl.k8s.io/${KUBECTL_VERSION}/bin/linux/amd64/kubectl.sha256" \
&& curl -LO "https://dl.k8s.io/${KUBECTL_VERSION}/bin/linux/amd64/kubectl-convert.sha256" \
&& echo "$(<kubectl.sha256) kubectl" | sha256sum --check \
&& echo "$(<kubectl-convert.sha256) kubectl-convert" | sha256sum --check \
&& install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl \
&& install -o root -g root -m 0755 kubectl-convert /usr/local/bin/kubectl-convert
SAVE ARTIFACT /usr/local/bin/kubectl ./kubectl
SAVE ARTIFACT /usr/local/bin/kubectl-convert ./kubectl-convert
release-cli:
FROM registry.gitlab.com/gitlab-org/release-cli:latest@sha256:5a71acbadc47c1971100f5246b09f88ba09e84ebe7769e425475dce85245a2bf
SAVE ARTIFACT /usr/local/bin/release-cli ./release-cli
svu:
# Semantic Version Util - svu - https://github.com/caarlos0/svu
FROM ghcr.io/caarlos0/svu:v1.11.0
SAVE ARTIFACT /usr/bin/svu ./svu
git-chglog:
# git-chglog cache
FROM quay.io/git-chglog/git-chglog:0.15.4
SAVE ARTIFACT /usr/local/bin/git-chglog ./git-chglog
helm:
# Helm CLI cache
FROM ../mirror+fedora
# renovate: datasource=github-releases depName=helm/helm
ARG HELM_VERSION=v3.13.0
ENV HELM_VERSION=${HELM_VERSION}
RUN curl -L "https://get.helm.sh/helm-${HELM_VERSION}-linux-amd64.tar.gz" | tar xvzf - linux-amd64/helm --strip-components=1 \
&& install -o root -g root -m 0755 helm /usr/local/bin/helm
SAVE ARTIFACT /usr/local/bin/helm ./helm
flux:
# Flux CLI cache
FROM ../mirror+fedora
# renovate: datasource=github-releases depName=fluxcd/flux2
ARG FLUX_VERSION=v2.1.1
ENV FLUX_VERSION=${FLUX_VERSION}
RUN curl -L https://github.com/fluxcd/flux2/releases/download/${FLUX_VERSION}/flux_$(sed 's/^v//g' <<<${FLUX_VERSION})_linux_amd64.tar.gz | tar xvzf - flux \
&& install -o root -g root -m 0755 flux /usr/local/bin/flux
SAVE ARTIFACT /usr/local/bin/flux ./flux
kustomize:
# kustomize CLI cache
FROM ../mirror+fedora
# renovate: datasource=github-releases depName=kubernetes-sigs/kustomize
ARG KUSTOMIZE_VERSION=4.1.3
ENV KUSTOMIZE_VERSION=${KUSTOMIZE_VERSION}
RUN curl -L https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2Fv${KUSTOMIZE_VERSION}/kustomize_v${KUSTOMIZE_VERSION}_linux_amd64.tar.gz | tar xvzf - kustomize \
&& install -o root -g root -m 0755 kustomize /usr/local/bin/kustomize
SAVE ARTIFACT /usr/local/bin/kustomize ./kustomize
kubeval:
# kubeval CLI cache
FROM ../mirror+fedora
# renovate: datasource=github-releases depName=instrumenta/kubeval
ARG KUBEVAL_VERSION=v0.16.1
ENV KUBEVAL_VERSION=${KUBEVAL_VERSION}
RUN curl -L https://github.com/instrumenta/kubeval/releases/download/${KUBEVAL_VERSION}/kubeval-linux-amd64.tar.gz | tar xvzf - kubeval \
&& install -o root -g root -m 0755 kubeval /usr/local/bin/kubeval
SAVE ARTIFACT /usr/local/bin/kubeval ./kubeval
sops:
# SOPS CLI cache
FROM ../mirror+fedora
# renovate: datasource=github-releases depName=mozilla/sops
ARG SOPS_VERSION=v3.8.1
ENV SOPS_VERSION=${SOPS_VERSION}
RUN curl -L https://github.com/getsops/sops/releases/download/${SOPS_VERSION}/sops-${SOPS_VERSION}.linux > ./sops \
&& install -o root -g root -m 0755 sops /usr/local/bin/sops
SAVE ARTIFACT /usr/local/bin/sops ./sops
yq:
# yq CLI cache
FROM ../mirror+fedora
# renovate: datasource=github-releases depName=mikefarah/yq
ARG YQ_VERSION=v4.35.1
ENV YQ_VERSION=${YQ_VERSION}
RUN curl -L https://github.com/mikefarah/yq/releases/download/${YQ_VERSION}/yq_linux_amd64 > ./yq \
&& install -o root -g root -m 0755 yq /usr/local/bin/yq
SAVE ARTIFACT /usr/local/bin/yq ./yq
helm-docs:
# helm CLI cache
FROM ../mirror+fedora
# renovate: datasource=github-releases depName=norwoodj/helm-docs
ARG HELM_DOCS_VERSION=v1.11.0
ENV HELM_DOCS_VERSION=${HELM_DOCS_VERSION}
RUN curl -L https://github.com/norwoodj/helm-docs/releases/download/${HELM_DOCS_VERSION}/helm-docs_$(sed 's/^v//g' <<<${HELM_DOCS_VERSION})_Linux_x86_64.tar.gz | tar xvzf - helm-docs \
&& install -o root -g root -m 0755 helm-docs /usr/local/bin/helm-docs
SAVE ARTIFACT /usr/local/bin/helm-docs ./helm-docs
kubectl-krew:
# kubectl-krew CLI cache
FROM ../mirror+fedora
# renovate: datasource=github-releases depName=kubernetes-sigs/krew
ARG KREW_VERSION=v0.4.4
ENV KREW_VERSION=${KREW_VERSION}
RUN set -x; mkdir -p /opt/krew; cd "/opt/krew" && \
OS="$(uname | tr '[:upper:]' '[:lower:]')" && \
ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" && \
KREW="krew-${OS}_${ARCH}" && \
curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/download/${KREW_VERSION}/${KREW}.tar.gz" && \
tar zxvf "${KREW}.tar.gz" && \
mv "${KREW}" /opt/krew/krew
SAVE ARTIFACT /opt/krew/krew ./krew
mdbook:
# mdbook CLI cache
FROM ../mirror+fedora
# renovate: datasource=github-releases depName=kubernetes-sigs/krew
ARG MDBOOK_VERSION=v0.4.18
ENV MDBOOK_VERSION=${MDBOOK_VERSION}
RUN curl -L "https://github.com/rust-lang/mdBook/releases/download/${MDBOOK_VERSION}/mdbook-${MDBOOK_VERSION}-x86_64-unknown-linux-gnu.tar.gz" | tar xvzf - mdbook \
&& install -o root -g root -m 0755 mdbook /usr/local/bin/mdbook
SAVE ARTIFACT /usr/local/bin/mdbook ./mdbook
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment