|
2 | 2 | FROM ubuntu:24.04 AS unit
|
3 | 3 | LABEL org.opencontainers.image.source=https://github.com/elastisys/compliantkubernetes-apps
|
4 | 4 |
|
| 5 | +ARG DEBIAN_FRONTEND="noninteractive" |
5 | 6 | ENV LANGUAGE="en"
|
6 | 7 | ENV LANG="en_US.utf8"
|
| 8 | +ARG TZ="Etc/UTC" |
| 9 | + |
| 10 | +RUN apt-get update && \ |
| 11 | + apt-get upgrade -y && \ |
| 12 | + apt-get install -y apache2-utils bats curl dnsutils gettext-base git gpg iputils-ping jq locales make net-tools npm pwgen s3cmd ssh unzip && \ |
| 13 | + apt-get clean && \ |
| 14 | + rm -rf /var/lib/apt/lists/* && \ |
| 15 | + localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 |
7 | 16 |
|
8 |
| -ENV HELM_DATA_HOME="/usr/local/share/helm" |
9 |
| -ENV DOCS_PATH="/usr/local/share/docs" |
10 | 17 | ENV NODE_PATH="/usr/local/lib/node_modules"
|
11 | 18 |
|
12 |
| -COPY tests/common/init.sh init.sh |
| 19 | +ARG GOMPLATE_VERSION="3.11.7" |
| 20 | +RUN curl -LOs "https://github.com/hairyhenderson/gomplate/releases/download/v${GOMPLATE_VERSION}/gomplate_linux-amd64" && \ |
| 21 | + install -Tm 755 gomplate_linux-amd64 /usr/local/bin/gomplate && \ |
| 22 | + rm gomplate_linux-amd64 |
| 23 | + |
| 24 | +ARG HELM_VERSION="3.13.3" |
| 25 | +ENV HELM_DATA_HOME="/usr/local/share/helm" |
| 26 | +RUN curl -LOs "https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz" && \ |
| 27 | + tar -zxvf "helm-v${HELM_VERSION}-linux-amd64.tar.gz" linux-amd64/helm && \ |
| 28 | + install -Tm 755 linux-amd64/helm /usr/local/bin/helm && \ |
| 29 | + rm -rf linux-amd64 "helm-v${HELM_VERSION}-linux-amd64.tar.gz" |
| 30 | + |
| 31 | +ARG HELM_DIFF_VERSION="3.9.4" |
| 32 | +RUN helm plugin install https://github.com/databus23/helm-diff --version "v${HELM_DIFF_VERSION}" > /dev/null |
| 33 | + |
| 34 | +ARG HELM_SECRETS_VERSION="4.5.1" |
| 35 | +RUN helm plugin install https://github.com/jkroepke/helm-secrets --version "v${HELM_SECRETS_VERSION}" > /dev/null |
| 36 | + |
| 37 | +ARG HELMFILE_VERSION="0.162.0" |
| 38 | +RUN curl -LOs "https://github.com/helmfile/helmfile/releases/download/v${HELMFILE_VERSION}/helmfile_${HELMFILE_VERSION}_linux_amd64.tar.gz" && \ |
| 39 | + tar -zxvf "helmfile_${HELMFILE_VERSION}_linux_amd64.tar.gz" helmfile && \ |
| 40 | + install -Tm 755 helmfile /usr/local/bin/helmfile && \ |
| 41 | + rm helmfile "helmfile_${HELMFILE_VERSION}_linux_amd64.tar.gz" |
| 42 | + |
| 43 | +ENV JSONSCHEMA2MD_VERSION="8.0.2" |
| 44 | +RUN npm install --global "@adobe/jsonschema2md@${JSONSCHEMA2MD_VERSION}" |
| 45 | + |
| 46 | +ARG KUBECTL_VERSION="1.29.7" |
| 47 | +RUN curl -LOs "https://storage.googleapis.com/kubernetes-release/release/v${KUBECTL_VERSION}/bin/linux/amd64/kubectl" && \ |
| 48 | + install -Tm 755 kubectl /usr/local/bin/kubectl && \ |
| 49 | + rm kubectl |
13 | 50 |
|
14 |
| -RUN /init.sh unit-packages |
15 |
| -RUN /init.sh unit-binaries |
| 51 | +ARG KUBECONFORM_VERSION="0.6.3" |
| 52 | +RUN curl -LOs "https://github.com/yannh/kubeconform/releases/download/v${KUBECONFORM_VERSION}/kubeconform-linux-amd64.tar.gz" && \ |
| 53 | + tar -zxvf kubeconform-linux-amd64.tar.gz kubeconform && \ |
| 54 | + install -Tm 755 kubeconform /usr/local/bin/kubeconform && \ |
| 55 | + rm kubeconform-linux-amd64.tar.gz kubeconform |
| 56 | + |
| 57 | +ARG KUBELOGIN_VERSION="1.28.0" |
| 58 | +RUN curl -LOs "https://github.com/int128/kubelogin/releases/download/v${KUBELOGIN_VERSION}/kubelogin_linux_amd64.zip" && \ |
| 59 | + unzip kubelogin_linux_amd64.zip && \ |
| 60 | + install -Tm 755 kubelogin /usr/local/bin/kubectl-oidc_login && \ |
| 61 | + rm kubelogin kubelogin_linux_amd64.zip LICENSE README.md |
| 62 | + |
| 63 | +ARG OPA_VERSION="v0.57.1" |
| 64 | +RUN curl -LOs "https://github.com/open-policy-agent/opa/releases/download/${OPA_VERSION}/opa_linux_amd64" && \ |
| 65 | + install -Tm 755 opa_linux_amd64 /usr/local/bin/opa && \ |
| 66 | + rm opa_linux_amd64 |
| 67 | + |
| 68 | +ARG SOPS_VERSION="3.8.1" |
| 69 | +RUN curl -LOs "https://github.com/getsops/sops/releases/download/v${SOPS_VERSION}/sops-v${SOPS_VERSION}.linux.amd64" && \ |
| 70 | + install -Tm 755 "sops-v${SOPS_VERSION}.linux.amd64" /usr/local/bin/sops && \ |
| 71 | + rm "sops-v${SOPS_VERSION}.linux.amd64" |
| 72 | + |
| 73 | +ARG YAJSV_VERSION="1.4.1" |
| 74 | +RUN curl -LOs "https://github.com/neilpa/yajsv/releases/download/v${YAJSV_VERSION}/yajsv.linux.amd64" && \ |
| 75 | + install -Tm 755 yajsv.linux.amd64 /usr/local/bin/yajsv && \ |
| 76 | + rm yajsv.linux.amd64 |
| 77 | + |
| 78 | +ARG YQ_VERSION="4.42.1" |
| 79 | +RUN curl -LOs "https://github.com/mikefarah/yq/releases/download/v${YQ_VERSION}/yq_linux_amd64" && \ |
| 80 | + install -Tm 755 yq_linux_amd64 /usr/local/bin/yq4 && \ |
| 81 | + rm yq_linux_amd64 |
| 82 | + |
| 83 | +# Currently all from main as most do not have current releases |
| 84 | +RUN git clone --depth 1 https://github.com/bats-core/bats-assert.git /usr/local/lib/bats/assert |
| 85 | +RUN git clone --depth 1 https://github.com/bats-core/bats-detik.git /usr/local/lib/bats/detik |
| 86 | +RUN git clone --depth 1 https://github.com/bats-core/bats-file.git /usr/local/lib/bats/file |
| 87 | +RUN git clone --depth 1 https://github.com/grayhemp/bats-mock.git /usr/local/lib/bats/mock |
| 88 | +RUN git clone --depth 1 https://github.com/bats-core/bats-support.git /usr/local/lib/bats/support |
| 89 | + |
| 90 | +ENV DOCS_PATH="/usr/local/share/docs" |
| 91 | +RUN git clone --depth 1 https://github.com/elastisys/welkin.git "${DOCS_PATH}" && \ |
| 92 | + chmod --recursive a+w "${DOCS_PATH}" |
16 | 93 |
|
17 | 94 | # Container to run integration and end-to-end tests
|
18 | 95 | FROM unit AS main
|
19 | 96 |
|
| 97 | +RUN apt-get update && \ |
| 98 | + apt-get install -y buildah docker.io libasound2t64 libatk1.0-0 libatk-bridge2.0-0 libcanberra-gtk-module libcanberra-gtk3-module libcups2 libgbm-dev libgbm1 libglib2.0-0 libgtk2.0-0 libgtk2.0-0t64 libgtk-3-0 libgtk-3-0t64 libnotify-dev libnss3 libxss1 libxtst6 podman-remote skopeo xauth xvfb && \ |
| 99 | + apt-get clean && \ |
| 100 | + rm -rf /var/lib/apt/lists/* && \ |
| 101 | + ln -s /usr/bin/podman-remote /usr/bin/podman |
| 102 | + |
| 103 | +ARG CYPRESS_VERSION="13.14.1" |
20 | 104 | ENV CYPRESS_CACHE_FOLDER="/usr/local/lib/cypress"
|
| 105 | +RUN npm install --global "cypress@${CYPRESS_VERSION}" && \ |
| 106 | + chmod --recursive a+w "${CYPRESS_CACHE_FOLDER}" |
21 | 107 |
|
22 |
| -COPY tests/common/init.sh init.sh |
| 108 | +ARG KIND_VERSION="0.23.0" |
| 109 | +RUN curl -LOs "https://github.com/kubernetes-sigs/kind/releases/download/v${KIND_VERSION}/kind-linux-amd64" && \ |
| 110 | + install -Tm 755 kind-linux-amd64 /usr/local/bin/kind && \ |
| 111 | + rm kind-linux-amd64 |
23 | 112 |
|
24 |
| -RUN /init.sh main-packages |
25 |
| -RUN /init.sh main-binaries |
| 113 | +ARG VELERO_VERSION="1.13.0" |
| 114 | +RUN curl -LOs "https://github.com/vmware-tanzu/velero/releases/download/v${VELERO_VERSION}/velero-v${VELERO_VERSION}-linux-amd64.tar.gz" && \ |
| 115 | + tar -zxvf "velero-v${VELERO_VERSION}-linux-amd64.tar.gz" "velero-v${VELERO_VERSION}-linux-amd64" && \ |
| 116 | + install -Tm 755 "velero-v${VELERO_VERSION}-linux-amd64/velero" /usr/local/bin/velero && \ |
| 117 | + rm -r "velero-v${VELERO_VERSION}-linux-amd64.tar.gz" "velero-v${VELERO_VERSION}-linux-amd64" |
0 commit comments