Skip to content

Add selectable cross-platform release build and publication workflow #8

Description

@physicsG

Summary

Add a manual GitHub Actions workflow that can build release artifacts for any selected combination of Linux, Windows, and macOS, while keeping build, signing, and publication as separate protected stages.

Scope

  • Refactor existing reusable build workflows into side-effect-free platform builders.
  • Reuse dependency caches and current packaging logic.
  • Support selectable targets through workflow_dispatch inputs:
    • Ubuntu 24.04 AppImage;
    • Windows Server 2022 NSIS installer and portable archive;
    • macOS 14 universal DMG.
  • Allow a branch, tag, or commit SHA to be selected as the source ref.
  • Optionally run the full automated test suite before packaging.
  • Upload artifacts and checksums without publishing by default.
  • Support explicit publication modes: artifacts only, draft release, prerelease, and production release.
  • Restrict signing, notarization, and release credentials to protected environments.
  • Preserve unsigned fork/QA builds when signing credentials are unavailable.
  • Separate release publication from expensive platform compilation so failed publication does not require rebuilding.

Proposed workflow structure

.github/workflows/build_platform.yml
.github/workflows/release_manual.yml
.github/workflows/publish_release.yml
.github/workflows/release_tag.yml    # optional later

Recommended manual inputs

source_ref
build_linux
build_windows
build_macos
run_full_tests
sign_artifacts
publish_mode
version_label

Acceptance criteria

  • A maintainer can select any combination of Linux, Windows, and macOS in the Actions UI.
  • Selected builds produce correctly named downloadable artifacts.
  • Windows produces both installer and portable artifacts.
  • macOS produces a universal DMG and signs/notarizes only when explicitly authorized.
  • Linux produces an Ubuntu 24.04 AppImage.
  • Every artifact has a SHA-256 checksum and build manifest.
  • artifacts-only mode never creates or updates a GitHub release.
  • Draft, prerelease, and production publication are separate protected actions.
  • Production release requires a matching version tag and successful full tests.
  • Pull-request workflows cannot access signing secrets or publish artifacts as releases.
  • Reusable builders never deploy nightly assets, push tags, or modify branches.

Dependencies

Design reference

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions