diff --git a/.venv b/.venv new file mode 100644 index 000000000..767cba080 --- /dev/null +++ b/.venv @@ -0,0 +1 @@ +.tox/vendor-schemas diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 05bd6e8e2..f8f659077 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -10,6 +10,9 @@ Unreleased .. vendor-insert-here +- Update vendored schemas: buildkite, circle-ci, citation-file-format, gitlab-ci, + meltano, mergify, renovate, snapcraft (2026-10-11) + 0.38.2 ------ diff --git a/src/check_jsonschema/builtin_schemas/vendor/buildkite.json b/src/check_jsonschema/builtin_schemas/vendor/buildkite.json index 9951afaf8..2eadb2475 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/buildkite.json +++ b/src/check_jsonschema/builtin_schemas/vendor/buildkite.json @@ -324,9 +324,14 @@ "description": "A unique identifier for a step, must not resemble a UUID", "examples": ["deploy-staging", "test-integration"], "maxLength": 100, - "pattern": "^[a-zA-Z0-9_\\-:${}.,]+$", + "pattern": "^[a-zA-Z0-9_\\-:${}]+$", "not": { - "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$" + "anyOf": [ + { + "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$" + }, + { "pattern": "\\{\\{matrix" } + ] } }, "label": { diff --git a/src/check_jsonschema/builtin_schemas/vendor/circle-ci.json b/src/check_jsonschema/builtin_schemas/vendor/circle-ci.json index 9d85f558d..a6f31e32b 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/circle-ci.json +++ b/src/check_jsonschema/builtin_schemas/vendor/circle-ci.json @@ -10,6 +10,24 @@ ], "markdownDescription": "Specify when to enable or disable the step. Takes the following values: `always`, `on_success`, `on_fail` (default: `on_success`)" }, + "stringOrList": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "expression": { + "type": "string", + "pattern": "<<.*>>", + "markdownDescription": "An expression such as `<< parameters.name >>`, filled in when the config is compiled" + }, "jobInvocation": { "oneOf": [ { @@ -51,6 +69,57 @@ "plan_name": { "type": "string", "markdownDescription": "Required plan name for release jobs." + }, + "validation": { + "markdownDescription": "Turns on the release validation engine, which gates the release on signals from your monitoring tool and triggers your rollback pipeline when a release fails.", + "properties": { + "enabled": { + "markdownDescription": "Turns on release validation for this release job (required)." + }, + "evaluation_time": { + "default": "20m", + "markdownDescription": "How long the engine waits for validation signals before treating the release as successful, for example `30m` (default: `20m`)." + }, + "auto_rollback_on_failure": { + "markdownDescription": "When `true`, the engine triggers your rollback pipeline if validation fails during the evaluation window." + }, + "webhooks": { + "markdownDescription": "Webhook validation checks, each one named signal from a monitoring provider. When omitted, a catch-all check accepts any signal.", + "items": { + "properties": { + "name": { + "markdownDescription": "Identifier for this check. Your monitoring tool must send a matching `signal_name` (required)." + }, + "provider": { + "anyOf": [ + { + "enum": [ + "datadog", + "prometheus", + "grafana", + "alertmanager", + "custom" + ] + }, + { + "type": "string" + } + ], + "markdownDescription": "One of `datadog`, `prometheus`, `grafana`, `alertmanager` or `custom` (required)." + }, + "data_points": { + "markdownDescription": "Maps fields in the incoming webhook payload to the values CircleCI matches on. Provider defaults apply to any key you omit." + }, + "fail_when": { + "markdownDescription": "Expression that decides when a webhook event counts as a failure. Provider defaults apply when you omit it." + }, + "max_failures": { + "markdownDescription": "Number of matching failures before this check fails." + } + } + } + } + } } }, "additionalProperties": true @@ -75,12 +144,31 @@ "key" ], "properties": { + "type": { + "enum": [ + "lock", + "unlock" + ] + }, "key": { - "type": "string", - "markdownDescription": "Required key for lock/unlock jobs." + "markdownDescription": "Required key for lock/unlock jobs. At most 512 characters: letters, digits, `.`, `:`, `/`, `_` and `-`.", + "anyOf": [ + { + "type": "string", + "minLength": 1, + "maxLength": 512, + "pattern": "^[A-Za-z\\d.:/_-]*$" + }, + { + "$ref": "#/definitions/expression" + } + ] + }, + "parameters": { + "$ref": "#/definitions/jobParameters" } }, - "additionalProperties": true + "additionalProperties": false }, "else": { "if": { @@ -127,6 +215,7 @@ "markdownDescription": "Validation: The job must adhere to the structure of a build job.", "properties": { "description": { + "markdownDescription": "A description of the job.", "type": "string" }, "type": { @@ -134,26 +223,19 @@ "markdownDescription": "The job type. If not specified, defaults to build." }, "parallelism": { - "markdownDescription": "A integer or a parameter evaluating to a integer", + "markdownDescription": "An integer, or an expression that evaluates to one", "anyOf": [ { - "oneOf": [ - { - "type": "string", - "pattern": " *<< *parameters.([^ ]+) *>> *" - }, - { - "type": "string", - "pattern": " *<< *pipeline.parameters.([^ ]+) *>> *" - } - ] + "type": "integer", + "minimum": 1 }, { - "type": "integer" + "$ref": "#/definitions/expression" } ] }, "macos": { + "markdownDescription": "Options for the [macOS executor](https://circleci.com/docs/configuration-reference#macos)", "type": "object", "properties": { "xcode": { @@ -166,7 +248,26 @@ "type": "string" }, "shell": { - "type": "string" + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "code_signing": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[A-Za-z0-9-]+$", + "maxLength": 50 + }, + "markdownDescription": "Names of the code signing bundles the job may install with the `install_signing_bundle` step" } }, "required": [ @@ -175,9 +276,10 @@ "additionalProperties": false }, "resource_class": { - "type": "string" + "$ref": "#/definitions/resourceClass" }, "docker": { + "markdownDescription": "Options for the [docker executor](https://circleci.com/docs/configuration-reference#docker)", "type": "array", "minItems": 1, "items": { @@ -280,6 +382,27 @@ } ] }, + "gcp_auth": { + "type": "object", + "markdownDescription": "Authenticate to Google Artifact Registry with OIDC", + "properties": { + "oidc_service_account": { + "type": "string" + }, + "workload_identity_pool": { + "type": "string" + }, + "workload_identity_provider": { + "type": "string" + } + }, + "required": [ + "oidc_service_account", + "workload_identity_pool", + "workload_identity_provider" + ], + "additionalProperties": false + }, "auth": { "type": "object", "properties": { @@ -304,6 +427,7 @@ } }, "steps": { + "markdownDescription": "https://circleci.com/docs/reference/configuration-reference/#steps\n\nThe steps the job runs, in order.", "type": "array", "items": { "$ref": "#/definitions/step" @@ -319,13 +443,20 @@ "properties": { "caches": { "type": "string", - "pattern": "^([1-9]|1[0-5])d$" + "pattern": "^([1-9]|[12][0-9]|30)d$" } }, "additionalProperties": false }, "circleci_ip_ranges": { - "type": "boolean", + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/expression" + } + ], "markdownDescription": "Enable running jobs with a set of well-defined IP address ranges." }, "machine": { @@ -374,27 +505,32 @@ }, "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": "boolean" + }, + "resource_class": { + "type": "string" + }, + "shell": { + "oneOf": [ { - "type": "number" + "type": "string" }, { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } ] }, - "resource_class": { - "type": "string" - }, - "shell": { - "type": "string" + "code_signing": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[A-Za-z0-9-]+$", + "maxLength": 50 + }, + "markdownDescription": "Names of the code signing bundles the job may install with the `install_signing_bundle` step" } }, "additionalProperties": false @@ -402,6 +538,7 @@ ] }, "environment": { + "markdownDescription": "A map of environment variable names and values, for every step of the job.", "oneOf": [ { "markdownDescription": "A map of environment variable names and values.", @@ -432,6 +569,7 @@ ] }, "executor": { + "markdownDescription": "https://circleci.com/docs/reference/reusing-config/#executor\n\nThe executor to run the job in, defined in the top-level `executors` map or by an orb.", "oneOf": [ { "type": "string", @@ -454,6 +592,7 @@ ] }, "shell": { + "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)", "oneOf": [ { "type": "string" @@ -467,62 +606,7 @@ ] }, "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 + "$ref": "#/definitions/jobParameters" } }, "required": [ @@ -700,7 +784,26 @@ "type": "string" }, "shell": { - "type": "string" + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "code_signing": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[A-Za-z0-9-]+$", + "maxLength": 50 + }, + "markdownDescription": "Names of the code signing bundles the job may install with the `install_signing_bundle` step" } }, "required": [ @@ -709,7 +812,7 @@ "additionalProperties": false }, "resource_class": { - "type": "string" + "$ref": "#/definitions/resourceClass" }, "docker": { "type": "array", @@ -814,6 +917,27 @@ } ] }, + "gcp_auth": { + "type": "object", + "markdownDescription": "Authenticate to Google Artifact Registry with OIDC", + "properties": { + "oidc_service_account": { + "type": "string" + }, + "workload_identity_pool": { + "type": "string" + }, + "workload_identity_provider": { + "type": "string" + } + }, + "required": [ + "oidc_service_account", + "workload_identity_pool", + "workload_identity_provider" + ], + "additionalProperties": false + }, "auth": { "type": "object", "properties": { @@ -887,27 +1011,32 @@ }, "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": "boolean" + }, + "resource_class": { + "type": "string" + }, + "shell": { + "oneOf": [ { - "type": "number" + "type": "string" }, { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } ] }, - "resource_class": { - "type": "string" - }, - "shell": { - "type": "string" + "code_signing": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[A-Za-z0-9-]+$", + "maxLength": 50 + }, + "markdownDescription": "Names of the code signing bundles the job may install with the `install_signing_bundle` step" } }, "additionalProperties": false @@ -1198,8 +1327,18 @@ "markdownDescription": "In which directory to run this step (default: `working_directory` of the job)" }, "no_output_timeout": { - "type": "string", - "pattern": "\\d+(\\.\\d+)?[mhs]", + "anyOf": [ + { + "type": "string", + "pattern": "\\d+(\\.\\d+)?[mhs]" + }, + { + "type": "integer" + }, + { + "$ref": "#/definitions/expression" + } + ], "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)" }, @@ -1207,15 +1346,231 @@ "$ref": "#/definitions/stepWhen" }, "max_auto_reruns": { - "type": "integer", - "minimum": 1, - "maximum": 5, + "anyOf": [ + { + "type": "integer", + "minimum": 1, + "maximum": 5 + }, + { + "$ref": "#/definitions/expression" + } + ], "markdownDescription": "Maximum number of automatic reruns for this step" }, "auto_rerun_delay": { - "type": "string", - "pattern": "^(10|[1-9])m|([1-9][0-9]*)s$", + "anyOf": [ + { + "type": "string", + "pattern": "^((10|[1-9])m|([1-9][0-9]*)s)$" + }, + { + "$ref": "#/definitions/expression" + } + ], "markdownDescription": "Delay before automatic rerun of this step" + }, + "teardown": { + "type": "array", + "markdownDescription": "Steps to run at the end of the job, in reverse order, whether or not it succeeded: `run`, `save_cache`, `persist_to_workspace`, `store_artifacts` and `store_test_results`.", + "items": { + "type": "object", + "minProperties": 1, + "maxProperties": 1, + "additionalProperties": false, + "properties": { + "run": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object", + "required": [ + "command" + ], + "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`)" + }, + "when": { + "$ref": "#/definitions/stepWhen" + }, + "background": { + "enum": [ + false + ], + "markdownDescription": "A teardown step can't run in the background: it would be cancelled as soon as it started." + }, + "max_auto_reruns": { + "anyOf": [ + { + "type": "integer", + "minimum": 1, + "maximum": 5 + }, + { + "$ref": "#/definitions/expression" + } + ] + }, + "auto_rerun_delay": { + "anyOf": [ + { + "type": "string", + "pattern": "^((10|[1-9])m|([1-9][0-9]*)s)$" + }, + { + "$ref": "#/definitions/expression" + } + ] + } + }, + "not": { + "required": [ + "teardown" + ] + }, + "if": { + "required": [ + "auto_rerun_delay" + ] + }, + "then": { + "required": [ + "max_auto_reruns" + ] + } + } + ] + }, + "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": { + "$ref": "#/definitions/stringOrList", + "markdownDescription": "List of directories which should be added to the cache" + }, + "key": { + "type": "string", + "minLength": 1, + "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": { + "$ref": "#/definitions/stepWhen" + } + }, + "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" + ], + "oneOf": [ + { + "required": [ + "paths" + ] + }, + { + "required": [ + "path" + ] + } + ], + "properties": { + "root": { + "type": "string", + "markdownDescription": "Either an absolute path or a path relative to `working_directory`" + }, + "paths": { + "$ref": "#/definitions/stringOrList", + "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." + }, + "path": { + "type": "string", + "markdownDescription": "A single glob or path to add to the shared workspace, instead of `paths`" + }, + "name": { + "type": "string", + "markdownDescription": "Title of the step to be shown in the CircleCI UI" + }, + "when": { + "$ref": "#/definitions/stepWhen" + } + }, + "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" + }, + "when": { + "$ref": "#/definitions/stepWhen" + } + }, + "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" + }, + "when": { + "$ref": "#/definitions/stepWhen" + } + }, + "additionalProperties": false + } + } + } + }, + "pwd": { + "type": "string" + }, + "path": { + "type": "string" } }, "required": [ @@ -1233,10 +1588,15 @@ "required": [ "max_auto_reruns" ] - } + }, + "additionalProperties": false } ] }, + "deploy": { + "markdownDescription": "https://circleci.com/docs/reference/configuration-reference/#deploy-deprecated\n\n**Deprecated.** Replace it with `run`, which takes the same options.", + "$ref": "#/definitions/step/oneOf/1/properties/run" + }, "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": [ @@ -1292,23 +1652,18 @@ "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)" }, + "prefer_same_region": { + "type": "boolean", + "default": false, + "markdownDescription": "Set this to `true` to pull images from the same region as the VM where possible. If the pull fails, CircleCI falls back to the image's original region" + }, "version": { - "markdownDescription": "If your build requires a specific docker image, you can set it as an image attribute", + "markdownDescription": "The Docker version to use, such as `docker29`, `edge` or `previous`, or `default`. The versions offered depend on the job's resource class.", "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" + "default" ] }, { @@ -1318,6 +1673,10 @@ }, "when": { "$ref": "#/definitions/stepWhen" + }, + "resource_class": { + "type": "string", + "markdownDescription": "Not a `setup_remote_docker` option. It is accepted, and ignored." } }, "additionalProperties": false @@ -1333,14 +1692,12 @@ ], "properties": { "paths": { - "type": "array", - "items": { - "type": "string" - }, + "$ref": "#/definitions/stringOrList", "markdownDescription": "List of directories which should be added to the cache" }, "key": { "type": "string", + "minLength": 1, "markdownDescription": "Unique identifier for this cache" }, "name": { @@ -1383,10 +1740,7 @@ ], "properties": { "keys": { - "type": "array", - "items": { - "type": "string" - }, + "$ref": "#/definitions/stringOrList", "markdownDescription": "List of cache keys to lookup for a cache to restore. Only first existing key will be restored." }, "name": { @@ -1451,8 +1805,19 @@ "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" + "root" + ], + "oneOf": [ + { + "required": [ + "paths" + ] + }, + { + "required": [ + "path" + ] + } ], "properties": { "root": { @@ -1460,12 +1825,13 @@ "markdownDescription": "Either an absolute path or a path relative to `working_directory`" }, "paths": { - "type": "array", - "items": { - "type": "string" - }, + "$ref": "#/definitions/stringOrList", "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." }, + "path": { + "type": "string", + "markdownDescription": "A single glob or path to add to the shared workspace, instead of `paths`" + }, "name": { "type": "string", "markdownDescription": "Title of the step to be shown in the CircleCI UI" @@ -1510,10 +1876,7 @@ "type": "object", "properties": { "fingerprints": { - "type": "array", - "items": { - "type": "string" - }, + "$ref": "#/definitions/stringOrList", "markdownDescription": "List of fingerprints corresponding to the keys to be added" }, "when": { @@ -1523,6 +1886,41 @@ "additionalProperties": false } ] + }, + "install_signing_bundle": { + "markdownDescription": "Installs the code signing bundles named in the executor's `code_signing` list. macOS and machine executors only.", + "type": [ + "object", + "null" + ] + }, + "with_tool_cache": { + "markdownDescription": "Runs `steps` with a cache kept for `tool` (beta).", + "type": "object", + "required": [ + "tool", + "steps" + ], + "properties": { + "tool": { + "enum": [ + "gradle", + "bazel", + "turborepo", + "xcode" + ], + "markdownDescription": "The tool whose cache is kept" + }, + "steps": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/definitions/step" + }, + "markdownDescription": "The steps to run with the cache" + } + }, + "additionalProperties": false } }, "additionalProperties": { @@ -1552,18 +1950,8 @@ "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" + "markdownDescription": "A list of steps to be performed when the condition is true", + "$ref": "#/definitions/step" } } }, @@ -1580,22 +1968,19 @@ "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" + "markdownDescription": "A list of steps to be performed when the condition is false", + "$ref": "#/definitions/step" } } } } + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/step" + }, + "markdownDescription": "A list of steps, such as one an anchor holds, which is flattened into the list it's in." } ] }, @@ -1611,6 +1996,12 @@ "additionalProperties": { "type": "object", "properties": { + "name": { + "type": "string", + "minLength": 1, + "pattern": ".*[^ ].*$", + "markdownDescription": "The name of this job in the workflow, in place of the job's own. Needed to invoke the same job more than once. In a matrix, `<< matrix.x >>` in it is filled in for each member." + }, "requires": { "type": "array", "markdownDescription": "Jobs are run in parallel by default, so you must explicitly require any dependencies by their job name.", @@ -1746,10 +2137,15 @@ }, "additionalProperties": false } - } + }, + "additionalProperties": false }, { - "type": "string" + "type": "string", + "not": { + "pattern": "<<.*>>" + }, + "markdownDescription": "An expression deciding whether the job runs. It refers to pipeline values without `<< >>`, as in `pipeline.git.branch == \"main\"`." } ] }, @@ -1771,22 +2167,44 @@ "type": "string" }, "pre-steps": { - "steps": { - "type": "array", - "items": { - "$ref": "#/definitions/step" - }, - "minItems": 1 - } + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/step" + }, + { + "description": "The compiler doesn't check these steps' shape, and compiles a step given no arguments.", + "type": "object", + "minProperties": 1, + "maxProperties": 1, + "additionalProperties": { + "type": "null" + } + } + ] + }, + "markdownDescription": "Steps to run before the job's own steps." }, "post-steps": { - "steps": { - "type": "array", - "items": { - "$ref": "#/definitions/step" - }, - "minItems": 1 - } + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/step" + }, + { + "description": "The compiler doesn't check these steps' shape, and compiles a step given no arguments.", + "type": "object", + "minProperties": 1, + "maxProperties": 1, + "additionalProperties": { + "type": "null" + } + } + ] + }, + "markdownDescription": "Steps to run after the job's own steps." }, "matrix": { "type": "object", @@ -1815,7 +2233,9 @@ "serial-group": { "markdownDescription": "`serial-group` allows a group of jobs to run in series, rather than concurrently, across an organization. Serial groups control the orchestration of jobs across an organization, not just within projects and pipelines.\nSee for more details.", "type": "string", - "minLength": 1 + "minLength": 1, + "maxLength": 512, + "pattern": ".*[^ ].*$" }, "override-with": { "type": "string" @@ -1824,6 +2244,123 @@ } } ] + }, + "jobParameters": { + "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 + }, + "resourceClass": { + "anyOf": [ + { + "type": "string", + "default": "medium", + "enum": [ + "small", + "medium", + "medium+", + "large", + "xlarge", + "2xlarge", + "2xlarge+", + "small.gen2", + "medium.gen2", + "medium+.gen2", + "large.gen2", + "xlarge.gen2", + "2xlarge.gen2", + "2xlarge+.gen2", + "medium.gen3", + "large.gen3", + "xlarge.gen3", + "2xlarge.gen3", + "2xlarge+.gen3", + "arm.medium", + "arm.large", + "arm.xlarge", + "arm.2xlarge", + "arm.medium.gen2", + "arm.large.gen2", + "arm.xlarge.gen2", + "arm.2xlarge.gen2", + "gpu.nvidia.small.gen2", + "gpu.nvidia.small.multi", + "gpu.nvidia.medium", + "gpu.nvidia.medium.multi", + "gpu.nvidia.large", + "windows.medium", + "windows.large", + "windows.xlarge", + "windows.2xlarge", + "windows.medium.gen2", + "windows.large.gen2", + "windows.xlarge.gen2", + "windows.2xlarge.gen2", + "windows.2xlarge+.gen2", + "windows.gpu.nvidia.medium", + "m4pro.medium", + "m4pro.large" + ] + }, + { + "title": "Any other resource class, a self-hosted runner, or a parameter", + "type": "string" + } + ], + "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 `/`." } }, "type": "object", @@ -1860,7 +2397,26 @@ "type": "string" }, "shell": { - "type": "string" + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "code_signing": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[A-Za-z0-9-]+$", + "maxLength": 50 + }, + "markdownDescription": "Names of the code signing bundles the job may install with the `install_signing_bundle` step" } }, "required": [ @@ -1869,43 +2425,7 @@ "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", - "m4pro.medium", - "m4pro.large", - "small.gen2", - "medium.gen2", - "medium+.gen2", - "large.gen2", - "xlarge.gen2", - "2xlarge.gen2", - "2xlarge+.gen2" - ] - }, - { - "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 `/`." + "$ref": "#/definitions/resourceClass" }, "docker": { "type": "array", @@ -2017,6 +2537,27 @@ ], "markdownDescription": "Authentication for AWS EC2 Container Registry (ECR). You can use the access/secret keys or OIDC." }, + "gcp_auth": { + "type": "object", + "markdownDescription": "Authenticate to Google Artifact Registry with OIDC", + "properties": { + "oidc_service_account": { + "type": "string" + }, + "workload_identity_pool": { + "type": "string" + }, + "workload_identity_provider": { + "type": "string" + } + }, + "required": [ + "oidc_service_account", + "workload_identity_pool", + "workload_identity_provider" + ], + "additionalProperties": false + }, "auth": { "type": "object", "properties": { @@ -2093,27 +2634,32 @@ }, "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": "boolean" + }, + "resource_class": { + "type": "string" + }, + "shell": { + "oneOf": [ { - "type": "number" + "type": "string" }, { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } ] }, - "resource_class": { - "type": "string" - }, - "shell": { - "type": "string" + "code_signing": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[A-Za-z0-9-]+$", + "maxLength": 50 + }, + "markdownDescription": "Names of the code signing bundles the job may install with the `install_signing_bundle` step" } }, "additionalProperties": false @@ -2274,12 +2820,12 @@ "branches" ], "additionalProperties": false + }, + "observability": { + "type": "object" } }, - "additionalProperties": false, - "required": [ - "notify" - ] + "additionalProperties": false }, "workflows": { "type": "object", @@ -2361,9 +2907,16 @@ "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, + "anyOf": [ + { + "type": "integer", + "minimum": 1, + "maximum": 5 + }, + { + "$ref": "#/definitions/expression" + } + ], "markdownDescription": "The maximum number of times a workflow will be automatically rerun if it fails" }, "when": { @@ -2419,7 +2972,7 @@ "type": "object", "propertyNames": { "type": "string", - "pattern": "^[A-Za-z][A-Za-z\\s\\d_-]*$" + "pattern": ".+" }, "additionalProperties": { "type": "object", @@ -2435,8 +2988,7 @@ "$ref": "#/definitions/workflowJobInvocation" } } - }, - "additionalProperties": false + } } }, "orbs": { @@ -2446,15 +2998,15 @@ ], "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\n**URL orb:** A HTTPS URL to a YAML file containing the orb definition, for example in a GitHub repository.\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.", + "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- `namespace/orb-name@dev:<>` - development version of the commit being built\n\n**Inline orb object:** Define jobs, commands, and executors directly in this configuration.\n\n**URL orb:** A HTTPS URL to a YAML file containing the orb definition, for example in a GitHub repository.\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)$" + "pattern": "^[a-z][a-z0-9_-]*/[a-z][a-z0-9_-]*@(dev:[^\\s\\p{Cc}]+|\\d+|\\d+\\.\\d+|\\d+\\.\\d+\\.\\d+|volatile)$" }, { "type": "string", - "pattern": "^[a-z][a-z0-9_-]+/[a-z][a-z0-9_-]+@ *<<.+>> *$" + "pattern": "^[a-z][a-z0-9_-]*/[a-z][a-z0-9_-]*@ *(dev:)?<<.+>> *$" }, { "type": "string", @@ -2592,7 +3144,26 @@ "type": "string" }, "shell": { - "type": "string" + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "code_signing": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[A-Za-z0-9-]+$", + "maxLength": 50 + }, + "markdownDescription": "Names of the code signing bundles the job may install with the `install_signing_bundle` step" } }, "required": [ @@ -2601,7 +3172,7 @@ "additionalProperties": false }, "resource_class": { - "type": "string" + "$ref": "#/definitions/resourceClass" }, "docker": { "type": "array", @@ -2706,6 +3277,27 @@ } ] }, + "gcp_auth": { + "type": "object", + "markdownDescription": "Authenticate to Google Artifact Registry with OIDC", + "properties": { + "oidc_service_account": { + "type": "string" + }, + "workload_identity_pool": { + "type": "string" + }, + "workload_identity_provider": { + "type": "string" + } + }, + "required": [ + "oidc_service_account", + "workload_identity_pool", + "workload_identity_provider" + ], + "additionalProperties": false + }, "auth": { "type": "object", "properties": { @@ -2779,27 +3371,32 @@ }, "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": "boolean" + }, + "resource_class": { + "type": "string" + }, + "shell": { + "oneOf": [ { - "type": "number" + "type": "string" }, { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } ] }, - "resource_class": { - "type": "string" - }, - "shell": { - "type": "string" + "code_signing": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[A-Za-z0-9-]+$", + "maxLength": 50 + }, + "markdownDescription": "Names of the code signing bundles the job may install with the `install_signing_bundle` step" } }, "additionalProperties": false @@ -3055,6 +3652,16 @@ ], "markdownDescription": "The version field is intended to be used in order to issue warnings for deprecation or breaking changes." }, + "setup": { + "type": "boolean", + "markdownDescription": "https://circleci.com/docs/dynamic-config\n\nMakes this a setup config: its workflow computes the config to continue the pipeline with, using the continuation orb or API." + }, + "functions": { + "markdownDescription": "Names the functions this config's steps can run, each as `host.tld/org/name@vX.Y.Z`. A step then runs one as `name` or `name/command`, with its flags under `with`.", + "additionalProperties": { + "markdownDescription": "A function, as `host.tld/org/name@vX.Y.Z`, for example `github.com/circleci-functions/setup-go@v0.5.1`" + } + }, "parameters": { "type": [ "object", diff --git a/src/check_jsonschema/builtin_schemas/vendor/citation-file-format.json b/src/check_jsonschema/builtin_schemas/vendor/citation-file-format.json index 762194bec..4d467315e 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/citation-file-format.json +++ b/src/check_jsonschema/builtin_schemas/vendor/citation-file-format.json @@ -994,7 +994,7 @@ "description": "The person's address." }, "affiliation": { - "description": "The person's affilitation.", + "description": "The person's affiliation.", "minLength": 1, "type": "string" }, diff --git a/src/check_jsonschema/builtin_schemas/vendor/gitlab-ci.json b/src/check_jsonschema/builtin_schemas/vendor/gitlab-ci.json index 4f2bc409f..dfb16e8d3 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/gitlab-ci.json +++ b/src/check_jsonschema/builtin_schemas/vendor/gitlab-ci.json @@ -2163,7 +2163,7 @@ "type": "string" }, "minItems": 1, - "maxItems": 2 + "maxItems": 10 }, "files_commits": { "markdownDescription": "Use the `cache:key:files_commits` keyword to generate a new cache key when the latest commit changes for the specified files. [Learn More](https://docs.gitlab.com/ci/yaml/#cachekeyfiles_commits)", @@ -2677,6 +2677,9 @@ "artifacts": { "type": "boolean" }, + "optional": { + "type": "boolean" + }, "parallel": { "$ref": "#/definitions/parallel_matrix" } diff --git a/src/check_jsonschema/builtin_schemas/vendor/meltano.json b/src/check_jsonschema/builtin_schemas/vendor/meltano.json index f4dedb536..74199952e 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/meltano.json +++ b/src/check_jsonschema/builtin_schemas/vendor/meltano.json @@ -219,6 +219,13 @@ "default": 5, "minimum": 0 }, + "job_heartbeat_interval": { + "type": "integer", + "description": "The interval in seconds between job heartbeats.", + "default": 1, + "minimum": 1, + "exclusiveMaximum": 300 + }, "project_readonly": { "type": "boolean", "description": "Whether the project is read-only.", diff --git a/src/check_jsonschema/builtin_schemas/vendor/mergify.json b/src/check_jsonschema/builtin_schemas/vendor/mergify.json index 4711635b5..97264f0bc 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/mergify.json +++ b/src/check_jsonschema/builtin_schemas/vendor/mergify.json @@ -346,7 +346,7 @@ "type": "array" }, "regexes": { - "description": "The list of regexes to find branches the pull request should be copied to.", + "description": "The list of regexes to find branches the pull request should be copied to. They are matched against the repository's branches, of which Mergify reads at most 1000: in a repository with more than 1000 branches, the action fails.", "items": { "format": "regex", "type": "string" @@ -1050,6 +1050,152 @@ "title": "CommitMessageFormatModel", "type": "object" }, + "ConflictResolverModel": { + "additionalProperties": false, + "properties": { + "paths": { + "description": "Glob patterns of the files this resolver applies to, matched against the path from the repository root exactly like `scopes` file patterns. `*` does not cross a `/`, so `*.md` matches only Markdown files at the root, and `docs/*.md` only those directly in `docs/` -- unlike `.gitattributes`, where a pattern with no `/` matches at any depth. `**` matches any number of directories, and `{a,b}` either alternative. Patterns, unlike a `package-manager` entry's `directories`, which are literal.", + "items": { + "type": "string" + }, + "minItems": 1, + "title": "Paths", + "type": "array" + }, + "strategy": { + "description": "How to merge a matching file when two pull requests of the same batch both change it. `union`, `ours` and `theirs` are git's names, and `ours` is always what the batch already holds, the base branch plus the pull requests queued ahead, and never the incoming pull request:\n\n- `union`: Keep both sides' lines where they conflict, the batch's first.\n- `ours`: Keep the batch's whole file and discard the incoming pull request's change to it, even where the two did not conflict.\n- `theirs`: Take the incoming pull request's whole file and discard the batch's, even where the two did not conflict.\n- `prefer-ours`: Merge normally, and keep the batch's side only on the lines that conflict -- its whole file when both sides added the file.\n- `prefer-theirs`: Merge normally, and keep the incoming pull request's side only on the lines that conflict -- its whole file when both sides added the file.\n- `json`: Merge a JSON file by its structure rather than by line, so changes to different keys or array elements merge even on adjacent lines, and neither side's change is discarded. Two different values for the same key, a change to a key the other side deleted, a key both sides added differently, two insertions at the same place in an array, or two changes to the same array element, even to different fields of it, are a conflict even where git's line merge would have been clean. Where git's line merge is clean and gives the same result, that text is used as is; otherwise the incoming pull request's changes are written into the batch's text as it wrote them, the rest keeps the batch's formatting and key order, and a change written in a style the batch's file does not use is a conflict. A file that is not valid JSON is merged by line as usual.\n- `pnpm`: Merge a `pnpm-lock.yaml` (lockfile version 9) entry by entry, so two pull requests updating two different dependencies merge even where their entries sit side by side, including when both moved peers of the same package. The same dependency updated to two versions, a package updated on one side while the other moved its peers, a dependency one side removed and the other updated, or a merged file whose entries refer to a package version it no longer has, are a conflict, even where git's line merge would have been clean. The `package.json` beside it usually conflicts too: a `package-manager: npm` entry resolves both. A file that is not a version 9 lockfile is merged by line as usual.\n- `uv`: Merge a `uv.lock` and the `pyproject.toml` beside it entry by entry, so two pull requests updating two different dependencies merge in both files even on adjacent lines. A conflict, even where git's line merge would have been clean: the same dependency updated to two versions; a `uv.lock` package one side updated and the other changed, or one side changed while depending on a package the other side updated, since the lockfile records no version constraint to check the two against; and a merged `uv.lock` naming a package it no longer has, or holding one nothing uses. A file written in a shape uv does not write, such as a multi-line string, is merged by line as usual.\n\nA conflict on any other file still removes the pull request from the batch.", + "enum": [ + "union", + "ours", + "theirs", + "prefer-ours", + "prefer-theirs", + "json", + "pnpm", + "uv" + ], + "title": "Strategy", + "type": "string", + "x-mergify-enum": [ + { + "description": "Keep both sides' lines where they conflict, the batch's first.", + "facts": { + "discards": null, + "kind": "git-builtin", + "options": {}, + "resolves_binary": false, + "resolves_clashes": true, + "suits": [ + "append-only" + ] + } + }, + { + "description": "Keep the batch's whole file and discard the incoming pull request's change to it, even where the two did not conflict.", + "facts": { + "discards": { + "scope": "whole-file", + "side": "theirs" + }, + "kind": "driver", + "options": {}, + "resolves_binary": true, + "resolves_clashes": true, + "suits": [] + } + }, + { + "description": "Take the incoming pull request's whole file and discard the batch's, even where the two did not conflict.", + "facts": { + "discards": { + "scope": "whole-file", + "side": "ours" + }, + "kind": "driver", + "options": {}, + "resolves_binary": true, + "resolves_clashes": true, + "suits": [] + } + }, + { + "description": "Merge normally, and keep the batch's side only on the lines that conflict -- its whole file when both sides added the file.", + "facts": { + "discards": { + "scope": "conflicting-lines", + "side": "theirs" + }, + "kind": "driver", + "options": {}, + "resolves_binary": false, + "resolves_clashes": true, + "suits": [] + } + }, + { + "description": "Merge normally, and keep the incoming pull request's side only on the lines that conflict -- its whole file when both sides added the file.", + "facts": { + "discards": { + "scope": "conflicting-lines", + "side": "ours" + }, + "kind": "driver", + "options": {}, + "resolves_binary": false, + "resolves_clashes": true, + "suits": [] + } + }, + { + "description": "Merge a JSON file by its structure rather than by line, so changes to different keys or array elements merge even on adjacent lines, and neither side's change is discarded. Two different values for the same key, a change to a key the other side deleted, a key both sides added differently, two insertions at the same place in an array, or two changes to the same array element, even to different fields of it, are a conflict even where git's line merge would have been clean. Where git's line merge is clean and gives the same result, that text is used as is; otherwise the incoming pull request's changes are written into the batch's text as it wrote them, the rest keeps the batch's formatting and key order, and a change written in a style the batch's file does not use is a conflict. A file that is not valid JSON is merged by line as usual.", + "facts": { + "discards": null, + "kind": "driver", + "options": {}, + "resolves_binary": false, + "resolves_clashes": false, + "suits": [ + "json" + ] + } + }, + { + "description": "Merge a `pnpm-lock.yaml` (lockfile version 9) entry by entry, so two pull requests updating two different dependencies merge even where their entries sit side by side, including when both moved peers of the same package. The same dependency updated to two versions, a package updated on one side while the other moved its peers, a dependency one side removed and the other updated, or a merged file whose entries refer to a package version it no longer has, are a conflict, even where git's line merge would have been clean. The `package.json` beside it usually conflicts too: a `package-manager: npm` entry resolves both. A file that is not a version 9 lockfile is merged by line as usual.", + "facts": { + "discards": null, + "kind": "driver", + "options": {}, + "resolves_binary": false, + "resolves_clashes": false, + "suits": [ + "pnpm-lockfile" + ] + } + }, + { + "description": "Merge a `uv.lock` and the `pyproject.toml` beside it entry by entry, so two pull requests updating two different dependencies merge in both files even on adjacent lines. A conflict, even where git's line merge would have been clean: the same dependency updated to two versions; a `uv.lock` package one side updated and the other changed, or one side changed while depending on a package the other side updated, since the lockfile records no version constraint to check the two against; and a merged `uv.lock` naming a package it no longer has, or holding one nothing uses. A file written in a shape uv does not write, such as a multi-line string, is merged by line as usual.", + "facts": { + "discards": null, + "kind": "driver", + "options": {}, + "resolves_binary": false, + "resolves_clashes": false, + "suits": [ + "uv-lockfile", + "pyproject" + ] + } + } + ] + } + }, + "required": [ + "paths", + "strategy" + ], + "title": "ConflictResolverModel", + "type": "object" + }, "CopyActionModel": { "additionalProperties": false, "properties": { @@ -1085,7 +1231,7 @@ "type": "array" }, "regexes": { - "description": "The list of regexes to find branches the pull request should be copied to.", + "description": "The list of regexes to find branches the pull request should be copied to. They are matched against the repository's branches, of which Mergify reads at most 1000: in a repository with more than 1000 branches, the action fails.", "items": { "format": "regex", "type": "string" @@ -1780,13 +1926,6 @@ "title": "Post Comment", "type": "boolean" }, - "auto_merge": { - "default": false, - "deprecated": true, - "description": "Automatically merge or queue PRs when all merge protection conditions pass. Deprecated: use auto_merge_conditions.", - "title": "Auto Merge", - "type": "boolean" - }, "auto_merge_conditions": { "anyOf": [ { @@ -1938,6 +2077,35 @@ "title": "OrCondition", "type": "object" }, + "PackageManagerResolverModel": { + "additionalProperties": false, + "properties": { + "package-manager": { + "description": "The package manager whose manifest and lockfile to resolve, by the name Dependabot gives it, leaving Mergify to pick how each file merges: with a `pnpm-lock.yaml` or a `uv.lock`, dependency by dependency in both, so the lockfile keeps agreeing with the manifest, and a dependency the two pull requests changed differently still conflicts. `npm` covers npm, pnpm and yarn alike, and only a `pnpm-lock.yaml` is resolved today: another lockfile merges as usual. `uv` resolves a `pyproject.toml` and its `uv.lock`.", + "enum": [ + "npm", + "uv" + ], + "title": "Package-Manager", + "type": "string" + }, + "directories": { + "description": "The directories holding the manifest and its lockfile, from the repository root and starting with `/`: `/` for the root itself. Literal paths, unlike the glob patterns of `paths`.", + "items": { + "type": "string" + }, + "minItems": 1, + "title": "Directories", + "type": "array" + } + }, + "required": [ + "package-manager", + "directories" + ], + "title": "PackageManagerResolverModel", + "type": "object" + }, "PostCheckActionModel": { "additionalProperties": false, "properties": { @@ -4254,7 +4422,7 @@ }, "queue_branch_prefix": { "default": "mergify/merge-queue/", - "description": "Prefix for the merge queue branch name. Branches under this prefix are eligible for automatic [queue branch cleanup](https://docs.mergify.com/merge-queue/lifecycle#queue-branch-cleanup).", + "description": "Prefix for the merge queue branch name. It must start valid git branch names, and cannot start with `refs/`, which GitHub refuses. Branches under this prefix are eligible for automatic [queue branch cleanup](https://docs.mergify.com/merge-queue/lifecycle#queue-branch-cleanup).", "title": "Queue Branch Prefix", "type": "string" }, @@ -4301,17 +4469,6 @@ "description": "Merge method to use. If no value is set, Mergify uses the first authorized method available in the repository configuration.\n\nAdditionally, `merge-batch` merges the draft pull request prepared by the merge queue using a merge commit. This requires `batch_size > 1`.", "title": "Merge Method" }, - "autosquash": { - "configuration_deprecated_attribute": { - "deprecated_summary_ghes_mode": "`autosquash` has been removed and this option is now ignored: the merge queue no longer squashes commits beginning with `squash!`, `fixup!` or `amend!` when it updates a pull request in place. Remove it from your configuration.", - "deprecated_summary_saas_mode": "`autosquash` has been removed and this option is now ignored: the merge queue no longer squashes commits beginning with `squash!`, `fixup!` or `amend!` when it updates a pull request in place. Remove it from your configuration." - }, - "default": false, - "deprecated": true, - "description": "Deprecated: the merge queue no longer squashes commits beginning with `squash!`, `fixup!` or `amend!` when it updates a pull request in place. The option is still accepted so configurations that set it keep validating; remove it from your configuration.", - "title": "Autosquash", - "type": "boolean" - }, "autoqueue": { "default": false, "deprecated": true, @@ -4530,7 +4687,7 @@ }, "queue_branch_prefix": { "default": "mergify/merge-queue/", - "description": "Prefix for the merge queue branch name. Branches under this prefix are eligible for automatic [queue branch cleanup](https://docs.mergify.com/merge-queue/lifecycle#queue-branch-cleanup).", + "description": "Prefix for the merge queue branch name. It must start valid git branch names, and cannot start with `refs/`, which GitHub refuses. Branches under this prefix are eligible for automatic [queue branch cleanup](https://docs.mergify.com/merge-queue/lifecycle#queue-branch-cleanup).", "title": "Queue Branch Prefix", "type": "string" }, @@ -4577,17 +4734,6 @@ "description": "Merge method to use. If no value is set, Mergify uses the first authorized method available in the repository configuration.\n\nAdditionally, `merge-batch` merges the draft pull request prepared by the merge queue using a merge commit. This requires `batch_size > 1`.", "title": "Merge Method" }, - "autosquash": { - "configuration_deprecated_attribute": { - "deprecated_summary_ghes_mode": "`autosquash` has been removed and this option is now ignored: the merge queue no longer squashes commits beginning with `squash!`, `fixup!` or `amend!` when it updates a pull request in place. Remove it from your configuration.", - "deprecated_summary_saas_mode": "`autosquash` has been removed and this option is now ignored: the merge queue no longer squashes commits beginning with `squash!`, `fixup!` or `amend!` when it updates a pull request in place. Remove it from your configuration." - }, - "default": false, - "deprecated": true, - "description": "Deprecated: the merge queue no longer squashes commits beginning with `squash!`, `fixup!` or `amend!` when it updates a pull request in place. The option is still accepted so configurations that set it keep validating; remove it from your configuration.", - "title": "Autosquash", - "type": "boolean" - }, "autoqueue": { "default": false, "deprecated": true, @@ -4725,17 +4871,6 @@ "default": null, "description": "To rebase, Mergify needs to impersonate a GitHub user. You can specify the account to use with this option. If no `bot_account` is set, Mergify picks the pull request author, or the user who sent the `@mergifyio rebase` command. The user account must have already been logged in Mergify dashboard once.\n\n**Warning:** Because of GitHub's security restrictions, Mergify cannot impersonate an account owned by another GitHub App. A rebase therefore fails whenever the account it falls back to is a bot, either because the pull request was opened by one or because one sent the command, unless `bot_account` names a user account.\n\n**Warning:** A pull request coming from a fork cannot be rebased, whether or not this option is set: rebasing one means impersonating a GitHub user to force-push the contributor's branch. Use the `update` action or the `@mergifyio update` command on those -- except where Mergify cannot write the head branch at all, such as a deleted fork, where `update` is refused too and the check run says what is wrong.", "title": "Bot Account" - }, - "autosquash": { - "configuration_deprecated_attribute": { - "deprecated_summary_ghes_mode": "`autosquash` has been removed and this option is now ignored: the `rebase` action no longer squashes commits beginning with `squash!`, `fixup!` or `amend!`. Remove it from your configuration.", - "deprecated_summary_saas_mode": "`autosquash` has been removed and this option is now ignored: the `rebase` action no longer squashes commits beginning with `squash!`, `fixup!` or `amend!`. Remove it from your configuration." - }, - "default": false, - "deprecated": true, - "description": "Deprecated: the `rebase` action no longer squashes commits beginning with `squash!`, `fixup!` or `amend!`. The option is still accepted so configurations that set it keep validating; remove it from your configuration.", - "title": "Autosquash", - "type": "boolean" } }, "title": "RebaseActionModel", @@ -4962,6 +5097,37 @@ }, "Scopes": { "additionalProperties": false, + "else": { + "properties": { + "capacities": { + "propertyNames": { + "anyOf": [ + { + "minLength": 2, + "pattern": "^[A-Za-z0-9_-]+$", + "type": "string" + }, + { + "pattern": "[\\*\\?\\[\\{]" + } + ] + } + } + } + }, + "if": { + "properties": { + "source": { + "required": [ + "manual" + ], + "type": "object" + } + }, + "required": [ + "source" + ] + }, "properties": { "source": { "anyOf": [ @@ -5000,17 +5166,14 @@ "type": "string" }, "capacities": { - "description": "How many speculative checks each scope may run at the same time, as a map of scope name to capacity. Works for any `source` (file globs or the manual scopes API just decide membership; capacity is declared here). A scope listed here runs against its own independent budget; a PR in several capped scopes consumes one slot from each. PRs whose scopes are all absent from this map share the repo-wide `merge_queue.max_parallel_checks` pool, unless `default_capacity` gives every scope a budget. Strict branch protection still forces an effective capacity of 1.", - "patternProperties": { - "^[A-Za-z0-9_-]+$": { - "maximum": 128, - "minimum": 1, - "type": "integer" - } + "additionalProperties": { + "maximum": 128, + "minimum": 1, + "type": "integer" }, + "description": "How many speculative checks each scope may run at the same time, as a map of scope name to capacity. Works for any `source` (file globs or the manual scopes API just decide membership; capacity is declared here). With a `manual` source a key may be any scope name the scopes API accepts, such as `//lib/core` or `@acme/web`; with any other source a key that is not a pattern must be a valid scope name. A key containing `*`, `?`, `[` or `{` is a glob pattern with the syntax of `files` filters, such as `@acme/*` or `//lib/**`: `*` and `?` stay within one `/`-separated segment and only a whole `**` segment crosses them, so `//lib/**` matches the packages below `//lib` but not `//lib` itself. In YAML, quote any key starting with `@`, `*`, `?`, `[` or `{`. A pattern gives every scope it matches its own budget, not one budget shared by all of them. A key equal to a scope's name wins over any pattern; when several patterns match a scope, the smallest capacity applies; `default_capacity` only covers scopes no key matches. A PR in several capped scopes consumes one slot from each. PRs whose scopes match no key share the repo-wide `merge_queue.max_parallel_checks` pool, unless `default_capacity` gives every scope a budget. Strict branch protection still forces an effective capacity of 1.", "propertyNames": { - "minLength": 2, - "pattern": "^[A-Za-z0-9_-]+$" + "maxLength": 1024 }, "title": "Capacities", "type": "object" @@ -5027,7 +5190,7 @@ } ], "default": null, - "description": "How many speculative checks a scope without an explicit `capacities` entry may run at the same time. Applies to every scope observed on queued pull requests, so dynamic scope sets (e.g. sent by a monorepo build tool through the manual scopes API) get a per-scope budget without enumerating names; an explicit `capacities` entry still wins for its scope. `merge_queue.max_parallel_checks` remains the global ceiling on the total. When unset, scopes without a `capacities` entry are unlimited, and pull requests with no scopes always draw from the repo-wide pool. Strict branch protection still forces an effective capacity of 1.", + "description": "How many speculative checks a scope that no `capacities` key matches may run at the same time. Applies to every scope observed on queued pull requests, so dynamic scope sets (e.g. sent by a monorepo build tool through the manual scopes API) get a per-scope budget without enumerating names; a matching `capacities` key or pattern still wins for its scope. `merge_queue.max_parallel_checks` remains the global ceiling on the total. When unset, scopes no `capacities` key matches are unlimited, and pull requests with no scopes always draw from the repo-wide pool. Strict branch protection still forces an effective capacity of 1.", "title": "Default Capacity" } }, @@ -5099,7 +5262,7 @@ }, "commit_message": { "default": "all-commits", - "description": "Defines what commit message to use for the squashed commit if no commit message is defined in the pull request body.\nPossible values are:\n\n- `all-commits` to use the same format as GitHub squashed merge commit.\n- `first-commit` to use the message of the first commit of the pull request.\n- `title+body` means to use the title and body from the pull request itself as the commit message. The pull request number will be added to end of the title.", + "description": "Defines the default commit message to use for the squashed commit.\nPossible values are:\n\n- `all-commits` to use the same format as GitHub squashed merge commit.\n- `first-commit` to use the message of the first commit of the pull request.\n- `title+body` means to use the title and body from the pull request itself as the commit message. The pull request number will be added to end of the title.", "enum": [ "all-commits", "first-commit", @@ -5197,6 +5360,21 @@ }, "merge_protections_settings": { "$ref": "#/$defs/MergeProtections" + }, + "conflict_resolvers": { + "description": "Resolve conflicts on the files you name while Mergify builds a batch, instead of removing the pull request that conflicts from it. An entry names its files either as `paths` with the `strategy` to merge them with, or as a `package-manager` with the `directories` holding its manifest and lockfile, for which Mergify picks how each file merges: two pull requests updating two different dependencies then merge into one batch. When several entries match a file, the last one in the list wins, whichever way each names it.\n\nDeclared once for the repository, it takes effect in each queue rule whose batch branch is what lands: `merge_method` set to `merge-batch` or `fast-forward`, or `queue_branch_merge_method` set to `fast-forward`. A queue rule merging with `merge`, `squash` or `rebase` merges each pull request on its own, so a resolution made while building the batch would never land: there, a conflicting pull request is removed from the batch as usual.", + "items": { + "oneOf": [ + { + "$ref": "#/$defs/ConflictResolverModel" + }, + { + "$ref": "#/$defs/PackageManagerResolverModel" + } + ] + }, + "title": "Conflict Resolvers", + "type": "array" } }, "$schema": "https://json-schema.org/draft/2020-12/schema", diff --git a/src/check_jsonschema/builtin_schemas/vendor/renovate.json b/src/check_jsonschema/builtin_schemas/vendor/renovate.json index 9c17e1b07..da102f045 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/renovate.json +++ b/src/check_jsonschema/builtin_schemas/vendor/renovate.json @@ -1,8 +1,8 @@ { "$id": "https://docs.renovatebot.com/renovate-schema.json", - "title": "JSON schema for Renovate 44.103.6 config files (https://renovatebot.com/)", + "title": "JSON schema for Renovate 44.149.3 config files (https://renovatebot.com/)", "$schema": "http://json-schema.org/draft-07/schema#", - "x-renovate-version": "44.103.6", + "x-renovate-version": "44.149.3", "allowComments": true, "type": "object", "definitions": { @@ -2169,10 +2169,6 @@ "type": "string", "description": "A constraint for the `java` Containerbase tool" }, - "java-maven": { - "type": "string", - "description": "A constraint for the `java-maven` Containerbase tool" - }, "jb": { "type": "string", "description": "A constraint for the `jb` Containerbase tool" @@ -3382,8 +3378,8 @@ "default": false }, "enabled": { - "description": "Enable or disable corresponding functionality.\nSee also: https://docs.renovatebot.com/configuration-options/#packagerulesenabled", - "markdownDescription": "Enable or disable corresponding functionality.\n\nSee also: [enabled](https://docs.renovatebot.com/configuration-options/#packagerulesenabled)", + "description": "Enable or disable corresponding functionality.\nSee also: https://docs.renovatebot.com/configuration-options/#enabled", + "markdownDescription": "Enable or disable corresponding functionality.\n\nSee also: [enabled](https://docs.renovatebot.com/configuration-options/#enabled)", "type": "boolean", "default": true }, @@ -3480,8 +3476,8 @@ "type": "string" }, "fetchChangeLogs": { - "description": "Controls if and when changelogs/release notes are fetched.\nSee also: https://docs.renovatebot.com/configuration-options/#packagerulesfetchchangelogs", - "markdownDescription": "Controls if and when changelogs/release notes are fetched.\n\nSee also: [fetchChangeLogs](https://docs.renovatebot.com/configuration-options/#packagerulesfetchchangelogs)", + "description": "Controls if and when changelogs/release notes are fetched.\nSee also: https://docs.renovatebot.com/configuration-options/#fetchchangelogs", + "markdownDescription": "Controls if and when changelogs/release notes are fetched.\n\nSee also: [fetchChangeLogs](https://docs.renovatebot.com/configuration-options/#fetchchangelogs)", "type": "string", "enum": [ "off", @@ -5137,240 +5133,10 @@ "default": {}, "additionalProperties": false, "properties": { - "apm": { - "type": "object", - "description": "Install the `apm` Containerbase tool", - "additionalProperties": false - }, - "bazelisk": { - "type": "object", - "description": "Install the `bazelisk` Containerbase tool", - "additionalProperties": false - }, - "bun": { - "type": "object", - "description": "Install the `bun` Containerbase tool", - "additionalProperties": false - }, - "bundler": { - "type": "object", - "description": "Install the `bundler` Containerbase tool", - "additionalProperties": false - }, - "cocoapods": { - "type": "object", - "description": "Install the `cocoapods` Containerbase tool", - "additionalProperties": false - }, - "composer": { - "type": "object", - "description": "Install the `composer` Containerbase tool", - "additionalProperties": false - }, - "conan": { - "type": "object", - "description": "Install the `conan` Containerbase tool", - "additionalProperties": false - }, - "copier": { - "type": "object", - "description": "Install the `copier` Containerbase tool", - "additionalProperties": false - }, - "corepack": { - "type": "object", - "description": "Install the `corepack` Containerbase tool", - "additionalProperties": false - }, - "deno": { - "type": "object", - "description": "Install the `deno` Containerbase tool", - "additionalProperties": false - }, - "devbox": { - "type": "object", - "description": "Install the `devbox` Containerbase tool", - "additionalProperties": false - }, - "dotnet": { - "type": "object", - "description": "Install the `dotnet` Containerbase tool", - "additionalProperties": false - }, - "erlang": { - "type": "object", - "description": "Install the `erlang` Containerbase tool", - "additionalProperties": false - }, - "elixir": { - "type": "object", - "description": "Install the `elixir` Containerbase tool", - "additionalProperties": false - }, - "flux": { - "type": "object", - "description": "Install the `flux` Containerbase tool", - "additionalProperties": false - }, - "gh": { - "type": "object", - "description": "Install the `gh` Containerbase tool", - "additionalProperties": false - }, - "gleam": { - "type": "object", - "description": "Install the `gleam` Containerbase tool", - "additionalProperties": false - }, - "golang": { - "type": "object", - "description": "Install the `golang` Containerbase tool", - "additionalProperties": false - }, - "gradle": { - "type": "object", - "description": "Install the `gradle` Containerbase tool", - "additionalProperties": false - }, - "hashin": { - "type": "object", - "description": "Install the `hashin` Containerbase tool", - "additionalProperties": false - }, - "helm": { - "type": "object", - "description": "Install the `helm` Containerbase tool", - "additionalProperties": false - }, - "helmfile": { - "type": "object", - "description": "Install the `helmfile` Containerbase tool", - "additionalProperties": false - }, - "java": { - "type": "object", - "description": "Install the `java` Containerbase tool", - "additionalProperties": false - }, - "java-maven": { - "type": "object", - "description": "Install the `java-maven` Containerbase tool", - "additionalProperties": false - }, - "jb": { - "type": "object", - "description": "Install the `jb` Containerbase tool", - "additionalProperties": false - }, - "kustomize": { - "type": "object", - "description": "Install the `kustomize` Containerbase tool", - "additionalProperties": false - }, - "maven": { - "type": "object", - "description": "Install the `maven` Containerbase tool", - "additionalProperties": false - }, - "mise": { - "type": "object", - "description": "Install the `mise` Containerbase tool", - "additionalProperties": false - }, - "nix": { - "type": "object", - "description": "Install the `nix` Containerbase tool", - "additionalProperties": false - }, - "node": { - "type": "object", - "description": "Install the `node` Containerbase tool", - "additionalProperties": false - }, - "npm": { - "type": "object", - "description": "Install the `npm` Containerbase tool", - "additionalProperties": false - }, - "pdm": { - "type": "object", - "description": "Install the `pdm` Containerbase tool", - "additionalProperties": false - }, - "php": { - "type": "object", - "description": "Install the `php` Containerbase tool", - "additionalProperties": false - }, - "pip-tools": { - "type": "object", - "description": "Install the `pip-tools` Containerbase tool", - "additionalProperties": false - }, - "pipenv": { - "type": "object", - "description": "Install the `pipenv` Containerbase tool", - "additionalProperties": false - }, - "pnpm": { - "type": "object", - "description": "Install the `pnpm` Containerbase tool", - "additionalProperties": false - }, - "pixi": { - "type": "object", - "description": "Install the `pixi` Containerbase tool", - "additionalProperties": false - }, - "poetry": { - "type": "object", - "description": "Install the `poetry` Containerbase tool", - "additionalProperties": false - }, - "python": { - "type": "object", - "description": "Install the `python` Containerbase tool", - "additionalProperties": false - }, "ruby": { "type": "object", "description": "Install the `ruby` Containerbase tool. Also used in the `rubygems` Datasource", "additionalProperties": false - }, - "rust": { - "type": "object", - "description": "Install the `rust` Containerbase tool", - "additionalProperties": false - }, - "uv": { - "type": "object", - "description": "Install the `uv` Containerbase tool", - "additionalProperties": false - }, - "yarn": { - "type": "object", - "description": "Install the `yarn` Containerbase tool", - "additionalProperties": false - }, - "yarn-slim": { - "type": "object", - "description": "Install the `yarn-slim` Containerbase tool", - "additionalProperties": false - }, - "dart": { - "type": "object", - "description": "Install the `dart` Containerbase tool", - "additionalProperties": false - }, - "flutter": { - "type": "object", - "description": "Install the `flutter` Containerbase tool", - "additionalProperties": false - }, - "vendir": { - "type": "object", - "description": "Install the `vendir` Containerbase tool", - "additionalProperties": false } } }, @@ -5929,8 +5695,8 @@ } }, "managerFilePatterns": { - "description": "RegEx (`re2`) and glob patterns for matching manager files.\nSee also: https://docs.renovatebot.com/configuration-options/#ansiblemanagerfilepatterns", - "markdownDescription": "RegEx (`re2`) and glob patterns for matching manager files.\n\nSee also: [managerFilePatterns](https://docs.renovatebot.com/configuration-options/#ansiblemanagerfilepatterns)", + "description": "RegEx (`re2`) and glob patterns for matching manager files.\nSee also: https://docs.renovatebot.com/configuration-options/#managerfilepatterns", + "markdownDescription": "RegEx (`re2`) and glob patterns for matching manager files.\n\nSee also: [managerFilePatterns](https://docs.renovatebot.com/configuration-options/#managerfilepatterns)", "oneOf": [ { "type": "array", @@ -6087,6 +5853,11 @@ "markdownDescription": "A domain name, host name or base URL to match against.\n\nSee also: [matchHost](https://docs.renovatebot.com/configuration-options/#hostrulesmatchhost)", "type": "string" }, + "matchIsBreaking": { + "description": "Matches only if the update is considered breaking (e.g. major, or minor for 0.x in ecosystems like Cargo) when `true`, or non-breaking when `false`. Valid only within a `packageRules` object.\nSee also: https://docs.renovatebot.com/configuration-options/#packagerulesmatchisbreaking", + "markdownDescription": "Matches only if the update is considered breaking (e.g. major, or minor for 0.x in ecosystems like Cargo) when `true`, or non-breaking when `false`. Valid only within a `packageRules` object.\n\nSee also: [matchIsBreaking](https://docs.renovatebot.com/configuration-options/#packagerulesmatchisbreaking)", + "type": "boolean" + }, "matchJsonata": { "description": "A JSONata expression to match against the full config object. Valid only within a `packageRules` object.\nSee also: https://docs.renovatebot.com/configuration-options/#packagerulesmatchjsonata", "markdownDescription": "A JSONata expression to match against the full config object. Valid only within a `packageRules` object.\n\nSee also: [matchJsonata](https://docs.renovatebot.com/configuration-options/#packagerulesmatchjsonata)", @@ -7294,6 +7065,9 @@ "matchFileNames": { "$ref": "#/definitions/matchFileNames" }, + "matchIsBreaking": { + "$ref": "#/definitions/matchIsBreaking" + }, "matchJsonata": { "$ref": "#/definitions/matchJsonata" }, @@ -8649,8 +8423,7 @@ "default": {}, "additionalProperties": { "type": "string" - }, - "$ref": "#" + } }, "registryUrlTemplate": { "description": "Optional registry URL for extracted dependencies. Valid only within a `customManagers` object.\nSee also: https://docs.renovatebot.com/configuration-options/#custommanagersregistryurltemplate", @@ -10343,6 +10116,7 @@ "github-actions", "glasskube", "go-mod-directive", + "gomod", "gradle", "hashicorp", "helm", @@ -11843,7 +11617,7 @@ }, { "required": [ - "allowCustomCrateRegistries" + "allowCustomCrateGitRegistries" ] }, { diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/buildkite.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/buildkite.sha256 index a4bc022e9..de0b1dcaa 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/buildkite.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/buildkite.sha256 @@ -1 +1 @@ -f5138ecff10e6d9faf54cc60942d9071d76c00cd4bf64a879a0e5d407d77e5f4 \ No newline at end of file +da8e5f1e0413b975ba599d65ec6bb707065f919d6231e3c7cab0a1759e4804a2 \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/circle-ci.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/circle-ci.sha256 index 2eb115aa0..cf976f103 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/circle-ci.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/circle-ci.sha256 @@ -1 +1 @@ -7f3b844597735a9f884faee304a2ba1d65a87fdf2fae6c731208c0c39510ec65 \ No newline at end of file +bcc3e60a5a1e137fc45ad2cb435953de5f525ae881c5f0fd371b82a9f20bdb7a \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/citation-file-format.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/citation-file-format.sha256 index 632c190ae..7dd816274 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/citation-file-format.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/citation-file-format.sha256 @@ -1 +1 @@ -0b8d22140da702d766df318dcff3a91af2f39521298dcf36d76315fd99cc169b \ No newline at end of file +17bc7993c67b95eec988dadca78b65cb29cd489d1fceba71040a141dfb9791df \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/gitlab-ci.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/gitlab-ci.sha256 index a686451ab..0dd1aeb55 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/gitlab-ci.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/gitlab-ci.sha256 @@ -1 +1 @@ -a4dc2b155aa574575fbfd51dcca99388db5ba1b563ab5e05ce8df005e7eb9ced \ No newline at end of file +98e54051f78236ae22281857ff38c7fc634b88b5008d1326a8d1a5b0b22d8da5 \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/meltano.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/meltano.sha256 index 1f588d119..89d140e73 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/meltano.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/meltano.sha256 @@ -1 +1 @@ -29754d9dc8a6cebcfd59261fece0b0dff9e0c6d6b9475086def436d363ac3ae1 \ No newline at end of file +8de6419ba73857d200f60b97617006c9e8616a1c506662449a1b74ff3b73f69f \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/mergify.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/mergify.sha256 index 5ee91a2af..2e57c73f3 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/mergify.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/mergify.sha256 @@ -1 +1 @@ -4d9cb3859bc4faaf484d62cdd59b670cb432b7a074149e047f7450029fafb712 \ No newline at end of file +e6fabba9e185af6673f9a9a758cb81039bb25753a4870fcf8b25de3197fe1d51 \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/renovate.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/renovate.sha256 index 679f9d519..79ab2a24f 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/renovate.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/renovate.sha256 @@ -1 +1 @@ -de289878a385024951abda389fa5dbbaefe0c74641e7cc41d77ca3c08593d83e \ No newline at end of file +2b2f6ea315eb0fbc9ee467b1225c762c55a1dc3a3a84c6ae5d86d09db8dbc05e \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/snapcraft.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/snapcraft.sha256 index 530ce4fe6..260bc9ca4 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/snapcraft.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/snapcraft.sha256 @@ -1 +1 @@ -09689bdaa55bff6ead8cda603511a6bf96b456525cfa3d138a274e2e82d1653f \ No newline at end of file +fdbb55f2fa8e4a68f264b225596c77eabeb45511c16d0e88d32153a598443069 \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/snapcraft.json b/src/check_jsonschema/builtin_schemas/vendor/snapcraft.json index 04295677e..6fefd4053 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/snapcraft.json +++ b/src/check_jsonschema/builtin_schemas/vendor/snapcraft.json @@ -111,6 +111,9 @@ "start-timeout": { "anyOf": [ { + "description": "A duration string to be parsed by snapd.", + "examples": ["2s", "3m", "4ms", "5us", "6m7s8ms"], + "pattern": "^([0-9]+(ns|us|ms|s|m)){1,5}$", "type": "string" }, { @@ -125,6 +128,9 @@ "stop-timeout": { "anyOf": [ { + "description": "A duration string to be parsed by snapd.", + "examples": ["2s", "3m", "4ms", "5us", "6m7s8ms"], + "pattern": "^([0-9]+(ns|us|ms|s|m)){1,5}$", "type": "string" }, { @@ -139,6 +145,9 @@ "watchdog-timeout": { "anyOf": [ { + "description": "A duration string to be parsed by snapd.", + "examples": ["2s", "3m", "4ms", "5us", "6m7s8ms"], + "pattern": "^([0-9]+(ns|us|ms|s|m)){1,5}$", "type": "string" }, { @@ -167,6 +176,9 @@ "restart-delay": { "anyOf": [ { + "description": "A duration string to be parsed by snapd.", + "examples": ["2s", "3m", "4ms", "5us", "6m7s8ms"], + "pattern": "^([0-9]+(ns|us|ms|s|m)){1,5}$", "type": "string" }, { @@ -238,7 +250,7 @@ } ], "default": null, - "description": "Determines how the service should restart when the snap refreshes.", + "description": "For an app, determines whether the snap can refresh when the app is still running. For a service, determines whether the service should restart when the snap refreshes.", "examples": ["restart"], "title": "Refresh-Mode" },