Release Flow
Release Flow
Section titled “Release Flow”Releases are driven by GitHub Actions using the reusable purview-dev/build pipelines. No release steps are performed manually.
Feature branch → PR to main (pr.yml runs purview-build.yml: restore + build + lint + tests) → merge to main (release.yml runs purview-release.yml: build, test, pack, publish) → GitHub Release (NuGet package + changelog, created by the pipeline)Workflow components
Section titled “Workflow components”| Component | File | Purpose |
|---|---|---|
| PR gate | .github/workflows/pr.yml | Runs the reusable purview-dev/build purview-build.yml pipeline (restore, build, lint, tests) and builds/tests the sample solution. |
| CD pipeline | .github/workflows/release.yml | Runs the reusable purview-dev/build purview-release.yml pipeline on push to main. |
| Local pipeline | Justfile pipeline-* recipes | Mirror the CI/CD pipelines locally via the Purview.Build tool (.tools/purview-build). |
Developer workflow
Section titled “Developer workflow”- Create a feature branch and make your changes.
- Validate locally with
just pipeline-pr(restore, build, lint, tests — the same gate CI enforces). - Push and open a PR to
main.pr.ymlmust pass (build, lint, tests, plus the sample build/test job). - Merge the PR into
main. - The release is published automatically —
release.ymlrestores and builds the main and sample solutions, runs the integration tests, packs the NuGet package, publishes it, and creates a GitHub Release.
Versioning
Section titled “Versioning”- The version lives in
package.json. Current Version: 5.0.0-prerelease.8 - It is applied to
Version/PackageVersionbyPurview.BuildSdkvia package.json version detection. just versionprints the current version.- After bumping
package.json, runjust update-versionto sync the version into docs/samples.
Building the package locally
Section titled “Building the package locally”| Command | Purpose |
|---|---|
just pack | Updates the version, then packs the NuGet package into artifacts/. |
just pipeline-local-release | Packs and publishes to a local NuGet feed (see the Justfile note on argument quoting for the feed path). |
just pipeline-release | Full release pipeline (build, test, pack, publish, GitHub release). |
Pre-release validation
Section titled “Pre-release validation”Before a release, validate locally:
just pipeline-pr— restore, build, lint, tests.just build-s && just test-s— sample solution build and tests.just pipeline-local-release— confirm the pack + local publish succeed.
Releasing
Section titled “Releasing”- Bump the version in
package.json. - Run
just update-versionto sync docs/samples. - Push a PR with the version bump; merge to
main. release.ymlpublishes the release automatically.
The legacy
scripts/setup-release.*files describe a changeset-based (@changesets/cli) flow that is not used by this repository. They are retained for reference only; the actual release automation lives in.github/workflows/pr.ymland.github/workflows/release.yml.
See also
Section titled “See also”- Contributing — development setup and conventions