320 lines
13 KiB
Makefile
320 lines
13 KiB
Makefile
# Provisioning System - Standalone Infrastructure Automation
|
|
# Modern justfile for infrastructure provisioning and automation
|
|
# ============================================================
|
|
|
|
# Import provisioning module justfiles
|
|
import 'justfiles/build.just'
|
|
import 'justfiles/package.just'
|
|
import 'justfiles/release.just'
|
|
import 'justfiles/dev.just'
|
|
import 'justfiles/platform.just'
|
|
import 'justfiles/installer.just'
|
|
|
|
# ============================================================================
|
|
# Provisioning Configuration
|
|
# ============================================================================
|
|
|
|
# Project metadata
|
|
provisioning_name := "provisioning"
|
|
version := `git describe --tags --always --dirty 2>/dev/null || echo "dev-$(date +%Y%m%d)"`
|
|
build_time := `date -u +"%Y-%m-%dT%H:%M:%SZ"`
|
|
git_commit := `git rev-parse HEAD 2>/dev/null || echo "unknown"`
|
|
|
|
# Directories
|
|
provisioning_root := justfile_directory()
|
|
project_root := provisioning_root / ".."
|
|
tools_dir := provisioning_root / "tools"
|
|
build_dir := project_root / "target"
|
|
dist_dir := project_root / "dist"
|
|
packages_dir := project_root / "packages"
|
|
|
|
# Build configuration
|
|
rust_target := "x86_64-unknown-linux-gnu"
|
|
build_mode := "release"
|
|
platforms := "linux-amd64,macos-amd64,windows-amd64"
|
|
variants := "complete,minimal"
|
|
|
|
# Tools
|
|
nu := "nu"
|
|
cargo := "cargo"
|
|
docker := "docker"
|
|
|
|
# Flags
|
|
verbose := "false"
|
|
dry_run := "false"
|
|
parallel := "true"
|
|
|
|
# ============================================================================
|
|
# Default Recipe - Show Help
|
|
# ============================================================================
|
|
|
|
# Show concise provisioning overview
|
|
@default:
|
|
echo "🏗️ PROVISIONING SYSTEM - INFRASTRUCTURE AUTOMATION"
|
|
echo "==================================================="
|
|
echo ""
|
|
echo "🚀 QUICK START"
|
|
echo " just all - Complete pipeline (build + package + test)"
|
|
echo " just quick - Fast development build"
|
|
echo " just ci - Full CI/CD pipeline"
|
|
echo ""
|
|
echo "📦 KEY MODULES"
|
|
echo " 🏗️ build - Platform binaries & core libraries (just build-help)"
|
|
echo " 📦 package - Distribution packaging & containers (just package-help)"
|
|
echo " 🚀 release - Release management & artifacts (just release-help)"
|
|
echo " 🔧 dev - Development workflows & testing (just dev-help)"
|
|
echo " ⚡ platform - Platform services & orchestration (just platform-help)"
|
|
echo " 📦 installer - Interactive installer & config mgmt (just installer-help)"
|
|
echo ""
|
|
echo "🔍 DETAILED HELP"
|
|
echo " just help - Show this overview"
|
|
echo " just help-full - Show comprehensive help"
|
|
echo " just --list - List all available recipes"
|
|
echo ""
|
|
echo "💡 VERSION: {{version}} | Build: {{build_mode}} | Target: {{rust_target}}"
|
|
|
|
# ============================================================================
|
|
# Meta Recipes
|
|
# ============================================================================
|
|
|
|
# Show concise provisioning overview (alias for default)
|
|
@help:
|
|
just --justfile {{justfile()}} default
|
|
|
|
# Show comprehensive provisioning help
|
|
@help-full:
|
|
echo "🏗️ PROVISIONING SYSTEM - COMPREHENSIVE HELP"
|
|
echo "============================================="
|
|
echo ""
|
|
echo "STANDALONE INFRASTRUCTURE AUTOMATION TOOLKIT"
|
|
echo "This system can be used independently or as part of a larger project ecosystem"
|
|
echo "for cloud-native deployments across multiple providers (UpCloud, AWS, Local)."
|
|
echo ""
|
|
echo "📦 BUILD MODULE (build.just) - DETAILED"
|
|
echo " Complete build system for platform binaries and core libraries"
|
|
echo " • build-all - Build all components (platform + core + KCL)"
|
|
echo " • build-platform - Build platform binaries for all targets"
|
|
echo " • build-core - Bundle core Nushell libraries"
|
|
echo " • validate-kcl - Validate and compile KCL schemas"
|
|
echo " • build-cross - Cross-compile for multiple platforms"
|
|
echo " • build-debug - Debug build with symbols"
|
|
echo " • build-wasm - WebAssembly target build"
|
|
echo " • build-libs - Library components only"
|
|
echo ""
|
|
echo "📦 PACKAGE MODULE (package.just) - DETAILED"
|
|
echo " Distribution packaging and container management"
|
|
echo " • package-all - Create all distribution packages"
|
|
echo " • package-binaries - Package binaries for distribution"
|
|
echo " • package-containers - Build container images"
|
|
echo " • create-archives - Create distribution archives"
|
|
echo " • create-installers - Create installation packages"
|
|
echo " • package-minimal - Minimal distribution package"
|
|
echo " • package-complete - Complete distribution with docs"
|
|
echo ""
|
|
echo "🚀 RELEASE MODULE (release.just) - DETAILED"
|
|
echo " Release management and artifact distribution"
|
|
echo " • release - Create complete release (VERSION required)"
|
|
echo " • release-draft - Create draft release"
|
|
echo " • upload-artifacts - Upload release artifacts"
|
|
echo " • notify-release - Send release notifications"
|
|
echo " • publish-registry - Publish to package registries"
|
|
echo " • tag-release - Git tag with version"
|
|
echo ""
|
|
echo "🔧 DEVELOPMENT MODULE (dev.just) - DETAILED"
|
|
echo " Development workflows and testing utilities"
|
|
echo " • dev-build - Quick development build"
|
|
echo " • test-build - Test build system"
|
|
echo " • test-dist - Test generated distributions"
|
|
echo " • validate-all - Validate all components"
|
|
echo " • benchmark - Run build benchmarks"
|
|
echo " • watch-build - Watch and rebuild on changes"
|
|
echo " • format-code - Format all source code"
|
|
echo " • lint-check - Run linting checks"
|
|
echo ""
|
|
echo "⚡ PLATFORM MODULE (platform.just) - DETAILED"
|
|
echo " Platform services and orchestration"
|
|
echo " • orchestrator - Rust orchestrator management"
|
|
echo " • control-center - Web control center"
|
|
echo " • mcp-server - Model Context Protocol server"
|
|
echo " • api-gateway - REST API gateway"
|
|
echo " • platform-status - All platform services status"
|
|
echo ""
|
|
echo "📦 INSTALLER MODULE (installer.just) - DETAILED"
|
|
echo " Interactive installer and configuration management"
|
|
echo " • installer-build - Build installer binary"
|
|
echo " • installer-run - Run interactive TUI installer"
|
|
echo " • installer-headless - Run in headless mode"
|
|
echo " • installer-unattended - Run in unattended mode"
|
|
echo " • config-review - Review installer configuration"
|
|
echo " • config-validate - Validate config file"
|
|
echo " • install - Install provisioning platform"
|
|
echo " • update - Update existing installation"
|
|
echo " • installer-help - Complete installer module help"
|
|
echo ""
|
|
echo "⚡ QUICK WORKFLOWS"
|
|
echo " just all - Complete build, package, and test pipeline"
|
|
echo " just quick - Fast development build"
|
|
echo " just ci - CI/CD pipeline (build + test + package)"
|
|
echo " just init - Initialize provisioning environment"
|
|
echo " just status - Show current provisioning status"
|
|
echo ""
|
|
echo "🔍 SYSTEM MANAGEMENT"
|
|
echo " just check-tools - Validate required tools (nu, cargo, docker, git, kcl)"
|
|
echo " just clean - Clean all build artifacts"
|
|
echo " just create-dirs - Create necessary directories"
|
|
echo " just show-dirs - Show directory structure"
|
|
echo " just info - Show detailed system information"
|
|
echo " just validate-system - Complete system validation"
|
|
echo ""
|
|
echo "📊 CURRENT CONFIGURATION"
|
|
echo " System Name: {{provisioning_name}}"
|
|
echo " Version: {{version}}"
|
|
echo " Git Commit: {{git_commit}}"
|
|
echo " Build Mode: {{build_mode}}"
|
|
echo " Platforms: {{platforms}}"
|
|
echo " Target: {{rust_target}}"
|
|
echo " Variants: {{variants}}"
|
|
echo " Root: {{provisioning_root}}"
|
|
echo ""
|
|
echo "💡 PRACTICAL EXAMPLES"
|
|
echo " # Complete development workflow"
|
|
echo " just init && just all"
|
|
echo ""
|
|
echo " # Quick development iteration"
|
|
echo " just dev-build && just test-dist"
|
|
echo ""
|
|
echo " # Release workflow"
|
|
echo " just ci && just release VERSION=2.1.0"
|
|
echo ""
|
|
echo " # Platform services"
|
|
echo " just orchestrator start && just api-gateway"
|
|
echo ""
|
|
echo " # Module-specific operations"
|
|
echo " just build-platform && just package-containers"
|
|
|
|
# Complete build, package, and test pipeline
|
|
@all: clean build-all package-all test-dist
|
|
echo "✅ Complete provisioning pipeline finished successfully"
|
|
|
|
# Quick development workflow
|
|
@quick: dev-build
|
|
echo "⚡ Quick provisioning development build completed"
|
|
|
|
# CI/CD pipeline
|
|
@ci: clean build-all test-dist package-all
|
|
echo "🚀 Provisioning CI/CD pipeline completed successfully"
|
|
|
|
# Show current provisioning status
|
|
@status:
|
|
echo "📊 PROVISIONING SYSTEM STATUS"
|
|
echo "============================="
|
|
echo "Name: {{provisioning_name}}"
|
|
echo "Version: {{version}}"
|
|
echo "Git Commit: {{git_commit}}"
|
|
echo "Build Time: {{build_time}}"
|
|
echo ""
|
|
echo "Directories:"
|
|
echo " Provisioning: {{provisioning_root}}"
|
|
echo " Project Root: {{project_root}}"
|
|
echo " Tools: {{tools_dir}}"
|
|
echo " Build: {{build_dir}}"
|
|
echo " Distribution: {{dist_dir}}"
|
|
echo " Packages: {{packages_dir}}"
|
|
|
|
# ============================================================================
|
|
# Environment Validation
|
|
# ============================================================================
|
|
|
|
# Validate that all required tools are available
|
|
@check-tools:
|
|
#!/usr/bin/env bash
|
|
echo "🔍 Checking required tools..."
|
|
|
|
check_tool() {
|
|
if command -v "$1" >/dev/null 2>&1; then
|
|
echo "✅ $1: $(command -v "$1")"
|
|
else
|
|
echo "❌ $1: not found"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
check_tool nu
|
|
check_tool cargo
|
|
check_tool docker
|
|
check_tool git
|
|
check_tool kcl
|
|
|
|
echo "✅ All required tools are available"
|
|
|
|
# Initialize provisioning environment
|
|
@init: check-tools
|
|
echo "🚀 Initializing provisioning environment..."
|
|
mkdir -p "{{build_dir}}" "{{dist_dir}}" "{{packages_dir}}"
|
|
echo "✅ Provisioning environment initialized"
|
|
|
|
# ============================================================================
|
|
# Directory Operations
|
|
# ============================================================================
|
|
|
|
# Create necessary directories
|
|
@create-dirs:
|
|
mkdir -p "{{build_dir}}" "{{dist_dir}}" "{{packages_dir}}"
|
|
mkdir -p "{{dist_dir}}/platform" "{{dist_dir}}/core" "{{dist_dir}}/kcl"
|
|
|
|
# Clean all build artifacts
|
|
@clean:
|
|
echo "🧹 Cleaning provisioning build artifacts..."
|
|
{{nu}} {{tools_dir}}/build/clean-build.nu \
|
|
--scope all \
|
|
--force \
|
|
--verbose={{verbose}}
|
|
rm -rf {{dist_dir}} {{packages_dir}} {{build_dir}}
|
|
mkdir -p {{dist_dir}} {{packages_dir}} {{build_dir}}
|
|
echo "✅ All provisioning build artifacts cleaned"
|
|
|
|
# Show directory structure
|
|
@show-dirs:
|
|
tree -d -L 3 "{{provisioning_root}}" || ls -la "{{provisioning_root}}"
|
|
|
|
# ============================================================================
|
|
# Integration Points
|
|
# ============================================================================
|
|
|
|
# Export provisioning configuration for external use
|
|
@export-config:
|
|
echo "📤 Exporting provisioning configuration..."
|
|
echo "PROVISIONING_VERSION={{version}}"
|
|
echo "PROVISIONING_BUILD_MODE={{build_mode}}"
|
|
echo "PROVISIONING_PLATFORMS={{platforms}}"
|
|
echo "PROVISIONING_ROOT={{provisioning_root}}"
|
|
echo "PROVISIONING_TOOLS={{tools_dir}}"
|
|
|
|
# Validate provisioning system integrity
|
|
@validate-system:
|
|
echo "🔍 Validating provisioning system..."
|
|
just check-tools
|
|
just validate-all
|
|
echo "✅ Provisioning system validation completed"
|
|
|
|
# Show system information
|
|
@info:
|
|
#!/usr/bin/env bash
|
|
echo "🔍 PROVISIONING SYSTEM INFORMATION"
|
|
echo "=================================="
|
|
echo "Operating System:"
|
|
echo " OS: $(uname -s -r)"
|
|
echo " Architecture: $(uname -m)"
|
|
echo " User: $(whoami)"
|
|
echo " Working Dir: {{provisioning_root}}"
|
|
echo ""
|
|
echo "Tool Versions:"
|
|
tools=("nu" "cargo" "rustc" "docker" "git" "kcl")
|
|
for tool in "${tools[@]}"; do
|
|
if command -v "$tool" >/dev/null 2>&1; then
|
|
version=$($tool --version 2>/dev/null | head -1 | cut -d' ' -f2- || echo "unknown")
|
|
echo " $tool: $version"
|
|
else
|
|
echo " $tool: not found"
|
|
fi
|
|
done
|