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

The package format for .NET is the Nuget package (a nupkg file). The package format for npm is a tar.gz file. Consuming jobs as packages provides critical metadata to the Runly Platform 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

.NET Core

Runly jobs regular ol’ 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.

Node.js

Runly jobs are regular ol’ CLI apps. The only requirement is that your package.json contains a main entrypoint:

{
	"main": "src/index.js"
}

The Runly node will unpack the npm package, install non-dev-dependencies, and then run your app using the specified entry point.

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.