Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.cirron.com/llms.txt

Use this file to discover all available pages before exploring further.

cirron build

Build ML models and Docker containers for your projects with intelligent project detection, validation, and registry configuration. The build command handles both ML model compilation and traditional application builds.

Usage

cirron build [options]

Options

OptionDescriptionDefault
--env, -eEnvironment (development, staging, production)development
--arch, -aTarget architecture (cpu, cuda, gpu)Auto-detected
--indexPath to index/manifest filenull
--validateRun validation checks before buildfalse
--strictEnable strict error handlingfalse
--cleanClean output directory before buildfalse
--watch, -wRun build in watch modefalse
--analyzeAnalyze build output after completionfalse
--pushPush Docker image to registry after buildfalse
--tag, -tTag for the Docker imageAuto-generated
-f, --forceForce build despite warningsfalse
-i, --interactiveStep-by-step build confirmationsfalse

Build Types

ML Model Builds

For projects with ML frameworks (PyTorch, TensorFlow, Scikit-learn):
# Basic ML model build
cirron build

# Build with specific architecture
cirron build --arch cuda

# Build with validation
cirron build --validate

# Build and push Docker image
cirron build --push

ML Build Process

  1. Architecture Detection: Determines target architecture (CPU/CUDA/GPU)
  2. Validation: Checks model files, dependencies, and environment
  3. Model Compilation: Compiles model for target architecture
  4. Artifact Generation: Creates model files and metadata
  5. Integrity Testing: Verifies generated artifacts
  6. Container Build: Builds Docker image if Dockerfile exists
  7. Registry Push: Pushes image to registry if requested

Traditional Application Builds

For non-ML projects with build configuration:
# Build for development
cirron build --env development

# Build for production
cirron build --env production --clean

# Build in watch mode
cirron build --watch

Traditional Build Process

  1. Configuration Loading: Reads build settings from cirron.yaml
  2. Environment Setup: Sets environment variables
  3. Pre-build Commands: Runs configured pre-build steps
  4. Main Build: Executes the build command
  5. Post-build Commands: Runs configured post-build steps
  6. Analysis: Analyzes build output if requested

Configuration

ML Project Configuration

{
  "name": "my-ml-model",
  "version": "1.0.0",
  "framework": "pytorch",
  "pythonVersion": "3.9",
  "gpuRequired": true
}

Traditional Project Configuration

{
  "name": "my-app",
  "version": "1.0.0",
  "build": {
    "command": "npm run build",
    "outputDir": "dist",
    "beforeBuild": [
      "npm install",
      "npm run lint"
    ],
    "afterBuild": [
      "npm run test"
    ]
  },
  "environments": {
    "development": {
      "variables": {
        "NODE_ENV": "development"
      }
    },
    "production": {
      "variables": {
        "NODE_ENV": "production"
      }
    }
  }
}

Architecture Support

CPU Architecture

cirron build --arch cpu
  • Optimized for CPU inference
  • Compatible with all frameworks
  • Lightweight deployment

CUDA Architecture (PyTorch)

cirron build --arch cuda
  • GPU-accelerated inference for PyTorch
  • Requires CUDA-compatible hardware
  • Validates CUDA availability

GPU Architecture (TensorFlow)

cirron build --arch gpu
  • GPU-accelerated inference for TensorFlow
  • Requires GPU-compatible hardware
  • Validates GPU availability

Examples

ML Model Builds

# Basic PyTorch build
cirron build --arch cuda --validate

# TensorFlow build with custom index
cirron build --arch gpu --index config/index.json

# Scikit-learn build
cirron build --arch cpu

Traditional Application Builds

# Development build
cirron build --env development

# Production build with analysis
cirron build --env production --clean --analyze

# Watch mode for development
cirron build --watch

Docker Integration

# Build and push to registry
cirron build --push --tag v1.0.0

# Clean build with no cache
cirron build --clean --push

Build Output

ML Build Results

Build Results:
  • Architecture: cuda
  • Artifacts: 3 files generated
    - models/model_cuda.pth
    - artifacts/build_info.json
    - build/model_metadata.json

ML model build completed successfully!

Traditional Build Results

Build completed successfully!

Output directory: dist
Build size: 2.1 MB
Files: 15
Environment: development

Run cirron deploy to deploy this build

Build Analysis

Build Analysis
Total size: 2.1 MB
File count: 15

Largest files:
  main.js: 1.2 MB
  vendor.js: 800 KB
  styles.css: 100 KB

Recommendations:
  • Consider code splitting to reduce bundle size
  • Enable source maps for better debugging

Environment Variables

The CLI automatically sets these environment variables during build:
VariableDescriptionExample
NODE_ENVNode environmentproduction or development
CIRRON_ENVCirron environmentdevelopment, staging, production
Additional environment-specific variables can be configured in cirron.yaml:
{
  "environments": {
    "production": {
      "variables": {
        "API_URL": "https://api.production.com",
        "DEBUG": "false"
      }
    }
  }
}

Docker Integration

Image Naming

Images are named using the format: registry/organization/project:tag
# Environment variables for registry configuration
CIRRON_REGISTRY=localhost:5000
CIRRON_ORG=myorg

# Generated image names
cirron build --env development
# Image: localhost:5000/myorg/my-project:latest

cirron build --env production --tag v1.0.0
# Image: localhost:5000/myorg/my-project:production-1.0.0

Docker Ignore Integration

The build command automatically integrates .cirronignore patterns into .dockerignore:
# .cirronignore patterns are automatically added to .dockerignore
cirron build --push

Validation

ML Model Validation

  • Required Files: Checks for src/model.py and requirements.txt
  • Python Version: Validates Python version compatibility
  • GPU Requirements: Checks CUDA/GPU availability for GPU architectures
  • Model Creation: Tests model instantiation
  • Index Files: Validates index file format and content

Traditional Build Validation

  • Build Configuration: Verifies build settings in cirron.yaml
  • Command Availability: Checks if build commands exist
  • Dependencies: Validates required dependencies
  • Output Directory: Ensures output directory is writable

Watch Mode

Use --watch for development with automatic rebuilds:
# Start build in watch mode
cirron build --watch

# Press Ctrl+C to stop watching

Error Handling

Common Errors

Missing Project Configuration

Error: No cirron.yaml found
Solution: Initialize project first
cirron init my-project

Build Command Failure

Error: Build command failed with exit code 1
Solutions:
# Check build command
cat cirron.yaml

# Try clean build
cirron build --clean

# Check dependencies
npm install

GPU Validation Failure

Error: CUDA not available for PyTorch
Solutions:
# Use CPU architecture
cirron build --arch cpu

# Install CUDA drivers
# Check GPU availability
nvidia-smi

Recovery Actions

  1. Build Failures
    # Clean build
    cirron build --clean
    
    # Check build configuration
    cat cirron.yaml
    
  2. Docker Build Issues
    # Check Docker installation
    docker --version
    
    # Check disk space
    df -h
    
  3. Registry Push Issues
    # Check registry credentials
    docker login
    
    # Verify image exists
    docker images
    

Integration

CI/CD Pipeline

# GitHub Actions example
- name: Build ML Model
  run: |
    cirron build --arch cuda --validate --push
    cirron build --env production --clean --analyze

Development Workflow

# Development
cirron build --watch

# Staging
cirron build --env staging --validate

# Production
cirron build --env production --clean --push

Best Practices

ML Model Builds

  • Use Validation: Always run --validate for production builds
  • Architecture Selection: Choose appropriate architecture for deployment
  • Index Files: Use index files for complex model configurations
  • Containerization: Include Dockerfile for deployment

Traditional Builds

  • Environment-Specific: Use different environments for different stages
  • Clean Builds: Use --clean for production builds
  • Build Analysis: Regular analysis helps optimize bundle size
  • Watch Mode: Use watch mode for development efficiency

Docker Best Practices

  • Registry Configuration: Set up proper registry and organization
  • Image Tagging: Use meaningful tags for version management
  • Ignore Patterns: Configure .cirronignore for efficient builds
  • Push Strategy: Push images after successful builds

Troubleshooting

Performance Issues

  • Large Models: ML builds may take longer for large models
  • Docker Builds: Use .dockerignore to exclude unnecessary files
  • Network Issues: Check registry connectivity for push operations

Build Failures

  • Dependencies: Ensure all dependencies are installed
  • Permissions: Check file and directory permissions
  • Disk Space: Verify sufficient disk space for builds
  • Memory: Large builds may require more memory

Debugging Tips

  • Verbose Mode: Set CIRRON_VERBOSE=1 for detailed output
  • Dry Run: Use validation to check configuration before building
  • Log Analysis: Check build logs for specific error messages
  • Environment Check: Verify environment matches requirements