-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathMakefile
More file actions
132 lines (105 loc) · 4.39 KB
/
Makefile
File metadata and controls
132 lines (105 loc) · 4.39 KB
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
.PHONY: install
install: ## Install the poetry environment and install the pre-commit hooks
@echo "🚀 Creating virtual environment using uv"
@uv sync --all-groups --all-extras
@uv run pre-commit install
@uv run epi prisma generate
.PHONY: clean-env
clean-env: ## Clean the uv environment
@echo "🚀 Removing .venv directory created by uv (if exists)"
@rm -rf .venv
.PHONY: check
check: ## Run code quality tools.
@echo "🚀 Checking lock file consistency with 'pyproject.toml'"
@uv lock --locked
@echo "🚀 Linting code: Running pre-commit"
@uv run pre-commit run -a
@echo "🚀 Static type checking: Running pyright"
@uv run pyright
.PHONY: test
test: ## Test the code with pytest
@echo "🚀 Testing code: Running pytest"
@uv run pytest --cov --cov-config=pyproject.toml --cov-report=xml
.PHONY: build
build: clean-build ## Build wheel file
@echo "🚀 Creating wheel file"
@uvx --from build pyproject-build --installer uv
.PHONY: clean-build
clean-build: ## Clean build artifacts
@echo "🚀 Removing build artifacts"
@uv run python -c "import shutil; import os; shutil.rmtree('dist') if os.path.exists('dist') else None"
.PHONY: publish
publish: ## Publish a release to PyPI.
@echo "🚀 Publishing."
@uvx twine upload --repository-url https://upload.pypi.org/legacy/ dist/*
.PHONY: build-and-publish
build-and-publish: build publish ## Build and publish.
.PHONY: docs-test
docs-test: ## Test if documentation can be built without warnings or errors
@uv run mkdocs build -s
.PHONY: docs
docs: ## Build and serve the documentation
@uv run mkdocs serve
.PHONY: docs-deploy
docs-deploy: ## Build and serve the documentation
@uv run mkdocs gh-deploy
.PHONY: down
down: ## Stop the docker-compose services
@docker compose down --remove-orphans
.PHONY: worker
worker: ## Start the worker
@make down
@docker compose -f docker-compose.yml up -d worker --build --remove-orphans
.PHONY: workers
workers: ## Start the workers with replicas
@make down
@docker compose -f docker-compose.yml -f docker-compose.replicas.yml up -d worker --build --remove-orphans
.PHONY: worker-push
worker-push: ## Push the worker to the workers
@make docker-login
@docker compose -f docker-compose.yml build worker
@docker compose -f docker-compose.yml push worker
.PHONY: worker-it
worker-it: ## Run the worker in interactive mode
@docker compose exec -it worker /bin/bash
.PHONY: prod
prod: ## Start the docker compose services with the api and worker
@make down
@docker compose -f docker-compose.yml up -d api worker --build
.PHONY: hatchet-token
hatchet-token: ## Start the hatchet service and generate a token
@docker compose -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.hatchet.yml up -d hatchet-lite
@echo ----
@echo Append the following lines to your .env.dev file:
@echo HATCHET_CLIENT_TOKEN=${shell docker compose -f docker-compose.yml -f docker-compose.hatchet.yml exec hatchet-lite /hatchet-admin token create --config /config --tenant-id 707d0855-80ab-4e1f-a156-f1c4546cbf52}
@echo HATCHET_CLIENT_TLS_STRATEGY=none
@echo ----
@echo Your login info for the Hatchet web UI is:
@echo Username: admin@example.com
@echo Password: Admin123!!
.PHONY: dev
dev: ## Start the docker compose services with the api and worker along with moto
@make down
@docker compose up --build
.PHONY: dev-with-hatchet
dev-with-hatchet: ## Start the docker compose services with the api and worker along with moto
@make down
@docker compose -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.hatchet.yml up --build
.PHONY: docker-login
docker-login: ## Login to aws docker ecr
@aws ecr get-login-password --region ${AWS_REGION} | docker login --username AWS --password-stdin $(AWS_ACCOUNT_ID).dkr.ecr.${AWS_REGION}.amazonaws.com
.PHONY: dozzle
dozzle: ## run the dozzle logs container
@docker run --detach --volume=/var/run/docker.sock:/var/run/docker.sock -p 9090:8080 amir20/dozzle
.PHONY: help
help:
@uv run python -c "import re; \
[[print(f'\033[36m{m[0]:<20}\033[0m {m[1]}') for m in re.findall(r'^([a-zA-Z_-]+):.*?## (.*)$$', open(makefile).read(), re.M)] for makefile in ('$(MAKEFILE_LIST)').strip().split()]"
.PHONY: create-copilot-app
create-copilot-app: ## Create the entire stack with copilot
@copilot app init
@copilot env init --name prod
@copilot env deploy --name prod
@copilot secret init --name HATCHET_CLIENT_TOKEN
@copilot deploy --init-wkld --env prod --all
.DEFAULT_GOAL := help