#!/usr/bin/env nu # VAPORA Deployment Validation Script # Validates that all deployment files and artifacts are ready def main [] { print $"(ansi green)πŸ” VAPORA Deployment Validation(ansi reset)" print $"(ansi blue)═══════════════════════════════════════════════(ansi reset)" print "" mut all_valid = true # Check Dockerfiles print $"(ansi yellow)🐳 Checking Dockerfiles...(ansi reset)" let dockerfiles = [ "crates/vapora-backend/Dockerfile" "crates/vapora-frontend/Dockerfile" "crates/vapora-agents/Dockerfile" "crates/vapora-mcp-server/Dockerfile" ] for dockerfile in $dockerfiles { if ($dockerfile | path exists) { print $" (ansi green)βœ… ($dockerfile)(ansi reset)" } else { print $" (ansi red)❌ ($dockerfile) NOT FOUND(ansi reset)" $all_valid = false } } # Check Kubernetes manifests print "" print $"(ansi yellow)☸️ Checking Kubernetes manifests...(ansi reset)" let k8s_manifests = [ "kubernetes/00-namespace.yaml" "kubernetes/01-surrealdb.yaml" "kubernetes/02-nats.yaml" "kubernetes/03-secrets.yaml" "kubernetes/04-backend.yaml" "kubernetes/05-frontend.yaml" "kubernetes/06-agents.yaml" "kubernetes/07-mcp-server.yaml" "kubernetes/08-ingress.yaml" ] for manifest in $k8s_manifests { if ($manifest | path exists) { print $" (ansi green)βœ… ($manifest)(ansi reset)" } else { print $" (ansi red)❌ ($manifest) NOT FOUND(ansi reset)" $all_valid = false } } # Check deployment scripts print "" print $"(ansi yellow)πŸ“œ Checking deployment scripts...(ansi reset)" let scripts = [ "scripts/build-docker.nu" "scripts/deploy-k8s.nu" "scripts/validate-provisioning.nu" ] for script in $scripts { if ($script | path exists) { print $" (ansi green)βœ… ($script)(ansi reset)" } else { print $" (ansi red)❌ ($script) NOT FOUND(ansi reset)" $all_valid = false } } # Check documentation print "" print $"(ansi yellow)πŸ“š Checking documentation...(ansi reset)" let docs = [ "README.md" "DEPLOYMENT.md" "PROJECT_COMPLETION_REPORT.md" "kubernetes/README.md" "provisioning-integration/README.md" ] for doc in $docs { if ($doc | path exists) { print $" (ansi green)βœ… ($doc)(ansi reset)" } else { print $" (ansi red)❌ ($doc) NOT FOUND(ansi reset)" $all_valid = false } } # Check source code (binaries for health endpoints) print "" print $"(ansi yellow)πŸ”§ Checking health endpoint implementations...(ansi reset)" let source_files = [ "crates/vapora-backend/src/api/health.rs" "crates/vapora-agents/src/bin/server.rs" "crates/vapora-mcp-server/src/main.rs" ] for file in $source_files { if ($file | path exists) { print $" (ansi green)βœ… ($file)(ansi reset)" } else { print $" (ansi red)❌ ($file) NOT FOUND(ansi reset)" $all_valid = false } } # Summary print "" print $"(ansi blue)═══════════════════════════════════════════════(ansi reset)" if $all_valid { print $"(ansi green)βœ… ALL VALIDATION CHECKS PASSED!(ansi reset)" print "" print $"(ansi cyan)VAPORA v2.0 is ready for deployment.(ansi reset)" print "" print $"(ansi yellow)Next steps:(ansi reset)" print " 1. Build Docker images: nu scripts/build-docker.nu --push" print " 2. Update secrets: Edit kubernetes/03-secrets.yaml" print " 3. Update ingress: Edit kubernetes/08-ingress.yaml" print " 4. Deploy: nu scripts/deploy-k8s.nu" print "" print $"(ansi cyan)Documentation:(ansi reset)" print " β€’ Deployment Guide: DEPLOYMENT.md" print " β€’ K8s README: kubernetes/README.md" print " β€’ Project Summary: PROJECT_COMPLETION_REPORT.md" exit 0 } else { print $"(ansi red)❌ VALIDATION FAILED - Some files are missing(ansi reset)" print "" print $"(ansi yellow)Please ensure all required files are present before deployment.(ansi reset)" exit 1 } }