Skip to content
Snippets Groups Projects
Makefile 2.52 KiB
Newer Older
Daniel Lyons's avatar
Daniel Lyons committed
SHELL := /bin/bash

.PHONY: check-build test-dev test dev setup alembic-update docker-base build coverage clean
Andrew Kapuscinski's avatar
Andrew Kapuscinski committed
all: dev check-build
Andrew Kapuscinski's avatar
Andrew Kapuscinski committed
# Check if local code will pass CI build
check-build: docker-base docker-dev-images-locally test-dev
test-dev:
	docker run nrao:workflow ./bin/run-tests.sh
	docker run nrao:capability ./bin/run-tests.sh
	docker run nrao:notification ./bin/run-tests.sh
test:
	docker exec workspaces_workflow_1 ./bin/run-tests.sh
	docker exec workspaces_capability_1 ./bin/run-tests.sh
	docker exec workspaces_notification_1 ./bin/run-tests.sh
Andrew Kapuscinski's avatar
Andrew Kapuscinski committed
# Setup local development environment
dev: docker-base
setup:
	docker exec workspaces_capability_1 /bin/bash -c 'python -m pip install -r requirements.txt'
	docker exec workspaces_capability_1 /bin/bash -c 'python -m pip install -e .'
	docker exec workspaces_workflow_1 /bin/bash -c 'python -m pip install -r requirements.txt'
	docker exec workspaces_workflow_1 /bin/bash -c 'python -m pip install -e .'
	docker exec workspaces_notification_1 /bin/bash -c 'python -m pip install -r requirements.txt'
	docker exec workspaces_notification_1 /bin/bash -c 'python -m pip install -e .'
	docker-compose restart

alembic-update:
	cd schema; \
	env CAPO_PROFILE=local alembic upgrade head
Andrew Kapuscinski's avatar
Andrew Kapuscinski committed
# Build images from Dockerfile.dev
docker-dev-images-locally:
	docker build -t nrao:workflow -f services/workflow/Dockerfile.local . --build-arg capo_env=docker
	docker build -t nrao:capability -f services/capability/Dockerfile.local . --build-arg capo_env=docker
	docker build -t nrao:notification -f services/notification/Dockerfile.local . --build-arg capo_env=docker
Andrew Kapuscinski's avatar
Andrew Kapuscinski committed
# Build base image
	docker build -t marconi.aoc.nrao.edu/ops/base:workspaces -f Dockerfile.base .
# Build docker images
build: docker-base
	docker-compose build --no-cache
# Generate HTML coverage report
coverage:
	docker exec workspaces_workflow_1 ./bin/run-tests.sh -b
	cp services/workflow/.coverage ./.coverage.wf 
	docker exec workspaces_capability_1 ./bin/run-tests.sh -b
	cp services/capability/.coverage ./.coverage.cap
	docker exec workspaces_notification_1 ./bin/run-tests.sh -b
	cp services/notification/.coverage ./.coverage.no
	coverage combine --append
	coverage html

# Clean up environment
clean:
	# Clean up Docker environment
	docker-compose down
	-docker images -aq | xargs docker rmi
	docker system prune --volumes -af
	docker volume prune -f
	# Delete Python cache directories
	find . \( -name "*.egg-info" -o -name ".pytest_cache" \) | xargs rm -r