This repository has been archived by the owner on May 7, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Makefile
148 lines (118 loc) · 3.56 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#* Variables
SHELL := /usr/bin/env bash
PYTHON := python
#* Docker variables
IMAGE := docker.io/giskardai/ml-worker
VERSION := dev
.PHONY: all
all: clean init-submodules poetry-download install-dependencies generate-proto test
#* Poetry
.PHONY: init-submodules
init-submodules:
git submodule update --init --recursive -q
#* Poetry
.PHONY: poetry-download
poetry-download:
curl -sSL https://install.python-poetry.org | $(PYTHON) -
.PHONY: poetry-remove
poetry-remove:
curl -sSL https://install.python-poetry.org | $(PYTHON) - --uninstall
.PHONY: install-dependencies
install-dependencies:
poetry install
#* Installation
.PHONY: install
install: install-dependencies generate-proto
.PHONY: build
build: install
poetry build
GENERATED_OUT:=giskard/ml_worker/generated
.PHONY: generate-proto
generate-proto: proto-remove
rm -rf $(GENERATED_OUT) && mkdir -p $(GENERATED_OUT) && \
source .venv/bin/activate && \
python -m grpc_tools.protoc \
-Iml-worker-proto/proto \
--python_out=$(GENERATED_OUT) \
--grpc_python_out=$(GENERATED_OUT) \
--mypy_out=$(GENERATED_OUT) \
--mypy_grpc_out=$(GENERATED_OUT) \
ml-worker-proto/proto/ml-worker.proto && \
python scripts/fix_grpc_generated_imports.py $(GENERATED_OUT) giskard.ml_worker.generated
.PHONY: proto-remove
proto-remove:
rm -rf $(GENERATED_OUT)
.PHONY: pre-commit-install
pre-commit-install:
poetry run pre-commit install
#* Formatters
.PHONY: codestyle
codestyle:
poetry run pyupgrade --exit-zero-even-if-changed --py37-plus **/*.py
poetry run isort --settings-path pyproject.toml ./
poetry run black --config pyproject.toml ./
.PHONY: formatting
formatting: codestyle
.PHONY: test
test:
poetry run pytest -c pyproject.toml --cov=giskard tests --cov-report=xml
.PHONY: test-cov-html
test-cov-html:
poetry run pytest -c pyproject.toml --cov=giskard tests --cov-report=html
.PHONY: check-codestyle
check-codestyle:
poetry run isort --diff --check-only --settings-path pyproject.toml ./
poetry run black --diff --check --config pyproject.toml ./
poetry run darglint --verbosity 2 giskard tests
.PHONY: mypy
mypy:
poetry run mypy --config-file pyproject.toml ./
.PHONY: check-safety
check-safety:
poetry check
poetry run safety check --full-report
poetry run bandit -ll --recursive giskard tests
.PHONY: lint
lint: test check-codestyle mypy check-safety
#* Docker
# Example: make docker VERSION=dev
# Example: make docker IMAGE=some_name VERSION=0.1.0
.PHONY: docker-build
docker-build:
@echo Building docker $(IMAGE):$(VERSION) ...
docker build --platform linux/amd64 \
-t $(IMAGE):$(VERSION) . \
-f ./docker/Dockerfile
.PHONY: docker-build
docker-build-nocache:
@echo Building docker $(IMAGE):$(VERSION) ...
docker build \
-t $(IMAGE):$(VERSION) . \
-f ./docker/Dockerfile --no-cache
# Example: make clean_docker VERSION=dev
# Example: make clean_docker IMAGE=some_name VERSION=0.1.0
.PHONY: docker-remove
docker-remove:
@echo Removing docker $(IMAGE):$(VERSION) ...
docker rmi -f $(IMAGE):$(VERSION)
# Example: make clean_docker VERSION=dev
# Example: make clean_docker IMAGE=some_name VERSION=0.1.0
.PHONY: docker-push
docker-push:
@echo Pushing docker $(IMAGE):$(VERSION) ...
docker image push $(IMAGE):$(VERSION)
#* Cleaning
.PHONY: pycache-remove
pycache-remove:
find . | grep -E "(__pycache__|\.pyc|\.pyo$$)" | xargs rm -rf
#* Cleaning
.PHONY: coverage-remove
coverage-remove:
rm -rf htmlcov coverage.xml
.PHONY: build-remove
build-remove:
rm -rf build dist
.PHONY: clean
clean: pycache-remove build-remove proto-remove coverage-remove
.PHONY: clean-all
clean-all: clean docker-remove