langflow/.github/workflows/cross-platform-test.md

4.5 KiB

Cross-Platform Install Tests

Guide for running cross-platform installation tests manually and programmatically.

Available Tests

1. Test from PyPI

Tests published langflow packages from PyPI across all platforms.

Via GitHub UI:

  1. Go to ActionsManual Cross-Platform Test
  2. Check "Test from PyPI"
  3. Optionally specify a version (leave empty for latest)
  4. Click "Run workflow"

Via CLI:

# Test latest version
gh workflow run cross-platform-test-manual.yml -f test-from-pypi=true

# Test specific version
gh workflow run cross-platform-test-manual.yml \
  -f test-from-pypi=true \
  -f langflow-version="1.0.18"

2. Test from Source

Builds and tests langflow from current branch source code.

Via GitHub UI:

  1. Go to ActionsManual Cross-Platform Test
  2. Leave "Test from PyPI" unchecked
  3. Click "Run workflow"

Via CLI:

# Test current branch
gh workflow run cross-platform-test-manual.yml -f test-from-pypi=false

Platforms Tested

  • Linux: AMD64
  • macOS: Intel (AMD64), Apple Silicon (ARM64)
  • Windows: AMD64
  • Python versions:
    • Linux & macOS: 3.10 and 3.13
    • Windows: 3.10 and 3.12 (3.12 used instead of 3.13 for better stability)

What Gets Tested

  1. Package Installation: uv pip install langflow (PyPI) or local wheel installation
  2. Dependencies: Additional packages like openai for full functionality
  3. CLI Help: langflow --help
  4. Server Startup: langflow run --backend-only with /health_check endpoint validation
  5. Python Import: import langflow

Common Options

# Extended timeout (10 minutes instead of default 5)
gh workflow run cross-platform-test-manual.yml \
  -f test-timeout=10

# Test specific PyPI version
gh workflow run cross-platform-test-manual.yml \
  -f test-from-pypi=true \
  -f langflow-version="1.0.18"

Use Cases

  • Before releases: Verify current branch works on all platforms
  • After PyPI publish: Confirm published packages install correctly
  • Debugging issues: Test specific versions when users report problems
  • Development: Quick cross-platform validation during feature work

Technical Details

Installation Methods

  • PyPI testing: Uses uv pip install with official PyPI packages
  • Source testing: Builds wheels from source, then installs locally
  • Dependencies: Automatically installs additional packages (openai) for full functionality

Health Checking

  • Endpoint: Uses /health_check for reliable server readiness validation
  • Validation: Checks database connectivity and chat service functionality
  • Timeout: Configurable timeout with proper cross-platform handling

Platform-Specific Optimizations

  • Windows: Uses Python 3.12 for better package ecosystem stability
  • Unix: Uses Python 3.13 for latest language features where stable
  • Virtual Environments: Uses uv venv --seed for consistent pip availability

Workflow Architecture

Manual Entry Point:
└── cross-platform-test-manual.yml (workflow_dispatch)
    ├── PyPI Mode → cross-platform-test-shared.yml
    └── Source Mode → cross-platform-test.yml → cross-platform-test-shared.yml

Programmatic Entry Point:
└── cross-platform-test.yml (workflow_call only)
    └── cross-platform-test-shared.yml
  • Manual Workflow: User-facing interface with PyPI/source options
  • Main Workflow: Internal workflow for programmatic calls (CI, releases)
  • Shared Workflow: Core test execution logic (matrix jobs)
  • Single Entry Point: Use cross-platform-test-manual.yml for all manual testing

Parameter Requirements

⚠️ Important: When calling reusable workflows from workflow_dispatch triggers, all parameters must be explicitly provided, even optional ones with defaults. Missing optional parameters can cause workflows to be silently skipped.

Example of correct parameter passing:

uses: ./.github/workflows/cross-platform-test-shared.yml
with:
  install-method: "wheel" 
  test-timeout: 5
  langflow-version: ""          # ← Required even though optional
  base-artifact-name: "dist"
  main-artifact-name: "dist"  
  run-id: ""                   # ← Required even though optional

Results

  • Success: All platforms pass installation and basic functionality
  • Failure: One or more platforms fail (check logs for details)
  • Each platform/Python combination runs independently
  • Parallel execution: All platforms tested simultaneously for faster feedback