Skip to content
Stephen Swensen edited this page May 17, 2021 · 24 revisions

Tooling

Release is performed with a machine that supports make (namely Linux) and has at least version 5.0.202 of dotnet installed

Development Process

  • All Issues that will be included in a release should be assigned to milestone
  • Usually each Issue should be associated with exactly one PR
    • But sometimes multiple Issues may be associated with the same PR
  • PRs should be merged and closed along with associated Issues as work is completed (coding done, all tests pass).
    • For smaller releases (e.g. minor and patch versions), merges can be done directly to master
    • For bigger releases (e.g. major versions), merges may be done to an integration branch / PR
  • Releases should be done from the master branch after all milestone PRs are merged

Quality Assurance

Before merging any PRs or pushing any releases from master, make sure to run tests and spot check "verification" output for supported test frameworks

  • make test - all tests should pass
  • make verify - output looks good for different test frameworks

Pre-Releases

For bigger (e.g. major version) releases, it may be useful to publish pre-release versions to NuGet. The following steps may be done from master or potentially an integration PR branch for major releases.

  • update src/Unquote/Unquote.nuspec version following SemVer2.0 pattern like <major>.<minor>.<patch>-rc.<release candidate number>
  • execute make push

Release

These release steps are performed the master branch that is ready for release

  • update src/Unquote/Unquote.nuspec version and src/Unquote/Unquote.fsproj Version property to final release version and commit
  • Tag the release using git tag <version number> followed by git push && git push --tags
  • build, pack, and push the release to NuGet.org using make push

Post-Release

  • Update the ReleaseNotes
    1. Create a new heading and summary description of the release
    2. Link to to the list of issue in the release (e.g. using an issue filter like is:issue milestone:3.1.0 is:closed).
  • Manually close the milestone via the Milestones page