Skip to content

Add comprehensive CI workflow for MistDemo example #239

@leogdion

Description

@leogdion

Description

MistDemo is currently the only example in the Examples/ directory without its own comprehensive CI workflow. BushelCloud and CelestraCloud both have workflows in their .github/workflows/ directories with:

  • Multi-OS testing (Ubuntu, macOS, Windows)
  • Multi-Swift version matrices (6.2 stable + 6.3 nightly)
  • Code coverage reporting via Codecov
  • Platform-specific testing

Current State

MistDemo is tested via the main repo's .github/workflows/examples.yml, which provides only basic smoke testing:

  • Ubuntu-latest only
  • Swift 6.2 only
  • No coverage reporting
  • No macOS-specific validation

Proposed Workflow

Add Examples/MistDemo/.github/workflows/MistDemo.yml with:

Matrix Strategy:

matrix:
  include:
    # Ubuntu builds
    - os: ubuntu-latest
      swift: 6.2
      container: swift:6.2-noble
    - os: ubuntu-latest
      swift: 6.3
      container: swiftlang/swift:nightly-6.3-noble
      nightly: true

    # macOS build
    - os: macos-latest
      swift: 6.2

Features:

  • Build and test on Ubuntu (noble container) and macOS
  • Test with Swift 6.2 stable and 6.3 nightly
  • Code coverage reporting to Codecov with flag mistdemo
  • Test ConfigKeyKit library separately
  • Validate CLI executable builds

Reference Implementations:

  • Examples/BushelCloud/.github/workflows/BushelCloud.yml (similar structure)
  • Examples/CelestraCloud/.github/workflows/CelestraCloud.yml (more comprehensive)
  • .github/workflows/MistKit.yml (main library workflow patterns)

Testing Configuration

Since MistDemo uses ConfigKeyKit and depends on:

  • swift-configuration
  • Hummingbird
  • swift-service-lifecycle

The workflow should validate:

  1. ConfigKeyKit library builds
  2. MistDemoTests pass
  3. mistdemo executable builds successfully
  4. macOS-specific integration (since config files may behave differently on macOS)

Labels

Added: enhancement, testing

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesttestingTesting-related issues

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions