Deploying software with Runly involves deploying packages. Runly jobs are bundled into packages that contain the compiled application (as a dotnet tool) along with configuration and other content necessary to run the application.

The package format for .NET is the Nuget package (a nupkg file). Consuming jobs as Nuget packages provides critical metadata to Runly including:

  • the package ID. The package ID is used to identify ambiguous jobs that exist in multiple packages.
  • the package version. The package version sets the version of all jobs within that package and can be used to run specific versions of jobs. Learn more about package versioning.

Creating Packages

Runly jobs are hosted in regular old Console Apps. The only special thing about the Console App is the directive to pack the app as a tool:

<PropertyGroup>
	<OutputType>Exe</OutputType>
	<TargetFramework>netcoreapp3.1</TargetFramework>

	<PackAsTool>true</PackAsTool>
</PropertyGroup>

This is necessary so that all of the application’s dependencies are included in the resulting nupkg file. This creates a “runnable” package in that the package can be unpacked and the resulting application can be run.

A non-tool Nuget package contains only the dll of the application and none of the dependencies. It is up to Nuget to resolve those dependencies and build the dependency graph.

Uploading Packages

You can upload packages to Runly using your dashboard or directly from your Nuget client. Once your package is uploaded, Runly needs to inspect your package to see what jobs are available to run from it.