Skip to content

Build And Release

samatstarion edited this page Aug 11, 2024 · 13 revisions

Development Environment

The SysML2.NET project is developed using Visual Studio 2022.

The following tools are used by the Starion Group development team:

Build

The SysML2.NET solution contains two build configurations:

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

Release

Follow these steps to create pre-release nugets 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. 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.

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

release

SDK

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.

this is automated using the release.bat script. This will clean, build, package and upload the nugets to nuget.org . You will require a nuget API Key.

release.bat "your-api-key"

Web Application

DOCKER_BUILDKIT=1 docker build -f SysML2.NET.Viewer/Dockerfile -t stariongroup/sysml2.net.viewer:latest -t stariongroup/sysml2.net.viewer:x.y.z .

docker run -p 8080:80 --name sysml2-viewer stariongroup/sysml2.net.viewer:latest

docker push stariongroup/sysml2.net.viewer:latest
docker push stariongroup/sysml2.net.viewer:x.y.z

HTML docs

The HTML docs are geneated from the SysML2.NET.CodeGenerator.Tests project. The index.html file as well as the Graphiz dot file. Use the following command from the root folder of the solution:

dot -Tsvg SysML2.NET.CodeGenerator.Tests/bin/Debug/net8.0/_SysML2.NET.Core.AutoGenHtmlDocs/sysml2-class-inheritance.dot > SysML2.NET.CodeGenerator.Tests/bin/Debug/net8.0/_SysML2.NET.Core.AutoGenHtmlDocs/sysml2-class-inheritance.svg

The docker container is build, run and pushed using the following commands

docker build -f HtmlDocs/Dockerfile -t stariongroup/sysml2.net.docs:latest -t stariongroup/sysml2.net.docs:x.y.z .
docker run -p 8080:80 --name sysml2.net.docs stariongroup/sysml2.net.docs:latest

docker push stariongroup/sysml2.net.docs:latest
docker push stariongroup/sysml2.net.docs:x.y.z