infra: added orchestration and app bootstrap (.env)
This commit is contained in:
115
Makefile
115
Makefile
@@ -1,48 +1,37 @@
|
||||
.DEFAULT_GOAL := help
|
||||
|
||||
# --- Config ---
|
||||
export IMAGE_NAME := alfred_media_organizer
|
||||
export LIBRECHAT_VERSION := v0.8.1
|
||||
export PYTHON_VERSION := 3.14.2
|
||||
export PYTHON_VERSION_SHORT := 3.14
|
||||
export RAG_VERSION := v0.7.0
|
||||
export RUNNER := poetry
|
||||
export SERVICE_NAME := alfred
|
||||
# --- Load Config from pyproject.toml ---
|
||||
-include .env.make
|
||||
|
||||
# --- Profiles management ---
|
||||
# Usage: make up p=rag,meili
|
||||
p ?= core
|
||||
PROFILES_PARAM := COMPOSE_PROFILES=$(p)
|
||||
|
||||
# --- Commands ---
|
||||
CLI := python3 cli.py
|
||||
DOCKER_COMPOSE := docker compose
|
||||
DOCKER_BUILD := docker build \
|
||||
DOCKER_BUILD := docker build --no-cache \
|
||||
--build-arg PYTHON_VERSION=$(PYTHON_VERSION) \
|
||||
--build-arg PYTHON_VERSION_SHORT=$(PYTHON_VERSION_SHORT) \
|
||||
--build-arg RUNNER=$(RUNNER)
|
||||
|
||||
# --- Phony ---
|
||||
.PHONY: setup status check
|
||||
.PHONY: up down restart logs ps shell
|
||||
.PHONY: build build-test
|
||||
.PHONY: install update install-hooks
|
||||
.PHONY: test coverage lint format clean prune
|
||||
.PHONY: major minor patch
|
||||
.PHONY: help
|
||||
.PHONY: .env up down restart logs ps shell build build-test install update \
|
||||
install-hooks test coverage lint format clean major minor patch help
|
||||
|
||||
# --- Setup ---
|
||||
setup:
|
||||
.env .env.make:
|
||||
@echo "Initializing environment..."
|
||||
@$(CLI) setup \
|
||||
&& echo "✓ Environment ready" \
|
||||
|| (echo "✗ Setup failed" && exit 1)
|
||||
@python scripts/bootstrap.py \
|
||||
&& echo "✓ Environment ready" \
|
||||
|| (echo "✗ Environment setup failed" && exit 1)
|
||||
|
||||
status:
|
||||
@$(CLI) status
|
||||
|
||||
check:
|
||||
@$(CLI) check
|
||||
bootstrap: .env .env.make
|
||||
|
||||
# --- Docker ---
|
||||
up: check
|
||||
@echo "Starting containers..."
|
||||
@$(DOCKER_COMPOSE) up -d --remove-orphans \
|
||||
up: .env
|
||||
@echo "Starting containers with profiles: [$(p)]..."
|
||||
@$(PROFILES_PARAM) $(DOCKER_COMPOSE) up -d --remove-orphans \
|
||||
&& echo "✓ Containers started" \
|
||||
|| (echo "✗ Failed to start containers" && exit 1)
|
||||
|
||||
@@ -54,30 +43,30 @@ down:
|
||||
|
||||
restart:
|
||||
@echo "Restarting containers..."
|
||||
@$(DOCKER_COMPOSE) restart \
|
||||
@$(PROFILES_PARAM) $(DOCKER_COMPOSE) restart \
|
||||
&& echo "✓ Containers restarted" \
|
||||
|| (echo "✗ Failed to restart containers" && exit 1)
|
||||
|
||||
logs:
|
||||
@echo "Following logs (Ctrl+C to exit)..."
|
||||
@$(DOCKER_COMPOSE) logs -f
|
||||
@$(PROFILES_PARAM) $(DOCKER_COMPOSE) logs -f
|
||||
|
||||
ps:
|
||||
@echo "Container status:"
|
||||
@$(DOCKER_COMPOSE) ps
|
||||
@$(PROFILES_PARAM) $(DOCKER_COMPOSE) ps
|
||||
|
||||
shell:
|
||||
@echo "Opening shell in $(SERVICE_NAME)..."
|
||||
@$(DOCKER_COMPOSE) exec $(SERVICE_NAME) /bin/bash
|
||||
|
||||
# --- Build ---
|
||||
build: check
|
||||
build: .env.make
|
||||
@echo "Building image $(IMAGE_NAME):latest ..."
|
||||
@$(DOCKER_BUILD) -t $(IMAGE_NAME):latest . \
|
||||
&& echo "✓ Build complete" \
|
||||
|| (echo "✗ Build failed" && exit 1)
|
||||
|
||||
build-test: check
|
||||
build-test: .env.make
|
||||
@echo "Building test image $(IMAGE_NAME):test..."
|
||||
@$(DOCKER_BUILD) --target test -t $(IMAGE_NAME):test . \
|
||||
&& echo "✓ Test image built" \
|
||||
@@ -90,18 +79,18 @@ install:
|
||||
&& echo "✓ Dependencies installed" \
|
||||
|| (echo "✗ Installation failed" && exit 1)
|
||||
|
||||
update:
|
||||
@echo "Updating dependencies with $(RUNNER)..."
|
||||
@$(RUNNER) update \
|
||||
&& echo "✓ Dependencies updated" \
|
||||
|| (echo "✗ Update failed" && exit 1)
|
||||
|
||||
install-hooks:
|
||||
@echo "Installing pre-commit hooks..."
|
||||
@$(RUNNER) run pre-commit install \
|
||||
&& echo "✓ Hooks installed" \
|
||||
|| (echo "✗ Hook installation failed" && exit 1)
|
||||
|
||||
update:
|
||||
@echo "Updating dependencies with $(RUNNER)..."
|
||||
@$(RUNNER) update \
|
||||
&& echo "✓ Dependencies updated" \
|
||||
|| (echo "✗ Update failed" && exit 1)
|
||||
|
||||
# --- Quality ---
|
||||
test:
|
||||
@echo "Running tests..."
|
||||
@@ -133,12 +122,6 @@ clean:
|
||||
@find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
|
||||
@echo "✓ Cleanup complete"
|
||||
|
||||
prune:
|
||||
@echo "Pruning Docker system..."
|
||||
@docker system prune -af \
|
||||
&& echo "✓ Docker pruned" \
|
||||
|| (echo "✗ Prune failed" && exit 1)
|
||||
|
||||
# --- Versioning ---
|
||||
major minor patch: _check-main
|
||||
@echo "Bumping $@ version..."
|
||||
@@ -151,6 +134,7 @@ major minor patch: _check-main
|
||||
&& echo "✓ Tags pushed" \
|
||||
|| (echo "✗ Push failed" && exit 1)
|
||||
|
||||
# CI/CD helpers
|
||||
_ci-dump-config:
|
||||
@echo "image_name=$(IMAGE_NAME)"
|
||||
@echo "python_version=$(PYTHON_VERSION)"
|
||||
@@ -173,31 +157,26 @@ _check-main:
|
||||
|
||||
# --- Help ---
|
||||
help:
|
||||
@echo "Usage: make [target]"
|
||||
@echo "Cleverly Crafted Unawareness - Management Commands"
|
||||
@echo ""
|
||||
@echo "Setup:"
|
||||
@echo " setup Initialize .env"
|
||||
@echo " status Show project status"
|
||||
@echo "Usage: make [target] [p=profile1,profile2]"
|
||||
@echo ""
|
||||
@echo "Docker:"
|
||||
@echo " up Start containers"
|
||||
@echo " down Stop containers"
|
||||
@echo " restart Restart containers"
|
||||
@echo " logs Follow logs"
|
||||
@echo " ps Container status"
|
||||
@echo " shell Shell into container"
|
||||
@echo " build Build image"
|
||||
@echo " up Start containers (default profile: core)"
|
||||
@echo " Example: make up p=rag,meili"
|
||||
@echo " down Stop all containers"
|
||||
@echo " restart Restart containers (supports p=...)"
|
||||
@echo " logs Follow logs (supports p=...)"
|
||||
@echo " ps Status of containers"
|
||||
@echo " shell Open bash in the core container"
|
||||
@echo " build Build the production Docker image"
|
||||
@echo ""
|
||||
@echo "Dev:"
|
||||
@echo " install Install dependencies"
|
||||
@echo " update Update dependencies"
|
||||
@echo " test Run tests"
|
||||
@echo " coverage Run tests with coverage"
|
||||
@echo " lint Lint code"
|
||||
@echo " format Format code"
|
||||
@echo " clean Clean artifacts"
|
||||
@echo "Dev & Quality:"
|
||||
@echo " setup Bootstrap .env and security keys"
|
||||
@echo " install Install dependencies via $(RUNNER)"
|
||||
@echo " test Run pytest suite"
|
||||
@echo " coverage Run tests and generate HTML report"
|
||||
@echo " lint/format Quality and style checks"
|
||||
@echo ""
|
||||
@echo "Release:"
|
||||
@echo " patch Bump patch version"
|
||||
@echo " minor Bump minor version"
|
||||
@echo " major Bump major version"
|
||||
@echo " major|minor|patch Bump version and push tags (main branch only)"
|
||||
|
||||
Reference in New Issue
Block a user