Skip to content

Build And Release

samatrhea edited this page Oct 18, 2026 · 13 revisions

Build configurations

The solution has two build configurations:

  • Debug: used while developing.
  • Release: used to build the NuGet packages.

Release builds in CI set ContinuousIntegrationBuild=true, so the packages are deterministic: building the same commit twice gives identical packages.

Versioning

The two packages version independently and follow Semantic Versioning. Increment the version of a package in its .csproj when it changes. When ReqIFSharp gets a new version, ReqIFSharp.Extensions gets one too, because it depends on it.

Release

The packages are published on nuget.org by the Nuget-Release GitHub Action, which is started by hand with the version number.

Before the release

  1. Run all unit tests and check that they pass.
  2. Increment the <Version> of each package that changed.
  3. In CHANGELOG.md, rename ## [Unreleased] to ## [X.Y.Z] - YYYY-MM-DD, name the ReqIFSharp.Extensions version below the heading, add a new empty ## [Unreleased] section and update the links at the bottom of the file.
  4. Copy the entries into the <PackageReleaseNotes> of the affected .csproj files. They are shown on nuget.org and used for the draft GitHub release.

Run the release action

Start the release action with the version number. It:

  1. updates the version and date in CITATION.cff and commits that to the default branch
  2. builds the release notes from the <PackageReleaseNotes>
  3. packs the solution and pushes the packages to nuget.org
  4. tags the commit with the version
  5. creates a draft GitHub release

After the release

  1. Review and publish the draft release in the GitHub web interface.
  2. Rebase master on development and push it.

Clone this wiki locally