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