- Move release management to capabilities/release-management/ with complete Makefile - Create automatic capability discovery system in scripts/capability_discovery.mk - Add capability-manager subagent for managing modular architecture - Implement target delegation system enabling capability-name-target patterns - Create Makefiles for markitect-content, markitect-utils, and issue-facade capabilities - Remove legacy release management code and documentation from main project - Update main Makefile to use capability discovery and delegation - Add comprehensive capability status, help, and management targets The capability system provides: - Automatic discovery of capabilities with Makefiles - Clean target delegation without conflicts - Modular architecture following established patterns - Comprehensive help and status reporting - Zero-conflict capability integration 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
236 lines
7.9 KiB
Makefile
236 lines
7.9 KiB
Makefile
# Release Management Makefile Integration
|
|
# Include this file in your main Makefile to add release management capabilities
|
|
#
|
|
# Usage: include capabilities/release-management/release.mk
|
|
|
|
# Release Management Variables
|
|
RELEASE_MANAGEMENT_PATH := capabilities/release-management
|
|
RELEASE_CLI := release
|
|
|
|
# Check if release management capability is available
|
|
RELEASE_AVAILABLE := $(shell command -v $(RELEASE_CLI) 2> /dev/null)
|
|
|
|
# Release Status and Information
|
|
.PHONY: release-status
|
|
release-status: ## Show current release status and version information
|
|
ifndef RELEASE_AVAILABLE
|
|
@echo "❌ Release management capability not installed"
|
|
@echo " Install with: pip install -e $(RELEASE_MANAGEMENT_PATH)/"
|
|
@exit 1
|
|
endif
|
|
$(RELEASE_CLI) status
|
|
|
|
.PHONY: release-validate
|
|
release-validate: ## Validate repository state for release readiness
|
|
ifndef RELEASE_AVAILABLE
|
|
@echo "❌ Release management capability not installed"
|
|
@exit 1
|
|
endif
|
|
$(RELEASE_CLI) validate
|
|
|
|
.PHONY: release-registry-info
|
|
release-registry-info: ## Show package registry information and status
|
|
ifndef RELEASE_AVAILABLE
|
|
@echo "❌ Release management capability not installed"
|
|
@exit 1
|
|
endif
|
|
$(RELEASE_CLI) registry-info
|
|
|
|
# Git Tag Management
|
|
.PHONY: release-tag
|
|
release-tag: ## Create git tag for version (requires VERSION=x.y.z)
|
|
ifndef VERSION
|
|
@echo "❌ VERSION is required. Usage: make release-tag VERSION=1.0.0"
|
|
@exit 1
|
|
endif
|
|
ifndef RELEASE_AVAILABLE
|
|
@echo "❌ Release management capability not installed"
|
|
@exit 1
|
|
endif
|
|
$(RELEASE_CLI) tag --version $(VERSION)
|
|
|
|
# Package Building
|
|
.PHONY: release-build
|
|
release-build: ## Build release packages using setuptools-scm
|
|
ifndef RELEASE_AVAILABLE
|
|
@echo "❌ Release management capability not installed"
|
|
@exit 1
|
|
endif
|
|
$(RELEASE_CLI) build
|
|
|
|
.PHONY: release-clean
|
|
release-clean: ## Clean build artifacts and temporary files
|
|
ifndef RELEASE_AVAILABLE
|
|
@echo "❌ Release management capability not installed"
|
|
@exit 1
|
|
endif
|
|
$(RELEASE_CLI) clean
|
|
|
|
# Publishing Workflows
|
|
.PHONY: release-publish
|
|
release-publish: ## Complete release workflow: tag + build (requires VERSION=x.y.z)
|
|
ifndef VERSION
|
|
@echo "❌ VERSION is required. Usage: make release-publish VERSION=1.0.0"
|
|
@exit 1
|
|
endif
|
|
ifndef RELEASE_AVAILABLE
|
|
@echo "❌ Release management capability not installed"
|
|
@exit 1
|
|
endif
|
|
$(RELEASE_CLI) publish --version $(VERSION)
|
|
|
|
.PHONY: release-publish-gitea
|
|
release-publish-gitea: ## Complete release workflow + Gitea upload (requires VERSION=x.y.z)
|
|
ifndef VERSION
|
|
@echo "❌ VERSION is required. Usage: make release-publish-gitea VERSION=1.0.0"
|
|
@exit 1
|
|
endif
|
|
ifndef RELEASE_AVAILABLE
|
|
@echo "❌ Release management capability not installed"
|
|
@exit 1
|
|
endif
|
|
$(RELEASE_CLI) publish --version $(VERSION) --registry gitea
|
|
|
|
.PHONY: release-publish-pypi
|
|
release-publish-pypi: ## Complete release workflow + PyPI upload (requires VERSION=x.y.z)
|
|
ifndef VERSION
|
|
@echo "❌ VERSION is required. Usage: make release-publish-pypi VERSION=1.0.0"
|
|
@exit 1
|
|
endif
|
|
ifndef RELEASE_AVAILABLE
|
|
@echo "❌ Release management capability not installed"
|
|
@exit 1
|
|
endif
|
|
$(RELEASE_CLI) publish --version $(VERSION) --registry pypi
|
|
|
|
# Upload Existing Packages
|
|
.PHONY: release-upload-gitea
|
|
release-upload-gitea: ## Upload existing packages to Gitea registry
|
|
ifndef RELEASE_AVAILABLE
|
|
@echo "❌ Release management capability not installed"
|
|
@exit 1
|
|
endif
|
|
$(RELEASE_CLI) upload --registry gitea
|
|
|
|
.PHONY: release-upload-pypi
|
|
release-upload-pypi: ## Upload existing packages to PyPI
|
|
ifndef RELEASE_AVAILABLE
|
|
@echo "❌ Release management capability not installed"
|
|
@exit 1
|
|
endif
|
|
$(RELEASE_CLI) upload --registry pypi
|
|
|
|
.PHONY: release-upload-testpypi
|
|
release-upload-testpypi: ## Upload existing packages to Test PyPI
|
|
ifndef RELEASE_AVAILABLE
|
|
@echo "❌ Release management capability not installed"
|
|
@exit 1
|
|
endif
|
|
$(RELEASE_CLI) upload --registry testpypi
|
|
|
|
# Dry Run Options
|
|
.PHONY: release-publish-dry-run
|
|
release-publish-dry-run: ## Dry run of complete release workflow (requires VERSION=x.y.z)
|
|
ifndef VERSION
|
|
@echo "❌ VERSION is required. Usage: make release-publish-dry-run VERSION=1.0.0"
|
|
@exit 1
|
|
endif
|
|
ifndef RELEASE_AVAILABLE
|
|
@echo "❌ Release management capability not installed"
|
|
@exit 1
|
|
endif
|
|
$(RELEASE_CLI) publish --version $(VERSION) --dry-run
|
|
|
|
.PHONY: release-upload-dry-run
|
|
release-upload-dry-run: ## Dry run of package upload to default registry
|
|
ifndef RELEASE_AVAILABLE
|
|
@echo "❌ Release management capability not installed"
|
|
@exit 1
|
|
endif
|
|
$(RELEASE_CLI) upload --dry-run
|
|
|
|
# Development and Setup
|
|
.PHONY: release-management-install
|
|
release-management-install: ## Install release management capability
|
|
pip install -e $(RELEASE_MANAGEMENT_PATH)/
|
|
|
|
.PHONY: release-management-install-dev
|
|
release-management-install-dev: ## Install release management capability with dev dependencies
|
|
pip install -e "$(RELEASE_MANAGEMENT_PATH)/[dev]"
|
|
|
|
.PHONY: release-management-test
|
|
release-management-test: ## Run release management capability tests
|
|
cd $(RELEASE_MANAGEMENT_PATH) && pytest tests/
|
|
|
|
.PHONY: release-management-help
|
|
release-management-help: ## Show release management CLI help
|
|
ifndef RELEASE_AVAILABLE
|
|
@echo "❌ Release management capability not installed"
|
|
@echo " Install with: make release-management-install"
|
|
@exit 1
|
|
endif
|
|
$(RELEASE_CLI) --help
|
|
|
|
# Help target integration
|
|
.PHONY: help-release
|
|
help-release: ## Show release management specific help
|
|
@echo ""
|
|
@echo "📦 Release Management:"
|
|
@echo " release-status Show current release status and version information"
|
|
@echo " release-validate Validate repository state for release readiness"
|
|
@echo " release-registry-info Show package registry information and status"
|
|
@echo ""
|
|
@echo "🏷️ Git Tag Management:"
|
|
@echo " release-tag VERSION=x.y.z Create git tag for version"
|
|
@echo ""
|
|
@echo "🔨 Package Building:"
|
|
@echo " release-build Build release packages using setuptools-scm"
|
|
@echo " release-clean Clean build artifacts and temporary files"
|
|
@echo ""
|
|
@echo "🚀 Publishing Workflows:"
|
|
@echo " release-publish VERSION=x.y.z Complete release workflow (tag + build)"
|
|
@echo " release-publish-gitea VERSION=x.y.z Complete release + Gitea upload"
|
|
@echo " release-publish-pypi VERSION=x.y.z Complete release + PyPI upload"
|
|
@echo ""
|
|
@echo "📤 Upload Existing Packages:"
|
|
@echo " release-upload-gitea Upload existing packages to Gitea registry"
|
|
@echo " release-upload-pypi Upload existing packages to PyPI"
|
|
@echo " release-upload-testpypi Upload existing packages to Test PyPI"
|
|
@echo ""
|
|
@echo "🧪 Dry Run Options:"
|
|
@echo " release-publish-dry-run VERSION=x.y.z Dry run of release workflow"
|
|
@echo " release-upload-dry-run Dry run of package upload"
|
|
@echo ""
|
|
@echo "⚙️ Development and Setup:"
|
|
@echo " release-management-install Install release management capability"
|
|
@echo " release-management-install-dev Install with development dependencies"
|
|
@echo " release-management-test Run capability tests"
|
|
@echo " release-management-help Show CLI help"
|
|
@echo ""
|
|
|
|
# Default registry shortcuts (can be overridden)
|
|
RELEASE_DEFAULT_REGISTRY ?= gitea
|
|
|
|
.PHONY: release-upload
|
|
release-upload: release-upload-$(RELEASE_DEFAULT_REGISTRY) ## Upload packages to default registry ($(RELEASE_DEFAULT_REGISTRY))
|
|
|
|
# Integration with main project targets
|
|
# These can be overridden in main Makefile if different behavior is needed
|
|
|
|
.PHONY: package
|
|
package: release-build ## Build packages (alias for release-build)
|
|
|
|
.PHONY: publish
|
|
publish: ## Publish release to default registry (requires VERSION=x.y.z)
|
|
ifndef VERSION
|
|
@echo "❌ VERSION is required. Usage: make publish VERSION=1.0.0"
|
|
@exit 1
|
|
endif
|
|
@make release-publish-$(RELEASE_DEFAULT_REGISTRY) VERSION=$(VERSION)
|
|
|
|
# Legacy compatibility targets
|
|
.PHONY: release-status-legacy
|
|
release-status-legacy: release-status ## Legacy alias for release-status
|
|
|
|
.PHONY: package-upload
|
|
package-upload: release-upload ## Legacy alias for release-upload
|