feat: implement comprehensive release process and automation (issue #81)

- Add complete release automation script (release.py) with version management
- Add semantic versioning validation and git integration
- Create automated changelog generation from git commits
- Add comprehensive Makefile targets for release workflow
- Set up package building with source and wheel distributions
- Add git tagging and repository management
- Create extensive release documentation (RELEASE.md)
- Add CHANGELOG.md with standardized format
- Update dependencies in pyproject.toml (add toml package)

Release commands added:
- make release-status - Show current release status
- make release-validate - Validate repository for release
- make release-prepare VERSION=x.y.z - Prepare new release
- make release-build - Build release packages
- make release-publish VERSION=x.y.z - Complete release workflow
- make release-dry-run VERSION=x.y.z - Test release preparation

Features:
- Semantic versioning with pre-release support
- Automated version updates across files
- Git status validation and branch checking
- Test execution validation
- Package building with build tool integration
- Git tagging with proper annotations
- Comprehensive error handling and validation

Resolves #81

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-10-03 06:07:10 +02:00
parent 8e6ba272ca
commit 9270a2e353
5 changed files with 934 additions and 2 deletions

View File

@@ -1,7 +1,7 @@
# MarkiTect - Advanced Markdown Engine
# Makefile for common development tasks
.PHONY: help setup install test build clean update status dev lint format check-deps venv-status update-digest add-diary-entry list-issues show-issue list-open-issues close-issue close-issue-enhanced close-issues-batch test-from-issue tdd-start tdd-add-test tdd-finish tdd-status test-status test-new test-coverage test-arch test-foundation test-infrastructure test-integration test-domain test-service test-application test-presentation test-quick test-layers test-random test-random-seed test-random-repeat test-install-randomly test-clean test-tdd test-changed test-module test-cache-clean test-efficient cli-help
.PHONY: help setup install test build clean update status dev lint format check-deps venv-status update-digest add-diary-entry list-issues show-issue list-open-issues close-issue close-issue-enhanced close-issues-batch test-from-issue tdd-start tdd-add-test tdd-finish tdd-status test-status test-new test-coverage test-arch test-foundation test-infrastructure test-integration test-domain test-service test-application test-presentation test-quick test-layers test-random test-random-seed test-random-repeat test-install-randomly test-clean test-tdd test-changed test-module test-cache-clean test-efficient cli-help release-status release-validate release-prepare release-build release-publish release-dry-run
# Default target
help:
@@ -26,6 +26,14 @@ help:
@echo " lint - Run code linting"
@echo " format - Format code"
@echo ""
@echo "Release Management:"
@echo " release-status - Show current release status"
@echo " release-validate - Validate repository for release"
@echo " release-prepare VERSION=x.y.z - Prepare new release"
@echo " release-build - Build release packages"
@echo " release-publish VERSION=x.y.z - Publish complete release"
@echo " release-dry-run VERSION=x.y.z - Test release preparation"
@echo ""
@echo "Architectural Testing:"
@echo " test-arch - Run all tests in architectural order"
@echo " test-foundation - Run foundation layer tests only"
@@ -200,6 +208,43 @@ build: $(VENV)/bin/activate
$(VENV_PYTHON) -m build 2>/dev/null || \
$(VENV_PIP) install build && $(VENV_PYTHON) -m build
# Release management
release-status:
@echo "🔍 Checking release status..."
$(VENV_PYTHON) release.py status
release-validate:
@echo "✅ Validating release readiness..."
$(VENV_PYTHON) release.py validate
release-prepare:
@echo "🚀 Preparing release..."
@if [ -z "$(VERSION)" ]; then \
echo "❌ Usage: make release-prepare VERSION=1.0.0"; \
exit 1; \
fi
$(VENV_PYTHON) release.py prepare --version $(VERSION)
release-build:
@echo "📦 Building release packages..."
$(VENV_PYTHON) release.py build $(if $(VERSION),--version $(VERSION))
release-publish:
@echo "📢 Publishing release..."
@if [ -z "$(VERSION)" ]; then \
echo "❌ Usage: make release-publish VERSION=1.0.0"; \
exit 1; \
fi
$(VENV_PYTHON) release.py publish --version $(VERSION)
release-dry-run:
@echo "🧪 Dry run release preparation..."
@if [ -z "$(VERSION)" ]; then \
echo "❌ Usage: make release-dry-run VERSION=1.0.0"; \
exit 1; \
fi
$(VENV_PYTHON) release.py prepare --version $(VERSION) --dry-run
# Code linting
lint: $(VENV)/bin/activate
@echo "🔍 Running linting..."