generated from ks6088ts/template-python
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
140 lines (110 loc) · 3.33 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
# Git
GIT_REVISION ?= $(shell git rev-parse --short HEAD)
GIT_TAG ?= $(shell git describe --tags --abbrev=0 --always | sed -e s/v//g)
.PHONY: help
help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
.DEFAULT_GOAL := help
.PHONY: info
info: ## show information
@echo "GIT_REVISION: $(GIT_REVISION)"
@echo "GIT_TAG: $(GIT_TAG)"
.PHONY: install-deps-dev
install-deps-dev: ## install dependencies for development
poetry install
poetry run pre-commit install
.PHONY: install-deps
install-deps: ## install dependencies for production
poetry install --without dev
.PHONY: format-check
format-check: ## format check
poetry run ruff format --check --verbose
.PHONY: format
format: ## format code
poetry run ruff format --verbose
.PHONY: fix
fix: format ## apply auto-fixes
poetry run ruff check --fix
.PHONY: lint
lint: ## lint
poetry run ruff check .
.PHONY: test
test: ## run tests
poetry run pytest --capture=no -vv
.PHONY: ci-test
ci-test: install-deps-dev format-check lint test ## run CI tests
# ---
# Docker
# ---
DOCKER_REPO_NAME ?= ks6088ts
DOCKER_IMAGE_NAME ?= workshop-azure-iot
DOCKER_COMMAND ?=
# Tools
TOOLS_DIR ?= $(HOME)/.local/bin
TRIVY_VERSION ?= 0.56.2
.PHONY: docker-build
docker-build: ## build Docker image
docker build \
-t $(DOCKER_REPO_NAME)/$(DOCKER_IMAGE_NAME):$(GIT_TAG) \
--build-arg GIT_REVISION=$(GIT_REVISION) \
--build-arg GIT_TAG=$(GIT_TAG) \
.
.PHONY: docker-run
docker-run: ## run Docker container
docker run --rm \
-v $(PWD)/ai_services.env:/app/ai_services.env \
-v $(PWD)/blob_storage.env:/app/blob_storage.env \
-v $(PWD)/core.env:/app/core.env \
-v $(PWD)/iot_hub.env:/app/iot_hub.env \
-p 8000:8000 \
$(DOCKER_REPO_NAME)/$(DOCKER_IMAGE_NAME):$(GIT_TAG) \
$(DOCKER_COMMAND)
.PHONY: docker-lint
docker-lint: ## lint Dockerfile
docker run --rm -i hadolint/hadolint < Dockerfile
.PHONY: docker-scan
docker-scan: ## scan Docker image
@# https://aquasecurity.github.io/trivy/v0.18.3/installation/#install-script
@which trivy || curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b $(TOOLS_DIR) v$(TRIVY_VERSION)
trivy image $(DOCKER_REPO_NAME)/$(DOCKER_IMAGE_NAME):$(GIT_TAG)
.PHONY: ci-test-docker
ci-test-docker: docker-lint docker-build docker-scan ## run CI test for Docker
# ---
# Docs
# ---
DEV_ADDR ?= localhost:8080
.PHONY: docs
docs: ## build documentation
poetry run mkdocs build
.PHONY: docs-serve
docs-serve: ## serve documentation
poetry run mkdocs serve --dev-addr $(DEV_ADDR)
.PHONY: ci-test-docs
ci-test-docs: docs ## run CI test for documentation
# ---
# Azure Functions
# ---
.PHONY: azure-functions
azure-functions: ## run Azure Functions locally
@poetry run func start --verbose
.PHONY: azure-functions-deploy
azure-functions-deploy: ## deploy Azure Functions
@sh scripts/deploy_azure_functions_resources.sh
.PHONY: azure-functions-publish
azure-functions-publish: ## publish Azure Functions
@sh scripts/publish_azure_functions.sh
# ---
# Project
# ---
.PHONY: server
server: ## run server
poetry run uvicorn workshop_azure_iot.core:app \
--host 0.0.0.0 \
--port 8000 \
--reload
.PHONY: env
env: ## create env files
@sh scripts/create_env_files.sh
.PHONY: mosquitto
mosquitto: ## run mosquitto
cd configs/mosquitto && mosquitto -c tls.conf