TeamCity On-Premises 2026.1 Help

Pipelines YAML

Below is the full YAML specification for TeamCity pipelines. Since pipelines are actively evolving, the specification may change in future releases.

{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "Pipeline schema", "description": "Main pipeline definition.", "required": [ "jobs" ], "definitions": { "dependencies": { "type": "array", "description": "A collection of dependencies that represent pipeline relations with external objects (classic build configurations or other pipelines).", "items": { "anyOf": [ { "type": "string", "description": "A simple dependency that references a linked object via its external ID.", "pattern": "^[A-Za-z0-9_]+$" }, { "type": "object", "description": "A dependency with additional properties that specify the behavior of linked objects.", "patternProperties": { "^[A-Za-z0-9_]+$": { "properties": { "reuse": { "type": "string", "enum": [ "none", "successful", "successful-or-failed" ], "description": "Specifies which of upstream dependency builds (runs) can be reused." }, "enforce-revisions-synchronisation": { "type": "boolean", "description": "Specifies whether the code revisions should be explicitly synchronized." }, "on-failed-dependency": { "type": "string", "enum": [ "run-add-problem", "run-ignore-problem", "mark-as-failed-to-start", "cancel" ], "description": "Specifies the default action in case an upstream dependency fails." }, "on-incomplete-dependency": { "type": "string", "enum": [ "run-add-problem", "run-ignore-problem", "mark-as-failed-to-start", "cancel" ], "description": "Specifies the default action in case an upstream dependency fails to start." } }, "additionalProperties": false } } } ] } }, "files": { "title": "Files publication", "description": "The collection of job file outputs, including both files published as artifacts and files shared to downstream jobs.", "type": "string", "enum": [ "" ] }, "runOn": { "title": "Agents", "description": "The collection of agents eligible to run this job.", "definitions": { "arch": { "type": "object", "title": "CPU Architecture", "properties": { "arch": { "type": "string", "description": "The architechture of the agent machine.", "enum": [ "x86", "x86_64", "arm", "aarch64", "ia64", "sparc", "riscv64" ] } }, "additionalProperties": false }, "cpu": { "type": "object", "title": "CPU count", "properties": { "cpu": { "type": "integer", "description": "The number of CPU cores on the agent machine." } }, "additionalProperties": false }, "custom": { "type": "object", "title": "A user-defined expression that TeamCity evaluates for each authorized agent. Agents that fit the criteria are marked as eligible to run the job, others are labeled as incompatible.", "properties": { "name": { "description": "The display name of a custom requirement." }, "requirement": { "type": "string", "description": "The logical operator used to compare the actual agent parameter value with the given one.", "enum": [ "exists", "not-exists", "contains", "starts-with", "ends-with", "not-contains", "matches", "not-matches", "equals", "not-equals", "more-than", "less-than", "more-or-equals-than", "less-or-equals-than", "version-more-than", "version-less-or-equals-than", "version-less-than", "version-more-or-equals-than" ] }, "parameter": { "description": "A parameter reported by the agent machine whose value must match the required criteria." }, "value": { "description": "A custom value to compare against the agent's parameter value. Not required for the 'exists' operator." } }, "required": ["requirement", "parameter", "name"], "additionalProperties": false }, "os-version": { "type": "object", "title": "Operating system version", "description": "The operating system version of the agent machine.", "properties": { "os-version": { "type": "string" } }, "additionalProperties": false }, "os-family": { "type": "object", "title": "Operating system family", "description": "The operating system family.", "properties": { "os-family": { "type": "string" } }, "additionalProperties": false }, "ram": { "type": "object", "title": "RAM size", "description": "The amount of memory installed on the agent machine.", "properties": { "ram": { "type": "string", "pattern": "^\\d+GB$" } }, "additionalProperties": false } }, "anyOf": [ { "type": "string", "title": "JetBrains-hosted agents", "description": "Build agents hosted and maintained by JetBrains.", "enum": [ "Windows-Small", "Mac-Medium", "Linux-XLarge", "Linux-Large", "Linux-Medium", "Linux-Small", "Windows-Medium" ] }, { "type": "string", "title": "Self-hosted agents", "description": "Self-hosted build agents maintained by your agent administrators.", "enum": [ "self-hosted" ] }, { "type": "object", "title": "Self-hosted agents", "description": "Self-hosted build agents maintained by your agent administrators.", "properties": { "self-hosted": { "type": "array", "items": { "anyOf": [ {"$ref": "#/definitions/runOn/definitions/arch"}, {"$ref": "#/definitions/runOn/definitions/cpu"}, {"$ref": "#/definitions/runOn/definitions/os-family"}, {"$ref": "#/definitions/runOn/definitions/os-version"}, {"$ref": "#/definitions/runOn/definitions/ram"}, {"$ref": "#/definitions/runOn/definitions/custom"} ] } } }, "additionalProperties": false } ] }, "repositories": { "type": "object", "description": "A collection of remote repositories this job can check out when it runs.", "properties": { "main": { "type": "object", "description": "The main repository that cannot be removed.", "properties": { "enabled": { "type": "boolean" }, "path": { "type": "string" } }, "additionalProperties": false } }, "patternProperties": { "^[A-Za-z0-9_]+$": { "$ref": "#/definitions/repositories/properties/main" }, "^https?://.+$": { "$ref": "#/definitions/repositories/properties/main" } }, "additionalProperties": false }, "job": { "type": "object", "description": "An individual job that specifies the sequence of basic build steps, defines its own input parameters, and has its own build agent requirements.", "properties": { "name": { "type": "string", "maxLength": 255 }, "parameters": { "type": "object", "title": "Job input parameters", "description": "The list of name/value pairs designed to be used only within its parent job. Can be referenced directly by name (%env.GIT_HOME%).", "additionalProperties": { "type": "string" } }, "output-parameters": { "type": "object", "title": "Job output parameters", "description": "Deprecated: All job parameters are now automatically available to dependent jobs within the same pipeline via '%job.jobId.parameterName%' syntax.", "deprecated": true, "additionalProperties": { "type": "string" } }, "steps": { "title": "Step", "description": "The collection of build steps in the order of their execution.", "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "script", "maven", "gradle", "node-js" ] } } } }, "features": { "title": "Features", "description": "The collection of build features.", "type": "array", "items": { "type": "object", "properties": { } } }, "files-publication": { "type": "array", "title": "Files publication", "description": "The collection of job file outputs, including both files published as artifacts and files shared to downstream jobs.", "items": { "anyOf": [ { "type": "string" }, { "type": "object", "properties": { "path": { "type": "string" }, "share-with-jobs": { "type": "boolean", "description": "true if dependent downstream jobs can access this file; otherwise, false." }, "publish-artifact": { "type": "boolean", "description": "true if this file should be visible on the Artifacts tab of the run results page; otherwise, false." } }, "required": ["path"], "additionalProperties": false } ] } }, "runs-on": { "$ref": "#/definitions/runOn" }, "files": { "$ref": "#/definitions/files" }, "dependencies": { "type": "array", "items": { "anyOf": [ { "type": "string" }, { "type": "object", "properties": {} } ] } }, "integrations": { "type": "array", "description": "The list of credentials required to access external resources, such as Docker or NPM registries.", "items": { "anyOf": [ { "type": "string" }, { "type": "object", "properties": {} } ] } }, "repositories": { "type": "array", "items": { "$ref": "#/definitions/repositories" } }, "parallelism": { "type": "number", "description": "The number of batches in which TeamCity should attempt to split the tests." }, "checkout-working-directories-only": { "type": "boolean", "deprecated": true }, "enable-dependency-cache": { "type": "boolean" }, "allow-reuse": { "type": "boolean", "description": "true, if TeamCity should reuse the previous run if neither the job nor a remote repository has any new changes; false, if a job should run anew every time it's triggered." }, "download-artifacts": { "type": "array", "title": "Downloaded non-pipeline artifacts", "description": "A collection of artifact dependencies from external build configurations outside the pipeline's direct dependency chain.", "items": { "type": "object", "patternProperties": { "^[A-Za-z0-9_]+$": { "type": "object", "properties": { "from": { "description": "Specifies which build to retrieve artifacts from.", "oneOf": [ { "type": "string", "enum": [ "last-finished", "last-successful", "last-pinned", "dependency", "dependency-or-last-finished" ] }, { "type": "object", "properties": { "tagged": { "type": "string", "description": "Build with a specific tag." }, "build-number": { "type": "string", "description": "Specific build number." }, "last-pinned": { "type": "boolean", "description": "Most recently pinned build." }, "dependency": { "type": "boolean", "description": "Build from the same chain." }, "dependency-or-last-finished": { "type": "boolean", "description": "Build from the same chain or most recently finished build." }, "last-finished": { "type": "boolean", "description": "Most recently finished build." }, "last-successful": { "type": "boolean", "description": "Most recently successful build." }, "branch": { "type": "string", "description": "Filter by branch pattern." } }, "additionalProperties": false } ] }, "artifact-rules": { "type": "string", "description": "Defines which artifacts to download." }, "clean-destination": { "type": "boolean", "description": "When true, clears the destination directory before downloading artifacts." } }, "required": ["from", "artifact-rules"], "additionalProperties": false } }, "additionalProperties": false } } }, "additionalProperties": false } }, "properties": { "name": { "title": "Name of the pipeline", "description": "The public pipeline name and ID.", "type": "string", "deprecated": true }, "parameters": { "type": "object", "description": "The list of name/value pairs that each job can access via the '%parameter-name%' syntax.", "additionalProperties": { "type": "string" } }, "secrets": { "type": "object", "description": "The list parameters that store sensitive values and never expose them via the UI or public API.", "additionalProperties": { "type": "string", "pattern": "^credentialsJSON:.+" } }, "output-parameters": { "type": "object", "title": "Pipeline output parameters", "description": "The list of name/value pairs that expose parameters to downstream pipelines and build configurations. Values can reference job parameters (%job.jobId.paramName%) and pipeline parameters (%paramName%), including parameters inherited from parent projects.", "additionalProperties": { "type": "string" } }, "jobs": { "type": "object", "description": "The list of jobs owned by this pipeline", "properties": {}, "propertyNames": { "pattern": "^[A-Za-z][A-Za-z0-9_]*$", "maxLength": 225 }, "patternProperties": { "^[^\\s]+$": { "$ref": "#/definitions/job" } }, "additionalProperties": { "$ref": "#/definitions/job" } }, "dependencies": { "$ref": "#/definitions/dependencies" }, "import-parameters": { "type": "array", "title": "Import Parameters", "description": "The list of parameters that should be imported from parent TeamCity projects.", "items": { "type": "string" } }, "version": { "type": "integer", "title": "YAML API Version", "description": "The version of YAML API", "enum": [ 1 ] } }, "additionalProperties": false }
07 May 2026