{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "CircleCI Config", "definitions": { "jobDefinition": { "oneOf": [ { "type": "string", "markdownDescription": "A reference to a job defined elsewhere in the configuration, either in the `jobs` section or from an orb (e.g., `my-job` or `orb-name/job-name`)." }, { "type": "object", "markdownDescription": "https://circleci.com/docs/creating-orbs#creating-inline-orbs\n\nInline orbs can be handy during development of an orb or as a convenience for name-spacing jobs and commands in lengthy configurations, particularly if you later intend to share the orb with others.", "properties": { "type": { "enum": [ "build", "release", "lock", "unlock", "approval", "no-op" ], "markdownDescription": "The job type. If not specified, defaults to build." } }, "if": { "required": [ "type" ], "properties": { "type": { "const": "release" } } }, "then": { "markdownDescription": "https://circleci.com/docs/reference/configuration-reference/#job-type\n\nRelease job.", "required": [ "plan_name" ], "properties": { "plan_name": { "type": "string", "markdownDescription": "Required plan name for release jobs." } }, "additionalProperties": true }, "else": { "if": { "required": [ "type" ], "properties": { "type": { "enum": [ "lock", "unlock" ] } } }, "then": { "markdownDescription": "https://circleci.com/docs/reference/configuration-reference/#job-type\n\nA lock/unlock job", "required": [ "key" ], "properties": { "key": { "type": "string", "markdownDescription": "Required key for lock/unlock jobs." } }, "additionalProperties": true }, "else": { "if": { "required": [ "type" ], "properties": { "type": { "enum": [ "approval", "no-op" ] } } }, "then": { "markdownDescription": "https://circleci.com/docs/reference/configuration-reference/#job-type\n\nApproval/no-op jobs primarily act as workflow markers. Other keys like `steps:` are permitted but will be ignored in the final pipeline.", "additionalProperties": true }, "else": { "if": { "markdownDescription": "https://circleci.com/docs/reference/configuration-reference/#job-type\n\nA build job. The job explicitly has type 'build' or defaults to build when no type specified.", "anyOf": [ { "not": { "required": [ "type" ] } }, { "required": [ "type" ], "properties": { "type": { "const": "build" } } } ] }, "then": { "markdownDescription": "Validation: The job must adhere to the structure of a build job.", "properties": { "description": { "type": "string" }, "type": { "const": "build", "markdownDescription": "The job type. If not specified, defaults to build." }, "parallelism": { "markdownDescription": "A integer or a parameter evaluating to a integer", "anyOf": [ { "oneOf": [ { "type": "string", "pattern": " *<< *parameters.([^ ]+) *>> *" }, { "type": "string", "pattern": " *<< *pipeline.parameters.([^ ]+) *>> *" } ] }, { "type": "integer" } ] }, "macos": { "type": "object", "properties": { "xcode": { "type": [ "string", "number" ] }, "resource_class": { "type": "string" }, "shell": { "type": "string" } }, "required": [ "xcode" ], "additionalProperties": false }, "resource_class": { "type": "string" }, "docker": { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "image": { "type": "string" }, "name": { "type": "string" }, "entrypoint": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "command": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "user": { "type": "string" }, "environment": { "oneOf": [ { "markdownDescription": "A map of environment variable names and values.", "type": [ "string", "null" ] }, { "markdownDescription": "An array of strings in the form KEY=VALUE", "type": "array", "items": { "$ref": "#/definitions/environment" } }, { "type": "object", "markdownDescription": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", "additionalProperties": { "type": [ "string", "boolean", "number", "null" ] } } ] }, "aws_auth": { "oneOf": [ { "type": "object", "properties": { "aws_access_key_id": { "type": "string" }, "aws_secret_access_key": { "type": "string" } }, "required": [ "aws_access_key_id", "aws_secret_access_key" ], "additionalProperties": false }, { "type": "object", "properties": { "oidc_role_arn": { "type": "string" } }, "required": [ "oidc_role_arn" ], "additionalProperties": false } ] }, "auth": { "type": "object", "properties": { "username": { "type": "string" }, "password": { "type": "string" } }, "required": [ "username", "password" ], "additionalProperties": false } }, "required": [ "image" ], "additionalProperties": false } }, "steps": { "type": "array", "items": { "$ref": "#/definitions/step" }, "minItems": 1 }, "working_directory": { "type": "string", "markdownDescription": "In which directory to run the steps. (default: `~/project`. `project` is a literal string, not the name of the project.) You can also refer the directory with `$CIRCLE_WORKING_DIRECTORY` environment variable." }, "retention": { "type": "object", "properties": { "caches": { "type": "string", "pattern": "^([1-9]|1[0-5])d$" } }, "additionalProperties": false }, "circleci_ip_ranges": { "type": "boolean", "markdownDescription": "Enable running jobs with a set of well-defined IP address ranges." }, "machine": { "markdownDescription": "Use the default machine executor image", "oneOf": [ { "anyOf": [ { "type": "string", "pattern": " *<< *parameters.([^ ]+) *>> *" }, { "type": "boolean" }, { "type": "number" }, { "type": "string" } ] }, { "type": "object", "properties": { "enabled": { "markdownDescription": "A boolean or a template parameter evaluating to a boolean", "anyOf": [ { "type": "string", "pattern": " *<< *parameters.([^ ]+) *>> *" }, { "type": "boolean" }, { "type": "number" }, { "type": "string" } ] }, "image": { "type": "string" }, "docker_layer_caching": { "markdownDescription": "Set to `true` to enable [Docker Layer Caching](https://circleci.com/docs/docker-layer-caching). Note: If you haven't already, you must open a support ticket to have a CircleCI Sales representative contact you about enabling this feature on your account for an additional fee.", "anyOf": [ { "type": "string", "pattern": " *<< *parameters.([^ ]+) *>> *" }, { "type": "boolean" }, { "type": "number" }, { "type": "string" } ] }, "resource_class": { "type": "string" }, "shell": { "type": "string" } }, "additionalProperties": false } ] }, "environment": { "oneOf": [ { "markdownDescription": "A map of environment variable names and values.", "type": [ "string", "null" ] }, { "markdownDescription": "An array of strings in the form KEY=VALUE", "type": "array", "items": { "$ref": "#/definitions/environment" } }, { "type": "object", "markdownDescription": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", "additionalProperties": { "type": [ "string", "boolean", "number", "null" ] } } ] }, "executor": { "oneOf": [ { "type": "string", "markdownDescription": "https://circleci.com/docs/reference/reusing-config/#executor\n\nThe name of the executor to use (defined via the top level executors map or from an orb)." }, { "type": "object", "markdownDescription": "Executor stanza to use for the job, with optional parameter overrides.", "minProperties": 1, "additionalProperties": true, "properties": { "name": { "type": "string" } }, "required": [ "name" ] } ] }, "shell": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "parameters": { "markdownDescription": "https://circleci.com/docs/reusing-config#using-the-parameters-declaration\n\nA map of parameter keys.", "type": "object", "additionalProperties": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "boolean", "string", "steps", "enum", "executor", "integer", "env_var_name" ], "markdownDescription": "The parameter type. See [Parameter Types](https://circleci.com/docs/reusing-config#parameter-syntax) for details:\n- `boolean`: A boolean parameter\n- `string`: A string parameter \n- `integer`: An integer parameter\n- `enum`: An enum parameter (list of allowed string values)\n- `executor`: An executor parameter (allows job to choose executor)\n- `steps`: A steps parameter (allows mixing predefined and user-defined steps)\n- `env_var_name`: An environment variable name parameter (must match POSIX_NAME regexp)" }, "default": { "oneOf": [ { "type": "string" }, { "type": "boolean" }, { "type": "integer" }, { "type": "array", "items": { "$ref": "#/definitions/step" } } ] }, "description": { "type": "string", "markdownDescription": "A description of the parameter" }, "enum": { "type": "array", "items": { "type": "string" }, "minItems": 1, "markdownDescription": "List of allowed values for an `enum` type parameter" } }, "additionalProperties": false, "required": [ "type" ] }, "minProperties": 1 } }, "required": [ "steps" ], "additionalProperties": false, "anyOf": [ { "markdownDescription": "A job that uses an executor defined elsewhere in the configuration.", "type": "object", "required": [ "executor" ] }, { "oneOf": [ { "type": "object", "required": [ "machine" ] }, { "type": "object", "required": [ "docker" ] }, { "type": "object", "required": [ "macos" ] } ] } ] }, "else": false } } } } ] }, "orb": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "jobs": { "markdownDescription": "Jobs are collections of steps. All of the steps in the job are executed in a single unit, either within a fresh container or VM.", "type": "object", "propertyNames": { "type": "string", "pattern": "^[A-Za-z][A-Za-z\\s\\d_-]*$" }, "additionalProperties": { "$ref": "#/definitions/jobDefinition" } }, "commands": { "type": "object", "propertyNames": { "pattern": "^[a-z][a-z\\d_-]*$" }, "additionalProperties": { "oneOf": [ { "type": "object", "properties": { "description": { "type": "string" }, "parameters": { "markdownDescription": "https://circleci.com/docs/reusing-config#using-the-parameters-declaration\n\nA map of parameter keys.", "type": "object", "additionalProperties": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "boolean", "string", "steps", "enum", "executor", "integer", "env_var_name" ] }, "default": { "oneOf": [ { "type": "string" }, { "type": "boolean" }, { "type": "integer" }, { "type": "array", "items": { "$ref": "#/definitions/step" } } ] }, "description": { "type": "string" }, "enum": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false, "required": [ "type" ] }, "minProperties": 1 }, "steps": { "type": "array", "items": { "$ref": "#/definitions/step" }, "minItems": 1 } }, "required": [ "steps" ], "additionalProperties": false }, { "type": "string", "markdownDescription": "Command may be a string reference to another command" } ] } }, "executors": { "type": "object", "propertyNames": { "pattern": "^[a-z][a-z\\d_-]*$" }, "additionalProperties": { "oneOf": [ { "type": "object", "properties": { "description": { "type": "string" }, "macos": { "type": "object", "properties": { "xcode": { "type": [ "string", "number" ] }, "resource_class": { "type": "string" }, "shell": { "type": "string" } }, "required": [ "xcode" ], "additionalProperties": false }, "resource_class": { "type": "string" }, "docker": { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "image": { "type": "string" }, "name": { "type": "string" }, "entrypoint": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "command": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "user": { "type": "string" }, "environment": { "oneOf": [ { "markdownDescription": "A map of environment variable names and values.", "type": [ "string", "null" ] }, { "markdownDescription": "An array of strings in the form KEY=VALUE", "type": "array", "items": { "$ref": "#/definitions/environment" } }, { "type": "object", "markdownDescription": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", "additionalProperties": { "type": [ "string", "boolean", "number", "null" ] } } ] }, "aws_auth": { "oneOf": [ { "type": "object", "properties": { "aws_access_key_id": { "type": "string" }, "aws_secret_access_key": { "type": "string" } }, "required": [ "aws_access_key_id", "aws_secret_access_key" ], "additionalProperties": false }, { "type": "object", "properties": { "oidc_role_arn": { "type": "string" } }, "required": [ "oidc_role_arn" ], "additionalProperties": false } ] }, "auth": { "type": "object", "properties": { "username": { "type": "string" }, "password": { "type": "string" } }, "required": [ "username", "password" ], "additionalProperties": false } }, "required": [ "image" ], "additionalProperties": false } }, "working_directory": { "type": "string" }, "machine": { "markdownDescription": "Use the default machine executor image", "oneOf": [ { "markdownDescription": "Specify an image tag.\n\nUsing CircleCI Cloud? Use of `machine: true` is deprecated. You must specify an image to use.", "anyOf": [ { "type": "string", "pattern": " *<< *parameters.([^ ]+) *>> *" }, { "type": "boolean" }, { "type": "number" }, { "type": "string" } ] }, { "type": "object", "properties": { "enabled": { "markdownDescription": "A boolean or a template parameter evaluating to a boolean", "anyOf": [ { "type": "string", "pattern": " *<< *parameters.([^ ]+) *>> *" }, { "type": "boolean" }, { "type": "number" }, { "type": "string" } ] }, "image": { "type": "string" }, "docker_layer_caching": { "markdownDescription": "Set to `true` to enable [Docker Layer Caching](https://circleci.com/docs/docker-layer-caching). Note: If you haven't already, you must open a support ticket to have a CircleCI Sales representative contact you about enabling this feature on your account for an additional fee.", "anyOf": [ { "type": "string", "pattern": " *<< *parameters.([^ ]+) *>> *" }, { "type": "boolean" }, { "type": "number" }, { "type": "string" } ] }, "resource_class": { "type": "string" }, "shell": { "type": "string" } }, "additionalProperties": false } ] }, "environment": { "oneOf": [ { "markdownDescription": "A map of environment variable names and values.", "type": [ "string", "null" ] }, { "markdownDescription": "An array of strings in the form KEY=VALUE", "type": "array", "items": { "$ref": "#/definitions/environment" } }, { "type": "object", "markdownDescription": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", "additionalProperties": { "type": [ "string", "boolean", "number", "null" ] } } ] }, "shell": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "parameters": { "markdownDescription": "https://circleci.com/docs/reusing-config#using-the-parameters-declaration\n\nA map of parameter keys.", "type": "object", "additionalProperties": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "boolean", "string", "steps", "enum", "executor", "integer", "env_var_name" ] }, "default": { "oneOf": [ { "type": "string" }, { "type": "boolean" }, { "type": "integer" }, { "type": "array", "items": { "$ref": "#/definitions/step" } } ] }, "description": { "type": "string" }, "enum": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false, "required": [ "type" ] }, "minProperties": 1 } }, "additionalProperties": false }, { "type": "string", "markdownDescription": "Executor may be a string reference to another executor" } ] } }, "orbs": { "$ref": "#/properties/orbs" } } } ] }, "environment": { "oneOf": [ { "markdownDescription": "A map of environment variable names and values.", "type": [ "string", "null" ] }, { "markdownDescription": "An array of strings in the form KEY=VALUE", "type": "array", "items": { "$ref": "#/definitions/environment" } }, { "type": "object", "markdownDescription": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", "additionalProperties": { "type": [ "string", "boolean", "number", "null" ] } } ] }, "logic": { "oneOf": [ { "markdownDescription": "https://circleci.com/docs/configuration-reference#logic-statements\n\nA value or parameter reference to be used in a logical statement.", "anyOf": [ { "type": "string", "pattern": " *<< *pipeline.parameters.([^ ]+) *>> *" }, { "type": "boolean" }, { "type": "number" }, { "type": "string" } ] }, { "type": "object", "markdownDescription": "https://circleci.com/docs/configuration-reference#logic-statements\n\nA logical operator (and, or, not, equal, matches) to be used in dynamic configuration.", "minProperties": 1, "maxProperties": 1, "additionalProperties": false, "properties": { "and": { "type": "array", "items": { "$ref": "#/definitions/logic" }, "minItems": 1, "markdownDescription": "https://circleci.com/docs/configuration-reference#logic-statements\n\nLogical and: true when all statements in the list are true" }, "or": { "type": "array", "items": { "$ref": "#/definitions/logic" }, "minItems": 1, "markdownDescription": "https://circleci.com/docs/configuration-reference#logic-statements\n\nLogical or: true when at least one statement in the list is true" }, "not": { "$ref": "#/definitions/logic", "markdownDescription": "https://circleci.com/docs/configuration-reference#logic-statements\n\nLogical not: true when statement is false" }, "equal": { "type": "array", "items": { "$ref": "#/definitions/logic" }, "minItems": 1, "markdownDescription": "https://circleci.com/docs/configuration-reference#logic-statements\n\nTrue when all elements in the list are equal" }, "matches": { "type": "object", "additionalProperties": false, "markdownDescription": "https://circleci.com/docs/configuration-reference#logic-statements\n\nTrue when value matches the pattern", "properties": { "pattern": { "type": "string", "markdownDescription": "Regular expression pattern to match against" }, "value": { "type": "string", "markdownDescription": "Value to test against the pattern" } }, "required": [ "pattern", "value" ] } } }, { "type": "object", "markdownDescription": "A custom logic object with user-defined properties for conditional evaluation.", "propertyNames": { "not": { "pattern": "^(and|or|not|equal|matches)$" } } } ] }, "step": { "oneOf": [ { "type": "string", "markdownDescription": "A reference to a command or built-in step (e.g., `checkout`, `my-command`, or `orb-name/command-name`)." }, { "type": "object", "markdownDescription": "long form commands like `run:` or `checkout:", "propertyNames": { "pattern": "^[a-z][a-z\\d\/_-]*$", "not": { "pattern": "^(when|unless)$" } }, "minProperties": 1, "maxProperties": 1, "properties": { "run": { "markdownDescription": "https://circleci.com/docs/configuration-reference#run\n\nUsed for invoking all command-line programs, taking either a map of configuration values, or, when called in its short-form, a string that will be used as both the `command` and `name`. Run commands are executed using non-login shells by default, so you must explicitly source any dotfiles as part of the command.", "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "command": { "type": "string", "markdownDescription": "Command to run via the shell" }, "name": { "type": "string", "markdownDescription": "Title of the step to be shown in the CircleCI UI (default: full `command`)" }, "shell": { "type": "string", "markdownDescription": "Shell to use for execution command" }, "environment": { "$ref": "#/definitions/environment", "markdownDescription": "Additional environmental variables, locally scoped to command" }, "background": { "type": "boolean", "default": false, "markdownDescription": "Whether or not this step should run in the background (default: false)" }, "working_directory": { "type": "string", "markdownDescription": "In which directory to run this step (default: `working_directory` of the job)" }, "no_output_timeout": { "type": "string", "pattern": "\\d+(\\.\\d+)?[mhs]", "default": "10m", "markdownDescription": "Elapsed time the command can run without output. The string is a decimal with unit suffix, such as \"20m\", \"1.25h\", \"5s\" (default: 10 minutes)" }, "when": { "enum": [ "always", "on_success", "on_fail" ], "markdownDescription": "Specify when to enable or disable the step. Takes the following values: `always`, `on_success`, `on_fail` (default: `on_success`)" }, "max_auto_reruns": { "type": "integer", "minimum": 1, "maximum": 5, "markdownDescription": "Maximum number of automatic reruns for this step" }, "auto_rerun_delay": { "type": "string", "pattern": "^(10|[1-9])m|([1-9][0-9]*)s$", "markdownDescription": "Delay before automatic rerun of this step" } }, "required": [ "command" ], "if": { "properties": { "auto_rerun_delay": true }, "required": [ "auto_rerun_delay" ] }, "then": { "required": [ "max_auto_reruns" ] } } ] }, "checkout": { "markdownDescription": "https://circleci.com/docs/configuration-reference#checkout\n\nSpecial step used to check out source code to the configured `path` (defaults to the `working_directory`). The reason this is a special step is because it is more of a helper function designed to make checking out code easy for you. If you require doing git over HTTPS you should not use this step as it configures git to checkout over ssh.", "oneOf": [ { "type": "string", "enum": [ "checkout" ] }, { "type": "object", "properties": { "path": { "type": "string", "markdownDescription": "Checkout directory (default: job's `working_directory`)" }, "method": { "type": "string", "enum": [ "blobless", "full", "shallow" ], "markdownDescription": "The checkout method to be used ('blobless', 'full', or 'shallow', default 'full'). When using 'shallow', a positive `depth` value is required." }, "depth": { "type": "integer", "minimum": 1, "markdownDescription": "The depth of the shallow clone. Only valid when `method` is set to 'shallow'. Must be a positive integer." } }, "additionalProperties": false } ] }, "setup_remote_docker": { "markdownDescription": "https://circleci.com/docs/configuration-reference#setup_remote_docker\n\nCreates a remote Docker environment configured to execute Docker commands.", "oneOf": [ { "type": "string", "enum": [ "setup_remote_docker" ] }, { "type": "object", "properties": { "docker_layer_caching": { "type": "boolean", "default": false, "markdownDescription": "When `docker_layer_caching` is set to `true`, CircleCI will try to reuse Docker Images (layers) built during a previous job or workflow (Paid feature)" }, "version": { "markdownDescription": "If your build requires a specific docker image, you can set it as an image attribute", "anyOf": [ { "type": "string", "enum": [ "20.10.24", "20.10.23", "20.10.18", "20.10.17", "20.10.14", "20.10.12", "20.10.11", "20.10.7", "20.10.6", "20.10.2", "19.03.13" ] }, { "type": "string" } ] } }, "additionalProperties": false } ] }, "save_cache": { "markdownDescription": "https://circleci.com/docs/configuration-reference#save_cache\n\nGenerates and stores a cache of a file or directory of files such as dependencies or source code in our object storage. Later jobs can restore this cache using the `restore_cache` step.", "type": "object", "required": [ "paths", "key" ], "properties": { "paths": { "type": "array", "items": { "type": "string" }, "markdownDescription": "List of directories which should be added to the cache" }, "key": { "type": "string", "markdownDescription": "Unique identifier for this cache" }, "name": { "type": "string", "markdownDescription": "Title of the step to be shown in the CircleCI UI (default: 'Saving Cache')" }, "when": { "enum": [ "always", "on_success", "on_fail" ], "markdownDescription": "Specify when to enable or disable the step. Takes the following values: `always`, `on_success`, `on_fail` (default: `on_success`)" } }, "additionalProperties": false }, "restore_cache": { "markdownDescription": "https://circleci.com/docs/configuration-reference#restore_cache\n\nRestores a previously saved cache based on a `key`. Cache needs to have been saved first for this key using the `save_cache` step.", "oneOf": [ { "type": "object", "required": [ "key" ], "properties": { "key": { "type": "string", "markdownDescription": "Single cache key to restore" }, "name": { "type": "string", "markdownDescription": "Title of the step to be shown in the CircleCI UI (default: 'Restoring Cache')" } }, "additionalProperties": false }, { "type": "object", "required": [ "keys" ], "properties": { "keys": { "type": "array", "items": { "type": "string" }, "markdownDescription": "List of cache keys to lookup for a cache to restore. Only first existing key will be restored." }, "name": { "type": "string", "markdownDescription": "Title of the step to be shown in the CircleCI UI (default: 'Restoring Cache')" } }, "additionalProperties": false } ] }, "store_artifacts": { "markdownDescription": "https://circleci.com/docs/configuration-reference#store_artifacts\n\nStep to store artifacts (for example logs, binaries, etc) to be available in the web app or through the API.", "type": "object", "required": [ "path" ], "properties": { "path": { "type": "string", "markdownDescription": "Directory in the primary container to save as job artifacts" }, "destination": { "type": "string", "markdownDescription": "Prefix added to the artifact paths in the artifacts API (default: the directory of the file specified in `path`)" }, "name": { "type": "string", "markdownDescription": "Title of the step to be shown in the CircleCI UI" } }, "additionalProperties": false }, "store_test_results": { "markdownDescription": "https://circleci.com/docs/configuration-reference#storetestresults\n\nSpecial step used to upload test results so they display in builds' Test Summary section and can be used for timing analysis. To also see test result as build artifacts, please use the `store_artifacts` step.", "type": "object", "required": [ "path" ], "properties": { "path": { "type": "string", "markdownDescription": "Path (absolute, or relative to your `working_directory`) to directory containing subdirectories of JUnit XML or Cucumber JSON test metadata files" }, "name": { "type": "string", "markdownDescription": "Title of the step to be shown in the CircleCI UI" } }, "additionalProperties": false }, "persist_to_workspace": { "markdownDescription": "https://circleci.com/docs/configuration-reference#persist_to_workspace\n\nSpecial step used to persist a temporary file to be used by another job in the workflow", "type": "object", "required": [ "root", "paths" ], "properties": { "root": { "type": "string", "markdownDescription": "Either an absolute path or a path relative to `working_directory`" }, "paths": { "type": "array", "items": { "type": "string" }, "markdownDescription": "Glob identifying file(s), or a non-glob path to a directory to add to the shared workspace. Interpreted as relative to the workspace root. Must not be the workspace root itself." }, "name": { "type": "string", "markdownDescription": "Title of the step to be shown in the CircleCI UI" } }, "additionalProperties": false }, "attach_workspace": { "markdownDescription": "https://circleci.com/docs/configuration-reference#attach_workspace\n\nSpecial step used to attach the workflow's workspace to the current container. The full contents of the workspace are downloaded and copied into the directory the workspace is being attached at.", "type": "object", "required": [ "at" ], "properties": { "at": { "type": "string", "markdownDescription": "Directory to attach the workspace to" }, "name": { "type": "string", "markdownDescription": "Title of the step to be shown in the CircleCI UI" } }, "additionalProperties": false }, "add_ssh_keys": { "markdownDescription": "https://circleci.com/docs/configuration-reference#add_ssh_keys\n\nSpecial step that adds SSH keys from a project's settings to a container. Also configures SSH to use these keys.", "oneOf": [ { "type": "string", "enum": [ "add_ssh_keys" ] }, { "type": "object", "properties": { "fingerprints": { "type": "array", "items": { "type": "string" }, "markdownDescription": "List of fingerprints corresponding to the keys to be added" } }, "additionalProperties": false } ] } }, "additionalProperties": { "type": [ "object", "string" ] } }, { "type": "object", "markdownDescription": "https://circleci.com/docs/configuration-reference#the-when-step-requires-version-21\n\nA conditional step (`when` or `unless`) that runs based on a logical condition.", "additionalProperties": false, "minProperties": 1, "maxProperties": 1, "properties": { "when": { "type": "object", "markdownDescription": "https://circleci.com/docs/configuration-reference#the-when-step-requires-version-21\n\nConditional step to run on custom conditions (determined at config-compile time) that are checked before a workflow runs", "required": [ "condition", "steps" ], "properties": { "condition": { "$ref": "#/definitions/logic", "markdownDescription": "A logical condition that must evaluate to true for the steps to run" }, "steps": { "oneOf": [ { "type": "array", "items": { "$ref": "#/definitions/step" } }, { "$ref": "#/definitions/step" } ], "markdownDescription": "A list of steps to be performed when the condition is true" } } }, "unless": { "type": "object", "markdownDescription": "https://circleci.com/docs/configuration-reference#the-when-step-requires-version-21\n\nConditional step to run when custom conditions aren't met (determined at config-compile time) that are checked before a workflow runs", "required": [ "condition", "steps" ], "properties": { "condition": { "$ref": "#/definitions/logic", "markdownDescription": "A logical condition that must evaluate to false for the steps to run" }, "steps": { "oneOf": [ { "type": "array", "items": { "$ref": "#/definitions/step" } }, { "$ref": "#/definitions/step" } ], "markdownDescription": "A list of steps to be performed when the condition is false" } } } } } ] } }, "type": "object", "properties": { "executors": { "type": [ "object", "null" ], "markdownDescription": "Executors define the environment in which the steps of a job will be run, allowing you to reuse a single executor definition across multiple jobs.", "propertyNames": { "pattern": "^[a-z][a-z\\d_-]*$" }, "additionalProperties": { "oneOf": [ { "type": "object", "properties": { "description": { "type": "string" }, "macos": { "type": "object", "markdownDescription": "Options for the [macOS executor](https://circleci.com/docs/configuration-reference#macos)", "properties": { "xcode": { "type": [ "string", "number" ], "markdownDescription": "The version of Xcode that is installed on the virtual machine, see the [Supported Xcode Versions section of the Testing iOS](https://circleci.com/docs/testing-ios#supported-xcode-versions) document for the complete list." }, "resource_class": { "type": "string" }, "shell": { "type": "string" } }, "required": [ "xcode" ], "additionalProperties": false }, "resource_class": { "oneOf": [ { "type": "string", "default": "medium", "enum": [ "small", "medium", "medium+", "large", "xlarge", "2xlarge", "2xlarge+", "arm.medium", "arm.large", "arm.xlarge", "arm.2xlarge", "gpu.nvidia.small", "gpu.nvidia.medium", "windows.gpu.nvidia.medium", "macos.m1.medium.gen1", "macos.m1.large.gen1", "m2pro.medium", "m2pro.large", "m4pro.medium", "m4pro.large" ] }, { "title": "Self-hosted runner", "type": "string", "pattern": "^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+$" } ], "markdownDescription": "https://circleci.com/docs/reference/configuration-reference/#resourceclass\n\nResource class for the job. Can be either a predefined resource class (e.g., `medium`, `large`) or a self-hosted runner in the format `/`." }, "docker": { "type": "array", "minItems": 1, "markdownDescription": "Options for the [docker executor](https://circleci.com/docs/configuration-reference#docker)", "items": { "type": "object", "properties": { "image": { "type": "string", "markdownDescription": "The name of a custom docker image to use" }, "name": { "type": "string", "markdownDescription": "The name the container is reachable by. By default, container services are accessible through `localhost`" }, "entrypoint": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ], "markdownDescription": "The command used as executable when launching the container" }, "command": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ], "markdownDescription": "The command used as pid 1 (or args for entrypoint) when launching the container" }, "user": { "type": "string", "markdownDescription": "Which user to run the command as" }, "environment": { "oneOf": [ { "markdownDescription": "A map of environment variable names and values.", "type": [ "string", "null" ] }, { "markdownDescription": "An array of strings in the form KEY=VALUE", "type": "array", "items": { "$ref": "#/definitions/environment" } }, { "type": "object", "markdownDescription": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", "additionalProperties": { "type": [ "string", "boolean", "number", "null" ] } } ] }, "aws_auth": { "oneOf": [ { "type": "object", "properties": { "aws_access_key_id": { "type": "string" }, "aws_secret_access_key": { "type": "string" } }, "required": [ "aws_access_key_id", "aws_secret_access_key" ], "additionalProperties": false }, { "type": "object", "properties": { "oidc_role_arn": { "type": "string" } }, "required": [ "oidc_role_arn" ], "additionalProperties": false } ], "markdownDescription": "Authentication for AWS EC2 Container Registry (ECR). You can use the access/secret keys or OIDC." }, "auth": { "type": "object", "properties": { "username": { "type": "string" }, "password": { "type": "string" } }, "required": [ "username", "password" ], "additionalProperties": false, "markdownDescription": "Authentication for registries using standard `docker login` credentials" } }, "required": [ "image" ], "additionalProperties": false } }, "working_directory": { "type": "string", "markdownDescription": "In which directory to run the steps." }, "machine": { "markdownDescription": "Use the default machine executor image", "oneOf": [ { "markdownDescription": "Specify an image tag.\n\nUsing CircleCI Cloud? Use of `machine: true` is deprecated. You must specify an image to use.", "anyOf": [ { "type": "string", "pattern": " *<< *parameters.([^ ]+) *>> *" }, { "type": "boolean" }, { "type": "number" }, { "type": "string" } ] }, { "type": "object", "properties": { "enabled": { "markdownDescription": "A boolean or a template parameter evaluating to a boolean", "anyOf": [ { "type": "string", "pattern": " *<< *parameters.([^ ]+) *>> *" }, { "type": "boolean" }, { "type": "number" }, { "type": "string" } ] }, "image": { "type": "string", "markdownDescription": "The VM image to use. View [available images](https://circleci.com/docs/configuration-reference#available-machine-images). **Note:** This key is **not** supported on the installable CircleCI. For information about customizing machine executor images on CircleCI installed on your servers, see our [VM provisioner documentation](https://circleci.com/docs/server-admin/latest/operator/manage-virtual-machines-with-machine-provisioner/)." }, "docker_layer_caching": { "markdownDescription": "Set to `true` to enable [Docker Layer Caching](https://circleci.com/docs/docker-layer-caching). Note: If you haven't already, you must open a support ticket to have a CircleCI Sales representative contact you about enabling this feature on your account for an additional fee.", "anyOf": [ { "type": "string", "pattern": " *<< *parameters.([^ ]+) *>> *" }, { "type": "boolean" }, { "type": "number" }, { "type": "string" } ] }, "resource_class": { "type": "string" }, "shell": { "type": "string" } }, "additionalProperties": false } ] }, "environment": { "oneOf": [ { "markdownDescription": "A map of environment variable names and values.", "type": [ "string", "null" ] }, { "markdownDescription": "An array of strings in the form KEY=VALUE", "type": "array", "items": { "$ref": "#/definitions/environment" } }, { "type": "object", "markdownDescription": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", "additionalProperties": { "type": [ "string", "boolean", "number", "null" ] } } ] }, "shell": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ], "markdownDescription": "Shell to use for execution command in all steps. Can be overridden by shell in each step (default: See [Default Shell Options](https://circleci.com/docs/configuration-reference#default-shell-options)" }, "parameters": { "markdownDescription": "https://circleci.com/docs/reusing-config#using-the-parameters-declaration\n\nA map of parameter keys.", "type": "object", "additionalProperties": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "boolean", "string", "steps", "enum", "executor", "integer", "env_var_name" ] }, "default": { "oneOf": [ { "type": "string" }, { "type": "boolean" }, { "type": "integer" }, { "type": "array", "items": { "$ref": "#/definitions/step" } } ] }, "description": { "type": "string" }, "enum": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false, "required": [ "type" ] }, "minProperties": 1 } }, "additionalProperties": false }, { "type": "string", "markdownDescription": "Executor may be a string reference to another executor" } ] } }, "experimental": { "type": "object", "properties": { "notify": { "type": "object", "properties": { "branches": { "type": "object", "markdownDescription": "A map defining rules for execution on specific branches", "properties": { "only": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ], "markdownDescription": "Either a single branch specifier, or a list of branch specifiers" }, "ignore": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ], "markdownDescription": "Either a single branch specifier, or a list of branch specifiers" } }, "additionalProperties": false } }, "required": [ "branches" ], "additionalProperties": false } }, "additionalProperties": false, "required": [ "notify" ] }, "workflows": { "type": "object", "properties": { "version": { "type": [ "number", "string" ], "markdownDescription": "The Workflows `version` field is used to issue warnings for deprecation or breaking changes during v2 Beta. It is deprecated as of CircleCI v2.1" } }, "propertyNames": { "pattern": ".+" }, "additionalProperties": { "type": "object", "properties": { "triggers": { "type": "array", "items": { "type": "object", "properties": { "schedule": { "type": "object", "markdownDescription": "A workflow may have a schedule indicating it runs at a certain time, for example a nightly build that runs every day at 12am UTC:", "properties": { "cron": { "type": "string", "markdownDescription": "See the [crontab man page](http://pubs.opengroup.org/onlinepubs/7908799/xcu/crontab.html)" }, "filters": { "type": "object", "markdownDescription": "A map defining rules for execution on specific branches", "properties": { "branches": { "type": "object", "markdownDescription": "A map defining rules for execution on specific branches", "properties": { "only": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ], "markdownDescription": "Either a single branch specifier, or a list of branch specifiers" }, "ignore": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ], "markdownDescription": "Either a single branch specifier, or a list of branch specifiers" } }, "additionalProperties": false } }, "additionalProperties": false } } } }, "additionalProperties": false }, "markdownDescription": "Specifies which triggers will cause this workflow to be executed. Default behavior is to trigger the workflow when pushing to a branch." }, "max_auto_reruns": { "type": "integer", "minimum": 1, "maximum": 5, "markdownDescription": "The maximum number of times a workflow will be automatically rerun if it fails" }, "when": { "$ref": "#/definitions/logic", "markdownDescription": "https://circleci.com/docs/configuration-reference#the-when-step-requires-version-21\n\nConditional step to run on custom conditions (determined at config-compile time) that are checked before a workflow runs" }, "unless": { "$ref": "#/definitions/logic", "markdownDescription": "https://circleci.com/docs/configuration-reference#the-when-step-requires-version-21\n\nConditional step to run when custom conditions aren't met (determined at config-compile time) that are checked before a workflow runs" }, "jobs": { "type": "array", "minItems": 1, "items": { "oneOf": [ { "type": "string" }, { "type": "object", "maxProperties": 1, "minProperties": 0, "additionalProperties": { "type": "object", "properties": { "requires": { "type": "array", "markdownDescription": "Jobs are run in parallel by default, so you must explicitly require any dependencies by their job name.", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "minProperties": 1, "maxProperties": 1, "patternProperties": { "^[A-Za-z][A-Za-z\\s\\d_-]*$": { "oneOf": [ { "type": "string", "enum": [ "success", "failed", "canceled", "not_run" ] }, { "type": "array", "minLength": 1, "items": { "type": "string", "enum": [ "success", "failed", "canceled", "not_run" ] } } ] } } } ] } }, "filters": { "markdownDescription": "https://circleci.com/docs/reference/configuration-reference/#jobfilters \n\n A map or string to define filtering rules for job execution. Branch and tag filters require a map. Expression-based filters require a string.", "oneOf": [ { "type": "object", "properties": { "branches": { "type": "object", "markdownDescription": "A map defining rules for execution on specific branches", "properties": { "only": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ], "markdownDescription": "Either a single branch specifier, or a list of branch specifiers" }, "ignore": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ], "markdownDescription": "Either a single branch specifier, or a list of branch specifiers" } }, "additionalProperties": false }, "tags": { "type": "object", "markdownDescription": "A map defining rules for execution on specific tags", "properties": { "only": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ], "markdownDescription": "Either a single tag specifier, or a list of tag specifiers" }, "ignore": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ], "markdownDescription": "Either a single tag specifier, or a list of tag specifiers" } }, "additionalProperties": false } } }, { "type": "string" } ] }, "context": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ], "markdownDescription": "Either a single context name, or a list of contexts. The default name is `org-global`" }, "type": { "type": "string" }, "pre-steps": { "steps": { "type": "array", "items": { "$ref": "#/definitions/step" }, "minItems": 1 } }, "post-steps": { "steps": { "type": "array", "items": { "$ref": "#/definitions/step" }, "minItems": 1 } }, "matrix": { "type": "object", "required": [ "parameters" ], "properties": { "parameters": { "type": "object", "markdownDescription": "A map of parameter names to every value the job should be called with" }, "exclude": { "type": "array", "items": { "type": "object" }, "markdownDescription": "A list of argument maps that should be excluded from the matrix" }, "alias": { "type": "string", "markdownDescription": "An alias for the matrix, usable from another job's requires stanza. Defaults to the name of the job being executed" } }, "markdownDescription": "https://circleci.com/docs/configuration-reference#matrix-requires-version-21\n\nThe matrix stanza allows you to run a parameterized job multiple times with different arguments." }, "serial-group": { "type": "string", "minLength": 1 }, "override-with": { "type": "string" } } } } ] } } }, "required": [ "jobs" ], "not": { "markdownDescription": "https://circleci.com/docs/configuration-reference#logic-statements \n\nLogical not: true when statement is false", "allOf": [ { "required": [ "when" ] }, { "required": [ "unless" ] } ] } }, "markdownDescription": "Used for orchestrating all jobs. Each workflow consists of the workflow name as a key and a map as a value" }, "jobs": { "markdownDescription": "Jobs are collections of steps. All of the steps in the job are executed in a single unit, either within a fresh container or VM.", "type": "object", "propertyNames": { "type": "string", "pattern": "^[A-Za-z][A-Za-z\\s\\d_-]*$" }, "additionalProperties": { "$ref": "#/definitions/jobDefinition" } }, "orbs": { "type": [ "object", "null" ], "markdownDescription": "https://circleci.com/docs/configuration-reference#orbs-requires-version-21\n\nOrbs are reusable packages of CircleCI configuration that you may share across projects, enabling you to create encapsulated, parameterized commands, jobs, and executors that can be used across multiple projects.", "additionalProperties": { "markdownDescription": "An orb reference can be specified in multiple ways:\n\n**String with semantic version:**\n- `namespace/orb-name@1.2.3` - specific version\n- `namespace/orb-name@1.2` - latest patch version of 1.2.x\n- `namespace/orb-name@1` - latest minor and patch of 1.x.x\n- `namespace/orb-name@volatile` - most recent release\n- `namespace/orb-name@dev:branch-name` - development version\n\n**String with parameter substitution:**\n- `namespace/orb-name@<>`\n- `namespace/orb-name@<>`\n\n**Inline orb object:** Define jobs, commands, and executors directly in this configuration.\n\nSee [Orb Concepts](https://circleci.com/docs/orbs/author/orb-concepts/#semantic-versioning) and [Creating Inline Orbs](https://circleci.com/docs/reference/reusing-config/#writing-inline-orbs) for more details.", "oneOf": [ { "type": "string", "pattern": "^[a-z][a-z0-9_-]+/[a-z][a-z0-9_-]+@(dev:[\\.a-z0-9_-]+|\\d+|\\d+\\.\\d+|\\d+\\.\\d+\\.\\d+|volatile)$" }, { "type": "string", "pattern": "^[a-z][a-z0-9_-]+/[a-z][a-z0-9_-]+@ *<<.+>> *$" }, { "type": "object", "properties": { "jobs": { "markdownDescription": "Jobs are collections of steps. All of the steps in the job are executed in a single unit, either within a fresh container or VM.", "type": "object", "propertyNames": { "type": "string", "pattern": "^[A-Za-z][A-Za-z\\s\\d_-]*$" }, "additionalProperties": { "$ref": "#/definitions/jobDefinition" } }, "commands": { "type": "object", "markdownDescription": "https://circleci.com/docs/configuration-reference#commands-requires-version-21\n\nA command definition defines a sequence of steps as a map to be executed in a job, enabling you to reuse a single command definition across multiple jobs.", "propertyNames": { "pattern": "^[a-z][a-z\\d_-]*$" }, "additionalProperties": { "oneOf": [ { "type": "object", "properties": { "description": { "type": "string", "markdownDescription": "A string that describes the purpose of the command." }, "parameters": { "markdownDescription": "https://circleci.com/docs/reusing-config#using-the-parameters-declaration\n\nA map of parameter keys.", "type": "object", "additionalProperties": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "boolean", "string", "steps", "enum", "executor", "integer", "env_var_name" ] }, "default": { "oneOf": [ { "type": "string" }, { "type": "boolean" }, { "type": "integer" }, { "type": "array", "items": { "$ref": "#/definitions/step" } } ] }, "description": { "type": "string" }, "enum": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false, "required": [ "type" ] }, "minProperties": 1 }, "steps": { "type": "array", "items": { "$ref": "#/definitions/step" }, "minItems": 1, "markdownDescription": "A sequence of steps run inside the calling job of the command." } }, "required": [ "steps" ], "additionalProperties": false }, { "type": "string", "markdownDescription": "Command may be a string reference to another command" } ] } }, "executors": { "type": "object", "markdownDescription": "Executors define the environment in which the steps of a job will be run, allowing you to reuse a single executor definition across multiple jobs.", "propertyNames": { "pattern": "^[a-z][a-z\\d_-]*$" }, "additionalProperties": { "oneOf": [ { "type": "object", "properties": { "description": { "type": "string" }, "macos": { "type": "object", "properties": { "xcode": { "type": [ "string", "number" ] }, "resource_class": { "type": "string" }, "shell": { "type": "string" } }, "required": [ "xcode" ], "additionalProperties": false }, "resource_class": { "type": "string" }, "docker": { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "image": { "type": "string" }, "name": { "type": "string" }, "entrypoint": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "command": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "user": { "type": "string" }, "environment": { "oneOf": [ { "markdownDescription": "A map of environment variable names and values.", "type": [ "string", "null" ] }, { "markdownDescription": "An array of strings in the form KEY=VALUE", "type": "array", "items": { "$ref": "#/definitions/environment" } }, { "type": "object", "markdownDescription": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", "additionalProperties": { "type": [ "string", "boolean", "number", "null" ] } } ] }, "aws_auth": { "oneOf": [ { "type": "object", "properties": { "aws_access_key_id": { "type": "string" }, "aws_secret_access_key": { "type": "string" } }, "required": [ "aws_access_key_id", "aws_secret_access_key" ], "additionalProperties": false }, { "type": "object", "properties": { "oidc_role_arn": { "type": "string" } }, "required": [ "oidc_role_arn" ], "additionalProperties": false } ] }, "auth": { "type": "object", "properties": { "username": { "type": "string" }, "password": { "type": "string" } }, "required": [ "username", "password" ], "additionalProperties": false } }, "required": [ "image" ], "additionalProperties": false } }, "working_directory": { "type": "string" }, "machine": { "markdownDescription": "Use the default machine executor image", "oneOf": [ { "markdownDescription": "Specify an image tag.\n\nUsing CircleCI Cloud? Use of `machine: true` is deprecated. You must specify an image to use.", "anyOf": [ { "type": "string", "pattern": " *<< *parameters.([^ ]+) *>> *" }, { "type": "boolean" }, { "type": "number" }, { "type": "string" } ] }, { "type": "object", "properties": { "enabled": { "markdownDescription": "A boolean or a template parameter evaluating to a boolean", "anyOf": [ { "type": "string", "pattern": " *<< *parameters.([^ ]+) *>> *" }, { "type": "boolean" }, { "type": "number" }, { "type": "string" } ] }, "image": { "type": "string" }, "docker_layer_caching": { "markdownDescription": "Set to `true` to enable [Docker Layer Caching](https://circleci.com/docs/docker-layer-caching). Note: If you haven't already, you must open a support ticket to have a CircleCI Sales representative contact you about enabling this feature on your account for an additional fee.", "anyOf": [ { "type": "string", "pattern": " *<< *parameters.([^ ]+) *>> *" }, { "type": "boolean" }, { "type": "number" }, { "type": "string" } ] }, "resource_class": { "type": "string" }, "shell": { "type": "string" } }, "additionalProperties": false } ] }, "environment": { "oneOf": [ { "markdownDescription": "A map of environment variable names and values.", "type": [ "string", "null" ] }, { "markdownDescription": "An array of strings in the form KEY=VALUE", "type": "array", "items": { "$ref": "#/definitions/environment" } }, { "type": "object", "markdownDescription": "The value should be a string, but we allow null, boolean and numbers too. Examples: `FOO: true` and `BAR: 2` `BAZ:`", "additionalProperties": { "type": [ "string", "boolean", "number", "null" ] } } ] }, "shell": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "parameters": { "markdownDescription": "https://circleci.com/docs/reusing-config#using-the-parameters-declaration\n\nA map of parameter keys.", "type": "object", "additionalProperties": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "boolean", "string", "steps", "enum", "executor", "integer", "env_var_name" ] }, "default": { "oneOf": [ { "type": "string" }, { "type": "boolean" }, { "type": "integer" }, { "type": "array", "items": { "$ref": "#/definitions/step" } } ] }, "description": { "type": "string" }, "enum": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false, "required": [ "type" ] }, "minProperties": 1 } }, "additionalProperties": false }, { "type": "string", "markdownDescription": "Executor may be a string reference to another executor" } ] } }, "orbs": { "$ref": "#/properties/orbs" } } } ] } }, "commands": { "type": [ "object", "null" ], "markdownDescription": "https://circleci.com/docs/configuration-reference#commands-requires-version-21\n\nA command definition defines a sequence of steps as a map to be executed in a job, enabling you to reuse a single command definition across multiple jobs.", "propertyNames": { "pattern": "^[a-z][a-z\\d_-]*$" }, "additionalProperties": { "oneOf": [ { "type": "object", "properties": { "description": { "type": "string" }, "parameters": { "markdownDescription": "https://circleci.com/docs/reusing-config#using-the-parameters-declaration\n\nA map of parameter keys.", "type": "object", "additionalProperties": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "boolean", "string", "steps", "enum", "executor", "integer", "env_var_name" ] }, "default": { "oneOf": [ { "type": "string" }, { "type": "boolean" }, { "type": "integer" }, { "type": "array", "items": { "$ref": "#/definitions/step" } } ] }, "description": { "type": "string" }, "enum": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false, "required": [ "type" ] }, "minProperties": 1 }, "steps": { "type": "array", "items": { "$ref": "#/definitions/step" }, "minItems": 1, "markdownDescription": "A sequence of steps run inside the calling job of the command." } }, "required": [ "steps" ], "additionalProperties": false }, { "type": "string", "markdownDescription": "https://circleci.com/docs/creating-orbs#creating-inline-orbs\n\nInline orbs can be handy during development of an orb or as a convenience for name-spacing jobs and commands in lengthy configurations, particularly if you later intend to share the orb with others." } ] } }, "examples": { "type": "object", "propertyNames": { "pattern": "^[a-z][a-z\\d_-]*$" }, "additionalProperties": { "type": "object", "properties": { "description": { "type": "string" }, "usage": { "type": "object" }, "result": { "type": "object" } }, "required": [ "usage" ], "additionalProperties": false } }, "display": { "type": "object", "properties": { "home_url": { "type": "string" }, "source_url": { "type": "string" } } }, "version": { "enum": [ "2.1", 2.1 ], "markdownDescription": "The version field is intended to be used in order to issue warnings for deprecation or breaking changes." }, "parameters": { "type": [ "object", "null" ], "additionalProperties": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "boolean", "string", "enum", "integer" ] }, "default": { "oneOf": [ { "type": "string" }, { "type": "boolean" }, { "type": "integer" } ] }, "description": { "type": "string" }, "enum": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false, "required": [ "default", "type" ] } } }, "required": [ "version" ] }