##############################################################################
# ref: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#use-multi-stage-builds
-FROM golang:alpine3.9 as build
+FROM golang:1.16.5-alpine3.13 as build
-# Sonobuoy supports Kubernetes versions 1.11, 1.12 and 1.13
-ARG K8S_TAG=v1.13.0
+# Sonobuoy supports 3 Kubernetes minor versions: the current release and 2
+# minor versions before.
+ARG SB_TAG=v0.16.1
+# Determine the latest stable git tag at build time based on stable major version
+ARG K8S_VER=1.16
# Install dependencies
COPY pip-requirements.txt /wheels/requirements/pip-requirements.txt
RUN apk --no-cache add --update \
- openssl \
- python3 \
bash \
+ build-base \
+ cairo \
+ cairo-dev \
+ cargo \
+ curl \
findutils \
+ freetype-dev \
gcc \
+ gdk-pixbuf-dev \
+ gettext \
git \
grep \
+ jpeg-dev \
+ lcms2-dev \
libc-dev \
- libffi \
libffi-dev \
make \
+ musl-dev \
+ openjpeg-dev \
openssl-dev \
+ pango-dev \
+ poppler-utils \
+ postgresql-client \
+ postgresql-dev \
+ py-cffi \
python3-dev \
py3-pip \
- rsync
+ rsync \
+ rust \
+ tcl-dev \
+ tiff-dev \
+ tk-dev \
+ zlib-dev
# Build binaries; detect the architecture automatically (default is amd64)
RUN git clone https://github.com/kubernetes/kubernetes /src/k8s.io/kubernetes
RUN if [ $(uname -m) == 'aarch64' ]; then HOST_ARCH=arm64; else HOST_ARCH=amd64; fi && \
echo "Building docker on $HOST_ARCH" && \
cd /src/k8s.io/kubernetes && \
- git checkout $K8S_TAG && \
+ git checkout $(curl \
+ https://storage.googleapis.com/kubernetes-release/release/stable-$K8S_VER.txt) && \
make kubectl ginkgo && \
make WHAT=test/e2e/e2e.test ARCH=$HOST_ARCH
-RUN go get -u -v github.com/heptio/sonobuoy
+RUN git clone https://github.com/heptio/sonobuoy /go/src/github.com/heptio/sonobuoy && \
+ cd /go/src/github.com/heptio/sonobuoy && \
+ pwd \
+ git checkout $SB_TAG && \
+ go install
RUN git clone https://gerrit.akraino.org/r/validation /opt/akraino/validation
RUN cat /opt/akraino/validation/bluval/requirements.txt >> \
/wheels/requirements/pip-requirements.txt
RUN pip3 install wheel
RUN pip3 wheel -r /wheels/requirements/pip-requirements.txt
-# Copy binaries in the final contaier and install robot framework
-FROM python:3.6-alpine3.9
+# Copy binaries in the final container and install robot framework
+FROM python:3.10.0b1-alpine3.13
COPY --from=build /src/k8s.io/kubernetes/_output/bin /usr/local/bin
COPY --from=build /go/bin/sonobuoy /bin/sonobuoy
COPY --from=build /wheels /wheels
COPY --from=build /opt/akraino/validation/ /opt/akraino/validation/
+RUN apk --no-cache add --update \
+ bash \
+ build-base \
+ cairo \
+ cairo-dev \
+ cargo \
+ curl \
+ findutils \
+ freetype-dev \
+ gcc \
+ gdk-pixbuf-dev \
+ gettext \
+ git \
+ grep \
+ jpeg-dev \
+ lcms2-dev \
+ libc-dev \
+ libffi-dev \
+ make \
+ musl-dev \
+ openjpeg-dev \
+ openssl-dev \
+ pango-dev \
+ poppler-utils \
+ postgresql-client \
+ postgresql-dev \
+ py-cffi \
+ python3-dev \
+ py3-pip \
+ rsync \
+ rust \
+ tcl-dev \
+ tiff-dev \
+ tk-dev \
+ zlib-dev
+
RUN pip3 install -r /wheels/requirements/pip-requirements.txt \
-f /wheels && \
rm -rf /wheels && \