Build And Release - STARIONGROUP/Kalliope GitHub Wiki

Development Environment

Kalliope is developed using Visual Studio 2022.

The following tools are used by the RHEA development team:

Build

The Kalliope solution contains two build configurations:

  • debug: used while developing new features
  • release: used to create a build for release

Release

A manual build can be created as well, follow the steps to create pre-release nugets that are not optimized using the Debug configuration or a release nugets using the Release configuration:

  1. Run all unit tests and verify that they pass
  2. Make sure the version numbers of the projects are incremented when things have changed; the project makes use of SEMVER.
  3. Update the in the .csproj files; this will be visible on https://nuget.org
  4. Push this state to development and verify the quality metrics on SonarQube 1 Create a Tag on GitHub using the same version as used in the .csproj file
  5. Via the GitHub web-ui draft a new release referencing the tag and set the release title to Version MAJOR.MINOR.PATCH. The description of the release shall mention the updates referencing the GitHub issue numbers.
  6. rebase master from development and push to origin

NOTE: The .csproj files contain settings that indicate that a symbols package is created as well. When using dotnet push to publish the packages on https://nuget.org, the symbols packages will be pushed as well.

pre-release

First clean the solution and then pack. The pack command will build and create the nugets. The --version-suffix parameter is used to add a suffix such as rc01.

dotnet clean -c Debug
dotnet pack --version-suffix "rcxy" -c Debug

In case you want to push the new nugets to https://nuget.org use the following command. You will require an API Key. This needs to be repeated for each nuget that needs to be published.

dotnet push Kalliope.MAJOR.MINOR.PATCH-rcxy.nupkg -Source https://api.nuget.org/v3/index.json -ApiKey "your-api-key"

release

First clean the solution and then pack. The pack command will build and create the nugets. The --include-source parameter is used to add the symbols and the source code to a specific symbols nuget. The symbols nuget will automatically be pushed to https://nuget.smbsrc.net.

dotnet clean -c Release Kalliope.sln
dotnet pack --include-source -c Release Kalliope.sln -o .

In case you want to push the new nugets to https://nuget.org use the following command. You will require an API Key. This needs to be repeated for each nuget that needs to be published.

dotnet nuget push Kalliope.MAJOR.MINOR.PATCH.nupkg -s https://api.nuget.org/v3/index.json -k "your-api-key"
dotnet nuget push Kalliope.Common.MAJOR.MINOR.PATCH.nupkg -s https://api.nuget.org/v3/index.json -k "your-api-key"
dotnet nuget push Kalliope.DTO.MAJOR.MINOR.PATCH.nupkg -s https://api.nuget.org/v3/index.json -k "your-api-key"
dotnet nuget push Kalliope.Dal.MAJOR.MINOR.PATCH.nupkg -s https://api.nuget.org/v3/index.json -k "your-api-key"
dotnet nuget push Kalliope.Xml.MAJOR.MINOR.PATCH.nupkg -s https://api.nuget.org/v3/index.json -k "your-api-key"
dotnet nuget push Kalliope.OO.MAJOR.MINOR.PATCH.nupkg -s https://api.nuget.org/v3/index.json -k "your-api-key"

Note The release-nuget.bat script can be used to build and release all packages in the solution. The nuget API key needs to be provided as argument