diff --git a/images/koolbox/Dockerfile b/images/koolbox/Dockerfile deleted file mode 100644 index 3027bdad2ab002f752adcbff6993041c1253b7be..0000000000000000000000000000000000000000 --- a/images/koolbox/Dockerfile +++ /dev/null @@ -1,190 +0,0 @@ -# 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 diff --git a/images/koolbox/Earthfile b/images/koolbox/Earthfile index c254a834397e41b98dff88e4483ea06f5320a38a..cb4855f5b73cc96e3c615940bf550085327cd323 100644 --- a/images/koolbox/Earthfile +++ b/images/koolbox/Earthfile @@ -1,15 +1,87 @@ 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: FROM ../mirror+alpine ARG registry=quay.io/shivering-isles/koolbox COPY .release ./ ARG tag=$(awk -F'=' '$1 == "release" {print $2}' .release) ARG latest=false - FROM DOCKERFILE --platform=linux/amd64 -f "./Dockerfile" "./" IF [ $latest = "true" ] + FROM +container-internal SAVE IMAGE --push ${registry}:latest ELSE + FROM +container-internal LABEL "quay.expires-after"="12w" END SAVE IMAGE --push ${registry}:${tag} \ No newline at end of file diff --git a/images/opentf/.release b/images/opentf/.release index 15daeb6b1493316c2289f761e5071e4a07503a4f..30d338f3ef0e08bba45abda89a4073a413405604 100644 --- a/images/opentf/.release +++ b/images/opentf/.release @@ -1 +1 @@ -release=0.2.1 +release=1.6.0-alpha2 diff --git a/images/opentf/Earthfile b/images/opentf/Earthfile index dc65fac0a37f6f3791173d34d714b85b79c9c6b3..2280bcaa17fa9da91bffd0172dd8a769c8cef052 100644 --- a/images/opentf/Earthfile +++ b/images/opentf/Earthfile @@ -3,7 +3,7 @@ VERSION 0.7 build: FROM ../mirror+golang 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 RUN go build -ldflags "-s -w" -mod=readonly -trimpath ./cmd/tofu SAVE ARTIFACT ./tofu ./tofu diff --git a/images/tools/.skip-earthly b/images/tools/.skip-earthly new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/images/tools/Earthfile b/images/tools/Earthfile new file mode 100644 index 0000000000000000000000000000000000000000..7c044557f0d25b0b5a5a7d2d9ba1fd954f7bb8f8 --- /dev/null +++ b/images/tools/Earthfile @@ -0,0 +1,147 @@ +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