Build Pipeline Overview
The client build pipeline is a configurable, plugin-based build system written in C# (.NET Core). Each project configures its own pipeline from individual plugins distributed as NuGet packages, making steps easy to share, test, and reuse across teams.
Architecture
The pipeline has four main components:
BuildPipeline
The entry point for running builds. Provides services for:
- Retrieving build input (the “build order”)
- Writing to build output, issuing warnings/errors, archiving artifacts
- Passing data between build plugins
Internally split into two projects:
- ProjectRunner — Entry point. Loads dependencies from the pipeline definition, sets up NuGet packages, then compiles and launches the PipelineRunner.
- PipelineRunner — The pipeline engine. Loads steps from the definition, iterates and runs each step, handles teardowns, and manages the overall pipeline flow.
TactilePipeline
A shared NuGet package containing the interfaces and objects shared between the BuildPipeline and build plugins. Acts as a stable API contract that plugins depend on, ensuring it won’t change frequently.
Pipeline Definition
A YAML configuration file that specifies which steps to run and in what order. It also declares pipeline values and plugin dependencies. See Pipeline Definition for details.
Steps
Operations executed by the PipelineRunner. Each step performs a specific task — from uploading a file, to building Unity, to modifying a configuration. See Steps for the different step types.
When to use what
Before creating a new build component, consider:
- Unity BuildProcessor — If the task is part of Unity’s code or related to a module like configuration.
- Script Step — If it’s a simple one-line operation (copying/moving/deleting files, running a command).
- Build Plugin — If it’s a complex system that needs to be shared with others.
Next steps
- Pipeline Definition — how to configure your build pipeline
- Steps — build plugin steps, script steps, and includes
- Plugins & Dependencies — managing NuGet dependencies
- Communication Between Steps — how steps share data