Skip to content
Matthew Davey edited this page Mar 22, 2022 · 8 revisions

At its core, K9 is a powerful tool in simplifying numerous steps in the CI/CD space for game developers. It is a collection of functionality that has been used across the industry in indie pipelines to larger AAA deployments.

Each .NET project references K9.Core, providing it a common foundation, allowing each segmented project to specialize in its given area. Each CLI application builds portable versions of itself which are cross-platform compatible via the DLL.

Bootstrapping and self-building of K9 are available via our companion B4 project.

.NET Requirement

Currently there is a minimum version requirement of .NET 5 (Core) being present on systems to utilize K9, however any newer version should work.

Projects

Projects Description
K9.Core A shared library across all of the CLI applications provides much of the common interfaces to services like Perforce or Google APIs.
K9.SendSafely Optimized functionality for communicating with secure transfer service Sendsafely.
K9.Setup Useful functionality for setting up workspaces (generates p4config’s) or environment variables.
K9.TeamCity Tooling to generate a change list from TeamCity historical build information as well as dynamically changing parameters of build from CLI.
K9.Unreal Functionality to convert Unreal Gauntlet test results to readable data inside of TeamCity.
K9.Unity Functionality to work with Unity.

Action Verbs

Each project uses an action verb system to invoke functionality contained within its library. Execution on Windows based systems can take advantage of simply using the executable:

> <project.exe> <verb> [arguments]

Or all system flavors can utilize:

$ dotnet <project.dll> <verb> [arguments]

Arguments

There are two types of arguments that are used by K9, traditional arguments and the concept of override arguments. Traditional arguments are processed as normally expected and respect both starting with - and --.

Internally we always use -- for arguments

An example of one of our build steps might look like this:

dotnet %K9%\K9.TeamCity.dll SetParameter --file %teamcity.build.checkoutDir%\UNITY_VERSION

Note that the %vars% are replaced by our CI/CD (TeamCity).

Override Arguments

These are a special type of argument that a very small subset of the projects use to define a custom replacement of some sort of value specific to them. They are formatted as key-value pairs and are represented as ---<key>=<value> when inputting via command-line arguments.

Clone this wiki locally