title: "JSON schema for Buildkite pipeline configuration files"
$schema: "http://json-schema.org/draft-07/schema#"
fileMatch: unknown[]
required: unknown[]
definitions: { commonOptions: { allowDependencyFailure: { type: "boolean"; description: "Whether to proceed with this step and further steps if a step named in the depends_on attribute fails"; default: false; }; agents: { oneOf: unknown[]; }; agentsObject: { type: "object"; description: "Query rules to target specific agents"; examples: unknown[]; }; agentsList: { type: "array"; description: "Query rules to target specific agents in k=v format"; examples: unknown[]; items: { type: "string"; }; }; automaticRetry: { type: "object"; properties: { exit_status: { description: "The exit status number that will cause this job to retry"; anyOf: unknown[]; }; limit: { type: "integer"; description: "The number of times this job can be retried"; minimum: 1; maximum: 10; }; signal: { description: "The exit signal, if any, that may be retried"; type: "string"; examples: unknown[]; }; signal_reason: { description: "The exit signal reason, if any, that may be retried"; type: "string"; enum: unknown[]; }; }; additionalProperties: false; }; branches: { description: "Which branches will include this step in their builds"; anyOf: unknown[]; examples: unknown[]; }; cache: { description: "The paths for the caches to be used in the step"; anyOf: unknown[]; examples: unknown[]; }; cancelOnBuildFailing: { type: "boolean"; description: "Whether to cancel the job as soon as the build is marked as failing"; default: false; }; dependsOn: { description: "The step keys for a step to depend on"; anyOf: unknown[]; }; env: { type: "object"; description: "Environment variables for this step"; examples: unknown[]; }; identifier: { type: "string"; description: "A string identifier"; examples: unknown[]; }; if: { type: "string"; description: "A boolean expression that omits the step when false"; examples: unknown[]; }; key: { type: "string"; description: "A unique identifier for a step, must not resemble a UUID"; examples: unknown[]; }; label: { type: "string"; description: "The label that will be displayed in the pipeline visualisation in Buildkite. Supports emoji."; examples: unknown[]; }; buildNotify: { type: "array"; description: "Array of notification options for this step"; items: { oneOf: unknown[]; }; }; fields: { type: "array"; description: "A list of input fields required to be filled out before unblocking the step"; items: { oneOf: unknown[]; }; }; matrixElement: { oneOf: unknown[]; }; prompt: { type: "string"; description: "The instructional message displayed in the dialog box when the unblock step is activated"; examples: unknown[]; }; skip: { anyOf: unknown[]; description: "Whether this step should be skipped. You can specify a reason for using a string."; examples: unknown[]; }; softFail: { description: "The conditions for marking the step as a soft-fail."; anyOf: unknown[]; }; }; blockStep: { type: "object"; properties: { allow_dependency_failure: { $ref: "#/definitions/commonOptions/allowDependencyFailure"; }; block: { type: "string"; description: "The label of the block step"; }; blocked_state: { type: "string"; description: "The state that the build is set to when the build is blocked by this block step"; enum: unknown[]; }; branches: { $ref: "#/definitions/commonOptions/branches"; }; depends_on: { $ref: "#/definitions/commonOptions/dependsOn"; }; fields: { $ref: "#/definitions/commonOptions/fields"; }; id: { $ref: "#/definitions/commonOptions/identifier"; }; identifier: { $ref: "#/definitions/commonOptions/identifier"; }; if: { $ref: "#/definitions/commonOptions/if"; }; key: { $ref: "#/definitions/commonOptions/key"; }; label: { $ref: "#/definitions/commonOptions/label"; }; name: { $ref: "#/definitions/commonOptions/label"; }; prompt: { $ref: "#/definitions/commonOptions/prompt"; }; type: { type: "string"; enum: unknown[]; }; }; additionalProperties: false; }; nestedBlockStep: { type: "object"; properties: { block: { $ref: "#/definitions/blockStep"; }; }; additionalProperties: false; }; stringBlockStep: { type: "string"; description: "Pauses the execution of a build and waits on a user to unblock it"; enum: unknown[]; }; inputStep: { type: "object"; properties: { allow_dependency_failure: { $ref: "#/definitions/commonOptions/allowDependencyFailure"; }; input: { type: "string"; description: "The label of the input step"; }; branches: { $ref: "#/definitions/commonOptions/branches"; }; depends_on: { $ref: "#/definitions/commonOptions/dependsOn"; }; fields: { $ref: "#/definitions/commonOptions/fields"; }; id: { $ref: "#/definitions/commonOptions/identifier"; }; identifier: { $ref: "#/definitions/commonOptions/identifier"; }; if: { $ref: "#/definitions/commonOptions/if"; }; key: { $ref: "#/definitions/commonOptions/key"; }; label: { $ref: "#/definitions/commonOptions/label"; }; name: { $ref: "#/definitions/commonOptions/label"; }; prompt: { $ref: "#/definitions/commonOptions/prompt"; }; type: { type: "string"; enum: unknown[]; }; }; additionalProperties: false; }; nestedInputStep: { type: "object"; properties: { input: { $ref: "#/definitions/inputStep"; }; }; additionalProperties: false; }; stringInputStep: { type: "string"; description: "Pauses the execution of a build and waits on a user to unblock it"; enum: unknown[]; }; commandStep: { type: "object"; properties: { agents: { $ref: "#/definitions/commonOptions/agents"; }; allow_dependency_failure: { $ref: "#/definitions/commonOptions/allowDependencyFailure"; }; artifact_paths: { anyOf: unknown[]; description: "The glob path/s of artifacts to upload once this step has finished running"; examples: unknown[]; }; branches: { $ref: "#/definitions/commonOptions/branches"; }; cancel_on_build_failing: { $ref: "#/definitions/commonOptions/cancelOnBuildFailing"; }; command: { description: "The commands to run on the agent"; anyOf: unknown[]; }; commands: { description: "The commands to run on the agent"; $ref: "#/definitions/commandStep/properties/command"; }; concurrency: { type: "integer"; description: "The maximum number of jobs created from this step that are allowed to run at the same time. If you use this attribute, you must also define concurrency_group."; examples: unknown[]; }; concurrency_group: { type: "string"; description: "A unique name for the concurrency group that you are creating with the concurrency attribute"; examples: unknown[]; }; concurrency_method: { type: "string"; enum: unknown[]; description: "Control command order, allowed values are 'ordered' (default) and 'eager'. If you use this attribute, you must also define concurrency_group and concurrency."; examples: unknown[]; }; depends_on: { $ref: "#/definitions/commonOptions/dependsOn"; }; env: { $ref: "#/definitions/commonOptions/env"; }; id: { $ref: "#/definitions/commonOptions/identifier"; }; identifier: { $ref: "#/definitions/commonOptions/identifier"; }; if: { $ref: "#/definitions/commonOptions/if"; }; key: { $ref: "#/definitions/commonOptions/key"; }; label: { $ref: "#/definitions/commonOptions/label"; }; signature: { type: "object"; description: "The signature of the command step, generally injected by agents at pipeline upload"; properties: { algorithm: { type: "string"; description: "The algorithm used to generate the signature"; examples: unknown[]; }; value: { type: "string"; description: "The signature value, a JWS compact signature with a detached body"; }; signed_fields: { type: "array"; description: "The fields that were signed to form the signature value"; items: { type: "string"; }; examples: unknown[]; }; }; }; matrix: { oneOf: unknown[]; }; name: { $ref: "#/definitions/commonOptions/label"; }; notify: { type: "array"; description: "Array of notification options for this step"; items: { oneOf: unknown[]; }; }; parallelism: { type: "integer"; description: "The number of parallel jobs that will be created based on this step"; examples: unknown[]; }; plugins: { anyOf: unknown[]; }; soft_fail: { $ref: "#/definitions/commonOptions/softFail"; }; retry: { type: "object"; description: "The conditions for retrying this step."; properties: { automatic: { anyOf: unknown[]; description: "Whether to allow a job to retry automatically. If set to true, the retry conditions are set to the default value."; default: unknown[]; }; manual: { description: "Whether to allow a job to be retried manually"; anyOf: unknown[]; }; }; }; skip: { $ref: "#/definitions/commonOptions/skip"; }; timeout_in_minutes: { type: "integer"; description: "The number of minutes to time out a job"; minimum: 1; examples: unknown[]; }; type: { type: "string"; enum: unknown[]; }; priority: { type: "integer"; description: "Priority of the job, higher priorities are assigned to agents"; examples: unknown[]; }; }; additionalProperties: false; }; nestedCommandStep: { type: "object"; properties: { command: { $ref: "#/definitions/commandStep"; }; commands: { $ref: "#/definitions/commandStep"; }; script: { $ref: "#/definitions/commandStep"; }; }; additionalProperties: false; }; stringWaitStep: { type: "string"; description: "Waits for previous steps to pass before continuing"; enum: unknown[]; }; waitStep: { type: "object"; properties: { allow_dependency_failure: { $ref: "#/definitions/commonOptions/allowDependencyFailure"; }; continue_on_failure: { description: "Continue to the next steps, even if the previous group of steps fail"; type: "boolean"; }; depends_on: { $ref: "#/definitions/commonOptions/dependsOn"; }; id: { $ref: "#/definitions/commonOptions/identifier"; }; identifier: { $ref: "#/definitions/commonOptions/identifier"; }; if: { $ref: "#/definitions/commonOptions/if"; }; key: { $ref: "#/definitions/commonOptions/key"; }; type: { type: "string"; enum: unknown[]; }; wait: { description: "Waits for previous steps to pass before continuing"; anyOf: unknown[]; }; waiter: { anyOf: unknown[]; }; }; additionalProperties: false; }; nestedWaitStep: { type: "object"; properties: { wait: { description: "Waits for previous steps to pass before continuing"; $ref: "#/definitions/waitStep"; }; waiter: { $ref: "#/definitions/waitStep"; }; }; additionalProperties: false; }; triggerStep: { type: "object"; properties: { allow_dependency_failure: { $ref: "#/definitions/commonOptions/allowDependencyFailure"; }; async: { type: "boolean"; default: false; description: "Whether to continue the build without waiting for the triggered step to complete"; }; branches: { $ref: "#/definitions/commonOptions/branches"; }; build: { type: "object"; description: "Properties of the build that will be created when the step is triggered"; properties: { branch: { type: "string"; description: "The branch for the build"; default: "master"; examples: unknown[]; }; commit: { type: "string"; description: "The commit hash for the build"; default: "HEAD"; examples: unknown[]; }; env: { $ref: "#/definitions/commonOptions/env"; }; label: { $ref: "#/definitions/commonOptions/label"; }; name: { $ref: "#/definitions/commonOptions/label"; }; message: { type: "string"; description: "The message for the build (supports emoji)"; default: "The label of the trigger step"; examples: unknown[]; }; meta_data: { type: "object"; description: "Meta-data for the build"; examples: unknown[]; }; trigger: { type: "string"; description: "The slug of the pipeline to create a build"; examples: unknown[]; }; type: { type: "string"; enum: unknown[]; }; }; additionalProperties: false; }; depends_on: { $ref: "#/definitions/commonOptions/dependsOn"; }; id: { $ref: "#/definitions/commonOptions/identifier"; }; identifier: { $ref: "#/definitions/commonOptions/identifier"; }; if: { $ref: "#/definitions/commonOptions/if"; }; key: { $ref: "#/definitions/commonOptions/key"; }; label: { $ref: "#/definitions/commonOptions/label"; }; name: { $ref: "#/definitions/commonOptions/label"; }; type: { type: "string"; enum: unknown[]; }; trigger: { type: "string"; description: "The slug of the pipeline to create a build"; }; skip: { $ref: "#/definitions/commonOptions/skip"; }; soft_fail: { $ref: "#/definitions/commonOptions/softFail"; }; }; additionalProperties: false; }; nestedTriggerStep: { type: "object"; properties: { trigger: { $ref: "#/definitions/triggerStep"; }; }; additionalProperties: false; }; groupStep: { properties: { depends_on: { $ref: "#/definitions/commonOptions/dependsOn"; }; group: { type: unknown[]; description: "The name to give to this group of steps"; examples: unknown[]; }; id: { $ref: "#/definitions/commonOptions/identifier"; }; identifier: { $ref: "#/definitions/commonOptions/identifier"; }; if: { $ref: "#/definitions/commonOptions/if"; }; key: { $ref: "#/definitions/commonOptions/key"; }; label: { $ref: "#/definitions/groupStep/properties/group"; }; name: { $ref: "#/definitions/groupStep/properties/label"; }; allow_dependency_failure: { $ref: "#/definitions/commonOptions/allowDependencyFailure"; }; notify: { $ref: "#/definitions/commonOptions/buildNotify"; }; skip: { $ref: "#/definitions/commonOptions/skip"; }; steps: { type: "array"; description: "A list of steps"; items: { anyOf: unknown[]; }; minSize: 1; }; type: { type: unknown[]; enum: unknown[]; }; }; additionalProperties: false; }; }
properties: { env: { $ref: "#/definitions/commonOptions/env"; }; agents: { $ref: "#/definitions/commonOptions/agents"; }; notify: { $ref: "#/definitions/commonOptions/buildNotify"; }; steps: { description: "A list of steps"; type: "array"; items: { anyOf: unknown[]; }; }; }