Skip to content
Snippets Groups Projects
  • Daniel Ecer's avatar
    refactored docker build (#394) · 53327b3a
    Daniel Ecer authored
    * using single dockerfile
    
    * updated docker compose config version
    
    * refactored dockerfile
    
    * calling dev tools via python module
    
    * removed install_dev argument
    
    * fixed DOCKER_DEV_RUN placeholder
    
    * minor refactory of apt-get command
    
    * using builder image
    
    * updated nltk data directory
    Unverified
    53327b3a
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Makefile 2.62 KiB
DOCKER_COMPOSE_DEV = docker-compose
DOCKER_COMPOSE_CI = docker-compose -f docker-compose.yml
DOCKER_COMPOSE = $(DOCKER_COMPOSE_DEV)

VENV = venv
PIP = $(VENV)/bin/pip
PYTHON = $(VENV)/bin/python

DOCKER_DEV_RUN = $(DOCKER_COMPOSE) run --rm sciencebeam-gym-dev
DOCKER_DEV_PYTHON = $(DOCKER_DEV_RUN) python

NOT_SLOW_PYTEST_ARGS = -m 'not slow'

ARGS =
PORT = 8080


.PHONY: all build


venv-clean:
	@if [ -d "$(VENV)" ]; then \
		rm -rf "$(VENV)"; \
	fi


venv-create:
	python3 -m venv $(VENV)


dev-install:
	$(PIP) install -r requirements.build.txt
	$(PIP) install \
		-r requirements.prereq.txt \
		-r requirements.txt \
		-r requirements.dev.txt


dev-nltk-download-models:
	$(PYTHON) -m nltk.downloader punkt


dev-venv: venv-create dev-install dev-nltk-download-models


dev-flake8:
	$(PYTHON) -m flake8 sciencebeam_gym tests setup.py


dev-pylint:
	$(PYTHON) -m pylint sciencebeam_gym tests setup.py


dev-mypy:
	$(PYTHON) -m mypy --ignore-missing-imports sciencebeam_gym tests setup.py $(ARGS)


dev-lint: dev-flake8 dev-pylint dev-mypy


dev-pytest:
	$(PYTHON) -m pytest -p no:cacheprovider $(ARGS)


.dev-watch:
	$(PYTHON) -m pytest_watch -- -p no:cacheprovider -p no:warnings $(ARGS)


dev-watch-slow:
	@$(MAKE) .dev-watch


dev-watch:
	@$(MAKE) ARGS="$(ARGS) $(NOT_SLOW_PYTEST_ARGS)" .dev-watch


dev-test: dev-lint dev-pytest


build:
	$(DOCKER_COMPOSE) build sciencebeam-gym


build-dev:
	$(DOCKER_COMPOSE) build sciencebeam-gym-dev


pylint:
	$(DOCKER_DEV_PYTHON) -m pylint sciencebeam_gym tests setup.py


flake8:
	$(DOCKER_DEV_PYTHON) -m flake8 sciencebeam_gym tests setup.py


mypy:
	$(DOCKER_DEV_PYTHON) -m mypy --ignore-missing-imports sciencebeam_gym tests setup.py


lint: \
	flake8 \
	pylint \
	mypy


pytest: build-dev
	$(DOCKER_DEV_PYTHON) -m pytest $(ARGS)


pytest-not-slow: build-dev
	@$(MAKE) ARGS="$(ARGS) $(NOT_SLOW_PYTEST_ARGS)" pytest


test: \
	lint \
	pytest \


.require-AUTOCUT_MODEL_PATH:
	@if [ -z "$(AUTOCUT_MODEL_PATH)" ]; then \
		echo "AUTOCUT_MODEL_PATH required"; \
		exit 1; \
	fi


shell-dev:
	$(DOCKER_COMPOSE) run --rm sciencebeam-gym bash


autocut-start: .require-AUTOCUT_MODEL_PATH build
	$(DOCKER_COMPOSE) run --rm \
	-v "$(AUTOCUT_MODEL_PATH):/tmp/model.pkl" \
	-e "AUTOCUT_MODEL_PATH=/tmp/model.pkl" \
	-p $(PORT):8080 \
	sciencebeam-gym \
	start-autocut.sh


autocut-start-cloud: .require-AUTOCUT_MODEL_PATH build
	$(DOCKER_COMPOSE) run --rm \
	-v $$HOME/.config/gcloud:/root/.config/gcloud \
	-e "AUTOCUT_MODEL_PATH=$(AUTOCUT_MODEL_PATH)" \
	-p $(PORT):8080 \
	sciencebeam-gym \
	start-autocut.sh


ci-build-and-test:
	make DOCKER_COMPOSE="$(DOCKER_COMPOSE_CI)" \
		build build-dev test


ci-clean:
	$(DOCKER_COMPOSE_CI) down -v