ATech.Ring.DotNet.Cli
5.0.0-alpha.1
See the version list below for details.
dotnet tool install --global ATech.Ring.DotNet.Cli --version 5.0.0-alpha.1
dotnet new tool-manifest # if you are setting up this repo dotnet tool install --local ATech.Ring.DotNet.Cli --version 5.0.0-alpha.1
#tool dotnet:?package=ATech.Ring.DotNet.Cli&version=5.0.0-alpha.1&prerelease
nuke :add-package ATech.Ring.DotNet.Cli --version 5.0.0-alpha.1
Ring
Meta-orchestrator for developers (cross-platform)
Ring 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.
What is it?
Ring consists of the following parts:
- the meta-orchestrator (a dotnet CLI tool)
- Visual Studio Extension (2022, also versions pre 4.0 support 2017, and 2019)
- Visual Studio Code Extension (WIP)
How it works
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.
Basic facts
- You can run multiple instances of ring (serving different independent workspaces)
- There can be multiple clients (VS/VS Code extensions) interacting with a Ring instance at a time although mostly you'd have just one
- Ring is meant to keep your workspace running even if you quit Visual Studio
- You can also run Ring in a stand-alone mode which just keeps your workspace running
- Ring exposes a web socket interface on port 7999
Supported runnables
- kustomize - Kubernetes apps managed by Kustomize
dockercompose
- docker-compose files- aspnetcore - .NET Core apps running in console (like ASP.NET Core in Kestrel)
proc
- arbitrary native processes
Windows-only:
iisxcore
- ASP.NET Core apps in IIS Express- iisexpress - WCF and other .NET Framework services hosted in IIS Express
netexe
- full .NET Framework console apps (like TopShelf)
Installation
Ring dotnet tool
dotnet tool install --global ATech.Ring.DotNet.Cli
Visual Studio Extension
Make sure you installed the dotnet tool first.
Download here ring! for Visual Studio
Visual Studio Code Extension
Download an early preview
Troubleshooting
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
CLI commands
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 thesshRepoUrl
parameter configured otherwise they'll be skipped.config-*
commands - more info here - configuration files.
Vocabulary
- app (aka runnable - an application/service/process ring manages.
- workspace - a logical grouping of apps defined in TOML file(s).
Workspaces can be composed of other workspaces using the
import
tag. Ring can only run a single workspace at a time.
Example workspace
# your workspace.toml
[[kustomize]]
path = "your/app"
[[dockercompose]]
path = "app/2"
[[import]]
path = "relative/path/to/your/workspace.toml"
Authoring workspaces
Release notes
Working with the docs
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:8089
Publish
docker run --rm -it -v ~/.ssh:/root/.ssh -v ${PWD}:/docs squidfunk/mkdocs-material gh-deploy
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
This package has no dependencies.
Version | Downloads | Last updated | |
---|---|---|---|
5.1.0-alpha.1 | 103 | 1/16/2024 | |
5.0.3 | 100 | 10/2/2024 | |
5.0.2 | 86 | 9/30/2024 | |
5.0.1 | 94 | 9/30/2024 | |
5.0.0 | 278 | 1/14/2024 | |
5.0.0-alpha.1 | 60 | 1/13/2024 | |
4.3.0 | 192 | 1/12/2024 | |
4.3.0-alpha.2 | 71 | 1/12/2024 | |
4.3.0-alpha.1 | 69 | 1/12/2024 | |
4.2.0 | 258 | 12/8/2023 | |
4.1.0 | 187 | 12/8/2023 | |
4.1.0-alpha.2 | 78 | 12/6/2023 | |
4.1.0-alpha.1 | 71 | 12/6/2023 | |
4.0.1 | 197 | 12/6/2023 | |
4.0.1-alpha.4 | 73 | 12/5/2023 | |
4.0.1-alpha.3 | 73 | 12/5/2023 | |
4.0.1-alpha.2 | 84 | 12/4/2023 | |
4.0.1-alpha.1 | 77 | 12/4/2023 | |
4.0.0 | 209 | 6/23/2023 | |
4.0.0-beta.4 | 105 | 5/7/2023 | |
4.0.0-beta.3 | 95 | 5/3/2023 | |
4.0.0-beta.2 | 95 | 5/3/2023 | |
4.0.0-beta.1 | 98 | 3/7/2023 | |
4.0.0-alpha.9 | 102 | 11/1/2022 | |
4.0.0-alpha.8 | 111 | 11/1/2022 | |
4.0.0-alpha.7 | 119 | 10/28/2022 | |
4.0.0-alpha.6 | 115 | 10/28/2022 | |
4.0.0-alpha.5 | 118 | 9/1/2022 | |
4.0.0-alpha.4 | 113 | 8/23/2022 | |
4.0.0-alpha.3 | 108 | 8/23/2022 | |
4.0.0-alpha.2 | 103 | 8/23/2022 | |
4.0.0-alpha.1 | 120 | 8/22/2022 | |
3.2.0-alpha.2 | 119 | 8/19/2022 | |
3.2.0-alpha.1 | 122 | 8/19/2022 | |
3.1.2 | 479 | 1/3/2022 | |
3.1.2-alpha.4 | 144 | 1/3/2022 | |
3.1.2-alpha.3 | 139 | 1/3/2022 | |
3.1.2-alpha.2 | 133 | 1/3/2022 | |
3.1.2-alpha.1 | 133 | 1/3/2022 | |
3.1.1 | 323 | 12/31/2021 | |
3.1.1-alpha.1 | 122 | 12/31/2021 | |
3.1.0 | 303 | 12/30/2021 | |
3.0.1-alpha.1 | 145 | 12/13/2021 | |
3.0.0-alpha.1 | 1,072 | 11/28/2021 | |
2.5.1 | 417 | 11/11/2021 | |
2.5.0 | 365 | 11/11/2021 | |
2.5.0-alpha.2 | 211 | 9/12/2021 | |
2.5.0-alpha.1 | 187 | 9/10/2021 | |
2.4.4 | 414 | 9/9/2021 | |
2.4.4-pre.3 | 156 | 2/26/2021 | |
2.4.4-pre.2 | 163 | 2/5/2021 | |
2.4.4-pre.1 | 202 | 2/3/2021 | |
2.4.3 | 495 | 1/25/2021 | |
2.4.3-pre.1 | 195 | 1/15/2021 | |
2.4.2 | 534 | 1/10/2021 | |
2.4.2-pre.10 | 300 | 11/24/2020 | |
2.4.2-pre.9 | 215 | 11/23/2020 | |
2.4.2-pre.8 | 227 | 11/17/2020 | |
2.4.2-pre.7 | 235 | 11/17/2020 | |
2.4.2-pre.6 | 222 | 11/17/2020 | |
2.4.2-pre.5 | 240 | 11/16/2020 | |
2.4.2-pre.4 | 252 | 11/12/2020 | |
2.4.2-pre.3 | 268 | 10/30/2020 | |
2.4.2-pre.2 | 215 | 10/29/2020 | |
2.4.2-pre.1 | 246 | 10/26/2020 | |
2.4.1 | 502 | 10/13/2020 | |
2.4.1-pre.6 | 255 | 10/5/2020 | |
2.4.1-pre.5 | 276 | 10/5/2020 | |
2.4.1-pre.4 | 255 | 10/3/2020 | |
2.4.1-pre.3 | 247 | 10/3/2020 | |
2.4.1-pre.1 | 280 | 10/3/2020 | |
2.4.0 | 587 | 9/22/2020 | |
2.4.0-pre.12 | 286 | 9/22/2020 | |
2.4.0-pre.11 | 298 | 9/17/2020 | |
2.4.0-pre.10 | 313 | 9/16/2020 | |
2.4.0-pre.9 | 317 | 9/16/2020 | |
2.4.0-pre.8 | 329 | 9/9/2020 | |
2.4.0-pre.7 | 300 | 9/2/2020 | |
2.4.0-pre.6 | 260 | 9/1/2020 | |
2.4.0-pre.5 | 251 | 8/28/2020 | |
2.4.0-pre.4 | 244 | 8/27/2020 | |
2.4.0-pre.3 | 243 | 8/27/2020 | |
2.4.0-pre.2 | 247 | 8/27/2020 | |
2.4.0-pre.1 | 319 | 7/9/2020 | |
2.3.5-pre.1 | 244 | 8/28/2020 | |
2.3.4 | 647 | 6/11/2020 | |
2.3.4-pre | 539 | 4/8/2020 | |
2.3.3-pre | 470 | 4/2/2020 | |
2.3.2-pre | 521 | 3/20/2020 | |
2.3.1-pre | 587 | 3/20/2020 | |
2.3.0-pre | 578 | 3/20/2020 | |
2.2.1-pre | 501 | 1/29/2020 | |
2.2.0-pre | 496 | 1/27/2020 | |
2.1.0-pre | 529 | 1/17/2020 | |
2.0.0 | 770 | 9/25/2019 | |
1.1.10 | 713 | 9/22/2019 | |
1.1.9 | 669 | 9/17/2019 | |
1.1.8 | 694 | 9/17/2019 | |
1.1.7 | 692 | 9/17/2019 | |
1.1.5-beta | 2,127 | 7/22/2019 | |
1.1.4-beta | 621 | 7/9/2019 | |
1.1.3-beta | 583 | 7/8/2019 | |
1.1.2-beta | 610 | 6/12/2019 | |
1.1.1-beta | 681 | 6/7/2019 | |
1.1.0-beta | 615 | 6/3/2019 | |
1.0.0-beta | 650 | 5/20/2019 |