blob: a81dbbca2c8b7db38b978a01a2a6a25a1921e403 [file] [log] [blame]
# syntax=docker/dockerfile:1
#######################################################################################
# Copyright ETSI Contributors and Others.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#######################################################################################
#######################
# Stage 1: Base Stage #
#######################
FROM python:3.10-alpine AS base
ENV PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1 \
PIP_DISABLE_PIP_VERSION_CHECK=1
############################################################################################################################################################
##########################
# Stage 2: Builder Stage #
##########################
FROM base AS builder
RUN apk add --no-cache --virtual .build-deps \
build-base gcc \
musl-dev \
libffi-dev \
libmagic \
openssl-dev \
curl \
git \
jq \
file \
openssh-client \
openssh-keygen \
bash \
ca-certificates
WORKDIR /app/tests
# Isolate dependencies in a venv
RUN python -m venv /app/tests/.venv
ENV PATH="/app/tests/.venv/bin:$PATH"
# Instalar kubectl (versión 1.30)
RUN curl -LO "https://dl.k8s.io/release/v1.30.13/bin/linux/amd64/kubectl" && \
install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl && \
rm kubectl
# Instalar Google Cloud SDK (versión simplificada para Alpine)
RUN curl -sSL https://sdk.cloud.google.com > /tmp/install.sh && \
bash /tmp/install.sh --disable-prompts --install-dir=/local && \
rm /tmp/install.sh
#ENV PATH $PATH:/local/google-cloud-sdk/bin
# Instalar Azure CLI (versión simplificada para Alpine)
RUN apk add --no-cache py3-pip && \
pip install --no-cache-dir azure-cli
# Add vCluster CLI
ENV VCLUSTER_VERSION="v0.30.4"
RUN curl -L -o /tmp/vcluster "https://github.com/loft-sh/vcluster/releases/download/${VCLUSTER_VERSION}/vcluster-linux-amd64" \
&& install -c -m 0755 /tmp/vcluster /usr/local/bin \
&& rm -f /tmp/vcluster
# Copy vCluster configuration
COPY configs/vcluster.yaml /etc/vcluster.yaml
# Add FluxCD CLI Client
ENV FLUX_CLI_VERSION="2.4.0"
RUN curl -s https://fluxcd.io/install.sh | FLUX_VERSION=${FLUX_CLI_VERSION} bash
ARG IM_GERRIT_REFSPEC=master
RUN git clone --filter=blob:none --tags https://osm.etsi.org/gerrit/osm/IM.git /tmp/osm-im && \
cd /tmp/osm-im && \
git fetch origin ${IM_GERRIT_REFSPEC} && \
git checkout FETCH_HEAD && \
cd - && \
pip install --no-cache-dir -r /tmp/osm-im/requirements.txt && \
pip install /tmp/osm-im
ARG CLIENT_GERRIT_REFSPEC=master
RUN git clone --filter=blob:none --tags https://osm.etsi.org/gerrit/osm/osmclient.git /tmp/osmclient && \
cd /tmp/osmclient && \
git fetch origin ${CLIENT_GERRIT_REFSPEC} && \
git checkout FETCH_HEAD && \
cd - && \
pip install --no-cache-dir -r /tmp/osmclient/requirements.txt && \
pip install /tmp/osmclient
COPY . /tmp/osm-tests/
# Install test requirements leveraging BuildKit cache
RUN cd /tmp/osm-tests && \
pip install --no-cache-dir -r /tmp/osm-tests/requirements.txt && \
pip install /tmp/osm-tests && \
cd -
RUN mv /tmp/osm-tests/robot-systest /robot-systest/ && \
mv /tmp/osm-tests/cloud-scripts /robot-systest/ && \
mv /tmp/osm-tests/conformance-tests/ /robot-systest/ && \
mv /tmp/osm-tests/charm.sh /usr/sbin/charm
# Download osm-packages repository for tests
ARG CACHE_DATE=not_a_date
RUN git clone \
https://osm.etsi.org/gitlab/vnf-onboarding/osm-packages.git \
--recurse-submodules \
/robot-systest/osm-packages
WORKDIR /robot-systest
# Folder where Robot tests are stored
ENV ROBOT_DEVOPS_FOLDER=/robot-systest
# Folder to save alternative DUT environments (optional)
ENV ENVIRONMENTS_FOLDER=environments
# Folder where all required packages are stored
ENV PACKAGES_FOLDER=/robot-systest/osm-packages
# Folder where test results should be exported
ENV ROBOT_REPORT_FOLDER=/robot-systest/results
# Kubeconfig file
ENV K8S_CREDENTIALS=/root/.kube/config
# Kubeconfig file of the existing cluster for Gitops tests
ENV CLUSTER_KUBECONFIG_CREDENTIALS=/robot-systest/cluster-kubeconfig.yaml
# OSM RSA file
ENV OSM_RSA_FILE=/root/osm_id_rsa
ENV LC_ALL=C.UTF-8
ENV LANG=C.UTF-8
ENTRYPOINT ["/robot-systest/run_test.sh"]