Image Factory Documentation

Build Pipeline Journey

This document walks through the end-to-end build pipeline journey in Image Factory, from build submission through execution and artifact delivery.

Overview

The build pipeline in Image Factory transforms your code into deployable artifacts through a comprehensive, automated process. This journey covers everything from initial build submission to final artifact delivery, including monitoring, error handling, and optimization.

Key Concepts

  • Build Methods: Docker, Buildx, Kaniko, Packer, Nix, Paketo
  • Pipeline Stages: Submission β†’ Validation β†’ Execution β†’ Completion β†’ Delivery
  • Artifacts: Container images, machine images, packages
  • Monitoring: Real-time status, logs, metrics, notifications

πŸ“ Phase 0: Project Setup

0.1 Choose Your Project Creation Method

Quick Start (For Later Repository Setup)

🎯 When to use: You want to create the project now, configure repository later
πŸ“ How to access: Projects page β†’ Click "Create Project" button
πŸ“ What you'll enter: Project name, description, visibility only
⚠️  Important: You'll need to add repository info before creating builds

Complete Setup (Ready for Builds Immediately)

🎯 When to use: You have repository details ready and want to build right away
πŸ“ How to access: Projects page β†’ Click "New Project" link (not button)
πŸ“ What you'll enter: Project name, description, repository URL, default branch
βœ… Ready: Can create builds immediately after creation

0.2 How to Tell Which Method You're Using

You're Using the Modal (Quick Method):

  • Small popup window appears
  • Only 3 fields: Name, Description, Visibility
  • No repository URL field visible

You're Using the Full Page (Complete Method):

  • Navigates to dedicated project creation page
  • 4+ fields including Repository URL and Branch
  • Full form layout with additional options

0.3 Check If Project Has Repository Configured

Visual Status Indicators:

  • Header Badge: Green "Repository Connected" or Yellow "Repository Not Set" badge next to project name
  • Status Card: Large colored card below project header showing repository status
  • Branch Display: Current default branch shown prominently when configured

Method 1: Project Dashboard (Most Obvious)

πŸ“ Look at: Top of project page, right next to project name
πŸ‘€ Status Badge: "Repository Connected" (green) or "Repository Not Set" (yellow)
βœ… Configured: Green badge + detailed repository card below
❌ Not Configured: Yellow badge + warning card with "Configure Repository" button

Method 2: Repository Details Card

πŸ“ Look at: Large colored card below project header
πŸ‘€ What's shown: Repository URL, branch, connection status
βœ… Configured: Green card with full repository details
❌ Not Configured: Yellow warning card with setup instructions

0.4 Add Repository to Existing Project

If you used quick creation and need to add repository:

1️⃣ Look for: Yellow "Repository Not Set" badge next to project name
2️⃣ Click: "Configure Repository" button in the warning card below header
3️⃣ Or click: "Edit Project" button to access full settings
4️⃣ Enter: Repository URL (HTTPS/SSH format)
5️⃣ Enter: Default branch (usually "main" or "master")
6️⃣ Click: "Save" to update project
βœ… Result: Badge turns green, repository card shows connection details

Alternative access:

  • Click "Edit Project" button in the top-right
  • Navigate to project settings manually

0.5 Quick Decision Guide

Situation Recommended Method Next Steps
New to Image Factory Quick creation Add repository later via settings
Have repo details ready Complete setup Start building immediately
Team collaboration Complete setup Everyone can build right away
Just exploring Quick creation Configure when ready to build
Migrating existing project Complete setup Full configuration from start

0.6 Verify Project Readiness

Before creating your first build, confirm:

βœ… Project exists in your tenant
βœ… Repository URL is configured (not empty)
βœ… Repository is accessible with your credentials
βœ… Default branch exists (usually "main" or "master")

🏁 Phase 1: Build Submission

1.1 Access Build Interface

Location: Projects β†’ [Project Name] β†’ Builds tab or Create Build page

What happens:

  • Navigate to your project dashboard
  • Click "New Build" or "Create Build" button
  • Select build method (Docker/Buildx/Kaniko/Packer/Nix/Paketo)

1.2 Configure Build Parameters

Basic Configuration

πŸ“ Build Name: Give your build a descriptive name
🏷️  Tags: Add version tags, environment labels
πŸ“¦ Build Method: Choose appropriate build technology

Note: Repository source is configured at the project level. When you select a project, the build will automatically use that project's configured Git repository and default branch.

1.3 Method-Specific Configuration

🐳 Docker/Buildx/Kaniko Builds

πŸ“„ Dockerfile: Upload file, paste content, or use template
πŸ—οΈ  Build Context: Repository root or subdirectory
🏷️  Target Stage: Multi-stage build target
πŸ”§ Build Args: Environment variables for build
πŸ“‹ Secrets: Sensitive values for build process

πŸ“¦ Packer Builds

πŸ“‹ Template: JSON configuration for machine images
πŸ”§ Variables: Dynamic values for template
🎯 Builders: AWS AMI, GCP Images, Azure VMs, etc.
πŸ“€ Post-Processors: Artifact handling and distribution

❄️ Nix Builds

πŸ“„ Expression: Nix language build definition
🎯 Flake URI: Modern Nix flake reference
πŸ—οΈ  Attributes: Build targets within flake
πŸ’Ύ Cache: Nix store optimization

πŸ› οΈ Paketo Builds

πŸ—οΈ  Builder: Paketo builder image selection
πŸ“¦ Buildpacks: Language/framework buildpacks
πŸ”§ Environment: Build-time configuration
πŸ“‹ Bindings: External service connections

1.4 Infrastructure Selection (NEW - Phase 3)

AI-Powered Recommendations

🧠 Smart Selection: AI analyzes your build requirements
⚑ Auto Recommendation: Suggests optimal infrastructure automatically
🎯 Confidence Score: Shows recommendation certainty (80-95%)
πŸ”„ Alternative Options: Provides fallback choices with reasoning

Infrastructure Types Available

☸️  Kubernetes Cluster: Scalable container orchestration (Primary)
πŸ–₯️  Build Nodes: Dedicated build servers (Fallback)
πŸŽ›οΈ  Auto Selection: Let system choose based on requirements (Recommended)

How Infrastructure Selection Works

1️⃣ Analysis: System analyzes build method, size, and requirements
2️⃣ Recommendation: AI suggests best infrastructure with confidence score
3️⃣ User Choice: Accept recommendation or manually select alternative
4️⃣ Execution: Build runs on selected infrastructure automatically

Infrastructure Selection UI

πŸ“ Location: "Infrastructure" tab in build creation wizard
⏱️  Loading: Recommendations appear within 5 seconds
πŸ‘€ Display: Recommended infrastructure with reasoning
πŸŽ›οΈ  Controls: Radio buttons for manual selection
πŸ’‘ Help: Explanations for each infrastructure type

Important Security Note

πŸ”’ Admin Configuration: Infrastructure providers are configured by system administrators only
πŸ‘€ User Selection: Users can only select from pre-configured, available infrastructure
πŸ›‘οΈ  Permission Separation: No user access to provider credentials or configuration

Specialized Routing Examples

🎯 GPU Workloads: Automatically routed to GPU-enabled clusters
πŸ“¦ Large Builds: Directed to high-memory build nodes
πŸš€ Standard Builds: Run on cost-effective Kubernetes pods
πŸ”’ Secure Builds: Use compliance-certified infrastructure

1.5 Advanced Options

Build Optimization

πŸš€ Parallel Builds: Multi-platform compilation
πŸ’Ύ Caching: Layer caching for faster builds
πŸ”„ Retry Logic: Automatic failure recovery
⏱️  Timeout: Maximum build duration

Security & Compliance

πŸ›‘οΈ  SBOM Generation: Software bill of materials
πŸ” Vulnerability Scanning: Security analysis
πŸ“‹ Compliance Checks: Policy enforcement

1.6 Submit Build

Action: Click "Submit Build" or "Start Build"

Immediate Feedback:

  • Build ID generation (e.g., build-12345)
  • Initial status: "Queued" or "Pending"
  • Estimated queue time display
  • Infrastructure assignment confirmation

πŸ” Phase 2: Build Validation & Preparation

2.1 Pre-Flight Checks

Duration: 10-30 seconds

Validation Steps:

βœ… Repository Access: Verify Git permissions for project's configured repository (fails if no repository configured)
βœ… Dockerfile/Packer Template: Syntax validation
βœ… Build Context: Path existence check within repository
βœ… Required Secrets: Availability verification
βœ… Resource Limits: Quota compliance check

Possible Outcomes:

  • βœ… Validation Passed: Build moves to queue
  • ⚠️ Validation Failed: Error message with fix guidance
  • πŸ”„ Retry Available: Automatic retry for transient issues
  • 🚨 Repository Not Configured: Redirect to project settings to add repository information

2.2 Resource Allocation

Duration: 5-60 seconds (depending on queue)

Infrastructure Assignment Process:

🎯 Smart Routing: AI-powered infrastructure selection based on build requirements
☸️  Kubernetes Priority: Container builds run on K8s pods by default
πŸ–₯️  Build Nodes: Specialized workloads use dedicated build servers
βš–οΈ  Load Balancing: Distribute builds across available infrastructure
πŸ”„ Auto-Scaling: Scale infrastructure capacity based on demand

Resource Allocation Steps:

πŸ—οΈ  Infrastructure Selection: Choose between Kubernetes or build nodes
πŸ’Ύ Volume Mounting: Attach persistent storage if needed
🌐 Network Setup: Configure VPC, security groups
πŸ”‘ Secret Injection: Mount secrets securely
πŸ“Š Resource Limits: Apply CPU/memory constraints based on infrastructure

2.3 Build Environment Setup

Duration: 10-45 seconds

Environment Preparation:

🐳 Base Image Pull: Download specified base images
πŸ“¦ Dependency Cache: Restore cached dependencies
πŸ”§ Tool Installation: Set up build tools and runtimes
πŸ“‹ Configuration: Apply build-specific settings

βš™οΈ Phase 3: Build Execution

3.0 Infrastructure Assignment & Routing (NEW - Phase 3)

Smart Infrastructure Routing

🎯 Assignment Logic: Based on build requirements and user selection
☸️  Kubernetes Priority: Primary infrastructure for containerized builds
πŸ–₯️  Build Nodes Fallback: Dedicated servers for specialized workloads
βš–οΈ  Load Balancing: Distribute across available infrastructure
πŸ”„ Auto-Scaling: Scale infrastructure based on demand

Infrastructure Selection Process

1️⃣ Build Analysis: Evaluate build method, size, and requirements
2️⃣ Infrastructure Matching: Find optimal worker based on capabilities
3️⃣ Resource Reservation: Allocate compute resources
4️⃣ Environment Preparation: Set up build environment on assigned infrastructure

Infrastructure Types & Capabilities

☸️  Kubernetes Pods:
   β€’ Container-native execution
   β€’ Auto-scaling and self-healing
   β€’ GPU support for ML workloads
   β€’ Cost-effective for standard builds

πŸ–₯️  Build Nodes:
   β€’ Dedicated VM instances
   β€’ High-memory configurations
   β€’ Specialized hardware (GPU, ARM)
   β€’ Compliance-certified environments

Routing Decision Factors

πŸ“ Build Size: Large builds β†’ High-memory infrastructure
🎯 Build Type: GPU workloads β†’ GPU-enabled clusters
πŸ”’ Security Level: Compliance builds β†’ Certified infrastructure
⚑ Performance: Time-sensitive β†’ Optimized workers
πŸ’° Cost Optimization: Standard builds β†’ Cost-effective pods

3.1 Build Phases (Method-Specific)

🐳 Docker Build Execution

πŸ“¦ Phase 1: Base image download (30-120s)
πŸ—οΈ  Phase 2: Instruction execution (60-900s)
πŸ“‹ Phase 3: Metadata generation (10-30s)
🏷️  Phase 4: Image tagging (5-15s)
πŸ“€ Phase 5: Registry push (20-180s)

πŸ“¦ Packer Build Execution

πŸ”§ Phase 1: Template validation (5-15s)
πŸ—οΈ  Phase 2: Builder execution (300-3600s)
πŸ“€ Phase 3: Artifact upload (60-600s)
🧹 Phase 4: Cleanup (10-30s)

❄️ Nix Build Execution

πŸ“„ Phase 1: Expression evaluation (10-60s)
πŸ“¦ Phase 2: Dependency resolution (30-300s)
πŸ—οΈ  Phase 3: Package compilation (60-1800s)
πŸ’Ύ Phase 4: Store optimization (15-60s)

3.2 Real-Time Monitoring

Build Status Indicators

πŸ”„ Queued: Waiting for worker availability
βš™οΈ  Preparing: Environment setup in progress
πŸƒ Running: Active build execution
πŸ“Š Processing: Post-build operations
βœ… Completed: Successful build finish
❌ Failed: Build error occurred
⏸️  Paused: Manual intervention required

Progress Tracking

πŸ“ˆ Progress Bar: Visual completion percentage
⏱️  Elapsed Time: Current build duration
🎯 Current Step: Active build instruction
πŸ“Š Metrics: CPU, memory, disk usage

3.3 Log Streaming

Log Types Available

πŸ“‹ Build Logs: Command output and messages
πŸ› Debug Logs: Detailed execution tracing
πŸ“Š System Logs: Infrastructure events
🚨 Error Logs: Failure diagnostics

Log Features

πŸ” Real-time streaming
πŸ“„ Full log download
πŸ”Ž Search and filtering
πŸ“Š Log analytics
πŸ”” Log-based alerts

3.4 Build Artifacts

Artifact Generation

🏷️  Image Tags: Registry references
πŸ“¦ Package Files: Downloadable assets
πŸ“‹ SBOM Documents: Security manifests
πŸ“Š Build Reports: Execution summaries
πŸ” Signatures: Cryptographic verification

Artifact Storage

☁️  Cloud Storage: S3, GCS, Azure Blob
🏒 Registry: Docker Hub, ECR, GCR, Harbor
πŸ“¦ Local Cache: Worker node storage
πŸ”„ CDN: Global distribution

πŸ“Š Phase 4: Build Completion & Analysis

4.1 Completion Processing

Duration: 10-60 seconds

Final Steps:

βœ… Status Update: Mark build as completed
πŸ“Š Metrics Collection: Gather performance data
🧹 Resource Cleanup: Free allocated resources
πŸ“‹ Report Generation: Create build summary
πŸ”” Notification Dispatch: Alert stakeholders

4.2 Build Results Dashboard

Success Metrics

⏱️  Total Duration: End-to-end build time
πŸ’Ύ Artifact Size: Generated package size
🏷️  Tags Applied: Version and metadata tags
πŸ“Š Test Results: If applicable
πŸ›‘οΈ  Security Score: Vulnerability assessment

Quality Metrics

πŸ“ˆ Code Coverage: Test coverage percentage
πŸ› Issues Found: Static analysis results
πŸ“‹ Compliance: Policy check results
πŸ”’ Security: Vulnerability scan results

4.3 Artifact Distribution

Automatic Deployment

πŸš€ CD Integration: Trigger downstream deployments
πŸ“¦ Package Registries: Push to artifact repositories
☁️  Cloud Storage: Upload to object storage
🌐 CDN Updates: Refresh content delivery

Manual Distribution

πŸ“₯ Download Links: Direct artifact access
πŸ”— Registry URLs: Pull instructions
πŸ“‹ API Endpoints: Programmatic access
πŸ”„ Webhooks: External system integration

🚨 Phase 5: Error Handling & Recovery

5.1 Build Failure Scenarios

Common Failure Types

❌ Build Errors: Code compilation failures
πŸ” Test Failures: Unit/integration test errors
πŸ›‘οΈ  Security Blocks: Policy violation rejections
⏱️  Timeout: Build duration exceeded limits
πŸ’Ύ Resource Exhaustion: Memory/CPU/disk limits
🌐 Network Issues: Connectivity problems

Error Classification

πŸ”΄ Critical: Build cannot proceed
🟑 Warning: Non-blocking issues
🟒 Info: Informational messages
πŸ”΅ Debug: Detailed troubleshooting data

5.2 Automatic Recovery

Retry Logic

πŸ”„ Automatic Retries: Transient failure recovery
⏳ Exponential Backoff: Progressive delay increases
🎯 Smart Retry: Context-aware retry decisions
πŸ“Š Failure Analytics: Pattern recognition

Fallback Strategies

πŸ”€ Alternative Workers: Different machine types
πŸ“¦ Cached Dependencies: Skip redundant downloads
πŸš€ Parallel Execution: Distribute across workers
πŸ› οΈ  Tool Updates: Refresh build environment

5.3 Manual Intervention

Debug Access

πŸ› Debug Session: Interactive troubleshooting
πŸ“‹ Log Analysis: Detailed error examination
πŸ”§ Environment Access: Direct worker connection
πŸ“Š Performance Metrics: Resource usage analysis

Resolution Options

πŸ”„ Rebuild: Restart with same configuration
βš™οΈ  Reconfigure: Modify build parameters
πŸ› οΈ  Environment Fix: Update build environment
πŸ“ž Support Request: Escalate to engineering team

πŸ“ˆ Phase 6: Build Analytics & Optimization

6.1 Performance Monitoring

Build Metrics

⏱️  Build Duration: Average, median, percentiles
πŸ“Š Success Rate: Pass/fail percentages
πŸ’Ύ Resource Usage: CPU, memory, disk consumption
🌐 Network Traffic: Data transfer volumes

Trend Analysis

πŸ“ˆ Performance Trends: Duration changes over time
🎯 Success Trends: Reliability improvements
πŸ’° Cost Analysis: Resource usage costs
πŸ” Bottleneck Identification: Slowest build steps

6.2 Build History

Historical Data

πŸ“š Build Timeline: Chronological build list
πŸ” Search & Filter: Find specific builds
πŸ“Š Comparison: Side-by-side build analysis
πŸ“‹ Change Tracking: Configuration modifications

Build Insights

🎯 Most Active: Frequently built projects
⏱️  Slowest Builds: Performance optimization targets
❌ Failure Patterns: Common error identification
βœ… Success Patterns: Best practice identification

6.3 Optimization Recommendations

Automated Suggestions

πŸ’Ύ Cache Optimization: Improve layer caching
πŸ—οΈ  Parallel Builds: Multi-platform optimization
πŸ“¦ Dependency Management: Update strategies
πŸ› οΈ  Tool Updates: Latest version recommendations

Manual Optimizations

πŸ”§ Build Script Tuning: Performance improvements
πŸ“‹ Configuration Refinement: Parameter optimization
🌐 Network Optimization: Registry mirror usage
πŸ’½ Storage Optimization: Artifact size reduction

πŸ”„ Phase 7: Integration & Automation

7.1 CI/CD Integration

Webhook Triggers

πŸ”— Git Push: Automatic build on code changes
🏷️  Tag Creation: Release build triggers
πŸ“‹ PR Events: Pull request validation
πŸ“Š Schedule: Time-based build execution

Pipeline Orchestration

πŸ”„ Jenkins Integration: Classic CI/CD
πŸ™ GitHub Actions: Cloud-native workflows
πŸ—οΈ  GitLab CI: Integrated DevOps
☁️  Cloud Build: Managed build services

7.2 API Integration

Programmatic Access

πŸ”§ REST API: Full build lifecycle control
πŸ“Š Webhooks: Real-time event notifications
πŸ”Œ SDKs: Language-specific client libraries
πŸ€– ChatOps: Slack/Discord integration

External Systems

πŸ“‹ Jira: Issue tracking integration
πŸ“Š Datadog: Monitoring and alerting
☁️  CloudWatch: AWS service integration
πŸ“ˆ Grafana: Dashboard visualization

🎯 Success Criteria

For Build Submission

  • βœ… Build accepted without validation errors
  • βœ… Clear progress indicators throughout process
  • βœ… Real-time status updates and notifications

For Build Execution

  • βœ… Successful artifact generation
  • βœ… Complete log availability and searchability
  • βœ… Performance metrics collection and analysis

For Build Completion

  • βœ… Artifact delivery to specified destinations
  • βœ… Automated deployment triggers (if configured)
  • βœ… Comprehensive build reports and analytics

For Error Scenarios

  • βœ… Clear error messages with actionable guidance
  • βœ… Automatic retry mechanisms for transient failures
  • βœ… Debug access and troubleshooting tools

πŸš€ Quick Actions Reference

Emergency Actions

πŸ›‘ Stop Build: Immediate build cancellation
πŸ”„ Restart Build: Re-run with same configuration
πŸ› Debug Mode: Enable detailed logging
πŸ“ž Support: Contact engineering team

Common Tasks

πŸ“Š View Logs: Access real-time build output
πŸ“¦ Download Artifacts: Retrieve build outputs
πŸ” Search Builds: Find historical builds
πŸ“‹ View Reports: Access build analytics

Optimization Tasks

πŸ’Ύ Enable Caching: Improve build performance
🏷️  Tag Management: Organize build versions
πŸ“Š Monitor Trends: Track build performance
πŸ”§ Update Config: Modify build parameters

πŸ“ž Support & Troubleshooting

Self-Service Resources

πŸ“š Documentation: Comprehensive build guides
πŸŽ₯ Video Tutorials: Visual walkthroughs
πŸ€– Chat Support: AI-powered assistance
πŸ“‹ FAQ: Common issue resolution

Escalation Paths

1️⃣ Team Lead: Project-specific issues
2️⃣ Engineering: Technical build problems
3️⃣ Infrastructure: Platform and scaling issues
4️⃣ Security: Compliance and vulnerability concerns

πŸŽ‰ Congratulations! You've completed the comprehensive Build Pipeline Journey. Your builds now follow a robust, monitored, and optimized process from submission to shipment.