Skip to content

GitHub: Add CI and CD workflows #109

@Lamparter

Description

@Lamparter

The CI and CD should be one unified workflow.
There needs to be smoke test (build) jobs for the following targets:

  • CI / formatting XAML Styler
  • CI / lib Libraries
    • Configuration: Release, Debug
    • Dependency: NWebDav.Server, NWebDav.Server.HttpListener, Tmds.Fuse
  • CI / shared (Release, Shared, net10.0) Shared
    • Configuration: Release, Debug
    • Project: Shared, SourceGenerator, Storage
    • TargetFramework: net10.0
  • CI / sdk (Release, Sdk, net10.0) SDK (needs Shared)
    • Configuration: Release, Debug
    • Project: Sdk, Accounts, DeviceLink, Dropbox, Ftp, GoogleDrive, WebDavClient
    • TargetFramework: net10.0
  • CI / core (Release, Dokany, net10.0) Core (needs Shared, Libraries)
    • Configuration: Release, Debug
    • Project: Dokany, FileSystem, FUSE, MobileFS, WebDav, WinFsp, Core, Cryptography, Migration
    • TargetFramework: net10.0, net10.0-android, net10.0-ios (the previous two are custom implemented matrices)
  • CI / ui (Release, net10.0) UI (needs Core, SDK)
    • Configuration: Release, Debug
    • TargetFramework: net10.0
  • CI / uno (Release, net10.0-desktop) Uno app (needs Core, SDK, Shared, UI)
    • Configuration: Release, Debug
    • TargetFramework: net10.0-desktop, net10.0-maccatalyst, net10.0-windows10.0.26100.0
  • CI / maui (Release, net10.0-android) MAUI app (needs Core, SDK, Shared, UI)
    • Configuration: Release, Debug
    • TargetFramework: net10.0-android, net10.0-ios
  • CI / cli (Release, net10.0) CLI
    • Configuration: Release, Debug
    • TargetFramework: net10.0
  • CI / test (Release, net10.0) CLI
    • Configuration: Release, Debug
    • TargetFramework: net10.0

The following jobs must have versioning / package published and uploaded (implementation is custom for each project):

  • Uno app
  • MAUI app
  • CLI

The following performance optimisations can be made:

  • 'Continue' runner sessions by uploading entire repo to artifacts and downloading in dependent sessions
  • Restore only currently required projects (if possible, unnecessary if above optimisation is implemented)
  • Allow MSBuild to use all the CPU cores made available by the runner (apply the -maxcpucount switch to all commands)

Metadata

Metadata

Assignees

No one assigned

    Labels

    triage approvedThe issue has been reviewed and approved for development

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions