Repository navigation
6 Build CI and Release
Relevant source files
The following files were used as context for generating this wiki page:
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
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
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.
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
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.
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.
Content imported from DeepWiki.