ring! service launcher and monitor
$ dotnet add package ATech.Ring.DotNet.CliRing brings order into the messy world of developing and debugging a cloud-ready microservice system side by side with maintaining and migrating legacy ones where you may have many different types of services (ASP.NET Core, Topshelf, WCF, ...) hosted in many different ways (Kubernetes, Docker, IIS Express, WindowsService, Exe) and scattered across many solutions and repositories.
Ring consists of the following parts:
Ring groups apps into workspaces. Workspaces are defined in TOML files. Workspaces are composed from apps and other workspaces. A workspace can be loaded and started. Ring periodically runs a health check for every app, tries restarting the unhealthy ones, and reports the dead ones. Ring also exposes a web socket interface. Visual Studio extensions use it mainly for visualizing workspace/apps states, turning services off/on for build/debugging if they're a part of the currently loaded project/solution.
dockercompose - docker-compose filesproc - arbitrary native processesWindows-only:
iisxcore - ASP.NET Core apps in IIS Expressnetexe - full .NET Framework console apps (like TopShelf)dotnet tool install --global ATech.Ring.DotNet.Cli
Make sure you installed the dotnet tool first.
Download here ring! for Visual Studio
Download an early preview
If ring does not work as expected you can use --debug or -d switch to enable a debug level output.
ring run -w .\path\to\your\workspace.toml -d
run - runs a specified workspace in a stand-alone mode.headless - starts and awaits clients (VS Code / VS extension) connections. Once connected a client can load a
workspace and interact with it.clone - loads a workspace and clones configured repos for each runnable. The runnables must have the sshRepoUrl
parameter configured otherwise they'll be skipped.config-* commands - more info here - configuration files.import tag.
Ring can only run a single workspace at a time.# your workspace.toml
[[kustomize]]
path = "your/app"
[[dockercompose]]
path = "app/2"
[[import]]
path = "relative/path/to/your/workspace.toml"Serve locally:
docker run -p 8089:8089 --rm -it -v ~/.ssh:/root/.ssh -v ${PWD}:/docs squidfunk/mkdocs-material serve -a 0.0.0.0:8089Publish
docker run --rm -it -v ~/.ssh:/root/.ssh -v ${PWD}:/docs squidfunk/mkdocs-material gh-deploy