The repository uses three primary GitHub Actions workflows.
.github/workflows/build.yml restores, builds, and tests the complete product
solution on Linux, Windows, and macOS. It uploads TRX test result artifacts and
publishes check-run test reports when the token can create checks. A Linux NuGet
pack job validates all 48 product packages and symbol packages, required NuGet
metadata, generated built-in extension manifests, README badge coverage, and the
two sample extension packages before uploading .nupkg and .snupkg artifacts
for inspection.
.github/workflows/docs.yml builds the Lunet site from site/. Pushes to the
default branch deploy to GitHub Pages. Pull requests build the site without
deploying.
.github/workflows/release.yml runs on valid Semantic Version v* tags and
manual dispatch. It builds and tests the solution, publishes framework-dependent
x64 and Arm64 app archives for Linux, Windows, and macOS, validates and packs
reusable libraries and installable extensions, publishes .nupkg and .snupkg
symbols to NuGet, and creates a GitHub release with generated notes and a
SHA256SUMS integrity file. Releases require the NUGET_API_KEY repository
secret so GitHub and NuGet cannot silently diverge.
Each application archive is checked for the app host, a matching runtime-specific previewer host, the VS Code compatibility host, README, changelog, and license before it is uploaded.
NuGet package metadata is centralized in Directory.Build.props: package
identity defaults, author and company, repository and project URLs, MIT license,
readme, icon, tags, Source Link, deterministic build settings, and symbol
package output. Directory.Build.targets generates version-synchronized
xve.extension.json manifests for built-in extension packages. Executable hosts
and tests remain non-packable.
./build-docs.sh