|  | 
|  | 1 | +ARG BASE_IMAGE=debian:12 | 
|  | 2 | + | 
|  | 3 | +FROM $BASE_IMAGE | 
|  | 4 | + | 
|  | 5 | +LABEL org.opencontainers.image.source="https://github.com/code-tool/argocd-helmfile-plugin" | 
|  | 6 | + | 
|  | 7 | +ENV DEBIAN_FRONTEND=noninteractive | 
|  | 8 | +ENV ARGOCD_USER_ID=999 | 
|  | 9 | + | 
|  | 10 | +ARG TARGETPLATFORM | 
|  | 11 | +ARG BUILDPLATFORM | 
|  | 12 | + | 
|  | 13 | +RUN echo "I am running on final $BUILDPLATFORM, building for $TARGETPLATFORM" | 
|  | 14 | + | 
|  | 15 | +USER root | 
|  | 16 | + | 
|  | 17 | +RUN apt-get update && apt-get install --no-install-recommends -y \ | 
|  | 18 | +  ca-certificates \ | 
|  | 19 | +  git git-lfs \ | 
|  | 20 | +  wget \ | 
|  | 21 | +  jq && \ | 
|  | 22 | +  apt-get clean && \ | 
|  | 23 | +  rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* | 
|  | 24 | + | 
|  | 25 | +RUN groupadd -g $ARGOCD_USER_ID argocd && \ | 
|  | 26 | +  useradd -r -u $ARGOCD_USER_ID -g argocd argocd && \ | 
|  | 27 | +  mkdir -p /home/argocd && \ | 
|  | 28 | +  chown argocd:0 /home/argocd && \ | 
|  | 29 | +  chmod g=u /home/argocd | 
|  | 30 | + | 
|  | 31 | +# Binary versions | 
|  | 32 | +# https://github.com/helm/helm/releases | 
|  | 33 | +# Supported Kubernetes Versions 1.32.x - 1.29.x (https://helm.sh/docs/topics/version_skew/) | 
|  | 34 | +ARG HELM3_VERSION="v3.17.4" | 
|  | 35 | +# https://github.com/helmfile/helmfile/releases | 
|  | 36 | +ARG HELMFILE_VERSION="1.1.5" | 
|  | 37 | + | 
|  | 38 | +# https://github.com/getsops/sops/releases | 
|  | 39 | +ARG SOPS_VERSION="v3.10.2" | 
|  | 40 | +# https://github.com/FiloSottile/age/releases | 
|  | 41 | +ARG AGE_VERSION="v1.2.1" | 
|  | 42 | + | 
|  | 43 | +# https://github.com/kubernetes-sigs/kustomize/releases | 
|  | 44 | +ARG KUSTOMIZE5_VERSION="5.7.1" | 
|  | 45 | +# https://github.com/mikefarah/yq/releases | 
|  | 46 | +ARG YQ_VERSION="v4.47.1" | 
|  | 47 | + | 
|  | 48 | +# https://github.com/kubernetes/kubectl/tags | 
|  | 49 | +# Compatible with Kubernetes versions ±1 from its version. | 
|  | 50 | +ARG KUBECTL_VERSION="v1.32.8" | 
|  | 51 | +# https://github.com/kubernetes-sigs/krew/releases/ | 
|  | 52 | +ARG KREW_VERSION="v0.4.5" | 
|  | 53 | +# https://github.com/bitnami-labs/sealed-secrets/releases | 
|  | 54 | +ARG KUBESEAL_VERSION="0.30.0" | 
|  | 55 | + | 
|  | 56 | + | 
|  | 57 | +RUN \ | 
|  | 58 | +  GO_ARCH=$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/') && \ | 
|  | 59 | +  wget -qO-                          "https://get.helm.sh/helm-${HELM3_VERSION}-linux-${GO_ARCH}.tar.gz" | tar zxv --strip-components=1 -C /tmp linux-${GO_ARCH}/helm && mv /tmp/helm /usr/local/bin/helm && \ | 
|  | 60 | +  wget -qO "/usr/local/bin/sops"     "https://github.com/mozilla/sops/releases/download/${SOPS_VERSION}/sops-${SOPS_VERSION}.linux.${GO_ARCH}" && \ | 
|  | 61 | +  wget -qO-                          "https://github.com/FiloSottile/age/releases/download/${AGE_VERSION}/age-${AGE_VERSION}-linux-${GO_ARCH}.tar.gz" | tar zxv --strip-components=1 -C /usr/local/bin age/age age/age-keygen && \ | 
|  | 62 | +  wget -qO-                          "https://github.com/helmfile/helmfile/releases/download/v${HELMFILE_VERSION}/helmfile_${HELMFILE_VERSION}_linux_${GO_ARCH}.tar.gz" | tar zxv -C /usr/local/bin helmfile && \ | 
|  | 63 | +  wget -qO "/usr/local/bin/yq"       "https://github.com/mikefarah/yq/releases/download/${YQ_VERSION}/yq_linux_${GO_ARCH}" && \ | 
|  | 64 | +  wget -qO "/usr/local/bin/kubectl"  "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/${GO_ARCH}/kubectl" && \ | 
|  | 65 | +  wget -qO-                          "https://github.com/kubernetes-sigs/krew/releases/download/${KREW_VERSION}/krew-linux_${GO_ARCH}.tar.gz" | tar zxv -C /tmp ./krew-linux_${GO_ARCH} && mv /tmp/krew-linux_${GO_ARCH} /usr/local/bin/kubectl-krew && \ | 
|  | 66 | +  wget -qO-                          "https://github.com/bitnami-labs/sealed-secrets/releases/download/v${KUBESEAL_VERSION}/kubeseal-${KUBESEAL_VERSION}-linux-${GO_ARCH}.tar.gz" | tar zxv -C /usr/local/bin kubeseal && \ | 
|  | 67 | +  wget -qO-                          "https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2Fv${KUSTOMIZE5_VERSION}/kustomize_v${KUSTOMIZE5_VERSION}_linux_${GO_ARCH}.tar.gz" | tar zxv -C /usr/local/bin kustomize && \ | 
|  | 68 | +  true | 
|  | 69 | + | 
|  | 70 | +COPY src/*.sh /usr/local/bin/ | 
|  | 71 | + | 
|  | 72 | +RUN \ | 
|  | 73 | +  chown root:root /usr/local/bin/* && chmod 755 /usr/local/bin/* | 
|  | 74 | + | 
|  | 75 | +ENV USER=argocd | 
|  | 76 | +USER $ARGOCD_USER_ID | 
|  | 77 | + | 
|  | 78 | +WORKDIR /home/argocd/cmp-server/config/ | 
|  | 79 | +COPY src/plugin.yaml ./ | 
|  | 80 | +WORKDIR /home/argocd | 
|  | 81 | + | 
|  | 82 | +# repo-server containers use /helm-working-dir (empty dir volume helm-working-dir) | 
|  | 83 | +ENV HELM_CACHE_HOME=/home/argocd/helm/cache | 
|  | 84 | +#ENV HELM_CONFIG_HOME=/home/argocd/helm/config | 
|  | 85 | +ENV HELM_DATA_HOME=/home/argocd/helm/data | 
|  | 86 | +ENV KREW_ROOT=/home/argocd/krew | 
|  | 87 | +ENV PATH="${KREW_ROOT}/bin:$PATH" | 
|  | 88 | + | 
|  | 89 | +# plugin versions | 
|  | 90 | +# https://github.com/databus23/helm-diff/releases | 
|  | 91 | +ARG HELM_DIFF_VERSION="3.12.5" | 
|  | 92 | +# https://github.com/aslafy-z/helm-git/releases | 
|  | 93 | +ARG HELM_GIT_VERSION="1.4.0" | 
|  | 94 | +# https://github.com/jkroepke/helm-secrets/releases | 
|  | 95 | +ARG HELM_SECRETS_VERSION="4.6.5" | 
|  | 96 | + | 
|  | 97 | +RUN \ | 
|  | 98 | +  helm plugin install https://github.com/databus23/helm-diff   --version ${HELM_DIFF_VERSION} && \ | 
|  | 99 | +  helm plugin install https://github.com/aslafy-z/helm-git     --version ${HELM_GIT_VERSION} && \ | 
|  | 100 | +  helm plugin install https://github.com/jkroepke/helm-secrets --version ${HELM_SECRETS_VERSION} && \ | 
|  | 101 | +  kubectl krew update && \ | 
|  | 102 | +  mkdir -p ${KREW_ROOT}/bin && \ | 
|  | 103 | +  true | 
|  | 104 | + | 
|  | 105 | +# array is exec form, string is shell form | 
|  | 106 | +# this binary in injected via a shared folder with the repo server | 
|  | 107 | +#ENTRYPOINT [/var/run/argocd/argocd-cmp-server] | 
0 commit comments