Browse Source
♻️ Simplify tests, run in same backend service (#152)
remove backend-tests
pull/13907/head
Sebastián Ramírez
5 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with
8 additions and
69 deletions
-
{{cookiecutter.project_slug}}/.env
-
{{cookiecutter.project_slug}}/backend/app/tests-start.sh
-
{{cookiecutter.project_slug}}/backend/tests.dockerfile
-
{{cookiecutter.project_slug}}/docker-compose.dev.build.yml
-
{{cookiecutter.project_slug}}/docker-compose.dev.env.yml
-
{{cookiecutter.project_slug}}/docker-compose.dev.volumes.yml
-
{{cookiecutter.project_slug}}/docker-compose.shared.env.yml
-
{{cookiecutter.project_slug}}/docker-compose.test.yml
-
{{cookiecutter.project_slug}}/scripts/test-local.sh
-
{{cookiecutter.project_slug}}/scripts/test.sh
|
@ -1,5 +1,5 @@ |
|
|
COMPOSE_PATH_SEPARATOR=: |
|
|
COMPOSE_PATH_SEPARATOR=: |
|
|
COMPOSE_FILE=docker-compose.test.yml:docker-compose.shared.admin.yml:docker-compose.shared.base-images.yml:docker-compose.shared.depends.yml:docker-compose.shared.env.yml:docker-compose.dev.build.yml:docker-compose.dev.command.yml:docker-compose.dev.env.yml:docker-compose.dev.labels.yml:docker-compose.dev.networks.yml:docker-compose.dev.ports.yml:docker-compose.dev.volumes.yml |
|
|
COMPOSE_FILE=docker-compose.shared.admin.yml:docker-compose.shared.base-images.yml:docker-compose.shared.depends.yml:docker-compose.shared.env.yml:docker-compose.dev.build.yml:docker-compose.dev.command.yml:docker-compose.dev.env.yml:docker-compose.dev.labels.yml:docker-compose.dev.networks.yml:docker-compose.dev.ports.yml:docker-compose.dev.volumes.yml |
|
|
|
|
|
|
|
|
DOMAIN=localhost |
|
|
DOMAIN=localhost |
|
|
# DOMAIN=local.dockertoolbox.tiangolo.com |
|
|
# DOMAIN=local.dockertoolbox.tiangolo.com |
|
|
|
@ -3,4 +3,4 @@ set -e |
|
|
|
|
|
|
|
|
python /app/app/tests_pre_start.py |
|
|
python /app/app/tests_pre_start.py |
|
|
|
|
|
|
|
|
pytest $* /app/app/tests/ |
|
|
pytest "$@" /app/app/tests/ |
|
|
|
@ -1,34 +0,0 @@ |
|
|
FROM python:3.7 |
|
|
|
|
|
|
|
|
|
|
|
WORKDIR /app/ |
|
|
|
|
|
|
|
|
|
|
|
# Install Poetry |
|
|
|
|
|
RUN curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | POETRY_HOME=/opt/poetry python && \ |
|
|
|
|
|
cd /usr/local/bin && \ |
|
|
|
|
|
ln -s /opt/poetry/bin/poetry && \ |
|
|
|
|
|
poetry config virtualenvs.create false |
|
|
|
|
|
|
|
|
|
|
|
# Copy poetry.lock* in case it doesn't exist in the repo |
|
|
|
|
|
COPY ./app/pyproject.toml ./app/poetry.lock* /app/ |
|
|
|
|
|
RUN poetry install --no-dev --no-root |
|
|
|
|
|
|
|
|
|
|
|
# For development, Jupyter remote kernel, Hydrogen |
|
|
|
|
|
# Using inside the container: |
|
|
|
|
|
# jupyter lab --ip=0.0.0.0 --allow-root --NotebookApp.custom_display_url=http://127.0.0.1:8888 |
|
|
|
|
|
ARG env=prod |
|
|
|
|
|
RUN bash -c "if [ $env == 'dev' ] ; then pip install jupyterlab ; fi" |
|
|
|
|
|
EXPOSE 8888 |
|
|
|
|
|
|
|
|
|
|
|
COPY ./app /app |
|
|
|
|
|
|
|
|
|
|
|
ENV PYTHONPATH=/app |
|
|
|
|
|
|
|
|
|
|
|
COPY ./app/tests-start.sh /tests-start.sh |
|
|
|
|
|
|
|
|
|
|
|
RUN chmod +x /tests-start.sh |
|
|
|
|
|
|
|
|
|
|
|
# This will make the container wait, doing nothing, but alive |
|
|
|
|
|
CMD ["bash", "-c", "while true; do sleep 1; done"] |
|
|
|
|
|
|
|
|
|
|
|
# Afterwards you can exec a command /tests-start.sh in the live container, like: |
|
|
|
|
|
# docker exec -it backend-tests /tests-start.sh |
|
|
|
|
@ -12,12 +12,6 @@ services: |
|
|
dockerfile: celeryworker.dockerfile |
|
|
dockerfile: celeryworker.dockerfile |
|
|
args: |
|
|
args: |
|
|
env: dev |
|
|
env: dev |
|
|
backend-tests: |
|
|
|
|
|
build: |
|
|
|
|
|
context: ./backend |
|
|
|
|
|
dockerfile: tests.dockerfile |
|
|
|
|
|
args: |
|
|
|
|
|
env: dev |
|
|
|
|
|
frontend: |
|
|
frontend: |
|
|
build: |
|
|
build: |
|
|
context: ./frontend |
|
|
context: ./frontend |
|
|
|
@ -9,7 +9,3 @@ services: |
|
|
- RUN=celery worker -A app.worker -l info -Q main-queue -c 1 |
|
|
- RUN=celery worker -A app.worker -l info -Q main-queue -c 1 |
|
|
- JUPYTER=jupyter lab --ip=0.0.0.0 --allow-root --NotebookApp.custom_display_url=http://127.0.0.1:8888 |
|
|
- JUPYTER=jupyter lab --ip=0.0.0.0 --allow-root --NotebookApp.custom_display_url=http://127.0.0.1:8888 |
|
|
- SERVER_HOST=http://${DOMAIN} |
|
|
- SERVER_HOST=http://${DOMAIN} |
|
|
backend-tests: |
|
|
|
|
|
environment: |
|
|
|
|
|
- JUPYTER=jupyter lab --ip=0.0.0.0 --allow-root --NotebookApp.custom_display_url=http://127.0.0.1:8888 |
|
|
|
|
|
- SERVER_HOST=http://${DOMAIN} |
|
|
|
|
|
|
@ -6,6 +6,3 @@ services: |
|
|
celeryworker: |
|
|
celeryworker: |
|
|
volumes: |
|
|
volumes: |
|
|
- ./backend/app:/app |
|
|
- ./backend/app:/app |
|
|
backend-tests: |
|
|
|
|
|
volumes: |
|
|
|
|
|
- ./backend/app:/app |
|
|
|
|
|
|
@ -11,9 +11,13 @@ services: |
|
|
environment: |
|
|
environment: |
|
|
- SERVER_NAME=${DOMAIN} |
|
|
- SERVER_NAME=${DOMAIN} |
|
|
- SERVER_HOST=https://${DOMAIN} |
|
|
- SERVER_HOST=https://${DOMAIN} |
|
|
|
|
|
# Allow explicit env var override for tests |
|
|
|
|
|
- SMTP_HOST=${SMTP_HOST} |
|
|
celeryworker: |
|
|
celeryworker: |
|
|
env_file: |
|
|
env_file: |
|
|
- .env |
|
|
- .env |
|
|
environment: |
|
|
environment: |
|
|
- SERVER_NAME=${DOMAIN} |
|
|
- SERVER_NAME=${DOMAIN} |
|
|
- SERVER_HOST=https://${DOMAIN} |
|
|
- SERVER_HOST=https://${DOMAIN} |
|
|
|
|
|
# Allow explicit env var override for tests |
|
|
|
|
|
- SMTP_HOST=${SMTP_HOST} |
|
|
|
@ -1,16 +0,0 @@ |
|
|
version: '3.3' |
|
|
|
|
|
services: |
|
|
|
|
|
backend-tests: |
|
|
|
|
|
build: |
|
|
|
|
|
context: ./backend |
|
|
|
|
|
dockerfile: tests.dockerfile |
|
|
|
|
|
command: bash -c "while true; do sleep 1; done" |
|
|
|
|
|
env_file: |
|
|
|
|
|
- .env |
|
|
|
|
|
environment: |
|
|
|
|
|
- SERVER_NAME=backend |
|
|
|
|
|
- SERVER_HOST=http://${DOMAIN} |
|
|
|
|
|
backend: |
|
|
|
|
|
environment: |
|
|
|
|
|
# Don't send emails during testing |
|
|
|
|
|
- SMTP_HOST= |
|
|
|
|
@ -9,7 +9,6 @@ if [ $(uname -s) = "Linux" ]; then |
|
|
fi |
|
|
fi |
|
|
|
|
|
|
|
|
docker-compose \ |
|
|
docker-compose \ |
|
|
-f docker-compose.test.yml \ |
|
|
|
|
|
-f docker-compose.shared.admin.yml \ |
|
|
-f docker-compose.shared.admin.yml \ |
|
|
-f docker-compose.shared.base-images.yml \ |
|
|
-f docker-compose.shared.base-images.yml \ |
|
|
-f docker-compose.shared.depends.yml \ |
|
|
-f docker-compose.shared.depends.yml \ |
|
|
|
@ -3,17 +3,16 @@ |
|
|
# Exit in case of error |
|
|
# Exit in case of error |
|
|
set -e |
|
|
set -e |
|
|
|
|
|
|
|
|
DOMAIN=backend \ |
|
|
DOMAIN=backend SMTP_HOST="" \ |
|
|
docker-compose \ |
|
|
docker-compose \ |
|
|
-f docker-compose.shared.base-images.yml \ |
|
|
-f docker-compose.shared.base-images.yml \ |
|
|
-f docker-compose.shared.env.yml \ |
|
|
-f docker-compose.shared.env.yml \ |
|
|
-f docker-compose.shared.depends.yml \ |
|
|
-f docker-compose.shared.depends.yml \ |
|
|
-f docker-compose.deploy.build.yml \ |
|
|
-f docker-compose.deploy.build.yml \ |
|
|
-f docker-compose.test.yml \ |
|
|
|
|
|
config > docker-stack.yml |
|
|
config > docker-stack.yml |
|
|
|
|
|
|
|
|
docker-compose -f docker-stack.yml build |
|
|
docker-compose -f docker-stack.yml build |
|
|
docker-compose -f docker-stack.yml down -v --remove-orphans # Remove possibly previous broken stacks left hanging after an error |
|
|
docker-compose -f docker-stack.yml down -v --remove-orphans # Remove possibly previous broken stacks left hanging after an error |
|
|
docker-compose -f docker-stack.yml up -d |
|
|
docker-compose -f docker-stack.yml up -d |
|
|
docker-compose -f docker-stack.yml exec -T backend-tests /tests-start.sh "$@" |
|
|
docker-compose -f docker-stack.yml exec -T backend bash /app/tests-start.sh "$@" |
|
|
docker-compose -f docker-stack.yml down -v --remove-orphans |
|
|
docker-compose -f docker-stack.yml down -v --remove-orphans |
|
|