Release Flow
Release Flow
Section titled “Release Flow”This page documents how the repository builds, tests, packs, and releases
Purview.SourceGeneratorFramework.
Versioning
Section titled “Versioning”The current version lives in the repository-root package.json:
{ "name": "purview-sourcegenerator-framework", "version": "1.0.0-prerelease.42"}The version is read by the build tooling (for example just version runs
bun -p "require('./package.json').version"), and GitHub releases are tagged v<version>, e.g.
v1.0.0-prerelease.42.
Workflows
Section titled “Workflows”Pull requests
Section titled “Pull requests”.github/workflows/pr.yml runs on pull_request to main. It calls the shared
purview-dev/build workflow (purview-build.yml) with run-pack: true and validate-pack: true, so
every PR restores, builds, lints, runs tests, packs, and validates the packages.
Releases
Section titled “Releases”.github/workflows/release.yml runs on push to main. It calls the shared
purview-dev/build workflow (purview-release.yml) with release-mode: NuGet, which builds, tests,
packs, validates, publishes to NuGet, and creates the GitHub release.
Local pipelines
Section titled “Local pipelines”The Justfile wraps the shared Purview.Build pipeline (a pinned .NET local tool, restored from
.config/dotnet-tools.json and run as dotnet purview-build):
| Recipe | Pipeline mode | Purpose |
|---|---|---|
just pipeline-pr | default | Restore, build, lint, tests. |
just pipeline-build | --Build:RunTests=false --Release:Mode=None | Build-only pipeline. |
just pipeline-tests | --Build:RunTests=true --Release:Mode=None | Build with tests. |
just pipeline-release | --Release:Mode=NuGet | Full release: build, test, pack, publish. |
just pipeline-local-release | --Release:Mode=LocalNuGet | Build, test, pack, and publish to a local NuGet feed. |
Convenience recipes also exist for building (just build), testing (just test, just test-unit),
packing (just pack), benchmarking (just benchmark), linting (just lint-check/just lint-fix),
and cleaning (just clean, just scrub).
Pack validation
Section titled “Pack validation”purview-build.json configures pack validation:
PackValidation.RequireSymbolPackageandRequireSymbolFiles— every packable package must ship a.snupkgwith symbol files.PackValidation.RequiredContent— each package must contain its declared assets. For example,purview.sourcegeneratorframeworkmust contain thelib/netstandard2.0/framework assembly and shared assembly, theanalyzers/dotnet/cs/generator/analyzer/code-fixer/shared assemblies, thebuild/Purview.SourceGeneratorFramework.propsand.targetsfiles,README.md,LICENSE.md, andpurview-logo-light.png. See Packaging.md for details.PackValidation.ForbiddenContent—*.pdbfiles are forbidden inside the.nupkg(PDBs are delivered only through the.snupkg).
Dependency management
Section titled “Dependency management”Directory.Packages.props centralises package versions:
Microsoft.CodeAnalysis.CSharp/Microsoft.CodeAnalysis.CSharp.Workspaces— Roslyn 5.x (RoslynCompilerVersion, currently[5.9.0,)).Microsoft.CodeAnalysis.Analyzers—RoslynAnalyzersVersion[5.9.0,).TUnit/TUnit.Core/TUnit.Assertions/TUnit.Mocks—[1.67.0,).System.Reflection.MetadataLoadContext— used by the testing package for the metadata-onlyCompilationResultview.
Central Package Management is enabled with CentralPackageTransitivePinningEnabled.
License
Section titled “License”This documentation is part of the MIT-licensed Purview.SourceGeneratorFramework project.