Refactor container files

Change-Id: I42eeadb2183d517d6f72f578cb5dfd6e03daced4
This commit is contained in:
Federico Ressi 2021-01-05 14:36:01 +01:00
parent eb9fb0a05a
commit 0d7c5825e3
3 changed files with 108 additions and 130 deletions

View File

@ -7,12 +7,14 @@
# Hidden files
.coverage
.coverage.*
.dockerignore
.eggs
.mypy_cache
.stestr
.test
.testrepository
.tobiko-env
.tobiko
.tox
.vagrant
.venv
@ -21,21 +23,29 @@ __pycache__
AUTHORS
build/*
ChangeLog
doc/build/*
doc/
cover/
dist/
etc/*.sample
playbooks/
releasenotes/
report/
roles/
test_results*
zuul/versioninfo
# Files created by releasenotes build
releasenotes/build
# Docs related files
doc/source/_static/config-samples/*.sample
Pipfile.lock
# Infrared things
.infrared
# Docker files
Dockerfile
docker-compose.yaml
docker-compose.yml
# Tobiko configuration files
tobiko.conf

View File

@ -1,107 +1,81 @@
ARG base_image="docker.io/library/centos:8"
FROM python:3.9 as base
FROM "${base_image}" as base
ENV TOBIKO_DIR=/tobiko
ENV WHEEL_DIR=/wheel
# Make sure Git and Python 3 are installed on your system.
RUN yum install -y git python3 rsync which
RUN apt update
# Check your Python 3 version is greater than 3.6
RUN python3 -c 'import sys; sys.version_info >= (3, 6)'
# Ensure Pip is installed and up-to date
RUN curl https://bootstrap.pypa.io/get-pip.py | python3
# Check installed Pip version
RUN python3 -m pip --version
# Ensure basic Python packages are installed and up-to-date
RUN python3 -m pip install --upgrade setuptools wheel virtualenv tox six
# Check installed Tox version
RUN tox --version
# Set the locale
RUN apt install -y locales
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && \
locale-gen
# -----------------------------------------------------------------------------
FROM base as source
FROM base as sources
# Populate tobiko source dir
# RUN mkdir -p ${TOBIKO_DIR}
# Get Tobiko source code using Git
RUN mkdir -p /src
ADD . /src/tobiko
WORKDIR /src/tobiko
ADD .gitignore \
extra-requirements.txt \
requirements.txt \
README.rst \
setup.cfg \
setup.py \
test-requirements.txt \
upper-constraints.txt \
${TOBIKO_DIR}/
ADD .git ${TOBIKO_DIR}/.git/
ADD tobiko/ ${TOBIKO_DIR}/tobiko/
# -----------------------------------------------------------------------------
FROM source as build
FROM sources as bindeps
# Install binary dependencies
RUN apt install -y git
# Ensure required binary packages are installed
RUN ./tools/install-bindeps.sh
# Check bindeps are installed
CMD tox -e bindeps
# Build wheel files
RUN python3 -m pip wheel -w ${WHEEL_DIR} \
-c ${TOBIKO_DIR}/upper-constraints.txt \
-r ${TOBIKO_DIR}/requirements.txt \
-r ${TOBIKO_DIR}/test-requirements.txt \
-r ${TOBIKO_DIR}/extra-requirements.txt \
--src ${TOBIKO_DIR}/
# -----------------------------------------------------------------------------
FROM base as install
FROM bindeps as py3
# Prepare py3 Tox virtualenv
RUN tox -e py3 --notest
# Run unit yest cases
CMD tox -e py3
# Install wheels
RUN mkdir -p ${WHEEL_DIR}
COPY --from=build ${WHEEL_DIR} ${WHEEL_DIR}
RUN pip install ${WHEEL_DIR}/*.whl
# -----------------------------------------------------------------------------
FROM source as tobiko
FROM py3 as venv
# Install packages
RUN apt install -y iperf3 iputils-ping ncat
# Run bash inside py3 Tox environment
CMD tox -e venv
# Run tests variables
ENV PYTHONWARNINGS=ignore::Warning
ENV OS_TEST_PATH=${TOBIKO_DIR}/tobiko/tests/unit
ENV TOX_REPORT_DIR=/report
ENV TOX_REPORT_NAME=tobiko_results
ENV TOBIKO_PREVENT_CREATE=false
# Write log files to report directory
RUN mkdir -p /etc/tobiko
RUN printf "[DEFAULT]\nlog_dir=${TOBIKO_REPORT_DIR}" > /etc/tobiko/tobiko.conf
# -----------------------------------------------------------------------------
# Copy python pacakges
COPY --from=install /usr/local /usr/local/
FROM py3 as functional
# Copy tobiko tools
ADD tools/ ${TOBIKO_DIR}/tools/
# Run functional test cases
CMD tox -e functional
# -----------------------------------------------------------------------------
FROM py3 as scenario
# Run scenario test cases
CMD tox -e scenario
# -----------------------------------------------------------------------------
FROM py3 as neutron
# Run scenario test cases
CMD tox -e neutron
# -----------------------------------------------------------------------------
FROM py3 as faults
# Run faults test cases
CMD tox -e faults
# -----------------------------------------------------------------------------
from bindeps as infrared
# Set Python 3 as default alternative for python command
RUN alternatives --set python /usr/bin/python3
# Prepare infrared Tox virtualenv
RUN tox -e infrared --notest
# Run Tobiko InfraRed plugin
CMD tox -e infrared
WORKDIR ${TOBIKO_DIR}
ENTRYPOINT tools/run_tests.py ${OS_TEST_PATH}

View File

@ -2,52 +2,46 @@
version: '3.4'
services:
base:
unit:
build:
context: .
target: base
target: tobiko
hostname: tobiko
environment:
OS_TEST_PATH: tobiko/tests/unit
TOX_REPORT_NAME: tobiko_results_unit
volumes:
- ./report:/report
sources:
build:
context: .
target: sources
bindeps:
build:
context: .
target: bindeps
py3:
build:
context: .
target: py3
venv:
build:
context: .
target: venv
shell:
extends:
service: unit
entrypoint: /bin/bash
functional:
build:
context: .
target: functional
extends:
service: unit
environment:
OS_TEST_PATH: tobiko/tests/functional
TOX_REPORT_NAME: tobiko_results_functional
scenario:
build:
context: .
target: scenario
create:
extends:
service: unit
environment:
OS_TEST_PATH: tobiko/tests/scenario
TOX_REPORT_NAME: tobiko_results_create
neutron:
build:
context: .
target: neutron
disrupt:
extends:
service: unit
environment:
OS_TEST_PATH: tobiko/tests/faults
TOX_REPORT_NAME: tobiko_results_disrupt
faults:
build:
context: .
target: faults
infrared:
build:
context: .
target: infrared
verify:
extends:
service: create
environment:
PREVENT_CREATE: true
TOX_REPORT_NAME: tobiko_results_verify