Akka.Management icon indicating copy to clipboard operation
Akka.Management copied to clipboard

Akka.NET cluster management, bootstrapping, and more.

Akka Management

This project provides a home for Akka.NET cluster management, bootstrapping, and more. These tools aims to help with cluster management in various dynamic environments such as Azure, Amazon AWS and Kubernetes.

Supported Plugins

  • Akka.Management - Akka.Cluster management tool over HTTP. You can read more in the documentation here.
  • Akka.Management.Cluster.Bootstrap - Automated Akka.Cluster bootstrapping in a dynamic environment. You can read more in the documentation here.

    NOTE

    As of version 1.0.0, cluster bootstrap came bundled with the core Akka.Management NuGet package and are part of the default HTTP endpoint for Akka.Management. All Akka.Management.Cluster.Bootstrap NuGet package versions below 1.0.0 should now be considered deprecated.

  • Akka.Discovery.AwsApi - Akka.Cluster bootstrapping discovery service using EC2, ECS, and the AWS API. You can read more in the documentation here.
  • Akka.Discovery.KubernetesApi - Akka.Cluster bootstrapping discovery service using Kubernetes API. You can read more in the documentation here.
  • Akka.Discovery.Azure - Akka.Cluster bootstrapping discovery service using Azure Table Storage. You can read more in the documentation here.
  • Akka.Coordination.KubernetesApi - provides a lease-based distributed lock mechanism backed by Kubernetes CRD for Akka.NET Split Brain Resolver, Akka.Cluster.Sharding, and Akka.Cluster.Singleton. Documentation can be read here
  • Akka.Coordination.Azure - provides a lease-based distributed lock mechanism backed by Microsoft Azure Blob Storage for Akka.NET Split Brain Resolver, Akka.Cluster.Sharding, and Akka.Cluster.Singleton. Documentation can be read here

Build Instructions

Supported Commands

This project supports a wide variety of commands, all of which can be listed via:

Windows

c:\> build.cmd help

Linux / OS X

c:\> build.sh help

However, please see this readme for full details.

Summary

  • build.[cmd|sh] all - runs the entire build system minus documentation: NBench, Tests, and Nuget.
  • build.[cmd|sh] buildrelease - compiles the solution in Release mode.
  • build.[cmd|sh] runtestsnetcore - compiles the solution in Release mode and runs the unit test suite using the netcoreapp3.1 platform (all projects that end with the .Tests.csproj suffix). All of the output will be published to the ./TestResults folder.
  • build.[cmd|sh] runtestsnet - compiles the solution in Release mode and runs the unit test suite using the net5.0 platform (all projects that end with the .Tests.csproj suffix). All of the output will be published to the ./TestResults folder.
  • build.[cmd|sh] nbench - compiles the solution in Release mode and runs the NBench performance test suite (all projects that end with the .Tests.Performance.csproj suffix). All of the output will be published to the ./PerfResults folder.
  • build.[cmd|sh] nuget - compiles the solution in Release mode and creates Nuget packages from any project that does not have <IsPackable>false</IsPackable> set and uses the version number from RELEASE_NOTES.md.
  • build.[cmd|sh] nuget nugetprerelease=dev - compiles the solution in Release mode and creates Nuget packages from any project that does not have <IsPackable>false</IsPackable> set - but in this instance all projects will have a VersionSuffix of -beta{DateTime.UtcNow.Ticks}. It's typically used for publishing nightly releases.
  • build.[cmd|sh] nuget SignClientUser=$(signingUsername) SignClientSecret=$(signingPassword) - compiles the solution in Release modem creates Nuget packages from any project that does not have <IsPackable>false</IsPackable> set using the version number from RELEASE_NOTES.md, and then signs those packages using the SignClient data below.
  • build.[cmd|sh] nuget SignClientUser=$(signingUsername) SignClientSecret=$(signingPassword) nugetpublishurl=$(nugetUrl) nugetkey=$(nugetKey) - compiles the solution in Release modem creates Nuget packages from any project that does not have <IsPackable>false</IsPackable> set using the version number from RELEASE_NOTES.md, signs those packages using the SignClient data below, and then publishes those packages to the $(nugetUrl) using NuGet key $(nugetKey).
  • build.[cmd|sh] DocFx - compiles the solution in Release mode and then uses DocFx to generate website documentation inside the ./docs/_site folder. Use the ./serve-docs.cmd on Windows to preview the documentation.

This build script is powered by FAKE; please see their API documentation should you need to make any changes to the build.fsx file.