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

.PHONY: check-build test-dev test dev setup alembic-update db build coverage clean
Andrew Kapuscinski's avatar
Andrew Kapuscinski committed
all: dev check-build
Andrew Kapuscinski's avatar
Andrew Kapuscinski committed
# install pre-commit and install hooks from .pre-commit-config.yaml
init:
	brew install pre-commit || sudo apt install pre-commit
Andrew Kapuscinski's avatar
Andrew Kapuscinski committed
	pre-commit install
	# Make sure pycapo gets built
	git submodule update --init --recursive
Andrew Kapuscinski's avatar
Andrew Kapuscinski committed
# Check if local code will pass CI build
check-build: 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
	docker exec workspaces-workflow-1 su vlapipe -c "./bin/run-tests.sh"
	docker exec workspaces-capability-1 ./bin/run-tests.sh
	docker exec workspaces-notification-1 ./bin/run-tests.sh
	docker exec workspaces-capability-1 ./bin/run-tests.sh
test_nf:
	docker exec workspaces-notification-1 ./bin/run-tests.sh


Andrew Kapuscinski's avatar
Andrew Kapuscinski committed
# Setup local development environment
	@echo "starting docker compose up in the background"
	@echo "wait a few seconds and your environment should be done setting up"
	docker compose -f docker-compose.local.yml up -d
	cd shared/workspaces/alembic; \
	env CAPO_PROFILE=local alembic upgrade head
Andrew Kapuscinski's avatar
Andrew Kapuscinski committed
docker-dev-images-locally:
	docker build -t nrao:workflow -f services/workflow/Dockerfile . --build-arg ENV=local
	docker build -t nrao:capability -f services/capability/Dockerfile . --build-arg ENV=local
	docker build -t nrao:notification -f services/notification/Dockerfile . --build-arg ENV=local
# Build DB image
db:
	docker build --no-cache -t ssa-containers.aoc.nrao.edu/ops/ci/db:workspaces -f ./ci/psql/Dockerfile.db .
	docker compose -f docker-compose.local.yml build --no-cache
	docker exec workspaces-workflow-1 ./bin/run-tests.sh -b
Andrew Kapuscinski's avatar
Andrew Kapuscinski committed
	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 --omit="**/test_*.py,**/_version.py,**/conftest.py,**/*interfaces.py" --skip-empty
# Clean up Docker environment
	docker-compose -f docker-compose.local.yml down || true
# remove nrao: labeled containers
	@docker container list --all | grep nrao: | awk '{ print $$1 }' | xargs docker container rm -f
# remove workspaces and nrao labeled images
	@docker images | grep 'workspaces\|nrao\|cache' | awk '{ print $$3 }' | xargs docker rmi -f
# remove the python egg-info and pytest_cache folders
	@find . \( -name "*.egg-info" -o -name ".pytest_cache" \) -exec rm -r {} \; || true

# Clean things up in a very nasty and destructive way that is sure to derail the rest of your afternoon
reallyclean: clean
	docker system prune --volumes -f
	docker volume prune --filter all=1 -f
Daniel Lyons's avatar
Daniel Lyons committed

# Make the documentation
Charlotte Hausman's avatar
Charlotte Hausman committed
.PHONY: docs godocs
docs: godocs
Daniel Lyons's avatar
Daniel Lyons committed
	cd docs && make html
Charlotte Hausman's avatar
Charlotte Hausman committed

godocs:
	./build_go_docs.sh
    docker build -t workflow:local -f services/workflow/Dockerfile . --build-arg ENV=local --target dev
    docker build -t workflow:local -f services/workflow/Dockerfile . --build-arg ENV=local --target dev
    docker build -t workflow:local -f services/workflow/Dockerfile . --build-arg ENV=local --target dev


poetrylockall: poetry-lock-pexes poetry-lock-utilities poetry-lock-shared poetry-lock-services

poetry-lock-pexes:
	cd apps/cli/executables/pexable/carta_envoy && poetry lock --no-update
	cd apps/cli/executables/pexable/casa_envoy && poetry lock --no-update
	cd apps/cli/executables/pexable/conveyor && poetry lock --no-update
	cd apps/cli/executables/pexable/data_annotator && poetry lock --no-update
	cd apps/cli/executables/pexable/deliver && poetry lock --no-update
	cd apps/cli/executables/pexable/ingest_envoy && poetry lock --no-update
	cd apps/cli/executables/pexable/mediator && poetry lock --no-update
	cd apps/cli/executables/pexable/null && poetry lock --no-update
	cd apps/cli/executables/pexable/productfetcher && poetry lock --no-update
	cd apps/cli/executables/pexable/update_stage && poetry lock --no-update
	cd apps/cli/executables/pexable/vela && poetry lock --no-update
	cd apps/cli/executables/pexable/wf_inspector && poetry lock --no-update
	cd apps/cli/executables/pexable/ws_annihilator && poetry lock --no-update
	cd apps/cli/executables/pexable/ws_metrics && poetry lock --no-update

poetry-lock-utilities:
	cd apps/cli/utilities/aat_wrest && poetry lock --no-update
	cd apps/cli/utilities/contacts_wrest && poetry lock --no-update
	cd apps/cli/utilities/core_sampler && poetry lock --no-update
	cd apps/cli/utilities/wf_monitor && poetry lock --no-update
	cd shared/messaging && poetry lock --no-update
	cd shared/workspaces && poetry lock --no-update
	cd services/capability && poetry lock --no-update
	cd services/notification && poetry lock --no-update
	cd services/workflow && poetry lock --no-update