TeamCity On-Premises 2025.11 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": { "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", "matches", "equals", "not-equals", "more-than", "less-than", "more-than-or-equals", "less-than-or-equals" ] }, "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 } } }, "job": { "type": "object", "description": "An individual job that specifies the sequence of basic build steps, defines its own input and output parameters, and has its own build agent requirements.", "properties": { "name": { "type": "string" }, "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": "The list of name/value pairs designed to share values with dependent downstream jobs. Can be referenced via the '%job.jobId.parameterName%' syntax.", "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", "unity" ] }, "working-directory": { "type": "string" }, "goals": { "type": "string" }, "pom-location": { "type": "string" }, "runner-arguments": { "type": "string" }, "local-repo-scope": { "type": "string" }, "jdk-home": { "type": "string" }, "jvm-args": { "type": "string" }, "tasks": { "type": "string" }, "gradle-home": { "type": "string" }, "use-gradle-wrapper": { "type": "string" }, "gradle-wrapper-path": { "type": "string" }, "gradle-params": { "type": "string" }, "enable-debug": { "type": "string" }, "enable-stacktrace": { "type": "string" }, "build-file": { "type": "string" }, "execute-method": { "type": "string" }, "run-editor-tests": { "type": "string" }, "project-path": { "type": "string" }, "build-target": { "type": "string" }, "build-player": { "type": "string" }, "no-graphics": { "type": "string" }, "silent-crashes": { "type": "string" }, "no-quit": { "type": "string" }, "arguments": { "type": "string" }, "build-player-path": { "type": "string" }, "detection-mode": { "type": "string" }, "is-incremental": { "type": "string" }, "unity-root": { "type": "string" }, "script-content": { "type": "string" }, "shell-script": { "type": "string" }, "docker-image": { "type": "string" }, "dockerfile-source": { "type": "string" }, "dockerfile-path": { "type": "string" } } } }, "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." } }, "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:.+" } }, "jobs": { "type": "object", "description": "The list of jobs owned by this pipeline", "properties": {}, "patternProperties": { "^[^\\s]+$": { "$ref": "#/definitions/job" } }, "additionalProperties": { "$ref": "#/definitions/job" } }, "dependencies": { "$ref": "#/definitions/dependencies" }, "importParameters": { "type": "array", "title": "Import Parameters", "description": "The list of parameters that should be imported from parent TeamCity projects.", "items": { "type": "string" } } }, "additionalProperties": false }
29 October 2025