Skip to content

6 Build CI and Release

coding man edited this page Nov 4, 2026 · 1 revision

Build, CI and Release

Relevant source files

The following files were used as context for generating this wiki page:

Purpose and Scope

This page provides a high-level overview of the build tooling, continuous integration (CI) workflows, packaging pipelines, and release management processes for VariantScope. The infrastructure ensures that code changes are automatically validated via linters and test suites .github/workflows/ci.yml:16-31, cross-compiled into desktop installers .github/workflows/release.yml:35-72, and deployed to GitHub Pages for web usage .github/workflows/pages.yml:1-53.

For deep technical details on specific workflows, packaging configuration, or documentation maintenance, refer to the child pages:

Sources: .github/workflows/ci.yml:1-107, .github/workflows/release.yml:1-99, .github/workflows/pages.yml:1-53


6.1 CI Workflows

The continuous integration pipeline is defined in GitHub Actions workflows .github/workflows/ci.yml:1-107, .github/workflows/pages.yml:1-53. The main CI workflow (ci.yml) executes four primary job groupings on pull requests and pushes to the main branch: fast validation checks (check), distributed browser end-to-end tests (e2e-web), multi-platform packaging smoke tests (package-smoke), and desktop E2E testing (electron-e2e) .github/workflows/ci.yml:15-107.

Simultaneously, the web distribution pipeline (pages.yml) builds the Vite web assets and deploys them directly to GitHub Pages upon merging to main .github/workflows/pages.yml:1-53.

graph TD
  Trigger["Push or Pull Request"] --> CheckJob["ci.yml: check"]
  Trigger --> WebE2E["ci.yml: e2e-web"]
  Trigger --> Smoke["ci.yml: package-smoke"]
  Trigger --> ElecE2E["ci.yml: electron-e2e"]
  
  MainPush["Push to main branch"] --> PagesBuild["pages.yml: build"]
  PagesBuild --> PagesDeploy["pages.yml: deploy"]

  CheckJob --> Lint["npm run lint"]
  CheckJob --> Unit["vitest run --coverage"]
  CheckJob --> WebBuild["npm run build:web"]

  WebE2E --> Shards["playwright test --shard=1..4"]
  Smoke --> ElecBuilder["electron-builder --dir"]
  ElecE2E --> Xvfb["xvfb-run playwright test --project=electron"]

  subgraph "Code Entity Space"
    CheckJob
    WebE2E
    Smoke
    ElecE2E
    PagesBuild
    PagesDeploy
  end
Loading

Figure 1: CI Pipeline architecture mapping workflow events and job identifiers to underlying execution steps.

Sources: .github/workflows/ci.yml:1-107, .github/workflows/pages.yml:1-53

For details, see CI Workflows.


6.2 Packaging and Release

Desktop application packaging and distribution are orchestrated via .github/workflows/release.yml and triggered by pushing a version tag matching v* (or manually via workflow dispatch) .github/workflows/release.yml:1-10. The release process uses a three-stage pipeline: a draft job to initialize the release entry .github/workflows/release.yml:18-30, a parallel build matrix targeting Linux, macOS, and Windows .github/workflows/release.yml:35-73, and a final publish job that generates cryptographic checksums (SHA256SUMS.txt) and publishes the release assets .github/workflows/release.yml:75-99.

Manual or dry-run releases build all installers across platforms without publishing them to GitHub docs/PUBLISHING.md:54-63. Versioning is strictly enforced by deriving the application version directly from the Git tag, ensuring synchronization between git tags and package.json .github/workflows/release.yml:50-53.

graph TD
  Tag["v* Tag Push"] --> DraftJob["release.yml: draft"]
  DraftJob --> BuildMatrix["release.yml: build (matrix: os)"]
  
  subgraph "Multi-Platform Build"
    BuildMatrix --> Win["Windows Installers (.exe)"]
    BuildMatrix --> Mac["macOS Installers (.dmg)"]
    BuildMatrix --> Lin["Linux Installers (.AppImage, .deb)"]
  end

  Win --> PublishJob["release.yml: publish"]
  Mac --> PublishJob
  Lin --> PublishJob

  PublishJob --> Checksum["Generate SHA256SUMS.txt"]
  Checksum --> GitHubRelease["Publish GitHub Release"]

  subgraph "Code Entity Space"
    DraftJob
    BuildMatrix
    PublishJob
  end
Loading

Figure 2: Release pipeline architecture showing tag-driven distribution and artifact publishing workflows.

Sources: .github/workflows/release.yml:1-99, docs/PUBLISHING.md:54-94

For details, see Packaging and Release.


6.3 Documentation and Screenshots

Project documentation, publishing guides, interview notes, and changelogs are maintained directly in the docs/ directory docs/PUBLISHING.md:1-105. These files guide maintainers through repository setup, manual publishing workflows, release verification steps, and post-release testing protocols docs/PUBLISHING.md:1-105.

Visual artifacts such as UI screenshots and architecture diagrams are managed in coordination with automated test helpers, supporting the generation of documentation assets.

Sources: docs/PUBLISHING.md:1-105

For details, see Documentation and Screenshots.


Clone this wiki locally