diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d38a5315e..4975e538d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,7 +1,7 @@ repos: # dogfood - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.32.1 + rev: 0.33.1 hooks: - id: check-dependabot - id: check-github-workflows @@ -28,7 +28,7 @@ repos: hooks: - id: black - repo: https://github.com/PyCQA/flake8 - rev: 7.2.0 + rev: 7.3.0 hooks: - id: flake8 additional_dependencies: @@ -44,7 +44,7 @@ repos: hooks: - id: isort - repo: https://github.com/asottile/pyupgrade - rev: v3.19.1 + rev: v3.20.0 hooks: - id: pyupgrade args: ["--py39-plus"] diff --git a/CHANGELOG.rst b/CHANGELOG.rst index f499d43f4..c92d6b121 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -10,6 +10,24 @@ Unreleased .. vendor-insert-here +0.33.2 +------ + +- Update vendored schemas: bitbucket-pipelines, mergify, renovate (2025-06-29) +- Fix a bug in the evaluation of the ``date-time`` format on non-string data, + which incorrectly rejected values for which ``string`` was one of several + valid types. Thanks :user:`katylava`! (:issue:`571`) + +0.33.1 +------ + +- Update vendored schemas: bamboo-spec, bitbucket-pipelines, circle-ci, cloudbuild, + compose-spec, dependabot, drone-ci, github-actions, github-workflows, gitlab-ci, + mergify, readthedocs, renovate, taskfile, travis, woodpecker-ci (2025-06-22) +- Fix: support ``click==8.2.0`` +- Fix a bug in ``Last-Modified`` header parsing which used local time and could + result in improper caching. Thanks :user:`fenuks`! (:pr:`565`) + 0.33.0 ------ diff --git a/README.md b/README.md index b66e70d52..7e6b0d40b 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ files. ```yaml - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-github-workflows args: ["--verbose"] diff --git a/docs/optional_parsers.rst b/docs/optional_parsers.rst index 11eb8a173..79e40be59 100644 --- a/docs/optional_parsers.rst +++ b/docs/optional_parsers.rst @@ -20,7 +20,7 @@ For example, .. code-block:: yaml - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-renovate additional_dependencies: ['pyjson5'] @@ -45,7 +45,7 @@ For example, .. code-block:: yaml - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-jsonschema name: 'Check GitHub Workflows' diff --git a/docs/precommit_usage.rst b/docs/precommit_usage.rst index ee9da81d3..6915b19a7 100644 --- a/docs/precommit_usage.rst +++ b/docs/precommit_usage.rst @@ -17,7 +17,7 @@ You must specify a schema using pre-commit ``args`` configuration. :caption: example config - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-jsonschema files: ^data/.*\.json$ @@ -34,7 +34,7 @@ Validate JSON Schema files against their matching metaschema, as specified in th :caption: example config - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-metaschema files: ^schemas/.*\.json$ @@ -52,7 +52,7 @@ Validate Azure Pipelines config against the schema provided by Microsoft :caption: example config - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-azure-pipelines @@ -66,7 +66,7 @@ Validate Bamboo Specs against the schema provided by SchemaStore :caption: example config - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-bamboo-spec @@ -80,7 +80,7 @@ Validate Bitbucket Pipelines against the schema provided by SchemaStore :caption: example config - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-bitbucket-pipelines @@ -94,7 +94,7 @@ Validate Buildkite Pipelines against the schema provided by Buildkite :caption: example config - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-buildkite @@ -108,7 +108,7 @@ Validate CircleCI config against the schema provided by SchemaStore :caption: example config - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-circle-ci @@ -122,7 +122,7 @@ Validate Google Cloud Build config against the schema provided by SchemaStore :caption: example config - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-cloudbuild @@ -136,7 +136,7 @@ Validate Docker Compose files against the schema provided by SchemaStore :caption: example config - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-compose-spec @@ -150,7 +150,7 @@ Validate Dependabot Config (v2) against the schema provided by SchemaStore :caption: example config - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-dependabot @@ -164,7 +164,7 @@ Validate Drone-CI Config against the schema provided by SchemaStore :caption: example config - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-drone-ci @@ -178,7 +178,7 @@ Validate GitHub Actions against the schema provided by SchemaStore :caption: example config - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-github-actions @@ -192,7 +192,7 @@ Validate GitHub Workflows against the schema provided by SchemaStore :caption: example config - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-github-workflows @@ -206,7 +206,7 @@ Validate GitLab CI config against the schema provided by SchemaStore :caption: example config - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-gitlab-ci @@ -220,7 +220,7 @@ Validate Meltano config against the schema provided by Meltano :caption: example config - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-meltano @@ -234,7 +234,7 @@ Validate Mergify config against the schema provided by SchemaStore :caption: example config - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-mergify @@ -248,7 +248,7 @@ Validate ReadTheDocs config against the schema provided by ReadTheDocs :caption: example config - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-readthedocs @@ -262,7 +262,7 @@ Validate Renovate config against the schema provided by Renovate (does not suppo :caption: example config - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-renovate @@ -276,7 +276,7 @@ Validate snapcraft files against the schema provided by Canonical :caption: example config - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-snapcraft @@ -290,7 +290,7 @@ Validate Taskfile config against the schema provided by Task :caption: example config - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-taskfile @@ -304,7 +304,7 @@ Validate Travis Config against the schema provided by SchemaStore :caption: example config - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-travis @@ -318,7 +318,7 @@ Validate Woodpecker Config against the schema provided by SchemaStore :caption: example config - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-woodpecker-ci @@ -344,7 +344,7 @@ manually, you could do this: .. code-block:: yaml - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-jsonschema name: "Check GitHub Workflows" @@ -363,7 +363,7 @@ To check with the builtin schema that a GitHub workflow sets .. code-block:: yaml - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-jsonschema name: "Check GitHub Workflows set timeout-minutes" diff --git a/pyproject.toml b/pyproject.toml index d012ca16f..0dbdc9e64 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "check-jsonschema" -version = "0.33.0" +version = "0.33.2" description = "A jsonschema CLI and pre-commit hook" authors = [ { name = "Stephen Rosen", email = "sirosen0@gmail.com" }, diff --git a/src/check_jsonschema/builtin_schemas/vendor/bamboo-spec.json b/src/check_jsonschema/builtin_schemas/vendor/bamboo-spec.json index 1b181ba86..1dd6d8e4f 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/bamboo-spec.json +++ b/src/check_jsonschema/builtin_schemas/vendor/bamboo-spec.json @@ -1,865 +1,865 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "additionalProperties": { - "$ref": "#/definitions/job" - }, - "definitions": { - "deployment": { - "type": "object", - "title": "Deployment projects", - "description": "A deployment project in Bamboo is a container for holding the software project you are deploying: releases that have been built and tested, and the environments to which releases are deployed", - "properties": { - "name": { - "type": "string" - }, - "source-plan": { - "type": "string" - } - } - }, - "docker": { - "title": "Docker", - "description": "Builds and deployments are normally run on the Bamboo agent's native operating system", - "anyOf": [ - { - "type": "string" - }, - { - "type": "object", - "properties": { - "image": { - "type": "string" - }, - "volumes": { - "type": "object", - "default": {} - }, - "use-default-volumes": { - "type": "boolean", - "default": false - }, - "docker-run-arguments": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": ["image"] - } - ] - }, - "events": { - "type": "string", - "enum": [ - "plan-failed", - "plan-completed", - "plan-status-changed", - "plan-comment-added", - "plan-responsibility-changed", - "job-completed", - "job-status-changed", - "job-failed", - "job-error", - "job-first-failed", - "job-hung", - "job-queue-timeout", - "job-queued-without-capable-agents" - ] - }, - "job": { - "title": "Job", - "description": "A job is a single build unit within a plan and is made up of one or more tasks.", - "definitions": { - "artifact": { - "type": "object", - "title": "Artifact", - "description": "Artifacts are files created by a job build (e.g. JAR files)", - "properties": { - "location": { - "description": "The relative path to find your artifact; it's a path relative to the workspace directory; do not use absolute paths.", - "type": "string" - }, - "name": { - "description": "Name of the artifact; in case artifact is shared, name must be unique within the plan.", - "type": "string" - }, - "pattern": { - "description": "Name or Ant pattern of file(s) to keep.", - "type": "string" - }, - "required": { - "type": "boolean" - }, - "shared": { - "type": "boolean", - "description": "You can share an artifact among other jobs or plans.", - "default": false - } - } - }, - "task": { - "description": "A task is a small unit of work, such as source code checkout, or running a script", - "type": "object", - "properties": { - "interpreter": { - "type": "string" - }, - "clean": { - "type": "object" - }, - "checkout": { - "type": "object", - "properties": { - "repository": { - "type": "string" - }, - "path": { - "type": "string" - }, - "force-clean-build": { - "type": "string", - "default": false - } - } - }, - "inject-variables": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "file": { - "type": "string" - }, - "scope": { - "type": "string" - }, - "namespace": { - "type": "string" - } - } - } - ] - }, - "test-parser": { - "description": "The Test Results Parser task in Bamboo parses test data", - "anyOf": [ - { - "$ref": "#/definitions/testParser" - }, - { - "type": "object", - "properties": { - "type": { - "$ref": "#/definitions/testParser" - }, - "ignore-time": { - "type": "boolean" - }, - "test-results": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": ["type"] - } - ] - }, - "scripts": { - "type": "array", - "minItems": 1, - "items": { - "$ref": "#/definitions/script" - } - } - } - } - }, - "type": "object", - "properties": { - "docker": { - "$ref": "#/definitions/docker" - }, - "final-tasks": { - "type": "array" - }, - "key": { - "type": "string" - }, - "other": { - "type": "object", - "properties": { - "clean-working-dir": { - "type": "boolean" - } - } - }, - "requirements": { - "type": "array", - "items": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "object", - "patternProperties": { - ".": { - "type": "string" - } - } - } - ] - } - }, - "tasks": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/definitions/predefinedTask" - }, - { - "$ref": "#/definitions/script" - }, - { - "$ref": "#/definitions/job/definitions/task" - } - ] - } - } - } - }, - "keyValue": { - "description": "Variables can be used to make values available when building plans in Bamboo.", - "type": "object", - "patternProperties": { - "[a-zA-Z0-9_]": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "integer" - }, - { - "type": "boolean" - }, - { - "type": "number" - } - ] - } - } - }, - "notification": { - "type": "object", - "properties": { - "recipients": { - "type": "array", - "anyOf": [ - { - "type": "object", - "properties": { - "users": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - { - "type": "object", - "properties": { - "groups": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - ] - }, - "events": { - "type": "array", - "minLength": 1, - "items": { - "$ref": "#/definitions/events" - } - } - } - }, - "permission": { - "type": "object", - "description": "Plan permissions allow a user to control access to the functions of the build plan.", - "definitions": { - "permission": { - "description": "Plan permissions allow a user to control access to the functions of the build plan", - "type": "string", - "enum": ["view", "edit", "build", "admin", "clone", "deploy"] - } - }, - "properties": { - "groups": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "permissions": { - "anyOf": [ - { - "type": "array", - "items": { - "$ref": "#/definitions/permission/definitions/permission" - } - }, - { - "$ref": "#/definitions/permission/definitions/permission" - } - ] - }, - "roles": { - "type": "array", - "items": { - "type": "string" - } - }, - "users": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "plan": { - "description": "A plan defines everything about your continuous integration build process in Bamboo.", - "type": "object", - "properties": { - "project-key": { - "type": "string" - }, - "key": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "predefinedTask": { - "type": "string", - "enum": ["inject-variables", "clean", "checkout", "artifact-download"] - }, - "releaseNaming": { - "type": "object", - "properties": { - "next-version-name": { - "type": "string" - }, - "applies-to-branches": { - "type": "boolean" - }, - "auto-increment": { - "type": "boolean" - }, - "auto-increment-variables": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - } - } - }, - "script": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "object", - "properties": { - "script": { - "type": "string" - } - } - } - ] - }, - "stage": { - "title": "Stage", - "description": "Stages group jobs to individual steps within a plan's build process.", - "type": "object", - "additionalProperties": false, - "properties": { - "manual": { - "description": "Will await for execution by user", - "type": "boolean" - }, - "final": { - "description": "Will be executed regardless of other stages state (pass or fail)", - "type": "boolean" - }, - "jobs": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "task": { - "description": "A task is a small unit of work, such as source code checkout, or running a script.", - "type": "object", - "definitions": { - "trigger": { - "anyOf": [ - { - "type": "object", - "properties": { - "stage": { - "type": "string" - }, - "branch": { - "type": "string" - } - } - }, - { - "type": "object", - "patternProperties": { - "[a-zA-Z0-9\\s+_-]": { - "type": "string" - } - } - } - ] - } - }, - "properties": { - "source-plan": { - "type": "string" - }, - "artifacts": { - "type": "array", - "items": { - "$ref": "#/definitions/job/definitions/artifact" - } - }, - "triggers": { - "type": "array", - "items": { - "type": "object", - "patternProperties": { - "(build|stage|environment)-success": { - "$ref": "#/definitions/task/definitions/trigger" - } - } - } - }, - "notifications": { - "type": "array", - "items": { - "$ref": "#/definitions/notification" - } - } - } - }, - "testParser": { - "type": "string", - "enum": ["junit", "mstest", "nunit", "mocha", "testng"] - }, - "triggers": { - "type": "array", - "definitions": { - "polling": { - "type": "object", - "additionalProperties": false, - "properties": { - "polling": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "period": { - "type": "integer" - }, - "conditions": { - "type": "array", - "items": { - "type": "object", - "patternProperties": { - "[a-zA-Z0-9\\s+_-]": { - "type": "object", - "additionalProperties": { - "type": "boolean" - } - } - } - } - } - } - } - ] - } - } - }, - "remote": { - "type": "object", - "additionalProperties": false, - "properties": { - "remote": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "object", - "properties": { - "ip": { - "type": "string" - } - } - } - ] - } - } - }, - "cron": { - "type": "object", - "description": "Execute deployment by schedule.", - "additionalProperties": false, - "properties": { - "cron": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "object", - "properties": { - "expression": { - "type": "string" - } - } - } - ] - } - } - } - }, - "items": { - "anyOf": [ - { - "$ref": "#/definitions/triggers/definitions/polling" - }, - { - "$ref": "#/definitions/triggers/definitions/cron" - }, - { - "$ref": "#/definitions/triggers/definitions/remote" - }, - { - "type": "string" - } - ] - } - } - }, - "description": "Full spec reference: https://docs.atlassian.com/bamboo-specs-docs/7.2.4/specs.html", - "id": "https://json.schemastore.org/bamboo-spec.json", - "properties": { - "default-environment-permissions": { - "title": "Default Environment Permissions", - "description": "These permissions apply to all environments defined in this deployment project", - "type": "array", - "items": { - "$ref": "#/definitions/permission" - } - }, - "deployment": { - "title": "Deployment", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/deployment" - } - ] - }, - "deployment-permissions": { - "title": "Deployment Permissions", - "description": "These permissions apply to the deployment project", - "type": "array", - "items": { - "$ref": "#/definitions/permission" - } - }, - "docker": { - "$ref": "#/definitions/docker" - }, - "environment-permissions": { - "title": "Environment Permissions", - "description": "Permissions specific to an environment", - "type": "array", - "items": { - "type": "object", - "patternProperties": { - "[a-zA-Z0-9\\s+_-]": { - "type": "array", - "items": { - "$ref": "#/definitions/permission" - } - } - } - } - }, - "environments": { - "description": "An environment represents the servers or groups of servers where the software release has been deployed to, and the tasks that are needed for the deployment to work smoothly", - "type": "array", - "items": { - "type": "string" - } - }, - "labels": { - "type": "array", - "items": { - "type": "string" - } - }, - "notifications": { - "type": "array", - "items": { - "type": "object", - "properties": { - "recipients": { - "type": "array", - "items": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "object", - "properties": { - "users": { - "type": "array", - "items": { - "type": "string" - } - }, - "emails": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - ] - } - }, - "events": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/definitions/events" - }, - { - "type": "object" - } - ] - } - } - } - } - }, - "plan": { - "$ref": "#/definitions/plan" - }, - "plan-permissions": { - "title": "Plan Permissions", - "type": "array", - "items": { - "$ref": "#/definitions/permission" - } - }, - "release-naming": { - "description": "You can define how releases should be named when they are created by Bamboo", - "anyOf": [ - { - "$ref": "#/definitions/releaseNaming" - }, - { - "type": "string" - } - ] - }, - "repositories": { - "type": "array", - "items": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "object", - "patternProperties": { - "[a-zA-Z0-9_]": { - "type": "object", - "properties": { - "scope": { - "type": "string", - "enum": ["project", "global"] - }, - "type": { - "type": "string" - }, - "slug": { - "type": "string" - }, - "url": { - "type": "string" - }, - "branch": { - "type": "string" - }, - "viewer": { - "type": "string" - }, - "ssh-key": { - "type": "string" - }, - "ssh-key-passphrase": { - "type": "string" - }, - "username": { - "type": "string" - }, - "password": { - "type": "string" - }, - "shared-credentials": { - "type": "string" - }, - "lfs": { - "type": "boolean" - }, - "use-shallow-clones": { - "type": "boolean" - }, - "submodules": { - "type": "boolean" - }, - "change-detection": { - "type": "object", - "properties": { - "quiet-period": { - "type": "object", - "properties": { - "quiet-period-seconds": { - "type": "integer" - }, - "max-retries": { - "type": "integer" - } - } - }, - "exclude-changeset-pattern": { - "type": "string" - }, - "file-filter-type": { - "type": "string" - }, - "file-filter-pattern": { - "type": "string" - } - } - } - } - } - } - } - ] - } - }, - "stages": { - "description": "Stages group jobs to individual steps within a plan's build process.", - "type": "array", - "items": { - "type": "object", - "patternProperties": { - "[a-zA-Z0-9\\s+_-]": { - "anyOf": [ - { - "type": "array", - "items": { - "type": "string" - } - }, - { - "$ref": "#/definitions/stage" - } - ] - } - } - } - }, - "triggers": { - "$ref": "#/definitions/triggers" - }, - "variables": { - "$ref": "#/definitions/keyValue" - }, - "version": { - "type": "integer", - "default": 2 - }, - "branch-overrides": { - "description": "Overrides for specific branches in the plan", - "type": "array", - "items": { - "type": "object", - "patternProperties": { - "[a-zA-Z0-9\\s+_-]": { - "$ref": "#" - } - } - } - }, - "other": { - "type": "object" - } - }, - "title": "Bamboo CI Specification", - "type": "object" -} +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalProperties": { + "$ref": "#/definitions/job" + }, + "definitions": { + "deployment": { + "type": "object", + "title": "Deployment projects", + "description": "A deployment project in Bamboo is a container for holding the software project you are deploying: releases that have been built and tested, and the environments to which releases are deployed", + "properties": { + "name": { + "type": "string" + }, + "source-plan": { + "type": "string" + } + } + }, + "docker": { + "title": "Docker", + "description": "Builds and deployments are normally run on the Bamboo agent's native operating system", + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "image": { + "type": "string" + }, + "volumes": { + "type": "object", + "default": {} + }, + "use-default-volumes": { + "type": "boolean", + "default": false + }, + "docker-run-arguments": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": ["image"] + } + ] + }, + "events": { + "type": "string", + "enum": [ + "plan-failed", + "plan-completed", + "plan-status-changed", + "plan-comment-added", + "plan-responsibility-changed", + "job-completed", + "job-status-changed", + "job-failed", + "job-error", + "job-first-failed", + "job-hung", + "job-queue-timeout", + "job-queued-without-capable-agents" + ] + }, + "job": { + "title": "Job", + "description": "A job is a single build unit within a plan and is made up of one or more tasks.", + "definitions": { + "artifact": { + "type": "object", + "title": "Artifact", + "description": "Artifacts are files created by a job build (e.g. JAR files)", + "properties": { + "location": { + "description": "The relative path to find your artifact; it's a path relative to the workspace directory; do not use absolute paths.", + "type": "string" + }, + "name": { + "description": "Name of the artifact; in case artifact is shared, name must be unique within the plan.", + "type": "string" + }, + "pattern": { + "description": "Name or Ant pattern of file(s) to keep.", + "type": "string" + }, + "required": { + "type": "boolean" + }, + "shared": { + "type": "boolean", + "description": "You can share an artifact among other jobs or plans.", + "default": false + } + } + }, + "task": { + "description": "A task is a small unit of work, such as source code checkout, or running a script", + "type": "object", + "properties": { + "interpreter": { + "type": "string" + }, + "clean": { + "type": "object" + }, + "checkout": { + "type": "object", + "properties": { + "repository": { + "type": "string" + }, + "path": { + "type": "string" + }, + "force-clean-build": { + "type": "string", + "default": false + } + } + }, + "inject-variables": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "file": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "namespace": { + "type": "string" + } + } + } + ] + }, + "test-parser": { + "description": "The Test Results Parser task in Bamboo parses test data", + "anyOf": [ + { + "$ref": "#/definitions/testParser" + }, + { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/testParser" + }, + "ignore-time": { + "type": "boolean" + }, + "test-results": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": ["type"] + } + ] + }, + "scripts": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/definitions/script" + } + } + } + } + }, + "type": "object", + "properties": { + "docker": { + "$ref": "#/definitions/docker" + }, + "final-tasks": { + "type": "array" + }, + "key": { + "type": "string" + }, + "other": { + "type": "object", + "properties": { + "clean-working-dir": { + "type": "boolean" + } + } + }, + "requirements": { + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "patternProperties": { + ".": { + "type": "string" + } + } + } + ] + } + }, + "tasks": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/predefinedTask" + }, + { + "$ref": "#/definitions/script" + }, + { + "$ref": "#/definitions/job/definitions/task" + } + ] + } + } + } + }, + "keyValue": { + "description": "Variables can be used to make values available when building plans in Bamboo.", + "type": "object", + "patternProperties": { + "[a-zA-Z0-9_]": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "boolean" + }, + { + "type": "number" + } + ] + } + } + }, + "notification": { + "type": "object", + "properties": { + "recipients": { + "type": "array", + "anyOf": [ + { + "type": "object", + "properties": { + "users": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + { + "type": "object", + "properties": { + "groups": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + ] + }, + "events": { + "type": "array", + "minLength": 1, + "items": { + "$ref": "#/definitions/events" + } + } + } + }, + "permission": { + "type": "object", + "description": "Plan permissions allow a user to control access to the functions of the build plan.", + "definitions": { + "permission": { + "description": "Plan permissions allow a user to control access to the functions of the build plan", + "type": "string", + "enum": ["view", "edit", "build", "admin", "clone", "deploy"] + } + }, + "properties": { + "groups": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "permissions": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/permission/definitions/permission" + } + }, + { + "$ref": "#/definitions/permission/definitions/permission" + } + ] + }, + "roles": { + "type": "array", + "items": { + "type": "string" + } + }, + "users": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "plan": { + "description": "A plan defines everything about your continuous integration build process in Bamboo.", + "type": "object", + "properties": { + "project-key": { + "type": "string" + }, + "key": { + "type": "string" + }, + "name": { + "type": "string" + } + } + }, + "predefinedTask": { + "type": "string", + "enum": ["inject-variables", "clean", "checkout", "artifact-download"] + }, + "releaseNaming": { + "type": "object", + "properties": { + "next-version-name": { + "type": "string" + }, + "applies-to-branches": { + "type": "boolean" + }, + "auto-increment": { + "type": "boolean" + }, + "auto-increment-variables": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + } + } + }, + "script": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "script": { + "type": "string" + } + } + } + ] + }, + "stage": { + "title": "Stage", + "description": "Stages group jobs to individual steps within a plan's build process.", + "type": "object", + "additionalProperties": false, + "properties": { + "manual": { + "description": "Will await for execution by user", + "type": "boolean" + }, + "final": { + "description": "Will be executed regardless of other stages state (pass or fail)", + "type": "boolean" + }, + "jobs": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "task": { + "description": "A task is a small unit of work, such as source code checkout, or running a script.", + "type": "object", + "definitions": { + "trigger": { + "anyOf": [ + { + "type": "object", + "properties": { + "stage": { + "type": "string" + }, + "branch": { + "type": "string" + } + } + }, + { + "type": "object", + "patternProperties": { + "[a-zA-Z0-9\\s+_-]": { + "type": "string" + } + } + } + ] + } + }, + "properties": { + "source-plan": { + "type": "string" + }, + "artifacts": { + "type": "array", + "items": { + "$ref": "#/definitions/job/definitions/artifact" + } + }, + "triggers": { + "type": "array", + "items": { + "type": "object", + "patternProperties": { + "(build|stage|environment)-success": { + "$ref": "#/definitions/task/definitions/trigger" + } + } + } + }, + "notifications": { + "type": "array", + "items": { + "$ref": "#/definitions/notification" + } + } + } + }, + "testParser": { + "type": "string", + "enum": ["junit", "mstest", "nunit", "mocha", "testng"] + }, + "triggers": { + "type": "array", + "definitions": { + "polling": { + "type": "object", + "additionalProperties": false, + "properties": { + "polling": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "period": { + "type": "integer" + }, + "conditions": { + "type": "array", + "items": { + "type": "object", + "patternProperties": { + "[a-zA-Z0-9\\s+_-]": { + "type": "object", + "additionalProperties": { + "type": "boolean" + } + } + } + } + } + } + } + ] + } + } + }, + "remote": { + "type": "object", + "additionalProperties": false, + "properties": { + "remote": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "ip": { + "type": "string" + } + } + } + ] + } + } + }, + "cron": { + "type": "object", + "description": "Execute deployment by schedule.", + "additionalProperties": false, + "properties": { + "cron": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "expression": { + "type": "string" + } + } + } + ] + } + } + } + }, + "items": { + "anyOf": [ + { + "$ref": "#/definitions/triggers/definitions/polling" + }, + { + "$ref": "#/definitions/triggers/definitions/cron" + }, + { + "$ref": "#/definitions/triggers/definitions/remote" + }, + { + "type": "string" + } + ] + } + } + }, + "description": "Full spec reference: https://docs.atlassian.com/bamboo-specs-docs/7.2.4/specs.html", + "id": "https://json.schemastore.org/bamboo-spec.json", + "properties": { + "default-environment-permissions": { + "title": "Default Environment Permissions", + "description": "These permissions apply to all environments defined in this deployment project", + "type": "array", + "items": { + "$ref": "#/definitions/permission" + } + }, + "deployment": { + "title": "Deployment", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/deployment" + } + ] + }, + "deployment-permissions": { + "title": "Deployment Permissions", + "description": "These permissions apply to the deployment project", + "type": "array", + "items": { + "$ref": "#/definitions/permission" + } + }, + "docker": { + "$ref": "#/definitions/docker" + }, + "environment-permissions": { + "title": "Environment Permissions", + "description": "Permissions specific to an environment", + "type": "array", + "items": { + "type": "object", + "patternProperties": { + "[a-zA-Z0-9\\s+_-]": { + "type": "array", + "items": { + "$ref": "#/definitions/permission" + } + } + } + } + }, + "environments": { + "description": "An environment represents the servers or groups of servers where the software release has been deployed to, and the tasks that are needed for the deployment to work smoothly", + "type": "array", + "items": { + "type": "string" + } + }, + "labels": { + "type": "array", + "items": { + "type": "string" + } + }, + "notifications": { + "type": "array", + "items": { + "type": "object", + "properties": { + "recipients": { + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "users": { + "type": "array", + "items": { + "type": "string" + } + }, + "emails": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + ] + } + }, + "events": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/events" + }, + { + "type": "object" + } + ] + } + } + } + } + }, + "plan": { + "$ref": "#/definitions/plan" + }, + "plan-permissions": { + "title": "Plan Permissions", + "type": "array", + "items": { + "$ref": "#/definitions/permission" + } + }, + "release-naming": { + "description": "You can define how releases should be named when they are created by Bamboo", + "anyOf": [ + { + "$ref": "#/definitions/releaseNaming" + }, + { + "type": "string" + } + ] + }, + "repositories": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object", + "patternProperties": { + "[a-zA-Z0-9_]": { + "type": "object", + "properties": { + "scope": { + "type": "string", + "enum": ["project", "global"] + }, + "type": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "url": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "viewer": { + "type": "string" + }, + "ssh-key": { + "type": "string" + }, + "ssh-key-passphrase": { + "type": "string" + }, + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "shared-credentials": { + "type": "string" + }, + "lfs": { + "type": "boolean" + }, + "use-shallow-clones": { + "type": "boolean" + }, + "submodules": { + "type": "boolean" + }, + "change-detection": { + "type": "object", + "properties": { + "quiet-period": { + "type": "object", + "properties": { + "quiet-period-seconds": { + "type": "integer" + }, + "max-retries": { + "type": "integer" + } + } + }, + "exclude-changeset-pattern": { + "type": "string" + }, + "file-filter-type": { + "type": "string" + }, + "file-filter-pattern": { + "type": "string" + } + } + } + } + } + } + } + ] + } + }, + "stages": { + "description": "Stages group jobs to individual steps within a plan's build process.", + "type": "array", + "items": { + "type": "object", + "patternProperties": { + "[a-zA-Z0-9\\s+_-]": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "$ref": "#/definitions/stage" + } + ] + } + } + } + }, + "triggers": { + "$ref": "#/definitions/triggers" + }, + "variables": { + "$ref": "#/definitions/keyValue" + }, + "version": { + "type": "integer", + "default": 2 + }, + "branch-overrides": { + "description": "Overrides for specific branches in the plan", + "type": "array", + "items": { + "type": "object", + "patternProperties": { + "[a-zA-Z0-9\\s+_-]": { + "$ref": "#" + } + } + } + }, + "other": { + "type": "object" + } + }, + "title": "Bamboo CI Specification", + "type": "object" +} diff --git a/src/check_jsonschema/builtin_schemas/vendor/bitbucket-pipelines.json b/src/check_jsonschema/builtin_schemas/vendor/bitbucket-pipelines.json index 58fdf1435..fceff6452 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/bitbucket-pipelines.json +++ b/src/check_jsonschema/builtin_schemas/vendor/bitbucket-pipelines.json @@ -1 +1 @@ -{"$id": "https://bitbucket.org/product/features/pipelines", "$ref": "#/components/schemas/pipelines_configuration", "$schema": "http://json-schema.org/draft-07/schema#", "components": {"schemas": {"artifacts": {"oneOf": [{"$ref": "#/components/schemas/artifacts_paths"}, {"$ref": "#/components/schemas/artifacts_expanded"}]}, "artifacts_expanded": {"properties": {"download": {"oneOf": [{"default": true, "description": "Enables downloading of all available artifacts at the end of a step.", "type": "boolean"}, {"description": "Define the list of filtered artifacts to be downloaded by the step.", "items": {"type": "string"}, "minItems": 1, "type": "array"}]}, "paths": {"$ref": "#/components/schemas/artifacts_paths"}, "upload": {"items": {"$ref": "#/components/schemas/artifacts_upload"}, "minItems": 1, "type": "array"}}, "type": "object"}, "artifacts_paths": {"items": {"description": "Glob pattern for the path to the artifacts.", "title": "Artifact Path Pattern", "type": "string"}, "minItems": 1, "type": "array"}, "artifacts_upload": {"description": "The artifact to be uploaded.", "properties": {"depth": {"description": "The depth to search for the artifact files.", "minimum": 1, "title": "Artifact Depth", "type": "integer"}, "name": {"description": "The name of the artifact.", "title": "Artifact Name", "type": "string"}, "paths": {"$ref": "#/components/schemas/artifacts_paths"}, "type": {"default": "shared", "description": "The type of the artifact.", "enum": ["shared"], "title": "Artifact Type", "type": "string"}}, "required": ["name", "paths"], "title": "Artifact Upload object", "type": "object"}, "cache": {"oneOf": [{"$ref": "#/components/schemas/cache_path"}, {"$ref": "#/components/schemas/cache_expanded"}]}, "cache_expanded": {"properties": {"key": {"properties": {"files": {"description": "Checksum of these file paths will be used to generate the cache key.", "items": {"description": "Path to a file or glob pattern of files in the repository which form the cache key.", "type": "string"}, "minItems": 1, "type": "array"}}, "required": ["files"], "title": "Cache Key", "type": "object"}, "path": {"$ref": "#/components/schemas/cache_path"}}, "required": ["path"], "title": "Cache", "type": "object"}, "cache_path": {"description": "Path to the directory to be cached, can be absolute or relative to the clone directory.", "title": "Cache Path", "type": "string"}, "clone": {"description": "Settings for cloning a repository into a container.", "properties": {"depth": {"default": 50, "description": "The depth argument of Git clone operation. It can be either number or \"full\" value", "example": "full", "oneOf": [{"minimum": 1, "type": "integer"}, {"enum": ["full"], "type": "string"}], "title": "Git Clone Depth"}, "enabled": {"default": true, "description": "Enables cloning of the repository.", "type": "boolean"}, "lfs": {"default": false, "description": "Enables the download of files from LFS storage when cloning.", "type": "boolean"}, "skip-ssl-verify": {"default": false, "description": "Disables SSL verification during Git clone operation, allowing the use of self-signed certificates.", "type": "boolean"}}, "title": "Clone Repository Settings", "type": "object"}, "cloud": {"description": "Custom cloud step runtime", "properties": {"arch": {"default": "x86", "description": "Architecture type used to run the step.", "enum": ["x86", "arm"], "type": "string"}, "atlassian-ip-ranges": {"default": false, "description": "Whether it uses Atlassian ip ranges.", "type": "boolean"}, "version": {"description": "Cloud Runtime version.", "type": "string"}}, "title": "Cloud step runtime", "type": "object"}, "condition": {"properties": {"changesets": {"additionalProperties": false, "description": "Condition on the changesets involved in the pipeline.", "maxProperties": 1, "properties": {"excludePaths": {"description": "Condition which holds only if all of the modified files match any of the specified patterns.", "items": {"description": "Glob pattern to match the file path.", "title": "File Path Pattern", "type": "string"}, "minItems": 1, "title": "Exclude Paths", "type": "array"}, "includePaths": {"description": "Condition which holds only if any of the modified files match any of the specified patterns.", "items": {"description": "Glob pattern to match the file path.", "title": "File Path Pattern", "type": "string"}, "minItems": 1, "title": "Include Paths", "type": "array"}}, "title": "Changeset Condition", "type": "object"}}, "required": ["changesets"], "type": "object"}, "custom_pipeline": {"oneOf": [{"$ref": "#/components/schemas/items_with_variables"}, {"$ref": "#/components/schemas/import_pipeline"}]}, "fail_fast": {"default": false, "title": "Fail Fast", "type": "boolean"}, "image": {"oneOf": [{"$ref": "#/components/schemas/image_no_auth"}, {"$ref": "#/components/schemas/image_basic_auth"}, {"$ref": "#/components/schemas/image_aws_auth"}, {"$ref": "#/components/schemas/image_name"}]}, "image_aws_auth": {"allOf": [{"$ref": "#/components/schemas/image_base"}, {"properties": {"aws": {"oneOf": [{"properties": {"access-key": {"description": "The access key for Amazon Elastic Container Registry (AWS ECR).", "title": "AWS Access Key", "type": "string"}, "secret-key": {"description": "The secret key for Amazon Elastic Container Registry (AWS ECR).", "title": "AWS Secret Key", "type": "string"}}, "required": ["access-key", "secret-key"], "type": "object"}, {"properties": {"oidc-role": {"description": "OIDC role with access to private Docker images hosted in Amazon Elastic Container Registry (AWS ECR).", "title": "OpenID Connect Role", "type": "string"}}, "required": ["oidc-role"], "type": "object"}]}}, "required": ["aws"], "type": "object"}]}, "image_base": {"description": "The parameters of the Docker image to use when running a step.", "properties": {"name": {"$ref": "#/components/schemas/image_name"}, "run-as-user": {"default": 0, "description": "The UID of a user in the docker image to run as. Overrides image's default user, specified user UID must be an existing user in the image with a valid home directory.", "title": "User ID", "type": "integer"}}, "required": ["name"], "title": "Docker Image Configuration", "type": "object"}, "image_basic_auth": {"allOf": [{"$ref": "#/components/schemas/image_base"}, {"properties": {"password": {"description": "The password to use when fetching the Docker image.", "title": "Docker Registry Password", "type": "string"}, "username": {"description": "The username to use when fetching the Docker image.", "title": "Docker Registry Username", "type": "string"}}, "required": ["username", "password"], "type": "object"}]}, "image_name": {"default": "atlassian/default-image:latest", "description": "The name of the Docker image which may or may not include registry URL, tag, and digest value.", "title": "Docker Image Name", "type": "string"}, "image_no_auth": {"allOf": [{"$ref": "#/components/schemas/image_base"}, {"properties": {"aws": {"not": {}}, "password": {"not": {}}, "username": {"not": {}}}, "type": "object"}]}, "import_pipeline": {"additionalProperties": false, "properties": {"import": {"description": "The import needs to match the following format: {repo-slug|repo-uuid}:{tag-name|branch-name}:{pipeline-name}.", "pattern": "^[^:]+:[^:]+:[^:]+$", "title": "Identifier of the pipeline configuration to import", "type": "string"}}, "required": ["import"], "type": "object"}, "items": {"description": "List of steps, stages and parallel groups of the pipeline.", "items": {"oneOf": [{"$ref": "#/components/schemas/step_item"}, {"$ref": "#/components/schemas/parallel_item"}, {"$ref": "#/components/schemas/stage_item"}]}, "minItems": 1, "title": "Pipeline Items", "type": "array"}, "items_with_variables": {"description": "List of variables, steps, stages and parallel groups of the custom pipeline.", "items": {"oneOf": [{"$ref": "#/components/schemas/variables_item"}, {"$ref": "#/components/schemas/step_item"}, {"$ref": "#/components/schemas/parallel_item"}, {"$ref": "#/components/schemas/stage_item"}]}, "minItems": 1, "title": "Custom Pipeline Items", "type": "array"}, "max_time": {"default": 120, "description": "The maximum time a step can execute for in minutes.", "example": 60, "exclusiveMinimum": 0, "type": "integer"}, "parallel": {"oneOf": [{"$ref": "#/components/schemas/parallel_steps"}, {"$ref": "#/components/schemas/parallel_expanded"}]}, "parallel_expanded": {"properties": {"fail-fast": {"$ref": "#/components/schemas/fail_fast", "description": "Stop the whole parallel group in case one of its steps fails."}, "steps": {"$ref": "#/components/schemas/parallel_steps"}}, "required": ["steps"], "type": "object"}, "parallel_item": {"additionalProperties": false, "properties": {"parallel": {"$ref": "#/components/schemas/parallel"}}, "type": "object"}, "parallel_steps": {"description": "List of steps in the parallel group to run concurrently.", "items": {"$ref": "#/components/schemas/step_item"}, "minItems": 1, "title": "Parallel Group Steps", "type": "array"}, "pipe": {"description": "The pipe to execute.", "example": {"pipe": "atlassian/test-pipe:2.2.0", "variables": {"BAZ": ["QUX", "QUZ"], "FOO": "BAR"}}, "properties": {"pipe": {"description": "The full pipe identifier.", "title": "Pipe Identifier", "type": "string"}, "variables": {"additionalProperties": {"description": "Environment variable value", "oneOf": [{"type": "string"}, {"items": {"type": "string"}, "type": "array"}]}, "description": "Environment variables passed to the pipe container.", "title": "Pipe Variables", "type": "object"}}, "required": ["pipe"], "title": "Pipe", "type": "object"}, "pipeline": {"oneOf": [{"$ref": "#/components/schemas/items"}, {"$ref": "#/components/schemas/import_pipeline"}]}, "pipelines_configuration": {"properties": {"clone": {"$ref": "#/components/schemas/clone"}, "definitions": {"description": "The definitions of caches and services used in the declared pipelines.", "properties": {"caches": {"additionalProperties": {"$ref": "#/components/schemas/cache"}, "title": "Custom cache definitions", "type": "object"}, "pipelines": {"additionalProperties": {"$ref": "#/components/schemas/custom_pipeline"}, "description": "Definitions of the pipelines which can be used in other repositories of the same Bitbucket workspace.", "title": "Shared pipeline definitions", "type": "object"}, "services": {"additionalProperties": {"$ref": "#/components/schemas/service"}, "title": "Service definitions", "type": "object"}}, "title": "Global Definitions", "type": "object"}, "export": {"default": false, "description": "Allows other Bitbucket repositories to import pipeline definitions from this file. A shared pipeline definition can't contain another `import` property.", "title": "Enables shared pipelines definitions.", "type": "boolean"}, "image": {"$ref": "#/components/schemas/image"}, "labels": {"description": "Additional key value data supplied in the configuration YAML.", "example": {"buildTool": "maven", "jvm": "jdk17"}, "title": "Pipeline Labels", "type": "object"}, "options": {"description": "Global options allow to override the default values applied to all steps in all declared pipelines.", "properties": {"docker": {"default": false, "description": "Enables Docker service for every step.", "type": "boolean"}, "max-time": {"$ref": "#/components/schemas/max_time"}, "runtime": {"$ref": "#/components/schemas/runtime"}, "size": {"$ref": "#/components/schemas/size"}}, "title": "Global Options", "type": "object"}, "pipelines": {"properties": {"branches": {"additionalProperties": {"$ref": "#/components/schemas/pipeline"}, "description": "Branch-specific build pipelines.", "title": "Branch Pipelines", "type": "object"}, "custom": {"additionalProperties": {"$ref": "#/components/schemas/custom_pipeline"}, "description": "Pipelines that can only be triggered manually or be scheduled.", "title": "Custom Pipelines", "type": "object"}, "default": {"$ref": "#/components/schemas/pipeline", "description": "Default pipeline runs on every push except for tags unless a branch-specific pipeline is defined.", "title": "Default Pipeline"}, "pull-requests": {"additionalProperties": {"$ref": "#/components/schemas/pull_requests_pipeline"}, "description": "Pull-request-specific build pipelines.", "title": "Pull Request Pipelines", "type": "object"}, "tags": {"additionalProperties": {"$ref": "#/components/schemas/pipeline"}, "description": "Tag-specific build pipelines.", "title": "Tag Pipelines", "type": "object"}}, "title": "Pipelines", "type": "object"}}, "type": "object"}, "pull_requests_pipeline": {"oneOf": [{"$ref": "#/components/schemas/items"}, {"properties": {"destinations": {"additionalProperties": {"$ref": "#/components/schemas/pipeline"}, "type": "object"}}, "type": "object"}]}, "runs_on": {"oneOf": [{"$ref": "#/components/schemas/runs_on_item"}, {"$ref": "#/components/schemas/runs_on_expanded"}]}, "runs_on_expanded": {"description": "Required labels of a runner to run the step.", "example": ["self.hosted", "linux"], "items": {"$ref": "#/components/schemas/runs_on_item"}, "maxItems": 10, "minItems": 1, "title": "Step Runner Labels", "type": "array"}, "runs_on_item": {"description": "Label of a runner.", "maxLength": 50, "title": "Step Runner Label", "type": "string"}, "runtime": {"description": "Custom step runtime", "properties": {"cloud": {"$ref": "#/components/schemas/cloud"}}, "title": "Step Runtime", "type": "object"}, "script": {"items": {"oneOf": [{"description": "The command to execute.", "example": "echo \"hello world\"", "title": "Script Command", "type": "string"}, {"$ref": "#/components/schemas/pipe"}]}, "minItems": 1, "type": "array"}, "service": {"description": "Custom service properties", "properties": {"image": {"$ref": "#/components/schemas/image"}, "memory": {"default": 1024, "description": "Memory limit for the service container, in megabytes.", "minimum": 128, "title": "Service Memory", "type": "integer"}, "type": {"description": "Specifies Docker service container (to run Docker-in-Docker).", "enum": ["docker"], "type": "string"}, "variables": {"additionalProperties": {"description": "Environment variable value", "title": "Service Variable", "type": "string"}, "description": "Environment variables passed to the service container.", "minProperties": 1, "title": "Service Variables", "type": "object"}}, "title": "Service definition", "type": "object"}, "size": {"default": "1x", "description": "The size of the step, sets the amount of resources allocated.", "enum": ["1x", "2x", "4x", "8x", "16x", "32x"], "title": "Step Size", "type": "string"}, "stage": {"properties": {"condition": {"$ref": "#/components/schemas/condition", "description": "The condition to execute the stage.", "title": "Stage Condition"}, "deployment": {"description": "The deployment environment for the stage.", "title": "Stage Deployment Environment", "type": "string"}, "name": {"description": "The name of the stage.", "title": "Stage Name", "type": "string"}, "steps": {"description": "List of steps in the stage.", "items": {"properties": {"step": {"allOf": [{"$ref": "#/components/schemas/step_base"}, {"properties": {"condition": {"not": {}}}, "type": "object"}]}}, "type": "object"}, "minItems": 1, "title": "Stage Steps", "type": "array"}, "trigger": {"$ref": "#/components/schemas/trigger", "description": "The trigger used for the pipeline stage.", "title": "Stage Trigger"}}, "required": ["steps"], "type": "object"}, "stage_item": {"additionalProperties": false, "properties": {"stage": {"$ref": "#/components/schemas/stage"}}, "type": "object"}, "step": {"allOf": [{"$ref": "#/components/schemas/step_base"}, {"properties": {"condition": {"$ref": "#/components/schemas/condition", "description": "The condition to execute the step.", "title": "Step Condition"}}, "type": "object"}]}, "step_base": {"properties": {"after-script": {"$ref": "#/components/schemas/script", "description": "List of commands to execute after the step succeeds or fails.", "title": "Step Post Script"}, "artifacts": {"$ref": "#/components/schemas/artifacts"}, "caches": {"description": "Caches enabled for the step.", "items": {"description": "Reference to a cache defined under global definitions.", "title": "Cache Name", "type": "string"}, "minItems": 1, "title": "Step Caches", "type": "array"}, "clone": {"$ref": "#/components/schemas/clone"}, "deployment": {"description": "The deployment environment for the step.", "title": "Step Deployment Environment", "type": "string"}, "fail-fast": {"$ref": "#/components/schemas/fail_fast", "description": "Stop the parent parallel group in case this step fails."}, "image": {"$ref": "#/components/schemas/image"}, "max-time": {"$ref": "#/components/schemas/max_time", "title": "Step Maximum Time"}, "name": {"description": "The name of the step.", "example": "Build and test", "title": "Step Name", "type": "string"}, "oidc": {"description": "Enables the use of OpenID Connect to connect a pipeline step to a resource server.", "type": "boolean"}, "runs-on": {"$ref": "#/components/schemas/runs_on"}, "runtime": {"$ref": "#/components/schemas/runtime"}, "script": {"$ref": "#/components/schemas/script", "description": "List of commands that are executed in sequence.", "title": "Step Script"}, "services": {"description": "Services enabled for the step.", "items": {"description": "Reference to a service defined under global definitions.", "title": "Service Name", "type": "string"}, "maxItems": 5, "minItems": 1, "title": "Step Services", "type": "array"}, "size": {"$ref": "#/components/schemas/size"}, "trigger": {"$ref": "#/components/schemas/trigger", "description": "The trigger used for the pipeline step.", "title": "Step Trigger"}}, "required": ["script"], "title": "Pipeline Step", "type": "object"}, "step_item": {"additionalProperties": false, "properties": {"step": {"$ref": "#/components/schemas/step"}}, "type": "object"}, "trigger": {"default": "automatic", "enum": ["automatic", "manual"], "type": "string"}, "variables_item": {"additionalProperties": false, "properties": {"variables": {"description": "List of variables for the custom pipeline.", "items": {"description": "Settings for the custom variable.", "properties": {"allowed-values": {"description": "A list of values that are allowed for the variable.", "items": {"title": "Allowed Variable Value", "type": "string"}, "minItems": 1, "title": "Allowed Variable Values", "type": "array"}, "default": {"title": "Default Variable Value", "type": "string"}, "description": {"title": "Variable Description", "type": "string"}, "name": {"title": "Variable Name", "type": "string"}}, "required": ["name"], "title": "Custom Pipeline Variable", "type": "object"}, "minItems": 1, "title": "Custom Pipeline Variables", "type": "array"}}, "type": "object"}}}} \ No newline at end of file +{"$id": "https://bitbucket.org/product/features/pipelines", "$ref": "#/components/schemas/pipelines_configuration", "$schema": "http://json-schema.org/draft-07/schema#", "components": {"schemas": {"artifacts": {"oneOf": [{"$ref": "#/components/schemas/artifacts_paths"}, {"$ref": "#/components/schemas/artifacts_expanded"}]}, "artifacts_expanded": {"properties": {"download": {"oneOf": [{"default": true, "description": "Enables downloading of all available artifacts at the end of a step.", "type": "boolean"}, {"description": "Define the list of filtered artifacts to be downloaded by the step.", "items": {"type": "string"}, "minItems": 1, "type": "array"}]}, "paths": {"$ref": "#/components/schemas/artifacts_paths"}, "upload": {"items": {"$ref": "#/components/schemas/artifacts_upload"}, "minItems": 1, "type": "array"}}, "type": "object"}, "artifacts_paths": {"items": {"description": "Glob pattern for the path to the artifacts.", "title": "Artifact Path Pattern", "type": "string"}, "minItems": 1, "type": "array"}, "artifacts_upload": {"description": "The artifact to be uploaded.", "properties": {"capture-on": {"description": "The capture on field for the artifact.", "enum": ["success", "failed", "always"], "title": "Artifact Capture On", "type": "string"}, "depth": {"description": "The depth to search for the artifact files.", "minimum": 1, "title": "Artifact Depth", "type": "integer"}, "ignore-paths": {"description": "The ignore paths for the artifact.", "items": {"description": "Glob pattern for paths to ignore when capturing artifacts.", "title": "Ignore Path Pattern", "type": "string"}, "title": "Artifact Ignore Paths", "type": "array"}, "name": {"description": "The name of the artifact.", "title": "Artifact Name", "type": "string"}, "paths": {"$ref": "#/components/schemas/artifacts_paths"}, "type": {"default": "shared", "description": "The type of the artifact.", "enum": ["shared", "unshared", "test-reports"], "title": "Artifact Type", "type": "string"}}, "required": ["name", "paths"], "title": "Artifact Upload object", "type": "object"}, "cache": {"oneOf": [{"$ref": "#/components/schemas/cache_path"}, {"$ref": "#/components/schemas/cache_expanded"}]}, "cache_expanded": {"properties": {"key": {"properties": {"files": {"description": "Checksum of these file paths will be used to generate the cache key.", "items": {"description": "Path to a file or glob pattern of files in the repository which form the cache key.", "type": "string"}, "minItems": 1, "type": "array"}}, "required": ["files"], "title": "Cache Key", "type": "object"}, "path": {"$ref": "#/components/schemas/cache_path"}}, "required": ["path"], "title": "Cache", "type": "object"}, "cache_path": {"description": "Path to the directory to be cached, can be absolute or relative to the clone directory.", "title": "Cache Path", "type": "string"}, "clone": {"description": "Settings for cloning a repository into a container.", "properties": {"depth": {"default": 50, "description": "The depth argument of Git clone operation. It can be either number or \"full\" value", "example": "full", "oneOf": [{"minimum": 1, "type": "integer"}, {"enum": ["full"], "type": "string"}], "title": "Git Clone Depth"}, "enabled": {"default": true, "description": "Enables cloning of the repository.", "type": "boolean"}, "lfs": {"default": false, "description": "Enables the download of files from LFS storage when cloning.", "type": "boolean"}, "skip-ssl-verify": {"default": false, "description": "Disables SSL verification during Git clone operation, allowing the use of self-signed certificates.", "type": "boolean"}}, "title": "Clone Repository Settings", "type": "object"}, "cloud": {"description": "Custom cloud step runtime", "properties": {"arch": {"default": "x86", "description": "Architecture type used to run the step.", "enum": ["x86", "arm"], "type": "string"}, "atlassian-ip-ranges": {"default": false, "description": "Whether it uses Atlassian ip ranges.", "type": "boolean"}, "version": {"description": "Cloud Runtime version.", "type": "string"}}, "title": "Cloud step runtime", "type": "object"}, "condition": {"properties": {"changesets": {"additionalProperties": false, "description": "Condition on the changesets involved in the pipeline.", "maxProperties": 1, "properties": {"excludePaths": {"description": "Condition which holds only if all of the modified files match any of the specified patterns.", "items": {"description": "Glob pattern to match the file path.", "title": "File Path Pattern", "type": "string"}, "minItems": 1, "title": "Exclude Paths", "type": "array"}, "includePaths": {"description": "Condition which holds only if any of the modified files match any of the specified patterns.", "items": {"description": "Glob pattern to match the file path.", "title": "File Path Pattern", "type": "string"}, "minItems": 1, "title": "Include Paths", "type": "array"}}, "title": "Changeset Condition", "type": "object"}}, "required": ["changesets"], "type": "object"}, "custom_pipeline": {"oneOf": [{"$ref": "#/components/schemas/items_with_variables"}, {"$ref": "#/components/schemas/import_pipeline"}]}, "fail_fast": {"default": false, "title": "Fail Fast", "type": "boolean"}, "image": {"oneOf": [{"$ref": "#/components/schemas/image_no_auth"}, {"$ref": "#/components/schemas/image_basic_auth"}, {"$ref": "#/components/schemas/image_aws_auth"}, {"$ref": "#/components/schemas/image_name"}]}, "image_aws_auth": {"allOf": [{"$ref": "#/components/schemas/image_base"}, {"properties": {"aws": {"oneOf": [{"properties": {"access-key": {"description": "The access key for Amazon Elastic Container Registry (AWS ECR).", "title": "AWS Access Key", "type": "string"}, "secret-key": {"description": "The secret key for Amazon Elastic Container Registry (AWS ECR).", "title": "AWS Secret Key", "type": "string"}}, "required": ["access-key", "secret-key"], "type": "object"}, {"properties": {"oidc-role": {"description": "OIDC role with access to private Docker images hosted in Amazon Elastic Container Registry (AWS ECR).", "title": "OpenID Connect Role", "type": "string"}}, "required": ["oidc-role"], "type": "object"}]}}, "required": ["aws"], "type": "object"}]}, "image_base": {"description": "The parameters of the Docker image to use when running a step.", "properties": {"name": {"$ref": "#/components/schemas/image_name"}, "run-as-user": {"default": 0, "description": "The UID of a user in the docker image to run as. Overrides image's default user, specified user UID must be an existing user in the image with a valid home directory.", "title": "User ID", "type": "integer"}}, "required": ["name"], "title": "Docker Image Configuration", "type": "object"}, "image_basic_auth": {"allOf": [{"$ref": "#/components/schemas/image_base"}, {"properties": {"password": {"description": "The password to use when fetching the Docker image.", "title": "Docker Registry Password", "type": "string"}, "username": {"description": "The username to use when fetching the Docker image.", "title": "Docker Registry Username", "type": "string"}}, "required": ["username", "password"], "type": "object"}]}, "image_name": {"default": "atlassian/default-image:latest", "description": "The name of the Docker image which may or may not include registry URL, tag, and digest value.", "title": "Docker Image Name", "type": "string"}, "image_no_auth": {"allOf": [{"$ref": "#/components/schemas/image_base"}, {"properties": {"aws": {"not": {}}, "password": {"not": {}}, "username": {"not": {}}}, "type": "object"}]}, "import_pipeline": {"additionalProperties": false, "properties": {"import": {"description": "The import needs to match the following format: {repo-slug|repo-uuid}:{tag-name|branch-name}:{pipeline-name}.", "pattern": "^[^:]+:[^:]+:[^:]+$", "title": "Identifier of the pipeline configuration to import", "type": "string"}}, "required": ["import"], "type": "object"}, "items": {"description": "List of steps, stages and parallel groups of the pipeline.", "items": {"oneOf": [{"$ref": "#/components/schemas/step_item"}, {"$ref": "#/components/schemas/parallel_item"}, {"$ref": "#/components/schemas/stage_item"}]}, "minItems": 1, "title": "Pipeline Items", "type": "array"}, "items_with_variables": {"description": "List of variables, steps, stages and parallel groups of the custom pipeline.", "items": {"oneOf": [{"$ref": "#/components/schemas/variables_item"}, {"$ref": "#/components/schemas/step_item"}, {"$ref": "#/components/schemas/parallel_item"}, {"$ref": "#/components/schemas/stage_item"}]}, "minItems": 1, "title": "Custom Pipeline Items", "type": "array"}, "max_time": {"default": 120, "description": "The maximum time a step can execute for in minutes.", "example": 60, "exclusiveMinimum": 0, "type": "integer"}, "parallel": {"oneOf": [{"$ref": "#/components/schemas/parallel_steps"}, {"$ref": "#/components/schemas/parallel_expanded"}]}, "parallel_expanded": {"properties": {"fail-fast": {"$ref": "#/components/schemas/fail_fast", "description": "Stop the whole parallel group in case one of its steps fails."}, "steps": {"$ref": "#/components/schemas/parallel_steps"}}, "required": ["steps"], "type": "object"}, "parallel_item": {"additionalProperties": false, "properties": {"parallel": {"$ref": "#/components/schemas/parallel"}}, "type": "object"}, "parallel_steps": {"description": "List of steps in the parallel group to run concurrently.", "items": {"$ref": "#/components/schemas/step_item"}, "minItems": 1, "title": "Parallel Group Steps", "type": "array"}, "pipe": {"description": "The pipe to execute.", "example": {"pipe": "atlassian/test-pipe:2.2.0", "variables": {"BAZ": ["QUX", "QUZ"], "FOO": "BAR"}}, "properties": {"pipe": {"description": "The full pipe identifier.", "title": "Pipe Identifier", "type": "string"}, "variables": {"additionalProperties": {"description": "Environment variable value", "oneOf": [{"type": "string"}, {"items": {"type": "string"}, "type": "array"}]}, "description": "Environment variables passed to the pipe container.", "title": "Pipe Variables", "type": "object"}}, "required": ["pipe"], "title": "Pipe", "type": "object"}, "pipeline": {"oneOf": [{"$ref": "#/components/schemas/items"}, {"$ref": "#/components/schemas/import_pipeline"}]}, "pipelines_configuration": {"properties": {"clone": {"$ref": "#/components/schemas/clone"}, "definitions": {"description": "The definitions of caches and services used in the declared pipelines.", "properties": {"caches": {"additionalProperties": {"$ref": "#/components/schemas/cache"}, "title": "Custom cache definitions", "type": "object"}, "pipelines": {"additionalProperties": {"$ref": "#/components/schemas/custom_pipeline"}, "description": "Definitions of the pipelines which can be used in other repositories of the same Bitbucket workspace.", "title": "Shared pipeline definitions", "type": "object"}, "services": {"additionalProperties": {"$ref": "#/components/schemas/service"}, "title": "Service definitions", "type": "object"}}, "title": "Global Definitions", "type": "object"}, "export": {"default": false, "description": "Allows other Bitbucket repositories to import pipeline definitions from this file. A shared pipeline definition can't contain another `import` property.", "title": "Enables shared pipelines definitions.", "type": "boolean"}, "image": {"$ref": "#/components/schemas/image"}, "labels": {"description": "Additional key value data supplied in the configuration YAML.", "example": {"buildTool": "maven", "jvm": "jdk17"}, "title": "Pipeline Labels", "type": "object"}, "options": {"description": "Global options allow to override the default values applied to all steps in all declared pipelines.", "properties": {"docker": {"default": false, "description": "Enables Docker service for every step.", "type": "boolean"}, "max-time": {"$ref": "#/components/schemas/max_time"}, "runtime": {"$ref": "#/components/schemas/runtime"}, "size": {"$ref": "#/components/schemas/size"}}, "title": "Global Options", "type": "object"}, "pipelines": {"properties": {"branches": {"additionalProperties": {"$ref": "#/components/schemas/pipeline"}, "description": "Branch-specific build pipelines.", "title": "Branch Pipelines", "type": "object"}, "custom": {"additionalProperties": {"$ref": "#/components/schemas/custom_pipeline"}, "description": "Pipelines that can only be triggered manually or be scheduled.", "title": "Custom Pipelines", "type": "object"}, "default": {"$ref": "#/components/schemas/pipeline", "description": "Default pipeline runs on every push except for tags unless a branch-specific pipeline is defined.", "title": "Default Pipeline"}, "pull-requests": {"additionalProperties": {"$ref": "#/components/schemas/pull_requests_pipeline"}, "description": "Pull-request-specific build pipelines.", "title": "Pull Request Pipelines", "type": "object"}, "tags": {"additionalProperties": {"$ref": "#/components/schemas/pipeline"}, "description": "Tag-specific build pipelines.", "title": "Tag Pipelines", "type": "object"}}, "title": "Pipelines", "type": "object"}}, "type": "object"}, "pull_requests_pipeline": {"oneOf": [{"$ref": "#/components/schemas/items"}, {"properties": {"destinations": {"additionalProperties": {"$ref": "#/components/schemas/pipeline"}, "type": "object"}}, "type": "object"}]}, "runs_on": {"oneOf": [{"$ref": "#/components/schemas/runs_on_item"}, {"$ref": "#/components/schemas/runs_on_expanded"}]}, "runs_on_expanded": {"description": "Required labels of a runner to run the step.", "example": ["self.hosted", "linux"], "items": {"$ref": "#/components/schemas/runs_on_item"}, "maxItems": 10, "minItems": 1, "title": "Step Runner Labels", "type": "array"}, "runs_on_item": {"description": "Label of a runner.", "maxLength": 50, "title": "Step Runner Label", "type": "string"}, "runtime": {"description": "Custom step runtime", "properties": {"cloud": {"$ref": "#/components/schemas/cloud"}}, "title": "Step Runtime", "type": "object"}, "script": {"items": {"oneOf": [{"description": "The command to execute.", "example": "echo \"hello world\"", "title": "Script Command", "type": "string"}, {"$ref": "#/components/schemas/pipe"}]}, "minItems": 1, "type": "array"}, "service": {"description": "Custom service properties", "properties": {"image": {"$ref": "#/components/schemas/image"}, "memory": {"default": 1024, "description": "Memory limit for the service container, in megabytes.", "minimum": 128, "title": "Service Memory", "type": "integer"}, "type": {"description": "Specifies Docker service container (to run Docker-in-Docker).", "enum": ["docker"], "type": "string"}, "variables": {"additionalProperties": {"description": "Environment variable value", "title": "Service Variable", "type": "string"}, "description": "Environment variables passed to the service container.", "minProperties": 1, "title": "Service Variables", "type": "object"}}, "title": "Service definition", "type": "object"}, "size": {"default": "1x", "description": "The size of the step, sets the amount of resources allocated.", "enum": ["1x", "2x", "4x", "8x", "16x", "32x"], "title": "Step Size", "type": "string"}, "stage": {"properties": {"condition": {"$ref": "#/components/schemas/condition", "description": "The condition to execute the stage.", "title": "Stage Condition"}, "deployment": {"description": "The deployment environment for the stage.", "title": "Stage Deployment Environment", "type": "string"}, "environment": {"description": "The environment for the stage.", "title": "Stage Environment", "type": "string"}, "name": {"description": "The name of the stage.", "title": "Stage Name", "type": "string"}, "steps": {"description": "List of steps in the stage.", "items": {"properties": {"step": {"allOf": [{"$ref": "#/components/schemas/step_base"}, {"properties": {"condition": {"not": {}}}, "type": "object"}]}}, "type": "object"}, "minItems": 1, "title": "Stage Steps", "type": "array"}, "trigger": {"$ref": "#/components/schemas/trigger", "description": "The trigger used for the pipeline stage.", "title": "Stage Trigger"}}, "required": ["steps"], "type": "object"}, "stage_item": {"additionalProperties": false, "properties": {"stage": {"$ref": "#/components/schemas/stage"}}, "type": "object"}, "step": {"allOf": [{"$ref": "#/components/schemas/step_base"}, {"properties": {"condition": {"$ref": "#/components/schemas/condition", "description": "The condition to execute the step.", "title": "Step Condition"}}, "type": "object"}]}, "step_base": {"properties": {"after-script": {"$ref": "#/components/schemas/script", "description": "List of commands to execute after the step succeeds or fails.", "title": "Step Post Script"}, "artifacts": {"$ref": "#/components/schemas/artifacts"}, "caches": {"description": "Caches enabled for the step.", "items": {"description": "Reference to a cache defined under global definitions.", "title": "Cache Name", "type": "string"}, "minItems": 1, "title": "Step Caches", "type": "array"}, "clone": {"$ref": "#/components/schemas/clone"}, "concurrency-group": {"description": "The concurrency group for the step.", "maxLength": 50, "title": "Concurrency group", "type": "string"}, "deployment": {"description": "The deployment environment for the step.", "title": "Step Deployment Environment", "type": "string"}, "environment": {"description": "The environment for the step.", "title": "Step Environment", "type": "string"}, "fail-fast": {"$ref": "#/components/schemas/fail_fast", "description": "Stop the parent parallel group in case this step fails."}, "image": {"$ref": "#/components/schemas/image"}, "max-time": {"$ref": "#/components/schemas/max_time", "title": "Step Maximum Time"}, "name": {"description": "The name of the step.", "example": "Build and test", "title": "Step Name", "type": "string"}, "oidc": {"description": "Enables the use of OpenID Connect to connect a pipeline step to a resource server.", "type": "boolean"}, "runs-on": {"$ref": "#/components/schemas/runs_on"}, "runtime": {"$ref": "#/components/schemas/runtime"}, "script": {"$ref": "#/components/schemas/script", "description": "List of commands that are executed in sequence.", "title": "Step Script"}, "services": {"description": "Services enabled for the step.", "items": {"description": "Reference to a service defined under global definitions.", "title": "Service Name", "type": "string"}, "maxItems": 5, "minItems": 1, "title": "Step Services", "type": "array"}, "size": {"$ref": "#/components/schemas/size"}, "trigger": {"$ref": "#/components/schemas/trigger", "description": "The trigger used for the pipeline step.", "title": "Step Trigger"}}, "required": ["script"], "title": "Pipeline Step", "type": "object"}, "step_item": {"additionalProperties": false, "properties": {"step": {"$ref": "#/components/schemas/step"}}, "type": "object"}, "trigger": {"default": "automatic", "enum": ["automatic", "manual"], "type": "string"}, "variables_item": {"additionalProperties": false, "properties": {"variables": {"description": "List of variables for the custom pipeline.", "items": {"description": "Settings for the custom variable.", "properties": {"allowed-values": {"description": "A list of values that are allowed for the variable.", "items": {"title": "Allowed Variable Value", "type": "string"}, "minItems": 1, "title": "Allowed Variable Values", "type": "array"}, "default": {"title": "Default Variable Value", "type": "string"}, "description": {"title": "Variable Description", "type": "string"}, "name": {"title": "Variable Name", "type": "string"}}, "required": ["name"], "title": "Custom Pipeline Variable", "type": "object"}, "minItems": 1, "title": "Custom Pipeline Variables", "type": "array"}}, "type": "object"}}}} \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/circle-ci.json b/src/check_jsonschema/builtin_schemas/vendor/circle-ci.json index 2013bfaad..dc444992a 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/circle-ci.json +++ b/src/check_jsonschema/builtin_schemas/vendor/circle-ci.json @@ -1,1562 +1,7 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://json.schemastore.org/circleciconfig.json", - "definitions": { - "logical": { - "description": "https://circleci.com/docs/configuration-reference#logic-statements \n\nA logical statement to be used in dynamic configuration", - "oneOf": [ - { - "type": ["string", "boolean", "integer", "number"] - }, - { - "type": "object", - "additionalProperties": false, - "minProperties": 1, - "maxProperties": 1, - "properties": { - "and": { - "description": "https://circleci.com/docs/configuration-reference#logic-statements \n\nLogical and: true when all statements in the list are true", - "type": "array", - "items": { - "$ref": "#/definitions/logical" - } - }, - "or": { - "description": "https://circleci.com/docs/configuration-reference#logic-statements \n\nLogical or: true when at least one statements in the list is true", - "type": "array", - "items": { - "$ref": "#/definitions/logical" - } - }, - "not": { - "$ref": "#/definitions/logical", - "description": "https://circleci.com/docs/configuration-reference#logic-statements \n\nLogical not: true when statement is false" - }, - "equal": { - "description": "https://circleci.com/docs/configuration-reference#logic-statements \n\nTrue when all elements in the list are equal", - "type": "array" - }, - "matches": { - "description": "https://circleci.com/docs/configuration-reference#logic-statements \n\nTrue when value matches the pattern", - "type": "object", - "additionalProperties": false, - "properties": { - "pattern": { - "type": "string" - }, - "value": { - "type": "string" - } - } - } - } - } - ] - }, - "filter": { - "description": "A map defining rules for execution on specific branches", - "type": "object", - "additionalProperties": false, - "properties": { - "only": { - "description": "Either a single branch specifier, or a list of branch specifiers", - "oneOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "ignore": { - "description": "Either a single branch specifier, or a list of branch specifiers", - "oneOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - } - } - }, - "orbs": { - "description": "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.", - "type": "object", - "additionalProperties": { - "oneOf": [ - { - "description": "https://circleci.com/docs/creating-orbs#semantic-versioning-in-orbs\n\nAn orb to depend on and its semver range, or volatile for the most recent release.", - "type": "string", - "pattern": "^[a-z][a-z0-9_-]+/[a-z][a-z0-9_-]+@(dev:[\\.a-z0-9_-]+|\\d+|\\d+\\.\\d+|\\d+\\.\\d+\\.\\d+|volatile)$" - }, - { - "description": "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.", - "type": "object", - "properties": { - "orbs": { - "$ref": "#/definitions/orbs" - }, - "commands": { - "$ref": "#/definitions/commands" - }, - "executors": { - "$ref": "#/definitions/executors" - }, - "jobs": { - "$ref": "#/definitions/jobs" - } - } - } - ] - } - }, - "commands": { - "description": "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.", - "type": "object", - "additionalProperties": { - "description": "https://circleci.com/docs/configuration-reference#commands-requires-version-21\n\nDefinition of a custom command.", - "type": "object", - "required": ["steps"], - "properties": { - "steps": { - "description": "A sequence of steps run inside the calling job of the command.", - "type": "array", - "items": { - "$ref": "#/definitions/step" - } - }, - "parameters": { - "description": "https://circleci.com/docs/reusing-config#using-the-parameters-declaration\n\nA map of parameter keys.", - "type": "object", - "patternProperties": { - "^[a-z][a-z0-9_-]+$": { - "oneOf": [ - { - "description": "https://circleci.com/docs/reusing-config#string\n\nA string parameter.", - "type": "object", - "required": ["type"], - "properties": { - "type": { - "enum": ["string"] - }, - "description": { - "type": "string" - }, - "default": { - "type": "string" - } - } - }, - { - "description": "https://circleci.com/docs/reusing-config#boolean\n\nA boolean parameter.", - "type": "object", - "required": ["type"], - "properties": { - "type": { - "enum": ["boolean"] - }, - "description": { - "type": "string" - }, - "default": { - "type": "boolean" - } - } - }, - { - "description": "https://circleci.com/docs/reusing-config#integer\n\nAn integer parameter.", - "type": "object", - "required": ["type"], - "properties": { - "type": { - "enum": ["integer"] - }, - "description": { - "type": "string" - }, - "default": { - "type": "integer" - } - } - }, - { - "description": "https://circleci.com/docs/reusing-config#enum\n\nThe `enum` parameter may be a list of any values. Use the `enum` parameter type when you want to enforce that the value must be one from a specific set of string values.", - "type": "object", - "required": ["type", "enum"], - "properties": { - "type": { - "enum": ["enum"] - }, - "enum": { - "type": "array", - "minItems": 1, - "items": { - "type": "string" - } - }, - "description": { - "type": "string" - }, - "default": { - "type": "string" - } - } - }, - { - "description": "https://circleci.com/docs/reusing-config#executor\n\nUse an `executor` parameter type to allow the invoker of a job to decide what executor it will run on.", - "type": "object", - "required": ["type"], - "properties": { - "type": { - "enum": ["executor"] - }, - "description": { - "type": "string" - }, - "default": { - "type": "string" - } - } - }, - { - "description": "https://circleci.com/docs/reusing-config#steps\n\nSteps are used when you have a job or command that needs to mix predefined and user-defined steps. When passed in to a command or job invocation, the steps passed as parameters are always defined as a sequence, even if only one step is provided.", - "type": "object", - "required": ["type"], - "properties": { - "type": { - "enum": ["steps"] - }, - "description": { - "type": "string" - }, - "default": { - "type": "array", - "items": { - "$ref": "#/definitions/step" - } - } - } - }, - { - "description": "https://circleci.com/docs/reusing-config#environment-variable-name\n\nThe environment variable name parameter is a string that must match a POSIX_NAME regexp (e.g. no spaces or special characters) and is a more meaningful parameter type that enables additional checks to be performed. ", - "type": "object", - "required": ["type"], - "properties": { - "type": { - "enum": ["env_var_name"] - }, - "description": { - "type": "string" - }, - "default": { - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9_-]+$" - } - } - } - ] - } - } - }, - "description": { - "description": "A string that describes the purpose of the command.", - "type": "string" - } - } - } - }, - "dockerLayerCaching": { - "description": "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.", - "type": "boolean", - "default": "true" - }, - "dockerExecutor": { - "description": "Options for the [docker executor](https://circleci.com/docs/configuration-reference/#docker)", - "required": ["docker"], - "properties": { - "docker": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "required": ["image"], - "properties": { - "image": { - "description": "The name of a custom docker image to use", - "type": "string" - }, - "name": { - "description": "The name the container is reachable by. By default, container services are accessible through `localhost`", - "type": "string" - }, - "entrypoint": { - "description": "The command used as executable when launching the container", - "oneOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "command": { - "description": "The command used as pid 1 (or args for entrypoint) when launching the container", - "oneOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "user": { - "description": "Which user to run the command as", - "type": "string" - }, - "environment": { - "description": "A map of environment variable names and values", - "type": "object", - "additionalProperties": { - "type": ["string", "number", "boolean"] - } - }, - "auth": { - "description": "Authentication for registries using standard `docker login` credentials", - "type": "object", - "additionalProperties": false, - "properties": { - "username": { - "type": "string" - }, - "password": { - "type": "string" - } - } - }, - "aws_auth": { - "description": "Authentication for AWS EC2 Container Registry (ECR). You can use the access/secret keys or OIDC.", - "type": "object", - "additionalProperties": false, - "properties": { - "aws_access_key_id": { - "type": "string" - }, - "aws_secret_access_key": { - "type": "string" - }, - "oidc_role_arn": { - "type": "string" - } - } - } - } - } - }, - "resource_class": { - "$ref": "#/definitions/linuxResourceClass" - } - } - }, - "machineExecutor": { - "description": "Options for the [machine executor](https://circleci.com/docs/configuration-reference#machine)", - "type": "object", - "required": ["machine"], - "oneOf": [ - { - "properties": { - "machine": { "const": true }, - "resource_class": { - "anyOf": [ - { "$ref": "#/definitions/linuxResourceClass" }, - { "$ref": "#/definitions/selfHostedRunnerResourceClass" } - ] - } - } - }, - { - "properties": { - "machine": { - "type": "object", - "additionalProperties": false, - "properties": { - "image": { "$ref": "#/definitions/linuxMachineImage" }, - "resource_class": { - "$ref": "#/definitions/linuxResourceClass" - }, - "docker_layer_caching": { - "$ref": "#/definitions/dockerLayerCaching" - } - } - }, - "resource_class": { "$ref": "#/definitions/linuxResourceClass" } - }, - "dependencies": { - "resource_class": { - "not": { - "properties": { - "machine": { - "required": ["resource_class"] - } - } - } - } - } - }, - { - "properties": { - "machine": { - "type": "object", - "additionalProperties": false, - "required": ["image"], - "properties": { - "image": { "$ref": "#/definitions/windowsMachineImage" }, - "resource_class": { - "$ref": "#/definitions/windowsResourceClass" - } - } - }, - "resource_class": { "$ref": "#/definitions/windowsResourceClass" } - }, - "dependencies": { - "resource_class": { - "not": { - "properties": { - "machine": { - "required": ["resource_class"] - } - } - } - } - } - }, - { - "properties": { - "machine": { - "type": "object", - "additionalProperties": false, - "required": ["image"], - "properties": { - "image": { "$ref": "#/definitions/linuxGPUMachineImage" }, - "resource_class": { - "$ref": "#/definitions/linuxGPUResourceClass" - } - } - }, - "resource_class": { "$ref": "#/definitions/linuxGPUResourceClass" } - }, - "dependencies": { - "resource_class": { - "not": { - "properties": { - "machine": { - "required": ["resource_class"] - } - } - } - } - } - }, - { - "properties": { - "machine": { - "type": "object", - "additionalProperties": false, - "required": ["image"], - "properties": { - "image": { "$ref": "#/definitions/windowsGPUMachineImage" }, - "resource_class": { - "$ref": "#/definitions/windowsGPUResourceClass" - } - } - }, - "resource_class": { - "$ref": "#/definitions/windowsGPUResourceClass" - } - }, - "dependencies": { - "resource_class": { - "not": { - "properties": { - "machine": { - "required": ["resource_class"] - } - } - } - } - } - }, - { - "properties": { - "machine": { - "type": "object", - "additionalProperties": false, - "required": ["resource_class"], - "properties": { - "resource_class": { - "$ref": "#/definitions/selfHostedRunnerResourceClass" - } - } - } - } - } - ] - }, - "macosExecutor": { - "description": "Options for the [macOS executor](https://circleci.com/docs/configuration-reference#macos)", - "type": "object", - "required": ["macos"], - "properties": { - "macos": { - "type": "object", - "additionalProperties": false, - "required": ["xcode"], - "properties": { - "xcode": { - "$ref": "#/definitions/xcodeVersion" - } - } - }, - "resource_class": { - "$ref": "#/definitions/macOSResourceClass" - } - } - }, - "executorChoice": { - "type": "object", - "oneOf": [ - { - "$ref": "#/definitions/dockerExecutor" - }, - { - "$ref": "#/definitions/machineExecutor" - }, - { - "$ref": "#/definitions/macosExecutor" - } - ] - }, - "executors": { - "description": "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.", - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/executorChoice", - "type": "object", - "properties": { - "shell": { - "description": "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)", - "type": "string" - }, - "working_directory": { - "description": "In which directory to run the steps.", - "type": "string" - }, - "environment": { - "description": "A map of environment variable names and values.", - "type": "object", - "additionalProperties": { - "type": ["string", "number"] - } - } - } - } - }, - "builtinSteps": { - "documentation": { - "run": { - "description": "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." - }, - "checkout": { - "description": "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." - }, - "setup_remote_docker": { - "description": "https://circleci.com/docs/configuration-reference#setup_remote_docker\n\nCreates a remote Docker environment configured to execute Docker commands." - }, - "save_cache": { - "description": "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." - }, - "restore_cache": { - "description": "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." - }, - "deploy": { - "description": "https://circleci.com/docs/configuration-reference#deploy\n\nSpecial step for deploying artifacts. `deploy` uses the same configuration map and semantics as run step. Jobs may have more than one deploy step. In general deploy step behaves just like run with two exceptions:\n* In a job with parallelism, the deploy step will only be executed by node #0 and only if all nodes succeed. Nodes other than #0 will skip this step.\n* In a job that runs with SSH, the deploy step will not execute" - }, - "store_artifacts": { - "description": "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." - }, - "store_test_results": { - "description": "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." - }, - "persist_to_workspace": { - "description": "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" - }, - "attach_workspace": { - "description": "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." - }, - "add_ssh_keys": { - "description": "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." - }, - "when": { - "description": "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": { - "description": "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" - } - }, - "configuration": { - "run": { - "allOf": [ - { - "$ref": "#/definitions/builtinSteps/documentation/run" - } - ], - "oneOf": [ - { - "type": "string" - }, - { - "type": "object", - "additionalProperties": false, - "required": ["command"], - "properties": { - "command": { - "description": "Command to run via the shell", - "type": "string" - }, - "name": { - "description": "Title of the step to be shown in the CircleCI UI (default: full `command`)", - "type": "string" - }, - "shell": { - "description": "Shell to use for execution command", - "type": "string" - }, - "environment": { - "description": "Additional environmental variables, locally scoped to command", - "type": "object", - "additionalProperties": { - "type": ["string", "number"] - } - }, - "background": { - "description": "Whether or not this step should run in the background (default: false)", - "default": false, - "type": "boolean" - }, - "working_directory": { - "description": "In which directory to run this step (default: `working_directory` of the job", - "type": "string" - }, - "no_output_timeout": { - "description": "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)", - "type": "string", - "pattern": "\\d+(\\.\\d+)?[mhs]", - "default": "10m" - }, - "when": { - "description": "Specify when to enable or disable the step. Takes the following values: `always`, `on_success`, `on_fail` (default: `on_success`)", - "enum": ["always", "on_success", "on_fail"] - } - } - } - ] - }, - "checkout": { - "allOf": [ - { - "$ref": "#/definitions/builtinSteps/documentation/checkout" - } - ], - "type": "object", - "additionalProperties": false, - "properties": { - "name": { - "description": "Title of the step to be shown in the CircleCI UI", - "type": "string" - }, - "path": { - "description": "Checkout directory (default: job's `working_directory`)", - "type": "string" - } - } - }, - "setup_remote_docker": { - "allOf": [ - { - "$ref": "#/definitions/builtinSteps/documentation/setup_remote_docker" - } - ], - "type": "object", - "additionalProperties": false, - "properties": { - "name": { - "description": "Title of the step to be shown in the CircleCI UI", - "type": "string" - }, - "docker_layer_caching": { - "description": "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)", - "type": "boolean", - "default": false - }, - "version": { - "description": "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" - } - ] - } - } - }, - "save_cache": { - "allOf": [ - { - "$ref": "#/definitions/builtinSteps/documentation/save_cache" - } - ], - "type": "object", - "additionalProperties": false, - "required": ["paths", "key"], - "properties": { - "paths": { - "description": "List of directories which should be added to the cache", - "type": "array", - "items": { - "type": "string" - } - }, - "key": { - "description": "Unique identifier for this cache", - "type": "string" - }, - "name": { - "type": "string", - "description": "Title of the step to be shown in the CircleCI UI (default: 'Saving Cache')" - }, - "when": { - "description": "Specify when to enable or disable the step. Takes the following values: `always`, `on_success`, `on_fail` (default: `on_success`)", - "enum": ["always", "on_success", "on_fail"] - } - } - }, - "restore_cache": { - "allOf": [ - { - "$ref": "#/definitions/builtinSteps/documentation/restore_cache" - } - ], - "oneOf": [ - { - "type": "object", - "additionalProperties": false, - "required": ["key"], - "properties": { - "key": { - "type": "string", - "description": "Single cache key to restore" - }, - "name": { - "type": "string", - "description": "Title of the step to be shown in the CircleCI UI (default: 'Restoring Cache')" - } - } - }, - { - "type": "object", - "additionalProperties": false, - "required": ["keys"], - "properties": { - "name": { - "type": "string", - "description": "Title of the step to be shown in the CircleCI UI (default: 'Restoring Cache')" - }, - "keys": { - "description": "List of cache keys to lookup for a cache to restore. Only first existing key will be restored.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - ] - }, - "deploy": { - "allOf": [ - { - "$ref": "#/definitions/builtinSteps/documentation/deploy" - }, - { - "$ref": "#/definitions/builtinSteps/configuration/run" - } - ] - }, - "store_artifacts": { - "allOf": [ - { - "$ref": "#/definitions/builtinSteps/documentation/store_artifacts" - } - ], - "type": "object", - "additionalProperties": false, - "required": ["path"], - "properties": { - "name": { - "description": "Title of the step to be shown in the CircleCI UI", - "type": "string" - }, - "path": { - "description": "Directory in the primary container to save as job artifacts", - "type": "string" - }, - "destination": { - "description": "Prefix added to the artifact paths in the artifacts API (default: the directory of the file specified in `path`)", - "type": "string" - } - } - }, - "store_test_results": { - "allOf": [ - { - "$ref": "#/definitions/builtinSteps/documentation/store_test_results" - } - ], - "type": "object", - "additionalProperties": false, - "required": ["path"], - "properties": { - "name": { - "description": "Title of the step to be shown in the CircleCI UI", - "type": "string" - }, - "path": { - "description": "Path (absolute, or relative to your `working_directory`) to directory containing subdirectories of JUnit XML or Cucumber JSON test metadata files", - "type": "string" - } - } - }, - "persist_to_workspace": { - "allOf": [ - { - "$ref": "#/definitions/builtinSteps/documentation/persist_to_workspace" - } - ], - "type": "object", - "additionalProperties": false, - "required": ["root", "paths"], - "properties": { - "name": { - "description": "Title of the step to be shown in the CircleCI UI", - "type": "string" - }, - "root": { - "description": "Either an absolute path or a path relative to `working_directory`", - "type": "string" - }, - "paths": { - "description": "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.", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "attach_workspace": { - "allOf": [ - { - "$ref": "#/definitions/builtinSteps/documentation/attach_workspace" - } - ], - "type": "object", - "additionalProperties": false, - "required": ["at"], - "properties": { - "name": { - "description": "Title of the step to be shown in the CircleCI UI", - "type": "string" - }, - "at": { - "description": "Directory to attach the workspace to", - "type": "string" - } - } - }, - "add_ssh_keys": { - "allOf": [ - { - "$ref": "#/definitions/builtinSteps/documentation/add_ssh_keys" - } - ], - "type": "object", - "additionalProperties": false, - "properties": { - "name": { - "description": "Title of the step to be shown in the CircleCI UI", - "type": "string" - }, - "fingerprints": { - "description": "Directory to attach the workspace to", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "when": { - "allOf": [ - { - "$ref": "#/definitions/builtinSteps/documentation/when" - } - ], - "type": "object", - "additionalProperties": false, - "properties": { - "condition": { - "$ref": "#/definitions/logical" - }, - "steps": { - "description": "A list of steps to be performed", - "type": "array", - "items": { - "$ref": "#/definitions/step" - } - } - }, - "required": ["condition", "steps"] - }, - "unless": { - "allOf": [ - { - "$ref": "#/definitions/builtinSteps/documentation/unless" - } - ], - "type": "object", - "additionalProperties": false, - "properties": { - "condition": { - "$ref": "#/definitions/logical" - }, - "steps": { - "description": "A list of steps to be performed", - "type": "array", - "items": { - "$ref": "#/definitions/step" - } - } - }, - "required": ["condition", "steps"] - } - } - }, - "step": { - "anyOf": [ - { - "$ref": "#/definitions/builtinSteps/documentation/checkout", - "enum": ["checkout"] - }, - { - "$ref": "#/definitions/builtinSteps/documentation/setup_remote_docker", - "enum": ["setup_remote_docker"] - }, - { - "$ref": "#/definitions/builtinSteps/documentation/add_ssh_keys", - "enum": ["add_ssh_keys"] - }, - { - "description": "https://circleci.com/docs/reusing-config#invoking-reusable-commands\n\nA custom command defined via the top level commands key", - "type": "string", - "pattern": "^[a-z][a-z0-9_-]+$" - }, - { - "description": "https://circleci.com/docs/using-orbs#commands\n\nA custom command defined via an orb.", - "type": "string", - "pattern": "^[a-z][a-z0-9_-]+/[a-z][a-z0-9_-]+$" - }, - { - "type": "object", - "minProperties": 1, - "maxProperties": 1, - "properties": { - "run": { - "$ref": "#/definitions/builtinSteps/configuration/run" - }, - "checkout": { - "$ref": "#/definitions/builtinSteps/configuration/checkout" - }, - "setup_remote_docker": { - "$ref": "#/definitions/builtinSteps/configuration/setup_remote_docker" - }, - "save_cache": { - "$ref": "#/definitions/builtinSteps/configuration/save_cache" - }, - "restore_cache": { - "$ref": "#/definitions/builtinSteps/configuration/restore_cache" - }, - "deploy": { - "$ref": "#/definitions/builtinSteps/configuration/deploy" - }, - "store_artifacts": { - "$ref": "#/definitions/builtinSteps/configuration/store_artifacts" - }, - "store_test_results": { - "$ref": "#/definitions/builtinSteps/configuration/store_test_results" - }, - "persist_to_workspace": { - "$ref": "#/definitions/builtinSteps/configuration/persist_to_workspace" - }, - "attach_workspace": { - "$ref": "#/definitions/builtinSteps/configuration/attach_workspace" - }, - "add_ssh_keys": { - "$ref": "#/definitions/builtinSteps/configuration/add_ssh_keys" - }, - "when": { - "$ref": "#/definitions/builtinSteps/configuration/when" - }, - "unless": { - "$ref": "#/definitions/builtinSteps/configuration/unless" - } - }, - "patternProperties": { - "^[a-z][a-z0-9_-]+$": { - "description": "https://circleci.com/docs/reusing-config#invoking-reusable-commands\n\nA custom command defined via the top level commands key" - }, - "^[a-z][a-z0-9_-]+/[a-z][a-z0-9_-]+$": { - "description": "https://circleci.com/docs/using-orbs#commands\n\nA custom command defined via an orb." - } - } - } - ] - }, - "jobRef": { - "description": "Run a job as part of this workflow", - "type": "object", - "additionalProperties": true, - "properties": { - "requires": { - "description": "Jobs are run in parallel by default, so you must explicitly require any dependencies by their job name.", - "type": "array", - "items": { - "oneOf": [ - { - "description": "A dependency defined by their job name.", - "type": "string" - }, - { - "description": "A dependency defined by their job name, and required statuses.", - "type": "object", - "minProperties": 1, - "maxProperties": 1, - "patternProperties": { - "^[A-Za-z][A-Za-z\\s\\d_-]*$": { - "oneOf": [ - { - "description": "A status that the job must have to satisfy the dependency.", - "type": "string", - "enum": ["success", "failed", "canceled"] - }, - { - "description": "A list of statuses that the job must have one of to satisfy the dependency.", - "type": "array", - "minLength": 1, - "items": { - "type": "string", - "enum": ["success", "failed", "canceled"] - } - } - ] - } - } - } - ] - } - }, - "name": { - "description": "The name key can be used to ensure build numbers are not appended when invoking the same job multiple times (e.g., sayhello-1, sayhello-2). The name assigned needs to be unique, otherwise numbers will still be appended to the job name", - "type": "string" - }, - "context": { - "description": "Either a single context name, or a list of contexts. The default name is `org-global`", - "oneOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ], - "default": "org-global" - }, - "type": { - "description": "A job may have a `type` of `approval` indicating it must be manually approved before downstream jobs may proceed.", - "enum": ["approval"] - }, - "filters": { - "description": "A map defining rules for execution on specific branches", - "type": "object", - "additionalProperties": false, - "properties": { - "branches": { - "$ref": "#/definitions/filter" - }, - "tags": { - "$ref": "#/definitions/filter" - } - } - }, - "matrix": { - "description": "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.", - "type": "object", - "additionalProperties": false, - "required": ["parameters"], - "properties": { - "parameters": { - "description": "A map of parameter names to every value the job should be called with", - "type": "object", - "additionalProperties": { - "type": "array" - } - }, - "exclude": { - "description": "A list of argument maps that should be excluded from the matrix", - "type": "array", - "items": { - "type": "object" - } - }, - "alias": { - "description": "An alias for the matrix, usable from another job's requires stanza. Defaults to the name of the job being executed", - "type": "string" - } - } - }, - "override-with": { - "description": "This allows overriding the job to run with a different job definition. The provided job override must be an orb job.", - "type": "string" - } - } - }, - "jobs": { - "description": "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", - "additionalProperties": { - "type": "object", - "anyOf": [ - { - "$ref": "#/definitions/executorChoice" - }, - { - "type": "object", - "required": ["executor"], - "properties": { - "executor": { - "description": "The name of the executor to use (defined via the top level executors map).", - "type": "string" - } - } - }, - { - "type": "object", - "required": ["executor"], - "properties": { - "executor": { - "description": "Executor stanza to use for the job", - "type": "object", - "required": ["name"], - "properties": { - "name": { - "description": "The name of the executor to use (defined via the top level executors map).", - "type": "string" - } - } - } - } - } - ], - "required": ["steps"], - "properties": { - "shell": { - "description": "Shell to use for execution command in all steps. Can be overridden by shell in each step", - "type": "string" - }, - "steps": { - "description": "A list of steps to be performed", - "type": "array", - "items": { - "$ref": "#/definitions/step" - } - }, - "working_directory": { - "description": "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.", - "type": "string", - "default": "~/project" - }, - "parallelism": { - "description": "Number of parallel instances of this job to run (default: 1)", - "default": 1, - "oneOf": [ - { - "type": "integer" - }, - { - "type": "string", - "pattern": "^<<.+\\..+>>$" - } - ] - }, - "environment": { - "description": "A map of environment variable names and variables (NOTE: these will override any environment variables you set in the CircleCI web interface).", - "type": "object", - "additionalProperties": { - "type": ["string", "number"] - } - }, - "branches": { - "description": "A map defining rules for whitelisting/blacklisting execution of specific branches for a single job that is **not** in a workflow (default: all whitelisted). See Workflows for configuring branch execution for jobs in a workflow.", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "linuxResourceClass": { - "description": "Amount of CPU and RAM allocated for each job. View available resource classes for [x86](https://circleci.com/docs/configuration-reference/#docker-execution-environment) or [ARM](https://circleci.com/docs/configuration-reference/#arm-execution-environment-linux).", - "type": "string", - "enum": [ - "small", - "medium", - "medium+", - "large", - "xlarge", - "2xlarge", - "2xlarge+", - "arm.medium", - "arm.large", - "arm.xlarge", - "arm.2xlarge" - ] - }, - "linuxMachineImage": { - "description": "The LinuxVM image to use. View available images for [Ubuntu 20.04](https://circleci.com/developer/machine/image/ubuntu-2004), [Ubuntu 22.04](https://circleci.com/developer/machine/image/ubuntu-2204), or [Android](https://circleci.com/developer/machine/image/android). **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 Service documentation](https://circleci.com/docs/vm-service).", - "type": "string", - "enum": [ - "ubuntu-2004:2024.08.1", - "ubuntu-2004:2024.05.1", - "ubuntu-2004:2024.04.4", - "ubuntu-2004:2024.01.2", - "ubuntu-2004:2024.01.1", - "ubuntu-2004:2023.10.1", - "ubuntu-2004:2023.07.1", - "ubuntu-2004:2023.04.2", - "ubuntu-2004:2023.04.1", - "ubuntu-2004:2023.02.1", - "ubuntu-2004:2022.10.1", - "ubuntu-2004:2022.07.1", - "ubuntu-2004:2022.04.2", - "ubuntu-2004:2022.04.1", - "ubuntu-2004:202201-02", - "ubuntu-2004:202201-01", - "ubuntu-2004:202111-02", - "ubuntu-2004:202111-01", - "ubuntu-2004:202107-02", - "ubuntu-2004:202104-01", - "ubuntu-2004:202101-01", - "ubuntu-2004:202010-01", - "ubuntu-2004:current", - "ubuntu-2004:edge", - "ubuntu-2204:2024.08.1", - "ubuntu-2204:2024.05.1", - "ubuntu-2204:2024.04.4", - "ubuntu-2204:2024.01.2", - "ubuntu-2204:2024.01.1", - "ubuntu-2204:2023.10.1", - "ubuntu-2204:2023.07.2", - "ubuntu-2204:2023.04.2", - "ubuntu-2204:2023.04.1", - "ubuntu-2204:2023.02.1", - "ubuntu-2204:2022.10.2", - "ubuntu-2204:2022.10.1", - "ubuntu-2204:2022.07.2", - "ubuntu-2204:2022.07.1", - "ubuntu-2204:2022.04.2", - "ubuntu-2204:2022.04.1", - "ubuntu-2204:current", - "ubuntu-2204:edge", - "ubuntu-2404:2024.08.1", - "ubuntu-2404:2024.05.1", - "ubuntu-2404:current", - "ubuntu-2404:edge", - "android:2024.11.1", - "android:2024.07.1", - "android:2024.04.1", - "android:2024.01.1", - "android:2023.11.1", - "android:2023.10.1", - "android:2023.09.1", - "android:2023.08.1", - "android:2023.07.1", - "android:2023.06.1", - "android:2023.05.1", - "android:2023.04.1", - "android:2023.03.1", - "android:2023.02.1", - "android:2022.12.1", - "android:2022.09.1", - "android:2022.08.1", - "android:2022.07.1", - "android:2022.06.2", - "android:2022.06.1", - "android:2022.04.1", - "android:2022.03.1", - "android:2022.01.1", - "android:2021.12.1", - "android:2021.10.1", - "android:202102-01" - ] - }, - "windowsResourceClass": { - "description": "Amount of CPU and RAM allocated for each job. View [available resource classes](https://circleci.com/docs/configuration-reference/#windows-execution-environment).", - "type": "string", - "enum": [ - "windows.medium", - "windows.large", - "windows.xlarge", - "windows.2xlarge" - ] - }, - "windowsMachineImage": { - "description": "The Windows machine image to use. View available images for [Windows Server 2022](https://circleci.com/developer/machine/image/windows-server-2022-gui) or [Windows Server 2019](https://circleci.com/developer/machine/image/windows-server-2019).", - "type": "string", - "enum": [ - "windows-server-2019-vs2019:2024.05.1", - "windows-server-2019-vs2019:2024.01.1", - "windows-server-2019-vs2019:2023.10.1", - "windows-server-2019-vs2019:2023.08.1", - "windows-server-2019-vs2019:2023.04.1", - "windows-server-2019-vs2019:2022.08.1", - "windows-server-2019-vs2019:current", - "windows-server-2019-vs2019:edge", - "windows-server-2022-gui:2024.04.1", - "windows-server-2022-gui:2024.01.1", - "windows-server-2022-gui:2023.11.1", - "windows-server-2022-gui:2023.10.1", - "windows-server-2022-gui:2023.09.1", - "windows-server-2022-gui:2023.08.1", - "windows-server-2022-gui:2023.07.1", - "windows-server-2022-gui:2023.06.1", - "windows-server-2022-gui:2023.05.1", - "windows-server-2022-gui:2023.04.1", - "windows-server-2022-gui:2023.03.1", - "windows-server-2022-gui:2022.08.1", - "windows-server-2022-gui:2022.07.1", - "windows-server-2022-gui:2022.06.1", - "windows-server-2022-gui:2022.04.1", - "windows-server-2022-gui:current", - "windows-server-2022-gui:edge" - ] - }, - "linuxGPUResourceClass": { - "description": "Amount of CPU and RAM allocated for each job. View [available resource classes](https://circleci.com/docs/configuration-reference/#gpu-execution-environment-linux).", - "type": "string", - "enum": [ - "gpu.nvidia.small.gen2", - "gpu.nvidia.small.multi", - "gpu.nvidia.medium.multi", - "gpu.nvidia.medium", - "gpu.nvidia.large" - ] - }, - "linuxGPUMachineImage": { - "description": "The Linux GPU machine image to use. View available images for [CUDA 11](https://circleci.com/developer/machine/image/linux-cuda-11) or [CUDA 12](https://circleci.com/developer/machine/image/linux-cuda-12).", - "type": "string", - "enum": [ - "linux-cuda-11:default", - "linux-cuda-11:edge", - "linux-cuda-12:default", - "linux-cuda-12:edge" - ] - }, - "windowsGPUResourceClass": { - "description": "Amount of CPU and RAM allocated for each job. View [available resource classes](https://circleci.com/docs/configuration-reference/#gpu-execution-environment-windows).", - "type": "string", - "enum": ["windows.gpu.nvidia.medium"] - }, - "windowsGPUMachineImage": { - "description": "The Windows GPU machine image to use. View [available images](https://circleci.com/developer/machine/image/windows-server-2019-cuda).", - "type": "string", - "enum": [ - "windows-server-2019-cuda:current", - "windows-server-2019-cuda:edge" - ] - }, - "macOSResourceClass": { - "description": "Amount of CPU and RAM allocated for each job. View [available resource classes](https://circleci.com/docs/configuration-reference/#macos-execution-environment).", - "type": "string", - "enum": [ - "macos.m1.medium.gen1", - "macos.m1.large.gen1", - "m2pro.medium", - "m2pro.large" - ] - }, - "xcodeVersion": { - "description": "The version of Xcode to use. View [available versions](https://circleci.com/developer/machine/image/xcode)", - "type": "string", - "enum": [ - "16.2.0", - "16.1.0", - "16.0.0", - "15.4.0", - "15.3.0", - "15.2.0", - "15.1.0", - "15.0.0", - "14.3.1", - "14.2.0", - "14.1.0", - "14.0.1", - "13.4.1", - "12.5.1" - ] - }, - "selfHostedRunnerResourceClass": { - "type": "string", - "pattern": "^[^/\\s]+/\\S+$" - } - }, - "properties": { - "version": { - "description": "The version field is intended to be used in order to issue warnings for deprecation or breaking changes.", - "default": 2.1, - "enum": [2, 2.1] - }, - "orbs": { - "$ref": "#/definitions/orbs" - }, - "commands": { - "$ref": "#/definitions/commands" - }, - "executors": { - "$ref": "#/definitions/executors" - }, - "jobs": { - "$ref": "#/definitions/jobs", - "propertyNames": { - "pattern": "^[A-Za-z][A-Za-z\\s\\d_-]*$" - } - }, - "workflows": { - "description": "Used for orchestrating all jobs. Each workflow consists of the workflow name as a key and a map as a value", - "type": "object", - "properties": { - "version": { - "description": "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", - "enum": [2] - } - }, - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "triggers": { - "description": "Specifies which triggers will cause this workflow to be executed. Default behavior is to trigger the workflow when pushing to a branch.", - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "schedule": { - "description": "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", - "type": "object", - "properties": { - "cron": { - "description": "See the [crontab man page](http://pubs.opengroup.org/onlinepubs/7908799/xcu/crontab.html)", - "type": "string" - }, - "filters": { - "description": "A map defining rules for execution on specific branches", - "type": "object", - "additionalProperties": false, - "properties": { - "branches": { - "$ref": "#/definitions/filter" - } - } - } - } - } - } - } - }, - "jobs": { - "type": "array", - "items": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/jobRef", - "type": "object" - } - } - ] - } - }, - "when": { - "$ref": "#/definitions/logical", - "description": "Specify when to run the workflow." - }, - "unless": { - "$ref": "#/definitions/logical", - "description": "Specify when *not* to run the workflow." - } - } - } - } - }, - "required": ["version"], - "title": "JSON schema for CircleCI configuration files", - "type": "object" -} +{ + "$schema": "http://json-schema.org/draft-06/schema#", + "$id": "https://json.schemastore.org/circleciconfig.json", + "$ref": "https://raw.githubusercontent.com/CircleCI-Public/circleci-yaml-language-server/refs/heads/main/schema.json", + "title": "CircleCI Config", + "type": "object" +} diff --git a/src/check_jsonschema/builtin_schemas/vendor/cloudbuild.json b/src/check_jsonschema/builtin_schemas/vendor/cloudbuild.json index 8a5304164..52c144c88 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/cloudbuild.json +++ b/src/check_jsonschema/builtin_schemas/vendor/cloudbuild.json @@ -1,533 +1,533 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://json.schemastore.org/cloudbuild", - "$comment": "See the Cloud Build config schema at https://cloud.google.com/build/docs/build-config-file-schema for the definitions.", - "definitions": { - "automapSubstitutions": { - "description": "If set to true, automatically map all subsistutions and make them available as environment variables in a single step. If set to false, ignore substitutions for that step. Can be used for a build step or for an entire build.", - "markdownDescription": "If set to true, automatically map all subsistutions and make them available as environment variables in a single step. If set to false, ignore substitutions for that step. Can be used for a build step or for an entire build.", - "type": "boolean", - "examples": [true, false] - }, - "BuildStep": { - "description": "A step in the build pipeline.", - "type": "object", - "additionalProperties": false, - "properties": { - "name": { - "description": "Required. The name of the container image that will run this particular build step. If the image is available in the host's Docker daemon's cache, it will be run directly. If not, the host will attempt to pull the image first, using the builder service account's credentials if necessary.\n\nThe Docker daemon's cache will already have the latest versions of all of the officially supported build steps. The Docker daemon will also have cached many of the layers for some popular images, like \"ubuntu\", \"debian\", but they will be refreshed at the time you attempt to use them.\n\nIf you built an image in a previous build step, it will be stored in the host's Docker daemon's cache and is available to use as the name for a later build step.", - "markdownDescription": "Required. The name of the container image that will run this particular build step. If the image is available in the host's Docker daemon's cache, it will be run directly. If not, the host will attempt to pull the image first, using the builder service account's credentials if necessary.\n\nThe Docker daemon's cache will already have the latest versions of all of the [officially supported build steps](https://github.com/GoogleCloudPlatform/cloud-builders). The Docker daemon will also have cached many of the layers for some popular images, like `ubuntu`, `debian`, but they will be refreshed at the time you attempt to use them.\n\nIf you built an image in a previous build step, it will be stored in the host's Docker daemon's cache and is available to use as the name for a later build step.", - "type": "string" - }, - "allowFailure": { - "description": "In a build step, if you set the value of the allowFailure field to true, and the build step fails, then the build succeeds as long as all other build steps in that build succeed.", - "markdownDescription": "In a build step, if you set the value of the `allowFailure` field to `true`, and the build step fails, then the build succeeds as long as all other build steps in that build succeed.", - "type": "boolean" - }, - "allowExitCodes": { - "description": "Specify that a build step failure can be ignored when that step returns a particular exit code.", - "type": "array", - "items": { - "type": "integer" - }, - "examples": [1, 2] - }, - "automapSubstitutions": { - "$ref": "#/definitions/automapSubstitutions" - }, - "waitFor": { - "description": "The ID(s) of the step(s) that this build step depends on. This build step will not start until all the build steps in waitFor have completed successfully. If waitFor is empty, this build step will start when all previous build steps in the list have completed successfully. If waitFor is set to '-', the step runs immediately when the build starts.", - "markdownDescription": "The `id`(s) of the step(s) that this build step depends on. This build step will not start until all the build steps in `waitFor` have completed successfully. If `waitFor` is empty, this build step will start when all previous build steps in the list have completed successfully. If `waitFor` is set to `'-'`, the step runs immediately when the build starts.", - "type": "array", - "items": { - "type": "string", - "examples": [["-"], ["terraform-init", "terraform-apply"]] - } - }, - "env": { - "description": "A list of environment variable definitions to be used when running a step. The elements are of the form \"KEY=VALUE\" for the environment variable \"KEY\" being given the value \"VALUE\".", - "markdownDescription": "A list of environment variable definitions to be used when running a step. The elements are of the form `KEY=VALUE` for the environment variable `KEY` being given the value `VALUE`.", - "type": "array", - "items": { - "type": "string" - } - }, - "entrypoint": { - "description": "Entrypoint to be used instead of the build step image's default entrypoint. If unset, the image's default entrypoint is used.", - "markdownDescription": "Entrypoint to be used instead of the build step image's default `entrypoint`. If unset, the image's default `entrypoint` is used.", - "type": "string" - }, - "script": { - "description": "Specify a shell script to execute in the step. If you specify script in a build step, you cannot specify args or entrypoint in the same step.", - "markdownDescription": "Specify a shell script to execute in the step. If you specify script in a build step, you cannot specify `args` or `entrypoint` in the same step.", - "type": "string" - }, - "volumes": { - "description": "List of volumes to mount into the build step. Each volume is created as an empty volume prior to execution of the build step. Upon completion of the build, volumes and their contents are discarded. Using a named volume in only one step is not valid as it is indicative of a build request with an incorrect configuration.", - "type": "array", - "items": { - "$ref": "#/definitions/Volume" - } - }, - "args": { - "description": "A list of arguments that will be presented to the step when it is started.\n\nIf the image used to run the step's container has an entrypoint, the args are used as arguments to that entrypoint. If the image does not define an entrypoint, the first element in args is used as the entrypoint, and the remainder will be used as arguments.", - "markdownDescription": "A list of arguments that will be presented to the step when it is started.\n\nIf the image used to run the step's container has an `entrypoint`, the `args` are used as arguments to that `entrypoint`. If the image does not define an `entrypoint`, the first element in `args` is used as the `entrypoint`, and the remainder will be used as arguments.", - "type": "array", - "items": { - "type": "string" - } - }, - "timeout": { - "$ref": "#/definitions/Timeout", - "description": "Time limit for executing this build step. If not defined, the step has no time limit and will be allowed to continue to run until either it completes or the build itself times out." - }, - "id": { - "description": "Unique identifier for this build step, used in waitFor to reference this build step as a dependency.", - "markdownDescription": "Unique identifier for this build step, used in `waitFor` to reference this build step as a dependency.", - "type": "string" - }, - "secretEnv": { - "description": "A list of environment variables which are encrypted using a Cloud Key Management Service crypto key. These values must be specified in the build's Secret.", - "type": "array", - "items": { - "type": "string" - } - }, - "dir": { - "description": "Working directory to use when running this step's container.\n\nIf this value is a relative path, it is relative to the build's working directory. If this value is absolute, it may be outside the build's working directory, in which case the contents of the path may not be persisted across build step executions, unless a volume for that path is specified. If the build specifies a RepoSource with dir and a step with a dir, which specifies an absolute path, the RepoSource dir is ignored for the step's execution.", - "markdownDescription": "Working directory to use when running this step's container.\n\nIf this value is a relative path, it is relative to the build's working directory. If this value is absolute, it may be outside the build's working directory, in which case the contents of the path may not be persisted across build step executions, unless a volume for that path is specified. If the build specifies a `RepoSource` with `dir` and a step with a `dir`, which specifies an absolute path, the `RepoSource` `dir` is ignored for the step's execution.", - "type": "string" - } - } - }, - "BuildOptions": { - "description": "Optional arguments to enable specific features of builds.", - "type": "object", - "additionalProperties": false, - "properties": { - "automapSubstitutions": { - "$ref": "#/definitions/automapSubstitutions" - }, - "machineType": { - "description": "Compute Engine machine type on which to run the build.", - "type": "string", - "enum": [ - "E2_HIGHCPU_8", - "E2_HIGHCPU_32", - "E2_MEDIUM", - "N1_HIGHCPU_8", - "N1_HIGHCPU_32", - "UNSPECIFIED" - ], - "enumDescriptions": [ - "e2 HighCPU: 8 vCPUs, 8GB RAM", - "e2 HighCPU: 32 vCPUs, 32GB RAM", - "e2 Medium: 1 vCPU, 4GB RAM", - "n1 HighCPU: 8 vCPUs, 7.2GB RAM", - "n1 HighCPU: 32 vCPUs, 28.8GB RAM", - "e2 Standard: 2 vCPU, 8GB RAM" - ], - "default": "UNSPECIFIED" - }, - "volumes": { - "description": "Global list of volumes to mount for ALL build steps. Each volume is created as an empty volume prior to starting the build process. Upon completion of the build, volumes and their contents are discarded. Global volume names and paths cannot conflict with the volumes defined a build step. Using a global volume in a build with only one step is not valid as it is indicative of a build request with an incorrect configuration.", - "type": "array", - "items": { - "$ref": "#/definitions/Volume" - } - }, - "logStreamingOption": { - "description": "Option to define build log streaming behavior to Google Cloud Storage.", - "type": "string", - "enum": ["STREAM_DEFAULT", "STREAM_ON", "STREAM_OFF"], - "enumDescriptions": [ - "Service may automatically determine build log streaming behavior.", - "Build logs should be streamed to Google Cloud Storage.", - "Build logs should not be streamed to Google Cloud Storage; they will be written when the build is completed." - ] - }, - "pool": { - "description": "Set the value of this field to the resource name of the private pool to run the build.", - "type": "object", - "properties": { - "name": { - "description": "Required. The full resource name of the private pool of the form 'projects/$PRIVATEPOOL_PROJECT_ID/locations/$REGION/workerPools/$PRIVATEPOOL_ID'.", - "markdownDescription": "Required. The full resource name of the private pool of the form `projects/$PRIVATEPOOL_PROJECT_ID/locations/$REGION/workerPools/$PRIVATEPOOL_ID`.", - "type": "string" - } - }, - "additionalProperties": false, - "required": ["name"] - }, - "env": { - "description": "A list of global environment variable definitions that will exist for all build steps in this build.\n\nIf a variable is defined both globally and in a build step, the variable will use the build step value. The elements are of the form \"KEY=VALUE\" for the environment variable \"KEY\" being given the value \"VALUE\".", - "markdownDescription": "A list of global environment variable definitions that will exist for all build steps in this build.\n\nIf a variable is defined both globally and in a build step, the variable will use the build step value. The elements are of the form `KEY=VALUE` for the environment variable `KEY` being given the value `VALUE`.", - "type": "array", - "items": { - "type": "string" - } - }, - "logging": { - "description": "Option to specify the logging mode, which determines where the logs are stored.", - "type": "string", - "enum": [ - "LOGGING_UNSPECIFIED", - "LEGACY", - "GCS_ONLY", - "CLOUD_LOGGING_ONLY", - "NONE" - ], - "enumDescriptions": [ - "The service determines the logging mode. The default is LEGACY. Do not rely on the default logging behavior as it may change in the future.", - "Stackdriver logging and Cloud Storage logging are enabled.", - "Only Cloud Storage logging is enabled.", - "Only Cloud Logging is enabled. Note that logs for both the Cloud Console UI and Cloud SDK are based on Cloud Storage logs, so neither will provide logs if this option is chosen.", - "Turn off all logging. No build logs will be captured." - ] - }, - "defaultLogsBucketBehavior": { - "description": "Configure Cloud Build to create a default logs bucket within your own project in the same region as your build.", - "type": "string", - "enum": [ - "DEFAULT_LOGS_BUCKET_BEHAVIOR_UNSPECIFIED", - "REGIONAL_USER_OWNED_BUCKET" - ], - "enumDescriptions": [ - "Unspecified", - "Configure Cloud Build to use regionalized, user-owned logs." - ] - }, - "requestedVerifyOption": { - "description": "Requested verifiability options.", - "type": "string", - "enum": ["NOT_VERIFIED", "VERIFIED"], - "enumDescriptions": [ - "Not a verifiable build. (default)", - "Verified build." - ] - }, - "substitutionOption": { - "description": "Option to specify behavior when there is an error in the substitution checks.", - "type": "string", - "enum": ["MUST_MATCH", "ALLOW_LOOSE"], - "enumDescriptions": [ - "Fails the build if error in substitutions checks, like missing a substitution in the template or in the map.", - "Do not fail the build if error in substitutions checks." - ] - }, - "dynamicSubstitutions": { - "description": "Use this option to explicitly enable or disable bash parameter expansion in substitutions.\n\nIf your build is invoked by a trigger, the dynamicSubstitutions field is always set to true and does not need to be specified in your build config file. If your build is invoked manually, you must set the dynamicSubstitutions field to true for bash parameter expansions to be interpreted when running your build.", - "markdownDescription": "Use this option to explicitly enable or disable bash parameter expansion in substitutions.\n\nIf your build is invoked by a trigger, the `dynamicSubstitutions` field is always set to `true` and does not need to be specified in your build config file. If your build is invoked manually, you must set the `dynamicSubstitutions` field to `true` for bash parameter expansions to be interpreted when running your build.", - "type": "boolean" - }, - "diskSizeGb": { - "description": "Requested disk size for the VM that runs the build.\n\nNote that this is *NOT* \"disk free\"; some of the space will be used by the operating system and build utilities. Also note that this is the minimum disk size that will be allocated for the build -- the build may run with a larger disk than requested. At present, the maximum disk size is 2000GB; builds that request more than the maximum are rejected with an error.", - "oneOf": [ - { - "type": "integer", - "minimum": 1, - "maximum": 2000 - }, - { - "type": "string", - "pattern": "^(?:[1-9]\\d{0,2}|1\\d{3}|2000)$" - } - ], - "examples": [30, 50, "100", 200, "300"] - }, - "secretEnv": { - "description": "A list of global environment variables, which are encrypted using a Cloud Key Management Service crypto key. These values must be specified in the build's Secret. These variables will be available to all build steps in this build.", - "type": "array", - "items": { - "type": "string" - } - }, - "sourceProvenanceHash": { - "description": "Requested hash for SourceProvenance.", - "type": "array", - "items": { - "enum": ["NONE", "SHA256", "MD5"], - "type": "string" - }, - "enumDescriptions": [ - "No hash requested.", - "Use a sha256 hash.", - "Use a md5 hash." - ] - } - } - }, - "Secret": { - "description": "Pairs a set of secret environment variables containing encrypted values with the Cloud KMS key to use to decrypt the value.", - "type": "object", - "properties": { - "kmsKeyName": { - "type": "string", - "description": "Cloud KMS key name to use to decrypt these envs." - }, - "secretEnv": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Map of environment variable name to its encrypted value. Secret environment variables must be unique across all of a build's secrets, and must be used by at least one build step. Values can be at most 64 KB in size. There can be at most 100 secret values across all of a build's secrets." - } - } - }, - "Artifacts": { - "description": "Artifacts produced by a build that should be uploaded upon successful completion of all build steps.", - "type": "object", - "properties": { - "objects": { - "$ref": "#/definitions/ArtifactObjects", - "description": "A list of objects to be uploaded to Cloud Storage upon successful completion of all build steps. Files in the workspace matching specified paths globs will be uploaded to the specified Cloud Storage location using the builder service account's credentials. The location and generation of the uploaded objects will be stored in the Build resource's results field. If any objects fail to be pushed, the build is marked FAILURE.", - "markdownDescription": "A list of objects to be uploaded to Cloud Storage upon successful completion of all build steps. Files in the workspace matching specified paths globs will be uploaded to the specified Cloud Storage location using the builder service account's credentials. The location and generation of the uploaded objects will be stored in the Build resource's results field. If any objects fail to be pushed, the build is marked `FAILURE`." - }, - "goModules": { - "description": "Allows you to upload non-container Go modules to Go repositories in Artifact Registry.", - "type": "array", - "items": { - "$ref": "#/definitions/GoModules" - } - }, - "mavenArtifacts": { - "description": "Allows you to upload non-container Java artifacts to Maven repositories in Artifact Registry.", - "type": "array", - "items": { - "$ref": "#/definitions/MavenArtifacts" - } - }, - "pythonPackages": { - "description": "Allows you to upload Python packages to Artifact Registry.", - "type": "array", - "items": { - "$ref": "#/definitions/PythonPackages" - } - }, - "npmPackages": { - "description": "Uploads your built NPM packages to supported repositories.", - "type": "array", - "items": { - "$ref": "#/definitions/NpmPackages" - } - } - } - }, - "ArtifactObjects": { - "description": "Files in the workspace to upload to Cloud Storage upon successful completion of all build steps.", - "type": "object", - "properties": { - "location": { - "description": "Cloud Storage bucket and optional object path, in the form \"gs://bucket/path/to/somewhere/\". Files in the workspace matching any path pattern will be uploaded to Cloud Storage with this location as a prefix.", - "markdownDescription": "Cloud Storage bucket and optional object path, in the form `gs://bucket/path/to/somewhere/`. See the [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements). Files in the workspace matching any path pattern will be uploaded to Cloud Storage with this location as a prefix.", - "type": "string" - }, - "paths": { - "description": "Path globs used to match files in the build's workspace.", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "GoModules": { - "description": "Allows you to upload non-container Go modules to Go repositories in Artifact Registry.", - "type": "object", - "additionalProperties": false, - "properties": { - "repositoryName": { - "description": "The name of your Go repository in Artifact Registry.", - "type": "string" - }, - "repositoryLocation": { - "description": "The location for your repository in Artifact Registry.", - "type": "string" - }, - "repositoryProject_id": { - "description": "The ID of the Google Cloud project that contains your Artifact Registry Go repository.", - "type": "string" - }, - "sourcePath": { - "description": "The path to the go.mod file in the build's workspace.", - "type": "string" - }, - "modulePath": { - "description": "The local directory that contains the Go module to upload. It is recommended to use an absolute path for the value.", - "type": "string" - }, - "moduleVersion": { - "description": "The version of the Go module.", - "type": "string" - } - }, - "required": [ - "repositoryName", - "repositoryLocation", - "repositoryProject_id", - "sourcePath", - "modulePath", - "moduleVersion" - ] - }, - "MavenArtifacts": { - "description": "Allows you to upload non-container Java artifacts to Maven repositories in Artifact Registry.", - "type": "object", - "additionalProperties": false, - "properties": { - "repository": { - "description": "Required. Name of the Artifact Registry repository to store Java artifacts.", - "type": "string" - }, - "path": { - "description": "Required. The application file path.", - "type": "string" - }, - "artifactId": { - "description": "Required. Name of your package file created from your build step", - "type": "string" - }, - "groupId": { - "description": "Required. Uniquely identifies your project across all Maven projects, in the format com.mycompany.app.", - "markdownDescription": "Required. Uniquely identifies your project across all Maven projects, in the format `com.mycompany.app`.", - "type": "string" - }, - "version": { - "description": "Required. The version number for your application.", - "type": "string" - } - }, - "required": ["repository", "path", "artifactId", "groupId", "version"] - }, - "PythonPackages": { - "description": "Allows you to upload Python packages to Artifact Registry.", - "type": "object", - "additionalProperties": false, - "properties": { - "repository": { - "description": "Required. Name of the Artifact Registry repository to store the Python package.", - "type": "string" - }, - "paths": { - "description": "Required. The package file paths.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": ["repository", "paths"] - }, - "NpmPackages": { - "description": "Uploads your built NPM packages to supported repositories.", - "type": "object", - "additionalProperties": false, - "properties": { - "repository": { - "description": "Required. Name of the Artifact Registry repository to store the NPM package.", - "type": "string" - }, - "packagePath": { - "description": "Required. The path for the local directory containing the NPM package that you want to upload to Artifact Registry. Google recommends using an absolute path. Your packagePath value can be . to use the current working directory, but the field cannot be omitted or left empty. This directory must contain a package.json file.", - "markdownDescription": "Required. The path for the local directory containing the NPM package that you want to upload to Artifact Registry. Google recommends using an absolute path. Your `packagePath` value can be `.` to use the current working directory, but the field cannot be omitted or left empty. This directory must contain a `package.json` file.", - "type": "string" - } - }, - "required": ["repository", "packagePath"] - }, - "Volume": { - "description": "Volume describes a Docker container volume which is mounted into build steps in order to persist files across build step execution.", - "type": "object", - "properties": { - "name": { - "description": "Name of the volume to mount. Volume names must be unique per build step and must be valid names for Docker volumes. Each named volume must be used by at least two build steps.", - "type": "string" - }, - "path": { - "description": "Path at which to mount the volume. Paths must be absolute and cannot conflict with other volume paths on the same build step or with certain reserved volume paths.", - "type": "string" - } - } - }, - "Timeout": { - "description": "Time limit for executing the build or particular build step. The timeout field of a build step specifies the amount of time the step is allowed to run, and the timeout field of a build specifies the amount of time the build is allowed to run.", - "markdownDescription": "Time limit for executing the build or particular build step. The `timeout` field of a build step specifies the amount of time the step is allowed to run, and the `timeout` field of a build specifies the amount of time the build is allowed to run.", - "type": "string", - "pattern": "^\\d+(\\.\\d{0,9})?s$", - "examples": ["3.5s", "120s"] - } - }, - "description": "A build resource in the Cloud Build API.", - "properties": { - "steps": { - "type": "array", - "items": { - "$ref": "#/definitions/BuildStep" - }, - "description": "Required. The operations to be performed on the workspace." - }, - "logsBucket": { - "description": "Google Cloud Storage bucket where logs should be written. Logs file names will be of the format ${logs_bucket}/log-${build_id}.txt.", - "markdownDescription": "Google Cloud Storage bucket where logs should be written. See [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements). Logs file names will be of the format `${logs_bucket}/log-${build_id}.txt`.", - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Tags for organizing and filtering builds." - }, - "substitutions": { - "additionalProperties": { - "type": "string" - }, - "description": "Substitutions data for Build resource.", - "type": "object" - }, - "images": { - "description": "A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account's credentials. The digests of the pushed images will be stored in the Build resource's results field. If any of the images fail to be pushed, the build status is marked FAILURE.", - "markdownDescription": "A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account's credentials. The digests of the pushed images will be stored in the Build resource's results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.", - "type": "array", - "items": { - "type": "string" - } - }, - "options": { - "$ref": "#/definitions/BuildOptions", - "description": "Special options for this build." - }, - "artifacts": { - "$ref": "#/definitions/Artifacts", - "description": "Artifacts produced by the build that should be uploaded upon successful completion of all build steps." - }, - "timeout": { - "$ref": "#/definitions/Timeout", - "description": "Amount of time that this build should be allowed to run, to second granularity. If this amount of time elapses, work on the build will cease and the build status will be TIMEOUT.", - "markdownDescription": "Amount of time that this build should be allowed to run, to second granularity. If this amount of time elapses, work on the build will cease and the build status will be `TIMEOUT`.", - "default": "600s" - }, - "secrets": { - "description": "Secrets to decrypt using Cloud Key Management Service.", - "type": "array", - "items": { - "$ref": "#/definitions/Secret" - } - }, - "serviceAccount": { - "description": "Use this field to specify the IAM service account to use at build time.", - "type": "string" - }, - "queueTtl": { - "description": "Specifies the amount of time a build can be queued. If a build is in the queue for longer than the value set in queueTtl, the build expires and the build status is set to EXPIRED.", - "markdownDescription": "Specifies the amount of time a build can be queued. If a build is in the queue for longer than the value set in `queueTtl`, the build expires and the build status is set to `EXPIRED`.", - "type": "string", - "pattern": "^\\d+(\\.\\d{0,9})?s$", - "examples": ["3.5s", "120s"], - "default": "3600s" - } - }, - "required": ["steps"], - "title": "Google Cloud Build build config file", - "type": "object" -} +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://json.schemastore.org/cloudbuild", + "$comment": "See the Cloud Build config schema at https://cloud.google.com/build/docs/build-config-file-schema for the definitions.", + "definitions": { + "automapSubstitutions": { + "description": "If set to true, automatically map all subsistutions and make them available as environment variables in a single step. If set to false, ignore substitutions for that step. Can be used for a build step or for an entire build.", + "markdownDescription": "If set to true, automatically map all subsistutions and make them available as environment variables in a single step. If set to false, ignore substitutions for that step. Can be used for a build step or for an entire build.", + "type": "boolean", + "examples": [true, false] + }, + "BuildStep": { + "description": "A step in the build pipeline.", + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "description": "Required. The name of the container image that will run this particular build step. If the image is available in the host's Docker daemon's cache, it will be run directly. If not, the host will attempt to pull the image first, using the builder service account's credentials if necessary.\n\nThe Docker daemon's cache will already have the latest versions of all of the officially supported build steps. The Docker daemon will also have cached many of the layers for some popular images, like \"ubuntu\", \"debian\", but they will be refreshed at the time you attempt to use them.\n\nIf you built an image in a previous build step, it will be stored in the host's Docker daemon's cache and is available to use as the name for a later build step.", + "markdownDescription": "Required. The name of the container image that will run this particular build step. If the image is available in the host's Docker daemon's cache, it will be run directly. If not, the host will attempt to pull the image first, using the builder service account's credentials if necessary.\n\nThe Docker daemon's cache will already have the latest versions of all of the [officially supported build steps](https://github.com/GoogleCloudPlatform/cloud-builders). The Docker daemon will also have cached many of the layers for some popular images, like `ubuntu`, `debian`, but they will be refreshed at the time you attempt to use them.\n\nIf you built an image in a previous build step, it will be stored in the host's Docker daemon's cache and is available to use as the name for a later build step.", + "type": "string" + }, + "allowFailure": { + "description": "In a build step, if you set the value of the allowFailure field to true, and the build step fails, then the build succeeds as long as all other build steps in that build succeed.", + "markdownDescription": "In a build step, if you set the value of the `allowFailure` field to `true`, and the build step fails, then the build succeeds as long as all other build steps in that build succeed.", + "type": "boolean" + }, + "allowExitCodes": { + "description": "Specify that a build step failure can be ignored when that step returns a particular exit code.", + "type": "array", + "items": { + "type": "integer" + }, + "examples": [1, 2] + }, + "automapSubstitutions": { + "$ref": "#/definitions/automapSubstitutions" + }, + "waitFor": { + "description": "The ID(s) of the step(s) that this build step depends on. This build step will not start until all the build steps in waitFor have completed successfully. If waitFor is empty, this build step will start when all previous build steps in the list have completed successfully. If waitFor is set to '-', the step runs immediately when the build starts.", + "markdownDescription": "The `id`(s) of the step(s) that this build step depends on. This build step will not start until all the build steps in `waitFor` have completed successfully. If `waitFor` is empty, this build step will start when all previous build steps in the list have completed successfully. If `waitFor` is set to `'-'`, the step runs immediately when the build starts.", + "type": "array", + "items": { + "type": "string", + "examples": [["-"], ["terraform-init", "terraform-apply"]] + } + }, + "env": { + "description": "A list of environment variable definitions to be used when running a step. The elements are of the form \"KEY=VALUE\" for the environment variable \"KEY\" being given the value \"VALUE\".", + "markdownDescription": "A list of environment variable definitions to be used when running a step. The elements are of the form `KEY=VALUE` for the environment variable `KEY` being given the value `VALUE`.", + "type": "array", + "items": { + "type": "string" + } + }, + "entrypoint": { + "description": "Entrypoint to be used instead of the build step image's default entrypoint. If unset, the image's default entrypoint is used.", + "markdownDescription": "Entrypoint to be used instead of the build step image's default `entrypoint`. If unset, the image's default `entrypoint` is used.", + "type": "string" + }, + "script": { + "description": "Specify a shell script to execute in the step. If you specify script in a build step, you cannot specify args or entrypoint in the same step.", + "markdownDescription": "Specify a shell script to execute in the step. If you specify script in a build step, you cannot specify `args` or `entrypoint` in the same step.", + "type": "string" + }, + "volumes": { + "description": "List of volumes to mount into the build step. Each volume is created as an empty volume prior to execution of the build step. Upon completion of the build, volumes and their contents are discarded. Using a named volume in only one step is not valid as it is indicative of a build request with an incorrect configuration.", + "type": "array", + "items": { + "$ref": "#/definitions/Volume" + } + }, + "args": { + "description": "A list of arguments that will be presented to the step when it is started.\n\nIf the image used to run the step's container has an entrypoint, the args are used as arguments to that entrypoint. If the image does not define an entrypoint, the first element in args is used as the entrypoint, and the remainder will be used as arguments.", + "markdownDescription": "A list of arguments that will be presented to the step when it is started.\n\nIf the image used to run the step's container has an `entrypoint`, the `args` are used as arguments to that `entrypoint`. If the image does not define an `entrypoint`, the first element in `args` is used as the `entrypoint`, and the remainder will be used as arguments.", + "type": "array", + "items": { + "type": "string" + } + }, + "timeout": { + "$ref": "#/definitions/Timeout", + "description": "Time limit for executing this build step. If not defined, the step has no time limit and will be allowed to continue to run until either it completes or the build itself times out." + }, + "id": { + "description": "Unique identifier for this build step, used in waitFor to reference this build step as a dependency.", + "markdownDescription": "Unique identifier for this build step, used in `waitFor` to reference this build step as a dependency.", + "type": "string" + }, + "secretEnv": { + "description": "A list of environment variables which are encrypted using a Cloud Key Management Service crypto key. These values must be specified in the build's Secret.", + "type": "array", + "items": { + "type": "string" + } + }, + "dir": { + "description": "Working directory to use when running this step's container.\n\nIf this value is a relative path, it is relative to the build's working directory. If this value is absolute, it may be outside the build's working directory, in which case the contents of the path may not be persisted across build step executions, unless a volume for that path is specified. If the build specifies a RepoSource with dir and a step with a dir, which specifies an absolute path, the RepoSource dir is ignored for the step's execution.", + "markdownDescription": "Working directory to use when running this step's container.\n\nIf this value is a relative path, it is relative to the build's working directory. If this value is absolute, it may be outside the build's working directory, in which case the contents of the path may not be persisted across build step executions, unless a volume for that path is specified. If the build specifies a `RepoSource` with `dir` and a step with a `dir`, which specifies an absolute path, the `RepoSource` `dir` is ignored for the step's execution.", + "type": "string" + } + } + }, + "BuildOptions": { + "description": "Optional arguments to enable specific features of builds.", + "type": "object", + "additionalProperties": false, + "properties": { + "automapSubstitutions": { + "$ref": "#/definitions/automapSubstitutions" + }, + "machineType": { + "description": "Compute Engine machine type on which to run the build.", + "type": "string", + "enum": [ + "E2_HIGHCPU_8", + "E2_HIGHCPU_32", + "E2_MEDIUM", + "N1_HIGHCPU_8", + "N1_HIGHCPU_32", + "UNSPECIFIED" + ], + "enumDescriptions": [ + "e2 HighCPU: 8 vCPUs, 8GB RAM", + "e2 HighCPU: 32 vCPUs, 32GB RAM", + "e2 Medium: 1 vCPU, 4GB RAM", + "n1 HighCPU: 8 vCPUs, 7.2GB RAM", + "n1 HighCPU: 32 vCPUs, 28.8GB RAM", + "e2 Standard: 2 vCPU, 8GB RAM" + ], + "default": "UNSPECIFIED" + }, + "volumes": { + "description": "Global list of volumes to mount for ALL build steps. Each volume is created as an empty volume prior to starting the build process. Upon completion of the build, volumes and their contents are discarded. Global volume names and paths cannot conflict with the volumes defined a build step. Using a global volume in a build with only one step is not valid as it is indicative of a build request with an incorrect configuration.", + "type": "array", + "items": { + "$ref": "#/definitions/Volume" + } + }, + "logStreamingOption": { + "description": "Option to define build log streaming behavior to Google Cloud Storage.", + "type": "string", + "enum": ["STREAM_DEFAULT", "STREAM_ON", "STREAM_OFF"], + "enumDescriptions": [ + "Service may automatically determine build log streaming behavior.", + "Build logs should be streamed to Google Cloud Storage.", + "Build logs should not be streamed to Google Cloud Storage; they will be written when the build is completed." + ] + }, + "pool": { + "description": "Set the value of this field to the resource name of the private pool to run the build.", + "type": "object", + "properties": { + "name": { + "description": "Required. The full resource name of the private pool of the form 'projects/$PRIVATEPOOL_PROJECT_ID/locations/$REGION/workerPools/$PRIVATEPOOL_ID'.", + "markdownDescription": "Required. The full resource name of the private pool of the form `projects/$PRIVATEPOOL_PROJECT_ID/locations/$REGION/workerPools/$PRIVATEPOOL_ID`.", + "type": "string" + } + }, + "additionalProperties": false, + "required": ["name"] + }, + "env": { + "description": "A list of global environment variable definitions that will exist for all build steps in this build.\n\nIf a variable is defined both globally and in a build step, the variable will use the build step value. The elements are of the form \"KEY=VALUE\" for the environment variable \"KEY\" being given the value \"VALUE\".", + "markdownDescription": "A list of global environment variable definitions that will exist for all build steps in this build.\n\nIf a variable is defined both globally and in a build step, the variable will use the build step value. The elements are of the form `KEY=VALUE` for the environment variable `KEY` being given the value `VALUE`.", + "type": "array", + "items": { + "type": "string" + } + }, + "logging": { + "description": "Option to specify the logging mode, which determines where the logs are stored.", + "type": "string", + "enum": [ + "LOGGING_UNSPECIFIED", + "LEGACY", + "GCS_ONLY", + "CLOUD_LOGGING_ONLY", + "NONE" + ], + "enumDescriptions": [ + "The service determines the logging mode. The default is LEGACY. Do not rely on the default logging behavior as it may change in the future.", + "Stackdriver logging and Cloud Storage logging are enabled.", + "Only Cloud Storage logging is enabled.", + "Only Cloud Logging is enabled. Note that logs for both the Cloud Console UI and Cloud SDK are based on Cloud Storage logs, so neither will provide logs if this option is chosen.", + "Turn off all logging. No build logs will be captured." + ] + }, + "defaultLogsBucketBehavior": { + "description": "Configure Cloud Build to create a default logs bucket within your own project in the same region as your build.", + "type": "string", + "enum": [ + "DEFAULT_LOGS_BUCKET_BEHAVIOR_UNSPECIFIED", + "REGIONAL_USER_OWNED_BUCKET" + ], + "enumDescriptions": [ + "Unspecified", + "Configure Cloud Build to use regionalized, user-owned logs." + ] + }, + "requestedVerifyOption": { + "description": "Requested verifiability options.", + "type": "string", + "enum": ["NOT_VERIFIED", "VERIFIED"], + "enumDescriptions": [ + "Not a verifiable build. (default)", + "Verified build." + ] + }, + "substitutionOption": { + "description": "Option to specify behavior when there is an error in the substitution checks.", + "type": "string", + "enum": ["MUST_MATCH", "ALLOW_LOOSE"], + "enumDescriptions": [ + "Fails the build if error in substitutions checks, like missing a substitution in the template or in the map.", + "Do not fail the build if error in substitutions checks." + ] + }, + "dynamicSubstitutions": { + "description": "Use this option to explicitly enable or disable bash parameter expansion in substitutions.\n\nIf your build is invoked by a trigger, the dynamicSubstitutions field is always set to true and does not need to be specified in your build config file. If your build is invoked manually, you must set the dynamicSubstitutions field to true for bash parameter expansions to be interpreted when running your build.", + "markdownDescription": "Use this option to explicitly enable or disable bash parameter expansion in substitutions.\n\nIf your build is invoked by a trigger, the `dynamicSubstitutions` field is always set to `true` and does not need to be specified in your build config file. If your build is invoked manually, you must set the `dynamicSubstitutions` field to `true` for bash parameter expansions to be interpreted when running your build.", + "type": "boolean" + }, + "diskSizeGb": { + "description": "Requested disk size for the VM that runs the build.\n\nNote that this is *NOT* \"disk free\"; some of the space will be used by the operating system and build utilities. Also note that this is the minimum disk size that will be allocated for the build -- the build may run with a larger disk than requested. At present, the maximum disk size is 2000GB; builds that request more than the maximum are rejected with an error.", + "oneOf": [ + { + "type": "integer", + "minimum": 1, + "maximum": 2000 + }, + { + "type": "string", + "pattern": "^(?:[1-9]\\d{0,2}|1\\d{3}|2000)$" + } + ], + "examples": [30, 50, "100", 200, "300"] + }, + "secretEnv": { + "description": "A list of global environment variables, which are encrypted using a Cloud Key Management Service crypto key. These values must be specified in the build's Secret. These variables will be available to all build steps in this build.", + "type": "array", + "items": { + "type": "string" + } + }, + "sourceProvenanceHash": { + "description": "Requested hash for SourceProvenance.", + "type": "array", + "items": { + "enum": ["NONE", "SHA256", "MD5"], + "type": "string" + }, + "enumDescriptions": [ + "No hash requested.", + "Use a sha256 hash.", + "Use a md5 hash." + ] + } + } + }, + "Secret": { + "description": "Pairs a set of secret environment variables containing encrypted values with the Cloud KMS key to use to decrypt the value.", + "type": "object", + "properties": { + "kmsKeyName": { + "type": "string", + "description": "Cloud KMS key name to use to decrypt these envs." + }, + "secretEnv": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Map of environment variable name to its encrypted value. Secret environment variables must be unique across all of a build's secrets, and must be used by at least one build step. Values can be at most 64 KB in size. There can be at most 100 secret values across all of a build's secrets." + } + } + }, + "Artifacts": { + "description": "Artifacts produced by a build that should be uploaded upon successful completion of all build steps.", + "type": "object", + "properties": { + "objects": { + "$ref": "#/definitions/ArtifactObjects", + "description": "A list of objects to be uploaded to Cloud Storage upon successful completion of all build steps. Files in the workspace matching specified paths globs will be uploaded to the specified Cloud Storage location using the builder service account's credentials. The location and generation of the uploaded objects will be stored in the Build resource's results field. If any objects fail to be pushed, the build is marked FAILURE.", + "markdownDescription": "A list of objects to be uploaded to Cloud Storage upon successful completion of all build steps. Files in the workspace matching specified paths globs will be uploaded to the specified Cloud Storage location using the builder service account's credentials. The location and generation of the uploaded objects will be stored in the Build resource's results field. If any objects fail to be pushed, the build is marked `FAILURE`." + }, + "goModules": { + "description": "Allows you to upload non-container Go modules to Go repositories in Artifact Registry.", + "type": "array", + "items": { + "$ref": "#/definitions/GoModules" + } + }, + "mavenArtifacts": { + "description": "Allows you to upload non-container Java artifacts to Maven repositories in Artifact Registry.", + "type": "array", + "items": { + "$ref": "#/definitions/MavenArtifacts" + } + }, + "pythonPackages": { + "description": "Allows you to upload Python packages to Artifact Registry.", + "type": "array", + "items": { + "$ref": "#/definitions/PythonPackages" + } + }, + "npmPackages": { + "description": "Uploads your built NPM packages to supported repositories.", + "type": "array", + "items": { + "$ref": "#/definitions/NpmPackages" + } + } + } + }, + "ArtifactObjects": { + "description": "Files in the workspace to upload to Cloud Storage upon successful completion of all build steps.", + "type": "object", + "properties": { + "location": { + "description": "Cloud Storage bucket and optional object path, in the form \"gs://bucket/path/to/somewhere/\". Files in the workspace matching any path pattern will be uploaded to Cloud Storage with this location as a prefix.", + "markdownDescription": "Cloud Storage bucket and optional object path, in the form `gs://bucket/path/to/somewhere/`. See the [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements). Files in the workspace matching any path pattern will be uploaded to Cloud Storage with this location as a prefix.", + "type": "string" + }, + "paths": { + "description": "Path globs used to match files in the build's workspace.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "GoModules": { + "description": "Allows you to upload non-container Go modules to Go repositories in Artifact Registry.", + "type": "object", + "additionalProperties": false, + "properties": { + "repositoryName": { + "description": "The name of your Go repository in Artifact Registry.", + "type": "string" + }, + "repositoryLocation": { + "description": "The location for your repository in Artifact Registry.", + "type": "string" + }, + "repositoryProject_id": { + "description": "The ID of the Google Cloud project that contains your Artifact Registry Go repository.", + "type": "string" + }, + "sourcePath": { + "description": "The path to the go.mod file in the build's workspace.", + "type": "string" + }, + "modulePath": { + "description": "The local directory that contains the Go module to upload. It is recommended to use an absolute path for the value.", + "type": "string" + }, + "moduleVersion": { + "description": "The version of the Go module.", + "type": "string" + } + }, + "required": [ + "repositoryName", + "repositoryLocation", + "repositoryProject_id", + "sourcePath", + "modulePath", + "moduleVersion" + ] + }, + "MavenArtifacts": { + "description": "Allows you to upload non-container Java artifacts to Maven repositories in Artifact Registry.", + "type": "object", + "additionalProperties": false, + "properties": { + "repository": { + "description": "Required. Name of the Artifact Registry repository to store Java artifacts.", + "type": "string" + }, + "path": { + "description": "Required. The application file path.", + "type": "string" + }, + "artifactId": { + "description": "Required. Name of your package file created from your build step", + "type": "string" + }, + "groupId": { + "description": "Required. Uniquely identifies your project across all Maven projects, in the format com.mycompany.app.", + "markdownDescription": "Required. Uniquely identifies your project across all Maven projects, in the format `com.mycompany.app`.", + "type": "string" + }, + "version": { + "description": "Required. The version number for your application.", + "type": "string" + } + }, + "required": ["repository", "path", "artifactId", "groupId", "version"] + }, + "PythonPackages": { + "description": "Allows you to upload Python packages to Artifact Registry.", + "type": "object", + "additionalProperties": false, + "properties": { + "repository": { + "description": "Required. Name of the Artifact Registry repository to store the Python package.", + "type": "string" + }, + "paths": { + "description": "Required. The package file paths.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": ["repository", "paths"] + }, + "NpmPackages": { + "description": "Uploads your built NPM packages to supported repositories.", + "type": "object", + "additionalProperties": false, + "properties": { + "repository": { + "description": "Required. Name of the Artifact Registry repository to store the NPM package.", + "type": "string" + }, + "packagePath": { + "description": "Required. The path for the local directory containing the NPM package that you want to upload to Artifact Registry. Google recommends using an absolute path. Your packagePath value can be . to use the current working directory, but the field cannot be omitted or left empty. This directory must contain a package.json file.", + "markdownDescription": "Required. The path for the local directory containing the NPM package that you want to upload to Artifact Registry. Google recommends using an absolute path. Your `packagePath` value can be `.` to use the current working directory, but the field cannot be omitted or left empty. This directory must contain a `package.json` file.", + "type": "string" + } + }, + "required": ["repository", "packagePath"] + }, + "Volume": { + "description": "Volume describes a Docker container volume which is mounted into build steps in order to persist files across build step execution.", + "type": "object", + "properties": { + "name": { + "description": "Name of the volume to mount. Volume names must be unique per build step and must be valid names for Docker volumes. Each named volume must be used by at least two build steps.", + "type": "string" + }, + "path": { + "description": "Path at which to mount the volume. Paths must be absolute and cannot conflict with other volume paths on the same build step or with certain reserved volume paths.", + "type": "string" + } + } + }, + "Timeout": { + "description": "Time limit for executing the build or particular build step. The timeout field of a build step specifies the amount of time the step is allowed to run, and the timeout field of a build specifies the amount of time the build is allowed to run.", + "markdownDescription": "Time limit for executing the build or particular build step. The `timeout` field of a build step specifies the amount of time the step is allowed to run, and the `timeout` field of a build specifies the amount of time the build is allowed to run.", + "type": "string", + "pattern": "^\\d+(\\.\\d{0,9})?s$", + "examples": ["3.5s", "120s"] + } + }, + "description": "A build resource in the Cloud Build API.", + "properties": { + "steps": { + "type": "array", + "items": { + "$ref": "#/definitions/BuildStep" + }, + "description": "Required. The operations to be performed on the workspace." + }, + "logsBucket": { + "description": "Google Cloud Storage bucket where logs should be written. Logs file names will be of the format ${logs_bucket}/log-${build_id}.txt.", + "markdownDescription": "Google Cloud Storage bucket where logs should be written. See [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements). Logs file names will be of the format `${logs_bucket}/log-${build_id}.txt`.", + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tags for organizing and filtering builds." + }, + "substitutions": { + "additionalProperties": { + "type": "string" + }, + "description": "Substitutions data for Build resource.", + "type": "object" + }, + "images": { + "description": "A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account's credentials. The digests of the pushed images will be stored in the Build resource's results field. If any of the images fail to be pushed, the build status is marked FAILURE.", + "markdownDescription": "A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account's credentials. The digests of the pushed images will be stored in the Build resource's results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.", + "type": "array", + "items": { + "type": "string" + } + }, + "options": { + "$ref": "#/definitions/BuildOptions", + "description": "Special options for this build." + }, + "artifacts": { + "$ref": "#/definitions/Artifacts", + "description": "Artifacts produced by the build that should be uploaded upon successful completion of all build steps." + }, + "timeout": { + "$ref": "#/definitions/Timeout", + "description": "Amount of time that this build should be allowed to run, to second granularity. If this amount of time elapses, work on the build will cease and the build status will be TIMEOUT.", + "markdownDescription": "Amount of time that this build should be allowed to run, to second granularity. If this amount of time elapses, work on the build will cease and the build status will be `TIMEOUT`.", + "default": "600s" + }, + "secrets": { + "description": "Secrets to decrypt using Cloud Key Management Service.", + "type": "array", + "items": { + "$ref": "#/definitions/Secret" + } + }, + "serviceAccount": { + "description": "Use this field to specify the IAM service account to use at build time.", + "type": "string" + }, + "queueTtl": { + "description": "Specifies the amount of time a build can be queued. If a build is in the queue for longer than the value set in queueTtl, the build expires and the build status is set to EXPIRED.", + "markdownDescription": "Specifies the amount of time a build can be queued. If a build is in the queue for longer than the value set in `queueTtl`, the build expires and the build status is set to `EXPIRED`.", + "type": "string", + "pattern": "^\\d+(\\.\\d{0,9})?s$", + "examples": ["3.5s", "120s"], + "default": "3600s" + } + }, + "required": ["steps"], + "title": "Google Cloud Build build config file", + "type": "object" +} diff --git a/src/check_jsonschema/builtin_schemas/vendor/compose-spec.json b/src/check_jsonschema/builtin_schemas/vendor/compose-spec.json index ee1137fba..9aed30391 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/compose-spec.json +++ b/src/check_jsonschema/builtin_schemas/vendor/compose-spec.json @@ -8,7 +8,8 @@ "properties": { "version": { "type": "string", - "description": "declared for backward compatibility, ignored." + "deprecated": true, + "description": "declared for backward compatibility, ignored. Please remove it." }, "name": { @@ -31,7 +32,8 @@ "$ref": "#/definitions/service" } }, - "additionalProperties": false + "additionalProperties": false, + "description": "The services that will be used by your application." }, "networks": { @@ -40,7 +42,8 @@ "^[a-zA-Z0-9._-]+$": { "$ref": "#/definitions/network" } - } + }, + "description": "Networks that are shared among multiple services." }, "volumes": { @@ -50,7 +53,8 @@ "$ref": "#/definitions/volume" } }, - "additionalProperties": false + "additionalProperties": false, + "description": "Named volumes that are shared among multiple services." }, "secrets": { @@ -60,7 +64,8 @@ "$ref": "#/definitions/secret" } }, - "additionalProperties": false + "additionalProperties": false, + "description": "Secrets that are shared among multiple services." }, "configs": { @@ -70,7 +75,8 @@ "$ref": "#/definitions/config" } }, - "additionalProperties": false + "additionalProperties": false, + "description": "Configurations that are shared among multiple services." } }, @@ -81,40 +87,41 @@ "service": { "type": "object", - + "description": "Configuration for a service.", "properties": { "develop": {"$ref": "#/definitions/development"}, "deploy": {"$ref": "#/definitions/deployment"}, "annotations": {"$ref": "#/definitions/list_or_dict"}, "attach": {"type": ["boolean", "string"]}, "build": { + "description": "Configuration options for building the service's image.", "oneOf": [ - {"type": "string"}, + {"type": "string", "description": "Path to the build context. Can be a relative path or a URL."}, { "type": "object", "properties": { - "context": {"type": "string"}, - "dockerfile": {"type": "string"}, - "dockerfile_inline": {"type": "string"}, - "entitlements": {"type": "array", "items": {"type": "string"}}, - "args": {"$ref": "#/definitions/list_or_dict"}, - "ssh": {"$ref": "#/definitions/list_or_dict"}, - "labels": {"$ref": "#/definitions/list_or_dict"}, - "cache_from": {"type": "array", "items": {"type": "string"}}, - "cache_to": {"type": "array", "items": {"type": "string"}}, - "no_cache": {"type": ["boolean", "string"]}, - "additional_contexts": {"$ref": "#/definitions/list_or_dict"}, - "network": {"type": "string"}, - "pull": {"type": ["boolean", "string"]}, - "target": {"type": "string"}, - "shm_size": {"type": ["integer", "string"]}, - "extra_hosts": {"$ref": "#/definitions/extra_hosts"}, - "isolation": {"type": "string"}, - "privileged": {"type": ["boolean", "string"]}, - "secrets": {"$ref": "#/definitions/service_config_or_secret"}, - "tags": {"type": "array", "items": {"type": "string"}}, - "ulimits": {"$ref": "#/definitions/ulimits"}, - "platforms": {"type": "array", "items": {"type": "string"}} + "context": {"type": "string", "description": "Path to the build context. Can be a relative path or a URL."}, + "dockerfile": {"type": "string", "description": "Name of the Dockerfile to use for building the image."}, + "dockerfile_inline": {"type": "string", "description": "Inline Dockerfile content to use instead of a Dockerfile from the build context."}, + "entitlements": {"type": "array", "items": {"type": "string"}, "description": "List of extra privileged entitlements to grant to the build process."}, + "args": {"$ref": "#/definitions/list_or_dict", "description": "Build-time variables, specified as a map or a list of KEY=VAL pairs."}, + "ssh": {"$ref": "#/definitions/list_or_dict", "description": "SSH agent socket or keys to expose to the build. Format is either a string or a list of 'default|[=|[,]]'."}, + "labels": {"$ref": "#/definitions/list_or_dict", "description": "Labels to apply to the built image."}, + "cache_from": {"type": "array", "items": {"type": "string"}, "description": "List of sources the image builder should use for cache resolution"}, + "cache_to": {"type": "array", "items": {"type": "string"}, "description": "Cache destinations for the build cache."}, + "no_cache": {"type": ["boolean", "string"], "description": "Do not use cache when building the image."}, + "additional_contexts": {"$ref": "#/definitions/list_or_dict", "description": "Additional build contexts to use, specified as a map of name to context path or URL."}, + "network": {"type": "string", "description": "Network mode to use for the build. Options include 'default', 'none', 'host', or a network name."}, + "pull": {"type": ["boolean", "string"], "description": "Always attempt to pull a newer version of the image."}, + "target": {"type": "string", "description": "Build stage to target in a multi-stage Dockerfile."}, + "shm_size": {"type": ["integer", "string"], "description": "Size of /dev/shm for the build container. A string value can use suffix like '2g' for 2 gigabytes."}, + "extra_hosts": {"$ref": "#/definitions/extra_hosts", "description": "Add hostname mappings for the build container."}, + "isolation": {"type": "string", "description": "Container isolation technology to use for the build process."}, + "privileged": {"type": ["boolean", "string"], "description": "Give extended privileges to the build container."}, + "secrets": {"$ref": "#/definitions/service_config_or_secret", "description": "Secrets to expose to the build. These are accessible at build-time."}, + "tags": {"type": "array", "items": {"type": "string"}, "description": "Additional tags to apply to the built image."}, + "ulimits": {"$ref": "#/definitions/ulimits", "description": "Override the default ulimits for the build container."}, + "platforms": {"type": "array", "items": {"type": "string"}, "description": "Platforms to build for, e.g., 'linux/amd64', 'linux/arm64', or 'windows/amd64'."} }, "additionalProperties": false, "patternProperties": {"^x-": {}} @@ -123,59 +130,131 @@ }, "blkio_config": { "type": "object", + "description": "Block IO configuration for the service.", "properties": { "device_read_bps": { "type": "array", + "description": "Limit read rate (bytes per second) from a device.", "items": {"$ref": "#/definitions/blkio_limit"} }, "device_read_iops": { "type": "array", + "description": "Limit read rate (IO per second) from a device.", "items": {"$ref": "#/definitions/blkio_limit"} }, "device_write_bps": { "type": "array", + "description": "Limit write rate (bytes per second) to a device.", "items": {"$ref": "#/definitions/blkio_limit"} }, "device_write_iops": { "type": "array", + "description": "Limit write rate (IO per second) to a device.", "items": {"$ref": "#/definitions/blkio_limit"} }, - "weight": {"type": ["integer", "string"]}, + "weight": { + "type": ["integer", "string"], + "description": "Block IO weight (relative weight) for the service, between 10 and 1000." + }, "weight_device": { "type": "array", + "description": "Block IO weight (relative weight) for specific devices.", "items": {"$ref": "#/definitions/blkio_weight"} } }, "additionalProperties": false }, - "cap_add": {"type": "array", "items": {"type": "string"}, "uniqueItems": true}, - "cap_drop": {"type": "array", "items": {"type": "string"}, "uniqueItems": true}, - "cgroup": {"type": "string", "enum": ["host", "private"]}, - "cgroup_parent": {"type": "string"}, - "command": {"$ref": "#/definitions/command"}, - "configs": {"$ref": "#/definitions/service_config_or_secret"}, - "container_name": {"type": "string"}, - "cpu_count": {"oneOf": [ - {"type": "string"}, - {"type": "integer", "minimum": 0} - ]}, - "cpu_percent": {"oneOf": [ - {"type": "string"}, - {"type": "integer", "minimum": 0, "maximum": 100} - ]}, - "cpu_shares": {"type": ["number", "string"]}, - "cpu_quota": {"type": ["number", "string"]}, - "cpu_period": {"type": ["number", "string"]}, - "cpu_rt_period": {"type": ["number", "string"]}, - "cpu_rt_runtime": {"type": ["number", "string"]}, - "cpus": {"type": ["number", "string"]}, - "cpuset": {"type": "string"}, + "cap_add": { + "type": "array", + "items": {"type": "string"}, + "uniqueItems": true, + "description": "Add Linux capabilities. For example, 'CAP_SYS_ADMIN', 'SYS_ADMIN', or 'NET_ADMIN'." + }, + "cap_drop": { + "type": "array", + "items": {"type": "string"}, + "uniqueItems": true, + "description": "Drop Linux capabilities. For example, 'CAP_SYS_ADMIN', 'SYS_ADMIN', or 'NET_ADMIN'." + }, + "cgroup": { + "type": "string", + "enum": ["host", "private"], + "description": "Specify the cgroup namespace to join. Use 'host' to use the host's cgroup namespace, or 'private' to use a private cgroup namespace." + }, + "cgroup_parent": { + "type": "string", + "description": "Specify an optional parent cgroup for the container." + }, + "command": { + "$ref": "#/definitions/command", + "description": "Override the default command declared by the container image, for example 'CMD' in Dockerfile." + }, + "configs": { + "$ref": "#/definitions/service_config_or_secret", + "description": "Grant access to Configs on a per-service basis." + }, + "container_name": { + "type": "string", + "description": "Specify a custom container name, rather than a generated default name." + }, + "cpu_count": { + "oneOf": [ + {"type": "string"}, + {"type": "integer", "minimum": 0} + ], + "description": "Number of usable CPUs." + }, + "cpu_percent": { + "oneOf": [ + {"type": "string"}, + {"type": "integer", "minimum": 0, "maximum": 100} + ], + "description": "Percentage of CPU resources to use." + }, + "cpu_shares": { + "type": ["number", "string"], + "description": "CPU shares (relative weight) for the container." + }, + "cpu_quota": { + "type": ["number", "string"], + "description": "Limit the CPU CFS (Completely Fair Scheduler) quota." + }, + "cpu_period": { + "type": ["number", "string"], + "description": "Limit the CPU CFS (Completely Fair Scheduler) period." + }, + "cpu_rt_period": { + "type": ["number", "string"], + "description": "Limit the CPU real-time period in microseconds or a duration." + }, + "cpu_rt_runtime": { + "type": ["number", "string"], + "description": "Limit the CPU real-time runtime in microseconds or a duration." + }, + "cpus": { + "type": ["number", "string"], + "description": "Number of CPUs to use. A floating-point value is supported to request partial CPUs." + }, + "cpuset": { + "type": "string", + "description": "CPUs in which to allow execution (0-3, 0,1)." + }, "credential_spec": { "type": "object", + "description": "Configure the credential spec for managed service account.", "properties": { - "config": {"type": "string"}, - "file": {"type": "string"}, - "registry": {"type": "string"} + "config": { + "type": "string", + "description": "The name of the credential spec Config to use." + }, + "file": { + "type": "string", + "description": "Path to a credential spec file." + }, + "registry": { + "type": "string", + "description": "Path to a credential spec in the Windows registry." + } }, "additionalProperties": false, "patternProperties": {"^x-": {}} @@ -192,25 +271,35 @@ "additionalProperties": false, "patternProperties": {"^x-": {}}, "properties": { - "restart": {"type": ["boolean", "string"]}, + "restart": { + "type": ["boolean", "string"], + "description": "Whether to restart dependent services when this service is restarted." + }, "required": { "type": "boolean", - "default": true + "default": true, + "description": "Whether the dependency is required for the dependent service to start." }, "condition": { "type": "string", - "enum": ["service_started", "service_healthy", "service_completed_successfully"] + "enum": ["service_started", "service_healthy", "service_completed_successfully"], + "description": "Condition to wait for. 'service_started' waits until the service has started, 'service_healthy' waits until the service is healthy (as defined by its healthcheck), 'service_completed_successfully' waits until the service has completed successfully." } }, "required": ["condition"] } } } - ] + ], + "description": "Express dependency between services. Service dependencies cause services to be started in dependency order. The dependent service will wait for the dependency to be ready before starting." + }, + "device_cgroup_rules": { + "$ref": "#/definitions/list_of_strings", + "description": "Add rules to the cgroup allowed devices list." }, - "device_cgroup_rules": {"$ref": "#/definitions/list_of_strings"}, "devices": { "type": "array", + "description": "List of device mappings for the container.", "items": { "oneOf": [ {"type": "string"}, @@ -218,9 +307,18 @@ "type": "object", "required": ["source"], "properties": { - "source": {"type": "string"}, - "target": {"type": "string"}, - "permissions": {"type": "string"} + "source": { + "type": "string", + "description": "Path on the host to the device." + }, + "target": { + "type": "string", + "description": "Path in the container where the device will be mapped." + }, + "permissions": { + "type": "string", + "description": "Cgroup permissions for the device (rwm)." + } }, "additionalProperties": false, "patternProperties": {"^x-": {}} @@ -228,43 +326,80 @@ ] } }, - "dns": {"$ref": "#/definitions/string_or_list"}, - "dns_opt": {"type": "array","items": {"type": "string"}, "uniqueItems": true}, - "dns_search": {"$ref": "#/definitions/string_or_list"}, - "domainname": {"type": "string"}, - "entrypoint": {"$ref": "#/definitions/command"}, - "env_file": {"$ref": "#/definitions/env_file"}, - "label_file": {"$ref": "#/definitions/label_file"}, - "environment": {"$ref": "#/definitions/list_or_dict"}, - + "dns": { + "$ref": "#/definitions/string_or_list", + "description": "Custom DNS servers to set for the service container." + }, + "dns_opt": { + "type": "array", + "items": {"type": "string"}, + "uniqueItems": true, + "description": "Custom DNS options to be passed to the container's DNS resolver." + }, + "dns_search": { + "$ref": "#/definitions/string_or_list", + "description": "Custom DNS search domains to set on the service container." + }, + "domainname": { + "type": "string", + "description": "Custom domain name to use for the service container." + }, + "entrypoint": { + "$ref": "#/definitions/command", + "description": "Override the default entrypoint declared by the container image, for example 'ENTRYPOINT' in Dockerfile." + }, + "env_file": { + "$ref": "#/definitions/env_file", + "description": "Add environment variables from a file or multiple files. Can be a single file path or a list of file paths." + }, + "label_file": { + "$ref": "#/definitions/label_file", + "description": "Add metadata to containers using files containing Docker labels." + }, + "environment": { + "$ref": "#/definitions/list_or_dict", + "description": "Add environment variables. You can use either an array or a list of KEY=VAL pairs." + }, "expose": { "type": "array", "items": { "type": ["string", "number"] }, - "uniqueItems": true + "uniqueItems": true, + "description": "Expose ports without publishing them to the host machine - they'll only be accessible to linked services." }, "extends": { "oneOf": [ {"type": "string"}, { "type": "object", - "properties": { - "service": {"type": "string"}, - "file": {"type": "string"} + "service": { + "type": "string", + "description": "The name of the service to extend." + }, + "file": { + "type": "string", + "description": "The file path where the service to extend is defined." + } }, "required": ["service"], "additionalProperties": false } - ] + ], + "description": "Extend another service, in the current file or another file." }, "provider": { "type": "object", + "description": "Specify a service which will not be manage by Compose directly, and delegate its management to an external provider.", "properties": { - "type": {"type": "string"}, + "type": { + "type": "string", + "description": "External component used by Compose to manage setup and teardown lifecycle of the service." + }, "options": { "type": "object", + "description": "Provider-specific options.", "patternProperties": { "^.+$": {"type": ["string", "number", "null"]} } @@ -273,30 +408,73 @@ "additionalProperties": false, "patternProperties": {"^x-": {}} }, - "external_links": {"type": "array", "items": {"type": "string"}, "uniqueItems": true}, - "extra_hosts": {"$ref": "#/definitions/extra_hosts"}, - "gpus": {"$ref": "#/definitions/gpus"}, + "external_links": { + "type": "array", + "items": {"type": "string"}, + "uniqueItems": true, + "description": "Link to services started outside this Compose application. Specify services as :." + }, + "extra_hosts": { + "$ref": "#/definitions/extra_hosts", + "description": "Add hostname mappings to the container network interface configuration." + }, + "gpus": { + "$ref": "#/definitions/gpus", + "description": "Define GPU devices to use. Can be set to 'all' to use all GPUs, or a list of specific GPU devices." + }, "group_add": { "type": "array", "items": { "type": ["string", "number"] }, - "uniqueItems": true + "uniqueItems": true, + "description": "Add additional groups which user inside the container should be member of." + }, + "healthcheck": { + "$ref": "#/definitions/healthcheck", + "description": "Configure a health check for the container to monitor its health status." + }, + "hostname": { + "type": "string", + "description": "Define a custom hostname for the service container." + }, + "image": { + "type": "string", + "description": "Specify the image to start the container from. Can be a repository/tag, a digest, or a local image ID." + }, + "init": { + "type": ["boolean", "string"], + "description": "Run as an init process inside the container that forwards signals and reaps processes." + }, + "ipc": { + "type": "string", + "description": "IPC sharing mode for the service container. Use 'host' to share the host's IPC namespace, 'service:[service_name]' to share with another service, or 'shareable' to allow other services to share this service's IPC namespace." + }, + "isolation": { + "type": "string", + "description": "Container isolation technology to use. Supported values are platform-specific." + }, + "labels": { + "$ref": "#/definitions/list_or_dict", + "description": "Add metadata to containers using Docker labels. You can use either an array or a list." + }, + "links": { + "type": "array", + "items": {"type": "string"}, + "uniqueItems": true, + "description": "Link to containers in another service. Either specify both the service name and a link alias (SERVICE:ALIAS), or just the service name." }, - "healthcheck": {"$ref": "#/definitions/healthcheck"}, - "hostname": {"type": "string"}, - "image": {"type": "string"}, - "init": {"type": ["boolean", "string"]}, - "ipc": {"type": "string"}, - "isolation": {"type": "string"}, - "labels": {"$ref": "#/definitions/list_or_dict"}, - "links": {"type": "array", "items": {"type": "string"}, "uniqueItems": true}, "logging": { "type": "object", + "description": "Logging configuration for the service.", "properties": { - "driver": {"type": "string"}, + "driver": { + "type": "string", + "description": "Logging driver to use, such as 'json-file', 'syslog', 'journald', etc." + }, "options": { "type": "object", + "description": "Options for the logging driver.", "patternProperties": { "^.+$": {"type": ["string", "number", "null"]} } @@ -305,12 +483,30 @@ "additionalProperties": false, "patternProperties": {"^x-": {}} }, - "mac_address": {"type": "string"}, - "mem_limit": {"type": ["number", "string"]}, - "mem_reservation": {"type": ["string", "integer"]}, - "mem_swappiness": {"type": ["integer", "string"]}, - "memswap_limit": {"type": ["number", "string"]}, - "network_mode": {"type": "string"}, + "mac_address": { + "type": "string", + "description": "Container MAC address to set." + }, + "mem_limit": { + "type": ["number", "string"], + "description": "Memory limit for the container. A string value can use suffix like '2g' for 2 gigabytes." + }, + "mem_reservation": { + "type": ["string", "integer"], + "description": "Memory reservation for the container." + }, + "mem_swappiness": { + "type": ["integer", "string"], + "description": "Container memory swappiness as percentage (0 to 100)." + }, + "memswap_limit": { + "type": ["number", "string"], + "description": "Amount of memory the container is allowed to swap to disk. Set to -1 to enable unlimited swap." + }, + "network_mode": { + "type": "string", + "description": "Network mode. Values can be 'bridge', 'host', 'none', 'service:[service name]', or 'container:[container name]'." + }, "networks": { "oneOf": [ {"$ref": "#/definitions/list_of_strings"}, @@ -322,19 +518,45 @@ { "type": "object", "properties": { - "aliases": {"$ref": "#/definitions/list_of_strings"}, - "ipv4_address": {"type": "string"}, - "ipv6_address": {"type": "string"}, - "link_local_ips": {"$ref": "#/definitions/list_of_strings"}, - "mac_address": {"type": "string"}, + "aliases": { + "$ref": "#/definitions/list_of_strings", + "description": "Alternative hostnames for this service on the network." + }, + "interface_name": { + "type": "string", + "description": "Interface network name used to connect to network" + }, + "ipv4_address": { + "type": "string", + "description": "Specify a static IPv4 address for this service on this network." + }, + "ipv6_address": { + "type": "string", + "description": "Specify a static IPv6 address for this service on this network." + }, + "link_local_ips": { + "$ref": "#/definitions/list_of_strings", + "description": "List of link-local IPs." + }, + "mac_address": { + "type": "string", + "description": "Specify a MAC address for this service on this network." + }, "driver_opts": { "type": "object", + "description": "Driver options for this network.", "patternProperties": { "^.+$": {"type": ["string", "number"]} } }, - "priority": {"type": "number"}, - "gw_priority": {"type": "number"} + "priority": { + "type": "number", + "description": "Specify the priority for the network connection." + }, + "gw_priority": { + "type": "number", + "description": "Specify the gateway priority for the network connection." + } }, "additionalProperties": false, "patternProperties": {"^x-": {}} @@ -345,18 +567,35 @@ }, "additionalProperties": false } - ] + ], + "description": "Networks to join, referencing entries under the top-level networks key. Can be a list of network names or a mapping of network name to network configuration." + }, + "oom_kill_disable": { + "type": ["boolean", "string"], + "description": "Disable OOM Killer for the container." + }, + "oom_score_adj": { + "oneOf": [ + {"type": "string"}, + {"type": "integer", "minimum": -1000, "maximum": 1000} + ], + "description": "Tune host's OOM preferences for the container (accepts -1000 to 1000)." + }, + "pid": { + "type": ["string", "null"], + "description": "PID mode for container." + }, + "pids_limit": { + "type": ["number", "string"], + "description": "Tune a container's PIDs limit. Set to -1 for unlimited PIDs." + }, + "platform": { + "type": "string", + "description": "Target platform to run on, e.g., 'linux/amd64', 'linux/arm64', or 'windows/amd64'." }, - "oom_kill_disable": {"type": ["boolean", "string"]}, - "oom_score_adj": {"oneOf": [ - {"type": "string"}, - {"type": "integer", "minimum": -1000, "maximum": 1000} - ]}, - "pid": {"type": ["string", "null"]}, - "pids_limit": {"type": ["number", "string"]}, - "platform": {"type": "string"}, "ports": { "type": "array", + "description": "Expose container ports. Short format ([HOST:]CONTAINER[/PROTOCOL]).", "items": { "oneOf": [ {"type": "number"}, @@ -364,13 +603,34 @@ { "type": "object", "properties": { - "name": {"type": "string"}, - "mode": {"type": "string"}, - "host_ip": {"type": "string"}, - "target": {"type": ["integer", "string"]}, - "published": {"type": ["string", "integer"]}, - "protocol": {"type": "string"}, - "app_protocol": {"type": "string"} + "name": { + "type": "string", + "description": "A human-readable name for this port mapping." + }, + "mode": { + "type": "string", + "description": "The port binding mode, either 'host' for publishing a host port or 'ingress' for load balancing." + }, + "host_ip": { + "type": "string", + "description": "The host IP to bind to." + }, + "target": { + "type": ["integer", "string"], + "description": "The port inside the container." + }, + "published": { + "type": ["string", "integer"], + "description": "The publicly exposed port." + }, + "protocol": { + "type": "string", + "description": "The port protocol (tcp or udp)." + }, + "app_protocol": { + "type": "string", + "description": "Application protocol to use with the port (e.g., http, https, mysql)." + } }, "additionalProperties": false, "patternProperties": {"^x-": {}} @@ -379,38 +639,110 @@ }, "uniqueItems": true }, - "post_start": {"type": "array", "items": {"$ref": "#/definitions/service_hook"}}, - "pre_stop": {"type": "array", "items": {"$ref": "#/definitions/service_hook"}}, - "privileged": {"type": ["boolean", "string"]}, - "profiles": {"$ref": "#/definitions/list_of_strings"}, - "pull_policy": {"type": "string", - "pattern": "always|never|build|if_not_present|missing|refresh|daily|weekly|every_([0-9]+[wdhms])+" + "post_start": { + "type": "array", + "items": {"$ref": "#/definitions/service_hook"}, + "description": "Commands to run after the container starts. If any command fails, the container stops." + }, + "pre_stop": { + "type": "array", + "items": {"$ref": "#/definitions/service_hook"}, + "description": "Commands to run before the container stops. If any command fails, the container stop is aborted." + }, + "privileged": { + "type": ["boolean", "string"], + "description": "Give extended privileges to the service container." + }, + "profiles": { + "$ref": "#/definitions/list_of_strings", + "description": "List of profiles for this service. When profiles are specified, services are only started when the profile is activated." + }, + "pull_policy": { + "type": "string", + "pattern": "always|never|build|if_not_present|missing|refresh|daily|weekly|every_([0-9]+[wdhms])+", + "description": "Policy for pulling images. Options include: 'always', 'never', 'if_not_present', 'missing', 'build', or time-based refresh policies." + }, + "pull_refresh_after": { + "type": "string", + "description": "Time after which to refresh the image. Used with pull_policy=refresh." + }, + "read_only": { + "type": ["boolean", "string"], + "description": "Mount the container's filesystem as read only." + }, + "restart": { + "type": "string", + "description": "Restart policy for the service container. Options include: 'no', 'always', 'on-failure', and 'unless-stopped'." }, - "pull_refresh_after": {"type": "string"}, - "read_only": {"type": ["boolean", "string"]}, - "restart": {"type": "string"}, "runtime": { - "type": "string" + "type": "string", + "description": "Runtime to use for this container, e.g., 'runc'." }, "scale": { - "type": ["integer", "string"] - }, - "security_opt": {"type": "array", "items": {"type": "string"}, "uniqueItems": true}, - "shm_size": {"type": ["number", "string"]}, - "secrets": {"$ref": "#/definitions/service_config_or_secret"}, - "sysctls": {"$ref": "#/definitions/list_or_dict"}, - "stdin_open": {"type": ["boolean", "string"]}, - "stop_grace_period": {"type": "string"}, - "stop_signal": {"type": "string"}, - "storage_opt": {"type": "object"}, - "tmpfs": {"$ref": "#/definitions/string_or_list"}, - "tty": {"type": ["boolean", "string"]}, - "ulimits": {"$ref": "#/definitions/ulimits"}, - "user": {"type": "string"}, - "uts": {"type": "string"}, - "userns_mode": {"type": "string"}, + "type": ["integer", "string"], + "description": "Number of containers to deploy for this service." + }, + "security_opt": { + "type": "array", + "items": {"type": "string"}, + "uniqueItems": true, + "description": "Override the default labeling scheme for each container." + }, + "shm_size": { + "type": ["number", "string"], + "description": "Size of /dev/shm. A string value can use suffix like '2g' for 2 gigabytes." + }, + "secrets": { + "$ref": "#/definitions/service_config_or_secret", + "description": "Grant access to Secrets on a per-service basis." + }, + "sysctls": { + "$ref": "#/definitions/list_or_dict", + "description": "Kernel parameters to set in the container. You can use either an array or a list." + }, + "stdin_open": { + "type": ["boolean", "string"], + "description": "Keep STDIN open even if not attached." + }, + "stop_grace_period": { + "type": "string", + "description": "Time to wait for the container to stop gracefully before sending SIGKILL (e.g., '1s', '1m30s')." + }, + "stop_signal": { + "type": "string", + "description": "Signal to stop the container (e.g., 'SIGTERM', 'SIGINT')." + }, + "storage_opt": { + "type": "object", + "description": "Storage driver options for the container." + }, + "tmpfs": { + "$ref": "#/definitions/string_or_list", + "description": "Mount a temporary filesystem (tmpfs) into the container. Can be a single value or a list." + }, + "tty": { + "type": ["boolean", "string"], + "description": "Allocate a pseudo-TTY to service container." + }, + "ulimits": { + "$ref": "#/definitions/ulimits", + "description": "Override the default ulimits for a container." + }, + "user": { + "type": "string", + "description": "Username or UID to run the container process as." + }, + "uts": { + "type": "string", + "description": "UTS namespace to use. 'host' shares the host's UTS namespace." + }, + "userns_mode": { + "type": "string", + "description": "User namespace to use. 'host' shares the host's user namespace." + }, "volumes": { "type": "array", + "description": "Mount host paths or named volumes accessible to the container. Short syntax (VOLUME:CONTAINER_PATH[:MODE])", "items": { "oneOf": [ {"type": "string"}, @@ -418,52 +750,100 @@ "type": "object", "required": ["type"], "properties": { - "type": {"type": "string", - "enum": ["bind", "volume", "tmpfs", "cluster", "image"] + "type": { + "type": "string", + "enum": ["bind", "volume", "tmpfs", "cluster", "npipe", "image"], + "description": "The mount type: bind for mounting host directories, volume for named volumes, tmpfs for temporary filesystems, cluster for cluster volumes, npipe for named pipes, or image for mounting from an image." + }, + "source": { + "type": "string", + "description": "The source of the mount, a path on the host for a bind mount, a docker image reference for an image mount, or the name of a volume defined in the top-level volumes key. Not applicable for a tmpfs mount." + }, + "target": { + "type": "string", + "description": "The path in the container where the volume is mounted." + }, + "read_only": { + "type": ["boolean", "string"], + "description": "Flag to set the volume as read-only." + }, + "consistency": { + "type": "string", + "description": "The consistency requirements for the mount. Available values are platform specific." }, - "source": {"type": "string"}, - "target": {"type": "string"}, - "read_only": {"type": ["boolean", "string"]}, - "consistency": {"type": "string"}, "bind": { "type": "object", + "description": "Configuration specific to bind mounts.", "properties": { - "propagation": {"type": "string"}, - "create_host_path": {"type": ["boolean", "string"]}, - "recursive": {"type": "string", "enum": ["enabled", "disabled", "writable", "readonly"]}, - "selinux": {"type": "string", "enum": ["z", "Z"]} + "propagation": { + "type": "string", + "description": "The propagation mode for the bind mount: 'shared', 'slave', 'private', 'rshared', 'rslave', or 'rprivate'." + }, + "create_host_path": { + "type": ["boolean", "string"], + "description": "Create the host path if it doesn't exist." + }, + "recursive": { + "type": "string", + "enum": ["enabled", "disabled", "writable", "readonly"], + "description": "Recursively mount the source directory." + }, + "selinux": { + "type": "string", + "enum": ["z", "Z"], + "description": "SELinux relabeling options: 'z' for shared content, 'Z' for private unshared content." + } }, "additionalProperties": false, "patternProperties": {"^x-": {}} }, "volume": { "type": "object", + "description": "Configuration specific to volume mounts.", "properties": { - "labels": {"$ref": "#/definitions/list_or_dict"}, - "nocopy": {"type": ["boolean", "string"]}, - "subpath": {"type": "string"} + "labels": { + "$ref": "#/definitions/list_or_dict", + "description": "Labels to apply to the volume." + }, + "nocopy": { + "type": ["boolean", "string"], + "description": "Flag to disable copying of data from a container when a volume is created." + }, + "subpath": { + "type": "string", + "description": "Path within the volume to mount instead of the volume root." + } }, "additionalProperties": false, "patternProperties": {"^x-": {}} }, "tmpfs": { "type": "object", + "description": "Configuration specific to tmpfs mounts.", "properties": { "size": { "oneOf": [ {"type": "integer", "minimum": 0}, {"type": "string"} - ] + ], + "description": "Size of the tmpfs mount in bytes." }, - "mode": {"type": ["number", "string"]} + "mode": { + "type": ["number", "string"], + "description": "File mode of the tmpfs in octal." + } }, "additionalProperties": false, "patternProperties": {"^x-": {}} }, "image": { "type": "object", + "description": "Configuration specific to image mounts.", "properties": { - "subpath": {"type": "string"} + "subpath": { + "type": "string", + "description": "Path within the image to mount instead of the image root." + } }, "additionalProperties": false, "patternProperties": {"^x-": {}} @@ -479,9 +859,13 @@ "volumes_from": { "type": "array", "items": {"type": "string"}, - "uniqueItems": true + "uniqueItems": true, + "description": "Mount volumes from another service or container. Optionally specify read-only access (ro) or read-write (rw)." }, - "working_dir": {"type": "string"} + "working_dir": { + "type": "string", + "description": "The working directory in which the entrypoint or command will be run" + } }, "patternProperties": {"^x-": {}}, "additionalProperties": false @@ -489,38 +873,79 @@ "healthcheck": { "type": "object", + "description": "Configuration options to determine whether the container is healthy.", "properties": { - "disable": {"type": ["boolean", "string"]}, - "interval": {"type": "string"}, - "retries": {"type": ["number", "string"]}, + "disable": { + "type": ["boolean", "string"], + "description": "Disable any container-specified healthcheck. Set to true to disable." + }, + "interval": { + "type": "string", + "description": "Time between running the check (e.g., '1s', '1m30s'). Default: 30s." + }, + "retries": { + "type": ["number", "string"], + "description": "Number of consecutive failures needed to consider the container as unhealthy. Default: 3." + }, "test": { "oneOf": [ {"type": "string"}, {"type": "array", "items": {"type": "string"}} - ] + ], + "description": "The test to perform to check container health. Can be a string or a list. The first item is either NONE, CMD, or CMD-SHELL. If it's CMD, the rest of the command is exec'd. If it's CMD-SHELL, the rest is run in the shell." + }, + "timeout": { + "type": "string", + "description": "Maximum time to allow one check to run (e.g., '1s', '1m30s'). Default: 30s." }, - "timeout": {"type": "string"}, - "start_period": {"type": "string"}, - "start_interval": {"type": "string"} + "start_period": { + "type": "string", + "description": "Start period for the container to initialize before starting health-retries countdown (e.g., '1s', '1m30s'). Default: 0s." + }, + "start_interval": { + "type": "string", + "description": "Time between running the check during the start period (e.g., '1s', '1m30s'). Default: interval value." + } }, "additionalProperties": false, "patternProperties": {"^x-": {}} }, "development": { "type": ["object", "null"], + "description": "Development configuration for the service, used for development workflows.", "properties": { "watch": { "type": "array", + "description": "Configure watch mode for the service, which monitors file changes and performs actions in response.", "items": { "type": "object", "required": ["path", "action"], "properties": { - "ignore": {"$ref": "#/definitions/string_or_list"}, - "include": {"$ref": "#/definitions/string_or_list"}, - "path": {"type": "string"}, - "action": {"type": "string", "enum": ["rebuild", "sync", "restart", "sync+restart", "sync+exec"]}, - "target": {"type": "string"}, - "exec": {"$ref": "#/definitions/service_hook"} + "ignore": { + "$ref": "#/definitions/string_or_list", + "description": "Patterns to exclude from watching." + }, + "include": { + "$ref": "#/definitions/string_or_list", + "description": "Patterns to include in watching." + }, + "path": { + "type": "string", + "description": "Path to watch for changes." + }, + "action": { + "type": "string", + "enum": ["rebuild", "sync", "restart", "sync+restart", "sync+exec"], + "description": "Action to take when a change is detected: rebuild the container, sync files, restart the container, sync and restart, or sync and execute a command." + }, + "target": { + "type": "string", + "description": "Target path in the container for sync operations." + }, + "exec": { + "$ref": "#/definitions/service_hook", + "description": "Command to execute when a change is detected and action is sync+exec." + } }, "additionalProperties": false, "patternProperties": {"^x-": {}} @@ -532,61 +957,134 @@ }, "deployment": { "type": ["object", "null"], + "description": "Deployment configuration for the service.", "properties": { - "mode": {"type": "string"}, - "endpoint_mode": {"type": "string"}, - "replicas": {"type": ["integer", "string"]}, - "labels": {"$ref": "#/definitions/list_or_dict"}, + "mode": { + "type": "string", + "description": "Deployment mode for the service: 'replicated' (default) or 'global'." + }, + "endpoint_mode": { + "type": "string", + "description": "Endpoint mode for the service: 'vip' (default) or 'dnsrr'." + }, + "replicas": { + "type": ["integer", "string"], + "description": "Number of replicas of the service container to run." + }, + "labels": { + "$ref": "#/definitions/list_or_dict", + "description": "Labels to apply to the service." + }, "rollback_config": { "type": "object", + "description": "Configuration for rolling back a service update.", "properties": { - "parallelism": {"type": ["integer", "string"]}, - "delay": {"type": "string"}, - "failure_action": {"type": "string"}, - "monitor": {"type": "string"}, - "max_failure_ratio": {"type": ["number", "string"]}, - "order": {"type": "string", "enum": [ - "start-first", "stop-first" - ]} + "parallelism": { + "type": ["integer", "string"], + "description": "The number of containers to rollback at a time. If set to 0, all containers rollback simultaneously." + }, + "delay": { + "type": "string", + "description": "The time to wait between each container group's rollback (e.g., '1s', '1m30s')." + }, + "failure_action": { + "type": "string", + "description": "Action to take if a rollback fails: 'continue', 'pause'." + }, + "monitor": { + "type": "string", + "description": "Duration to monitor each task for failures after it is created (e.g., '1s', '1m30s')." + }, + "max_failure_ratio": { + "type": ["number", "string"], + "description": "Failure rate to tolerate during a rollback." + }, + "order": { + "type": "string", + "enum": ["start-first", "stop-first"], + "description": "Order of operations during rollbacks: 'stop-first' (default) or 'start-first'." + } }, "additionalProperties": false, "patternProperties": {"^x-": {}} }, "update_config": { "type": "object", + "description": "Configuration for updating a service.", "properties": { - "parallelism": {"type": ["integer", "string"]}, - "delay": {"type": "string"}, - "failure_action": {"type": "string"}, - "monitor": {"type": "string"}, - "max_failure_ratio": {"type": ["number", "string"]}, - "order": {"type": "string", "enum": [ - "start-first", "stop-first" - ]} + "parallelism": { + "type": ["integer", "string"], + "description": "The number of containers to update at a time." + }, + "delay": { + "type": "string", + "description": "The time to wait between updating a group of containers (e.g., '1s', '1m30s')." + }, + "failure_action": { + "type": "string", + "description": "Action to take if an update fails: 'continue', 'pause', 'rollback'." + }, + "monitor": { + "type": "string", + "description": "Duration to monitor each updated task for failures after it is created (e.g., '1s', '1m30s')." + }, + "max_failure_ratio": { + "type": ["number", "string"], + "description": "Failure rate to tolerate during an update (0 to 1)." + }, + "order": { + "type": "string", + "enum": ["start-first", "stop-first"], + "description": "Order of operations during updates: 'stop-first' (default) or 'start-first'." + } }, "additionalProperties": false, "patternProperties": {"^x-": {}} }, "resources": { "type": "object", + "description": "Resource constraints and reservations for the service.", "properties": { "limits": { "type": "object", + "description": "Resource limits for the service containers.", "properties": { - "cpus": {"type": ["number", "string"]}, - "memory": {"type": "string"}, - "pids": {"type": ["integer", "string"]} + "cpus": { + "type": ["number", "string"], + "description": "Limit for how much of the available CPU resources, as number of cores, a container can use." + }, + "memory": { + "type": "string", + "description": "Limit on the amount of memory a container can allocate (e.g., '1g', '1024m')." + }, + "pids": { + "type": ["integer", "string"], + "description": "Maximum number of PIDs available to the container." + } }, "additionalProperties": false, "patternProperties": {"^x-": {}} }, "reservations": { "type": "object", + "description": "Resource reservations for the service containers.", "properties": { - "cpus": {"type": ["number", "string"]}, - "memory": {"type": "string"}, - "generic_resources": {"$ref": "#/definitions/generic_resources"}, - "devices": {"$ref": "#/definitions/devices"} + "cpus": { + "type": ["number", "string"], + "description": "Reservation for how much of the available CPU resources, as number of cores, a container can use." + }, + "memory": { + "type": "string", + "description": "Reservation on the amount of memory a container can allocate (e.g., '1g', '1024m')." + }, + "generic_resources": { + "$ref": "#/definitions/generic_resources", + "description": "User-defined resources to reserve." + }, + "devices": { + "$ref": "#/definitions/devices", + "description": "Device reservations for the container." + } }, "additionalProperties": false, "patternProperties": {"^x-": {}} @@ -597,31 +1095,56 @@ }, "restart_policy": { "type": "object", + "description": "Restart policy for the service containers.", "properties": { - "condition": {"type": "string"}, - "delay": {"type": "string"}, - "max_attempts": {"type": ["integer", "string"]}, - "window": {"type": "string"} + "condition": { + "type": "string", + "description": "Condition for restarting the container: 'none', 'on-failure', 'any'." + }, + "delay": { + "type": "string", + "description": "Delay between restart attempts (e.g., '1s', '1m30s')." + }, + "max_attempts": { + "type": ["integer", "string"], + "description": "Maximum number of restart attempts before giving up." + }, + "window": { + "type": "string", + "description": "Time window used to evaluate the restart policy (e.g., '1s', '1m30s')." + } }, "additionalProperties": false, "patternProperties": {"^x-": {}} }, "placement": { "type": "object", + "description": "Constraints and preferences for the platform to select a physical node to run service containers", "properties": { - "constraints": {"type": "array", "items": {"type": "string"}}, + "constraints": { + "type": "array", + "items": {"type": "string"}, + "description": "Placement constraints for the service (e.g., 'node.role==manager')." + }, "preferences": { "type": "array", + "description": "Placement preferences for the service.", "items": { "type": "object", "properties": { - "spread": {"type": "string"} + "spread": { + "type": "string", + "description": "Spread tasks evenly across values of the specified node label." + } }, "additionalProperties": false, "patternProperties": {"^x-": {}} } }, - "max_replicas_per_node": {"type": ["integer", "string"]} + "max_replicas_per_node": { + "type": ["integer", "string"], + "description": "Maximum number of replicas of the service." + } }, "additionalProperties": false, "patternProperties": {"^x-": {}} @@ -633,14 +1156,22 @@ "generic_resources": { "type": "array", + "description": "User-defined resources for services, allowing services to reserve specialized hardware resources.", "items": { "type": "object", "properties": { "discrete_resource_spec": { "type": "object", + "description": "Specification for discrete (countable) resources.", "properties": { - "kind": {"type": "string"}, - "value": {"type": ["number", "string"]} + "kind": { + "type": "string", + "description": "Type of resource (e.g., 'GPU', 'FPGA', 'SSD')." + }, + "value": { + "type": ["number", "string"], + "description": "Number of resources of this kind to reserve." + } }, "additionalProperties": false, "patternProperties": {"^x-": {}} @@ -653,14 +1184,30 @@ "devices": { "type": "array", + "description": "Device reservations for containers, allowing services to access specific hardware devices.", "items": { "type": "object", "properties": { - "capabilities": {"$ref": "#/definitions/list_of_strings"}, - "count": {"type": ["string", "integer"]}, - "device_ids": {"$ref": "#/definitions/list_of_strings"}, - "driver":{"type": "string"}, - "options":{"$ref": "#/definitions/list_or_dict"} + "capabilities": { + "$ref": "#/definitions/list_of_strings", + "description": "List of capabilities the device needs to have (e.g., 'gpu', 'compute', 'utility')." + }, + "count": { + "type": ["string", "integer"], + "description": "Number of devices of this type to reserve." + }, + "device_ids": { + "$ref": "#/definitions/list_of_strings", + "description": "List of specific device IDs to reserve." + }, + "driver": { + "type": "string", + "description": "Device driver to use (e.g., 'nvidia')." + }, + "options": { + "$ref": "#/definitions/list_or_dict", + "description": "Driver-specific options for the device." + } }, "additionalProperties": false, "patternProperties": {"^x-": {}}, @@ -672,16 +1219,37 @@ "gpus": { "oneOf": [ - {"type": "string", "enum": ["all"]}, - {"type": "array", - "items": { - "type": "object", + { + "type": "string", + "enum": ["all"], + "description": "Use all available GPUs." + }, + { + "type": "array", + "description": "List of specific GPU devices to use.", + "items": { + "type": "object", "properties": { - "capabilities": {"$ref": "#/definitions/list_of_strings"}, - "count": {"type": ["string", "integer"]}, - "device_ids": {"$ref": "#/definitions/list_of_strings"}, - "driver":{"type": "string"}, - "options":{"$ref": "#/definitions/list_or_dict"} + "capabilities": { + "$ref": "#/definitions/list_of_strings", + "description": "List of capabilities the GPU needs to have (e.g., 'compute', 'utility')." + }, + "count": { + "type": ["string", "integer"], + "description": "Number of GPUs to use." + }, + "device_ids": { + "$ref": "#/definitions/list_of_strings", + "description": "List of specific GPU device IDs to use." + }, + "driver": { + "type": "string", + "description": "GPU driver to use (e.g., 'nvidia')." + }, + "options": { + "$ref": "#/definitions/list_or_dict", + "description": "Driver-specific options for the GPU." + } } }, "additionalProperties": false, @@ -691,14 +1259,24 @@ }, "include": { + "description": "Compose application or sub-projects to be included.", "oneOf": [ {"type": "string"}, { "type": "object", "properties": { - "path": {"$ref": "#/definitions/string_or_list"}, - "env_file": {"$ref": "#/definitions/string_or_list"}, - "project_directory": {"type": "string"} + "path": { + "$ref": "#/definitions/string_or_list", + "description": "Path to the Compose application or sub-project files to include." + }, + "env_file": { + "$ref": "#/definitions/string_or_list", + "description": "Path to the environment files to use to define default values when interpolating variables in the Compose files being parsed." + }, + "project_directory": { + "type": "string", + "description": "Path to resolve relative paths set in the Compose file" + } }, "additionalProperties": false } @@ -707,29 +1285,52 @@ "network": { "type": ["object", "null"], + "description": "Network configuration for the Compose application.", "properties": { - "name": {"type": "string"}, - "driver": {"type": "string"}, + "name": { + "type": "string", + "description": "Custom name for this network." + }, + "driver": { + "type": "string", + "description": "Specify which driver should be used for this network. Default is 'bridge'." + }, "driver_opts": { "type": "object", + "description": "Specify driver-specific options defined as key/value pairs.", "patternProperties": { "^.+$": {"type": ["string", "number"]} } }, "ipam": { "type": "object", + "description": "Custom IP Address Management configuration for this network.", "properties": { - "driver": {"type": "string"}, + "driver": { + "type": "string", + "description": "Custom IPAM driver, instead of the default." + }, "config": { "type": "array", + "description": "List of IPAM configuration blocks.", "items": { "type": "object", "properties": { - "subnet": {"type": "string"}, - "ip_range": {"type": "string"}, - "gateway": {"type": "string"}, + "subnet": { + "type": "string", + "description": "Subnet in CIDR format that represents a network segment." + }, + "ip_range": { + "type": "string", + "description": "Range of IPs from which to allocate container IPs." + }, + "gateway": { + "type": "string", + "description": "IPv4 or IPv6 gateway for the subnet." + }, "aux_addresses": { "type": "object", + "description": "Auxiliary IPv4 or IPv6 addresses used by Network driver.", "additionalProperties": false, "patternProperties": {"^.+$": {"type": "string"}} } @@ -740,6 +1341,7 @@ }, "options": { "type": "object", + "description": "Driver-specific options for the IPAM driver.", "additionalProperties": false, "patternProperties": {"^.+$": {"type": "string"}} } @@ -749,20 +1351,37 @@ }, "external": { "type": ["boolean", "string", "object"], + "description": "Specifies that this network already exists and was created outside of Compose.", "properties": { "name": { "deprecated": true, - "type": "string" + "type": "string", + "description": "Specifies the name of the external network. Deprecated: use the 'name' property instead." } }, "additionalProperties": false, "patternProperties": {"^x-": {}} }, - "internal": {"type": ["boolean", "string"]}, - "enable_ipv4": {"type": ["boolean", "string"]}, - "enable_ipv6": {"type": ["boolean", "string"]}, - "attachable": {"type": ["boolean", "string"]}, - "labels": {"$ref": "#/definitions/list_or_dict"} + "internal": { + "type": ["boolean", "string"], + "description": "Create an externally isolated network." + }, + "enable_ipv4": { + "type": ["boolean", "string"], + "description": "Enable IPv4 networking." + }, + "enable_ipv6": { + "type": ["boolean", "string"], + "description": "Enable IPv6 networking." + }, + "attachable": { + "type": ["boolean", "string"], + "description": "If true, standalone containers can attach to this network." + }, + "labels": { + "$ref": "#/definitions/list_or_dict", + "description": "Add metadata to the network using labels." + } }, "additionalProperties": false, "patternProperties": {"^x-": {}} @@ -770,27 +1389,40 @@ "volume": { "type": ["object", "null"], + "description": "Volume configuration for the Compose application.", "properties": { - "name": {"type": "string"}, - "driver": {"type": "string"}, + "name": { + "type": "string", + "description": "Custom name for this volume." + }, + "driver": { + "type": "string", + "description": "Specify which volume driver should be used for this volume." + }, "driver_opts": { "type": "object", + "description": "Specify driver-specific options.", "patternProperties": { "^.+$": {"type": ["string", "number"]} } }, "external": { "type": ["boolean", "string", "object"], + "description": "Specifies that this volume already exists and was created outside of Compose.", "properties": { "name": { "deprecated": true, - "type": "string" + "type": "string", + "description": "Specifies the name of the external volume. Deprecated: use the 'name' property instead." } }, "additionalProperties": false, "patternProperties": {"^x-": {}} }, - "labels": {"$ref": "#/definitions/list_or_dict"} + "labels": { + "$ref": "#/definitions/list_or_dict", + "description": "Add metadata to the volume using labels." + } }, "additionalProperties": false, "patternProperties": {"^x-": {}} @@ -798,25 +1430,49 @@ "secret": { "type": "object", + "description": "Secret configuration for the Compose application.", "properties": { - "name": {"type": "string"}, - "environment": {"type": "string"}, - "file": {"type": "string"}, + "name": { + "type": "string", + "description": "Custom name for this secret." + }, + "environment": { + "type": "string", + "description": "Name of an environment variable from which to get the secret value." + }, + "file": { + "type": "string", + "description": "Path to a file containing the secret value." + }, "external": { "type": ["boolean", "string", "object"], + "description": "Specifies that this secret already exists and was created outside of Compose.", "properties": { - "name": {"type": "string"} + "name": { + "type": "string", + "description": "Specifies the name of the external secret." + } } }, - "labels": {"$ref": "#/definitions/list_or_dict"}, - "driver": {"type": "string"}, + "labels": { + "$ref": "#/definitions/list_or_dict", + "description": "Add metadata to the secret using labels." + }, + "driver": { + "type": "string", + "description": "Specify which secret driver should be used for this secret." + }, "driver_opts": { "type": "object", + "description": "Specify driver-specific options.", "patternProperties": { "^.+$": {"type": ["string", "number"]} } }, - "template_driver": {"type": "string"} + "template_driver": { + "type": "string", + "description": "Driver to use for templating the secret's value." + } }, "additionalProperties": false, "patternProperties": {"^x-": {}} @@ -824,22 +1480,43 @@ "config": { "type": "object", + "description": "Config configuration for the Compose application.", "properties": { - "name": {"type": "string"}, - "content": {"type": "string"}, - "environment": {"type": "string"}, - "file": {"type": "string"}, + "name": { + "type": "string", + "description": "Custom name for this config." + }, + "content": { + "type": "string", + "description": "Inline content of the config." + }, + "environment": { + "type": "string", + "description": "Name of an environment variable from which to get the config value." + }, + "file": { + "type": "string", + "description": "Path to a file containing the config value." + }, "external": { "type": ["boolean", "string", "object"], + "description": "Specifies that this config already exists and was created outside of Compose.", "properties": { "name": { "deprecated": true, - "type": "string" + "type": "string", + "description": "Specifies the name of the external config. Deprecated: use the 'name' property instead." } } }, - "labels": {"$ref": "#/definitions/list_or_dict"}, - "template_driver": {"type": "string"} + "labels": { + "$ref": "#/definitions/list_or_dict", + "description": "Add metadata to the config using labels." + }, + "template_driver": { + "type": "string", + "description": "Driver to use for templating the config's value." + } }, "additionalProperties": false, "patternProperties": {"^x-": {}} @@ -847,20 +1524,50 @@ "command": { "oneOf": [ - {"type": "null"}, - {"type": "string"}, - {"type": "array","items": {"type": "string"}} - ] + { + "type": "null", + "description": "No command specified, use the container's default command." + }, + { + "type": "string", + "description": "Command as a string, which will be executed in a shell (e.g., '/bin/sh -c')." + }, + { + "type": "array", + "description": "Command as an array of strings, which will be executed directly without a shell.", + "items": { + "type": "string", + "description": "Part of the command (executable or argument)." + } + } + ], + "description": "Command to run in the container, which can be specified as a string (shell form) or array (exec form)." }, "service_hook": { "type": "object", + "description": "Configuration for service lifecycle hooks, which are commands executed at specific points in a container's lifecycle.", "properties": { - "command": {"$ref": "#/definitions/command"}, - "user": {"type": "string"}, - "privileged": {"type": ["boolean", "string"]}, - "working_dir": {"type": "string"}, - "environment": {"$ref": "#/definitions/list_or_dict"} + "command": { + "$ref": "#/definitions/command", + "description": "Command to execute as part of the hook." + }, + "user": { + "type": "string", + "description": "User to run the command as." + }, + "privileged": { + "type": ["boolean", "string"], + "description": "Whether to run the command with extended privileges." + }, + "working_dir": { + "type": "string", + "description": "Working directory for the command." + }, + "environment": { + "$ref": "#/definitions/list_or_dict", + "description": "Environment variables for the command." + } }, "additionalProperties": false, "patternProperties": {"^x-": {}}, @@ -869,25 +1576,36 @@ "env_file": { "oneOf": [ - {"type": "string"}, + { + "type": "string", + "description": "Path to a file containing environment variables." + }, { "type": "array", + "description": "List of paths to files containing environment variables.", "items": { "oneOf": [ - {"type": "string"}, + { + "type": "string", + "description": "Path to a file containing environment variables." + }, { "type": "object", + "description": "Detailed configuration for an environment file.", "additionalProperties": false, "properties": { "path": { - "type": "string" + "type": "string", + "description": "Path to the environment file." }, "format": { - "type": "string" + "type": "string", + "description": "Format attribute lets you to use an alternative file formats for env_file. When not set, env_file is parsed according to Compose rules." }, "required": { "type": ["boolean", "string"], - "default": true + "default": true, + "description": "Whether the file is required. If true and the file doesn't exist, an error will be raised." } }, "required": [ @@ -902,24 +1620,42 @@ "label_file": { "oneOf": [ - {"type": "string"}, + { + "type": "string", + "description": "Path to a file containing Docker labels." + }, { "type": "array", - "items": {"type": "string"} + "description": "List of paths to files containing Docker labels.", + "items": { + "type": "string", + "description": "Path to a file containing Docker labels." + } } ] }, "string_or_list": { "oneOf": [ - {"type": "string"}, - {"$ref": "#/definitions/list_of_strings"} - ] + { + "type": "string", + "description": "A single string value." + }, + { + "$ref": "#/definitions/list_of_strings", + "description": "A list of string values." + } + ], + "description": "Either a single string or a list of strings." }, "list_of_strings": { "type": "array", - "items": {"type": "string"}, + "description": "A list of unique string values.", + "items": { + "type": "string", + "description": "A string value in the list." + }, "uniqueItems": true }, @@ -927,31 +1663,46 @@ "oneOf": [ { "type": "object", + "description": "A dictionary mapping keys to values.", "patternProperties": { ".+": { - "type": ["string", "number", "boolean", "null"] + "type": ["string", "number", "boolean", "null"], + "description": "Value for the key, which can be a string, number, boolean, or null." } }, "additionalProperties": false }, - {"type": "array", "items": {"type": "string"}, "uniqueItems": true} - ] + { + "type": "array", + "description": "A list of unique string values.", + "items": { + "type": "string", + "description": "A string value in the list." + }, + "uniqueItems": true + } + ], + "description": "Either a dictionary mapping keys to values, or a list of strings." }, "extra_hosts": { "oneOf": [ { "type": "object", + "description": "list mapping hostnames to IP addresses.", "patternProperties": { ".+": { "oneOf": [ { - "type": "string" + "type": "string", + "description": "IP address for the hostname." }, { "type": "array", + "description": "List of IP addresses for the hostname.", "items": { - "type": "string" + "type": "string", + "description": "IP address for the hostname." }, "uniqueItems": false } @@ -960,39 +1711,82 @@ }, "additionalProperties": false }, - {"type": "array", "items": {"type": "string"}, "uniqueItems": true} - ] + { + "type": "array", + "description": "List of host:IP mappings in the format 'hostname:IP'.", + "items": { + "type": "string", + "description": "Host:IP mapping in the format 'hostname:IP'." + }, + "uniqueItems": true + } + ], + "description": "Additional hostnames to be defined in the container's /etc/hosts file." }, "blkio_limit": { "type": "object", + "description": "Block IO limit for a specific device.", "properties": { - "path": {"type": "string"}, - "rate": {"type": ["integer", "string"]} + "path": { + "type": "string", + "description": "Path to the device (e.g., '/dev/sda')." + }, + "rate": { + "type": ["integer", "string"], + "description": "Rate limit in bytes per second or IO operations per second." + } }, "additionalProperties": false }, "blkio_weight": { "type": "object", + "description": "Block IO weight for a specific device.", "properties": { - "path": {"type": "string"}, - "weight": {"type": ["integer", "string"]} + "path": { + "type": "string", + "description": "Path to the device (e.g., '/dev/sda')." + }, + "weight": { + "type": ["integer", "string"], + "description": "Relative weight for the device, between 10 and 1000." + } }, "additionalProperties": false }, "service_config_or_secret": { "type": "array", + "description": "Configuration for service configs or secrets, defining how they are mounted in the container.", "items": { "oneOf": [ - {"type": "string"}, + { + "type": "string", + "description": "Name of the config or secret to grant access to." + }, { "type": "object", + "description": "Detailed configuration for a config or secret.", "properties": { - "source": {"type": "string"}, - "target": {"type": "string"}, - "uid": {"type": "string"}, - "gid": {"type": "string"}, - "mode": {"type": ["number", "string"]} + "source": { + "type": "string", + "description": "Name of the config or secret as defined in the top-level configs or secrets section." + }, + "target": { + "type": "string", + "description": "Path in the container where the config or secret will be mounted. Defaults to / for configs and /run/secrets/ for secrets." + }, + "uid": { + "type": "string", + "description": "UID of the file in the container. Default is 0 (root)." + }, + "gid": { + "type": "string", + "description": "GID of the file in the container. Default is 0 (root)." + }, + "mode": { + "type": ["number", "string"], + "description": "File permission mode inside the container, in octal. Default is 0444 for configs and 0400 for secrets." + } }, "additionalProperties": false, "patternProperties": {"^x-": {}} @@ -1002,15 +1796,26 @@ }, "ulimits": { "type": "object", + "description": "Container ulimit options, controlling resource limits for processes inside the container.", "patternProperties": { "^[a-z]+$": { "oneOf": [ - {"type": ["integer", "string"]}, + { + "type": ["integer", "string"], + "description": "Single value for both soft and hard limits." + }, { "type": "object", + "description": "Separate soft and hard limits.", "properties": { - "hard": {"type": ["integer", "string"]}, - "soft": {"type": ["integer", "string"]} + "hard": { + "type": ["integer", "string"], + "description": "Hard limit for the ulimit type. This is the maximum allowed value." + }, + "soft": { + "type": ["integer", "string"], + "description": "Soft limit for the ulimit type. This is the value that's actually enforced." + } }, "required": ["soft", "hard"], "additionalProperties": false, @@ -1021,4 +1826,4 @@ } } } -} \ No newline at end of file +} diff --git a/src/check_jsonschema/builtin_schemas/vendor/dependabot.json b/src/check_jsonschema/builtin_schemas/vendor/dependabot.json index eba05f82f..2f11926aa 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/dependabot.json +++ b/src/check_jsonschema/builtin_schemas/vendor/dependabot.json @@ -1,1112 +1,1142 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://json.schemastore.org/dependabot-2.0.json", - "additionalProperties": false, - "definitions": { - "timezone": { - "type": "string", - "enum": [ - "Africa/Abidjan", - "Africa/Accra", - "Africa/Addis_Ababa", - "Africa/Algiers", - "Africa/Asmara", - "Africa/Asmera", - "Africa/Bamako", - "Africa/Bangui", - "Africa/Banjul", - "Africa/Bissau", - "Africa/Blantyre", - "Africa/Brazzaville", - "Africa/Bujumbura", - "Africa/Cairo", - "Africa/Casablanca", - "Africa/Ceuta", - "Africa/Conakry", - "Africa/Dakar", - "Africa/Dar_es_Salaam", - "Africa/Djibouti", - "Africa/Douala", - "Africa/El_Aaiun", - "Africa/Freetown", - "Africa/Gaborone", - "Africa/Harare", - "Africa/Johannesburg", - "Africa/Juba", - "Africa/Kampala", - "Africa/Khartoum", - "Africa/Kigali", - "Africa/Kinshasa", - "Africa/Lagos", - "Africa/Libreville", - "Africa/Lome", - "Africa/Luanda", - "Africa/Lubumbashi", - "Africa/Lusaka", - "Africa/Malabo", - "Africa/Maputo", - "Africa/Maseru", - "Africa/Mbabane", - "Africa/Mogadishu", - "Africa/Monrovia", - "Africa/Nairobi", - "Africa/Ndjamena", - "Africa/Niamey", - "Africa/Nouakchott", - "Africa/Ouagadougou", - "Africa/Porto-Novo", - "Africa/Sao_Tome", - "Africa/Timbuktu", - "Africa/Tripoli", - "Africa/Tunis", - "Africa/Windhoek", - "America/Adak", - "America/Anchorage", - "America/Anguilla", - "America/Antigua", - "America/Araguaina", - "America/Argentina/Buenos_Aires", - "America/Argentina/Catamarca", - "America/Argentina/ComodRivadavia", - "America/Argentina/Cordoba", - "America/Argentina/Jujuy", - "America/Argentina/La_Rioja", - "America/Argentina/Mendoza", - "America/Argentina/Rio_Gallegos", - "America/Argentina/Salta", - "America/Argentina/San_Juan", - "America/Argentina/San_Luis", - "America/Argentina/Tucuman", - "America/Argentina/Ushuaia", - "America/Aruba", - "America/Asuncion", - "America/Atikokan", - "America/Atka", - "America/Bahia", - "America/Bahia_Banderas", - "America/Barbados", - "America/Belem", - "America/Belize", - "America/Blanc-Sablon", - "America/Boa_Vista", - "America/Bogota", - "America/Boise", - "America/Buenos_Aires", - "America/Cambridge_Bay", - "America/Campo_Grande", - "America/Cancun", - "America/Caracas", - "America/Catamarca", - "America/Cayenne", - "America/Cayman", - "America/Chicago", - "America/Chihuahua", - "America/Coral_Harbour", - "America/Cordoba", - "America/Costa_Rica", - "America/Creston", - "America/Cuiaba", - "America/Curacao", - "America/Danmarkshavn", - "America/Dawson", - "America/Dawson_Creek", - "America/Denver", - "America/Detroit", - "America/Dominica", - "America/Edmonton", - "America/Eirunepe", - "America/El_Salvador", - "America/Ensenada", - "America/Fort_Nelson", - "America/Fort_Wayne", - "America/Fortaleza", - "America/Glace_Bay", - "America/Godthab", - "America/Goose_Bay", - "America/Grand_Turk", - "America/Grenada", - "America/Guadeloupe", - "America/Guatemala", - "America/Guayaquil", - "America/Guyana", - "America/Halifax", - "America/Havana", - "America/Hermosillo", - "America/Indiana/Indianapolis", - "America/Indiana/Knox", - "America/Indiana/Marengo", - "America/Indiana/Petersburg", - "America/Indiana/Tell_City", - "America/Indiana/Vevay", - "America/Indiana/Vincennes", - "America/Indiana/Winamac", - "America/Indianapolis", - "America/Inuvik", - "America/Iqaluit", - "America/Jamaica", - "America/Jujuy", - "America/Juneau", - "America/Kentucky/Louisville", - "America/Kentucky/Monticello", - "America/Knox_IN", - "America/Kralendijk", - "America/La_Paz", - "America/Lima", - "America/Los_Angeles", - "America/Louisville", - "America/Lower_Princes", - "America/Maceio", - "America/Managua", - "America/Manaus", - "America/Marigot", - "America/Martinique", - "America/Matamoros", - "America/Mazatlan", - "America/Mendoza", - "America/Menominee", - "America/Merida", - "America/Metlakatla", - "America/Mexico_City", - "America/Miquelon", - "America/Moncton", - "America/Monterrey", - "America/Montevideo", - "America/Montreal", - "America/Montserrat", - "America/Nassau", - "America/New_York", - "America/Nipigon", - "America/Nome", - "America/Noronha", - "America/North_Dakota/Beulah", - "America/North_Dakota/Center", - "America/North_Dakota/New_Salem", - "America/Nuuk", - "America/Ojinaga", - "America/Panama", - "America/Pangnirtung", - "America/Paramaribo", - "America/Phoenix", - "America/Port-au-Prince", - "America/Port_of_Spain", - "America/Porto_Acre", - "America/Porto_Velho", - "America/Puerto_Rico", - "America/Punta_Arenas", - "America/Rainy_River", - "America/Rankin_Inlet", - "America/Recife", - "America/Regina", - "America/Resolute", - "America/Rio_Branco", - "America/Rosario", - "America/Santa_Isabel", - "America/Santarem", - "America/Santiago", - "America/Santo_Domingo", - "America/Sao_Paulo", - "America/Scoresbysund", - "America/Shiprock", - "America/Sitka", - "America/St_Barthelemy", - "America/St_Johns", - "America/St_Kitts", - "America/St_Lucia", - "America/St_Thomas", - "America/St_Vincent", - "America/Swift_Current", - "America/Tegucigalpa", - "America/Thule", - "America/Thunder_Bay", - "America/Tijuana", - "America/Toronto", - "America/Tortola", - "America/Vancouver", - "America/Virgin", - "America/Whitehorse", - "America/Winnipeg", - "America/Yakutat", - "America/Yellowknife", - "Antarctica/Casey", - "Antarctica/Davis", - "Antarctica/DumontDUrville", - "Antarctica/Macquarie", - "Antarctica/Mawson", - "Antarctica/McMurdo", - "Antarctica/Palmer", - "Antarctica/Rothera", - "Antarctica/South_Pole", - "Antarctica/Syowa", - "Antarctica/Troll", - "Antarctica/Vostok", - "Arctic/Longyearbyen", - "Asia/Aden", - "Asia/Almaty", - "Asia/Amman", - "Asia/Anadyr", - "Asia/Aqtau", - "Asia/Aqtobe", - "Asia/Ashgabat", - "Asia/Ashkhabad", - "Asia/Atyrau", - "Asia/Baghdad", - "Asia/Bahrain", - "Asia/Baku", - "Asia/Bangkok", - "Asia/Barnaul", - "Asia/Beirut", - "Asia/Bishkek", - "Asia/Brunei", - "Asia/Calcutta", - "Asia/Chita", - "Asia/Choibalsan", - "Asia/Chongqing", - "Asia/Chungking", - "Asia/Colombo", - "Asia/Dacca", - "Asia/Damascus", - "Asia/Dhaka", - "Asia/Dili", - "Asia/Dubai", - "Asia/Dushanbe", - "Asia/Famagusta", - "Asia/Gaza", - "Asia/Harbin", - "Asia/Hebron", - "Asia/Ho_Chi_Minh", - "Asia/Hong_Kong", - "Asia/Hovd", - "Asia/Irkutsk", - "Asia/Istanbul", - "Asia/Jakarta", - "Asia/Jayapura", - "Asia/Jerusalem", - "Asia/Kabul", - "Asia/Kamchatka", - "Asia/Karachi", - "Asia/Kashgar", - "Asia/Kathmandu", - "Asia/Katmandu", - "Asia/Khandyga", - "Asia/Kolkata", - "Asia/Krasnoyarsk", - "Asia/Kuala_Lumpur", - "Asia/Kuching", - "Asia/Kuwait", - "Asia/Macao", - "Asia/Macau", - "Asia/Magadan", - "Asia/Makassar", - "Asia/Manila", - "Asia/Muscat", - "Asia/Nicosia", - "Asia/Novokuznetsk", - "Asia/Novosibirsk", - "Asia/Omsk", - "Asia/Oral", - "Asia/Phnom_Penh", - "Asia/Pontianak", - "Asia/Pyongyang", - "Asia/Qatar", - "Asia/Qostanay", - "Asia/Qyzylorda", - "Asia/Rangoon", - "Asia/Riyadh", - "Asia/Saigon", - "Asia/Sakhalin", - "Asia/Samarkand", - "Asia/Seoul", - "Asia/Shanghai", - "Asia/Singapore", - "Asia/Srednekolymsk", - "Asia/Taipei", - "Asia/Tashkent", - "Asia/Tbilisi", - "Asia/Tehran", - "Asia/Tel_Aviv", - "Asia/Thimbu", - "Asia/Thimphu", - "Asia/Tokyo", - "Asia/Tomsk", - "Asia/Ujung_Pandang", - "Asia/Ulaanbaatar", - "Asia/Ulan_Bator", - "Asia/Urumqi", - "Asia/Ust-Nera", - "Asia/Vientiane", - "Asia/Vladivostok", - "Asia/Yakutsk", - "Asia/Yangon", - "Asia/Yekaterinburg", - "Asia/Yerevan", - "Atlantic/Azores", - "Atlantic/Bermuda", - "Atlantic/Canary", - "Atlantic/Cape_Verde", - "Atlantic/Faeroe", - "Atlantic/Faroe", - "Atlantic/Jan_Mayen", - "Atlantic/Madeira", - "Atlantic/Reykjavik", - "Atlantic/South_Georgia", - "Atlantic/St_Helena", - "Atlantic/Stanley", - "Australia/ACT", - "Australia/Adelaide", - "Australia/Brisbane", - "Australia/Broken_Hill", - "Australia/Canberra", - "Australia/Currie", - "Australia/Darwin", - "Australia/Eucla", - "Australia/Hobart", - "Australia/LHI", - "Australia/Lindeman", - "Australia/Lord_Howe", - "Australia/Melbourne", - "Australia/North", - "Australia/NSW", - "Australia/Perth", - "Australia/Queensland", - "Australia/South", - "Australia/Sydney", - "Australia/Tasmania", - "Australia/Victoria", - "Australia/West", - "Australia/Yancowinna", - "Brazil/Acre", - "Brazil/DeNoronha", - "Brazil/East", - "Brazil/West", - "Canada/Atlantic", - "Canada/Central", - "Canada/Eastern", - "Canada/Mountain", - "Canada/Newfoundland", - "Canada/Pacific", - "Canada/Saskatchewan", - "Canada/Yukon", - "Chile/Continental", - "Chile/EasterIsland", - "Cuba", - "Egypt", - "Eire", - "Etc/GMT", - "Etc/GMT+0", - "Etc/GMT+1", - "Etc/GMT+10", - "Etc/GMT+11", - "Etc/GMT+12", - "Etc/GMT+2", - "Etc/GMT+3", - "Etc/GMT+4", - "Etc/GMT+5", - "Etc/GMT+6", - "Etc/GMT+7", - "Etc/GMT+8", - "Etc/GMT+9", - "Etc/GMT-0", - "Etc/GMT-1", - "Etc/GMT-10", - "Etc/GMT-11", - "Etc/GMT-12", - "Etc/GMT-13", - "Etc/GMT-14", - "Etc/GMT-2", - "Etc/GMT-3", - "Etc/GMT-4", - "Etc/GMT-5", - "Etc/GMT-6", - "Etc/GMT-7", - "Etc/GMT-8", - "Etc/GMT-9", - "Etc/GMT0", - "Etc/Greenwich", - "Etc/UCT", - "Etc/Universal", - "Etc/UTC", - "Etc/Zulu", - "Europe/Amsterdam", - "Europe/Andorra", - "Europe/Astrakhan", - "Europe/Athens", - "Europe/Belfast", - "Europe/Belgrade", - "Europe/Berlin", - "Europe/Bratislava", - "Europe/Brussels", - "Europe/Bucharest", - "Europe/Budapest", - "Europe/Busingen", - "Europe/Chisinau", - "Europe/Copenhagen", - "Europe/Dublin", - "Europe/Gibraltar", - "Europe/Guernsey", - "Europe/Helsinki", - "Europe/Isle_of_Man", - "Europe/Istanbul", - "Europe/Jersey", - "Europe/Kaliningrad", - "Europe/Kiev", - "Europe/Kirov", - "Europe/Kyiv", - "Europe/Lisbon", - "Europe/Ljubljana", - "Europe/London", - "Europe/Luxembourg", - "Europe/Madrid", - "Europe/Malta", - "Europe/Mariehamn", - "Europe/Minsk", - "Europe/Monaco", - "Europe/Moscow", - "Europe/Nicosia", - "Europe/Oslo", - "Europe/Paris", - "Europe/Podgorica", - "Europe/Prague", - "Europe/Riga", - "Europe/Rome", - "Europe/Samara", - "Europe/San_Marino", - "Europe/Sarajevo", - "Europe/Saratov", - "Europe/Simferopol", - "Europe/Skopje", - "Europe/Sofia", - "Europe/Stockholm", - "Europe/Tallinn", - "Europe/Tirane", - "Europe/Tiraspol", - "Europe/Ulyanovsk", - "Europe/Uzhgorod", - "Europe/Vaduz", - "Europe/Vatican", - "Europe/Vienna", - "Europe/Vilnius", - "Europe/Volgograd", - "Europe/Warsaw", - "Europe/Zagreb", - "Europe/Zaporozhye", - "Europe/Zurich", - "GB", - "GB-Eire", - "Hongkong", - "Iceland", - "Indian/Antananarivo", - "Indian/Chagos", - "Indian/Christmas", - "Indian/Cocos", - "Indian/Comoro", - "Indian/Kerguelen", - "Indian/Mahe", - "Indian/Maldives", - "Indian/Mauritius", - "Indian/Mayotte", - "Indian/Reunion", - "Iran", - "Israel", - "Jamaica", - "Japan", - "Kwajalein", - "Libya", - "Mexico/BajaNorte", - "Mexico/BajaSur", - "Mexico/General", - "Navajo", - "NZ", - "NZ-CHAT", - "Pacific/Apia", - "Pacific/Auckland", - "Pacific/Bougainville", - "Pacific/Chatham", - "Pacific/Chuuk", - "Pacific/Easter", - "Pacific/Efate", - "Pacific/Enderbury", - "Pacific/Fakaofo", - "Pacific/Fiji", - "Pacific/Funafuti", - "Pacific/Galapagos", - "Pacific/Gambier", - "Pacific/Guadalcanal", - "Pacific/Guam", - "Pacific/Honolulu", - "Pacific/Johnston", - "Pacific/Kanton", - "Pacific/Kiritimati", - "Pacific/Kosrae", - "Pacific/Kwajalein", - "Pacific/Majuro", - "Pacific/Marquesas", - "Pacific/Midway", - "Pacific/Nauru", - "Pacific/Niue", - "Pacific/Norfolk", - "Pacific/Noumea", - "Pacific/Pago_Pago", - "Pacific/Palau", - "Pacific/Pitcairn", - "Pacific/Pohnpei", - "Pacific/Ponape", - "Pacific/Port_Moresby", - "Pacific/Rarotonga", - "Pacific/Saipan", - "Pacific/Samoa", - "Pacific/Tahiti", - "Pacific/Tarawa", - "Pacific/Tongatapu", - "Pacific/Truk", - "Pacific/Wake", - "Pacific/Wallis", - "Pacific/Yap", - "Poland", - "Portugal", - "PRC", - "ROC", - "Singapore", - "US/Alaska", - "US/Aleutian", - "US/Arizona", - "US/Central", - "US/East-Indiana", - "US/Eastern", - "US/Hawaii", - "US/Indiana-Starke", - "US/Michigan", - "US/Mountain", - "US/Pacific", - "US/Samoa" - ] - }, - "dependency-type": { - "type": "string", - "enum": ["direct", "indirect", "all", "production", "development"], - "x-intellij-enum-metadata": { - "direct": { - "description": "All explicitly defined dependencies." - }, - "indirect": { - "description": "Dependencies of direct dependencies (also known as sub-dependencies, or transient dependencies)." - }, - "all": { - "description": "All explicitly defined dependencies. For bundler, pip, composer, cargo, also the dependencies of direct dependencies." - }, - "production": { - "description": "Only dependencies in the 'Product dependency group'." - }, - "development": { - "description": "Only dependencies in the 'Development dependency group'." - } - } - }, - "update-types": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "version-update:semver-major", - "version-update:semver-minor", - "version-update:semver-patch" - ] - }, - "minItems": 1, - "uniqueItems": true - }, - "insecure-external-code-execution": { - "type": "string", - "enum": ["allow", "deny"] - }, - "versioning-strategy": { - "type": "string", - "enum": [ - "auto", - "increase", - "increase-if-necessary", - "lockfile-only", - "widen" - ], - "x-intellij-enum-metadata": { - "auto": { - "description": "Try to differentiate between apps and libraries. Use 'increase' for apps and 'widen' for libraries." - }, - "increase": { - "description": "Always increase the minimum version requirement to match the new version. If a range already exists, typically this only increases the lower bound." - }, - "increase-if-necessary": { - "description": "Leave the constraint if the original constraint allows the new version, otherwise, bump the constraint." - }, - "lockfile-only": { - "description": "Only create pull requests to update lockfiles. Ignore any new versions that would require package manifest changes." - }, - "widen": { - "description": "Widen the allowed version requirements to include both the new and old versions, when possible. Typically, this only increases the maximum allowed version requirement." - } - } - }, - "package-ecosystem-values": { - "enum": [ - "bun", - "bundler", - "cargo", - "composer", - "devcontainers", - "docker", - "docker-compose", - "dotnet-sdk", - "elm", - "gitsubmodule", - "github-actions", - "gomod", - "gradle", - "maven", - "mix", - "npm", - "nuget", - "pip", - "pub", - "swift", - "terraform", - "uv" - ] - }, - "schedule-day": { - "type": "string", - "enum": [ - "monday", - "tuesday", - "wednesday", - "thursday", - "friday", - "saturday", - "sunday" - ] - }, - "schedule-interval": { - "type": "string", - "enum": ["daily", "weekly", "monthly"] - }, - "update": { - "type": "object", - "properties": { - "allow": { - "description": "Customize which updates are allowed", - "type": "array", - "items": { - "type": "object", - "properties": { - "dependency-name": { - "type": "string" - }, - "dependency-type": { - "$ref": "#/definitions/dependency-type" - } - }, - "anyOf": [ - { "required": ["dependency-name"] }, - { "required": ["dependency-type"] } - ], - "additionalProperties": false - } - }, - "assignees": { - "description": "Assignees to set on pull requests", - "type": "array", - "items": { - "type": "string", - "minLength": 1 - }, - "minItems": 1, - "uniqueItems": true - }, - "commit-message": { - "description": "Dependabot attempts to detect your commit message preferences and use similar patterns. Use this option to specify your preferences explicitly.", - "type": "object", - "properties": { - "prefix": { - "description": "A prefix for all commit messages. When you specify a prefix for commit messages, GitHub will automatically add a colon between the defined prefix and the commit message provided the defined prefix ends with a letter, number, closing parenthesis, or closing bracket. This means that, for example, if you end the prefix with a whitespace, there will be no colon added between the prefix and the commit message.", - "type": "string", - "maxLength": 50 - }, - "prefix-development": { - "description": "A separate prefix for all commit messages that update dependencies in the Development dependency group. When you specify a value for this option, the prefix is used only for updates to dependencies in the Production dependency group. This is not supported by all package ecosystems.", - "type": "string", - "maxLength": 50 - }, - "include": { - "description": "Specifies that any prefix is followed by a list of the dependencies updated in the commit.", - "type": "string", - "enum": ["scope"], - "default": "scope" - } - }, - "anyOf": [ - { "required": ["prefix"] }, - { "required": ["prefix-development"] }, - { "required": ["include"] } - ], - "additionalProperties": false - }, - "directories": { - "description": "Locations of package manifests", - "type": "array", - "items": { - "type": "string", - "minLength": 1 - }, - "minItems": 1, - "uniqueItems": true - }, - "directory": { - "description": "Location of package manifests", - "type": "string", - "default": "/" - }, - "groups": { - "description": "Configure groups for dependencies. Each 'groups' property is arbitrary will appear in pull request titles and branch names. For example, the code snippet '{\"groups\": {\"NPM dependencies\": {\"patterns\": [\"*\"]}}}' sets the group name to 'NPM dependencies'.", - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "applies-to": { - "description": "Use to specify a whether the rules in the group apply to version updates or security updates.", - "type": "string", - "enum": ["version-updates", "security-updates"] - }, - "dependency-type": { - "description": "Specify a dependency type to be included in the group.", - "type": "string", - "enum": ["development", "production"] - }, - "patterns": { - "description": "Define strings of characters that match with a dependency name (or multiple dependency names) to include those dependencies in the group.", - "type": "array", - "items": { - "type": "string", - "minLength": 1 - }, - "uniqueItems": true, - "minItems": 1 - }, - "exclude-patterns": { - "description": "Exclude certain dependencies from the group. If a dependency is excluded from a group, Dependabot will continue to raise single pull requests to update the dependency to its latest version.", - "type": "array", - "items": { - "type": "string", - "minLength": 1 - }, - "uniqueItems": true, - "minItems": 1 - }, - "update-types": { - "description": "Specify the semantic versioning level to include in the group", - "type": "array", - "items": { - "type": "string", - "enum": ["major", "minor", "patch"] - }, - "minItems": 1, - "uniqueItems": true - } - }, - "anyOf": [ - { "required": ["dependency-type"] }, - { "required": ["patterns"] }, - { "required": ["exclude-patterns"] }, - { "required": ["update-types"] } - ], - "additionalProperties": false - }, - "minProperties": 1 - }, - "ignore": { - "description": "Ignore certain dependencies or versions", - "type": "array", - "items": { - "type": "object", - "properties": { - "dependency-name": { - "description": "Use to ignore updates for dependencies with matching names, optionally using * to match zero or more characters.", - "type": "string" - }, - "update-types": { - "$ref": "#/definitions/update-types", - "description": "Use to ignore types of updates. You can combine this with 'dependency-name: \"*\"' to ignore particular update-types for all dependencies." - }, - "versions": { - "description": "Use to ignore specific versions or ranges of versions. If you want to define a range, use the standard pattern for the package manager.", - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "uniqueItems": true - } - }, - "anyOf": [ - { "required": ["dependency-name"] }, - { "required": ["update-types"] }, - { "required": ["versions"] } - ], - "additionalProperties": false - } - }, - "insecure-external-code-execution": { - "$ref": "#/definitions/insecure-external-code-execution", - "description": "Allow or deny code execution in manifest files" - }, - "labels": { - "description": "Labels to set on pull requests", - "type": "array", - "items": { - "type": "string", - "minLength": 1 - }, - "minItems": 0, - "uniqueItems": true, - "default": ["dependencies"] - }, - "milestone": { - "description": "Associate all pull requests raised for a package manager with a milestone. You need to specify the numeric identifier of the milestone and not its label.", - "type": "integer", - "minimum": 1 - }, - "open-pull-requests-limit": { - "description": "Limit number of open pull requests for version updates", - "type": "integer", - "minimum": 0, - "default": 5 - }, - "package-ecosystem": { - "$comment": "These values are restricted by a top-level if-then-else when 'enable-beta-ecosystems' is not enabled.", - "description": "Package manager to use", - "type": "string", - "anyOf": [ - { "$ref": "#/definitions/package-ecosystem-values" }, - { "minLength": 1 } - ] - }, - "pull-request-branch-name": { - "description": "Pull request branch name preferences", - "type": "object", - "properties": { - "separator": { - "description": "Change separator for PR branch name", - "type": "string", - "default": "/", - "enum": ["-", "_", "/"] - } - }, - "required": ["separator"], - "additionalProperties": false - }, - "rebase-strategy": { - "description": "Disable automatic rebasing. 'auto' is the default and Dependabot will rebase open pull requests when changes are detected. 'disabled' will disable automatic rebasing.", - "type": "string", - "enum": ["auto", "disabled"], - "default": "auto" - }, - "registries": { - "$comment": "'registries' must be either an array of strings, or the string constant '*'.", - "oneOf": [ - { - "type": "array", - "items": { - "type": "string", - "minLength": 1 - }, - "uniqueItems": true, - "minItems": 1 - }, - { - "type": "string", - "const": "*" - } - ] - }, - "reviewers": { - "type": "array", - "items": { - "type": "string", - "minLength": 1 - }, - "description": "Specify individual reviewers or teams of reviewers for all pull requests raised for a package manager. You must use the full team name, including the organization, as if you were @mentioning the team.", - "minItems": 1, - "uniqueItems": true - }, - "schedule": { - "description": "Schedule preferences", - "type": "object", - "properties": { - "interval": { - "$ref": "#/definitions/schedule-interval" - }, - "day": { - "$ref": "#/definitions/schedule-day", - "description": "Specify an alternative day to check for updates" - }, - "time": { - "type": "string", - "description": "Specify an alternative time of day to check for updates (format: hh:mm)", - "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$" - }, - "timezone": { - "$ref": "#/definitions/timezone", - "description": "The time zone identifier must be from the Time Zone database maintained by IANA" - } - }, - "required": ["interval"] - }, - "target-branch": { - "description": "Specify a different branch for manifest files and for pull requests.", - "type": "string", - "minLength": 1 - }, - "vendor": { - "description": "Tell Dependabot to vendor dependencies when updating them. Don't use this option if you're using 'gomod'.", - "type": "boolean" - }, - "versioning-strategy": { - "$ref": "#/definitions/versioning-strategy", - "description": "How to update manifest version requirements" - } - }, - "allOf": [ - { - "required": ["package-ecosystem", "schedule"] - }, - { - "oneOf": [ - { "required": ["directories"] }, - { "required": ["directory"] } - ] - } - ] - }, - "registry": { - "type": "object", - "description": "The top-level registries key is optional. It allows you to specify authentication details that Dependabot can use to access private package registries.", - "additionalProperties": false, - "patternProperties": { - ".+": { - "type": "object", - "additionalProperties": false, - "properties": { - "type": { - "description": "Identifies the type of registry.", - "enum": [ - "composer-repository", - "docker-registry", - "git", - "hex-organization", - "hex-repository", - "maven-repository", - "npm-registry", - "nuget-feed", - "python-index", - "rubygems-server", - "terraform-registry" - ] - }, - "url": { - "description": "The URL to use to access the dependencies in this registry. The protocol is optional. If not specified, 'https://' is assumed. Dependabot adds or ignores trailing slashes as required.", - "type": "string" - }, - "username": { - "description": "The username that Dependabot uses to access the registry.", - "type": "string" - }, - "password": { - "description": "A reference to a Dependabot secret containing the password for the specified user.", - "type": "string" - }, - "key": { - "description": "A reference to a Dependabot secret containing an access key for this registry.", - "type": "string" - }, - "token": { - "description": "A reference to a Dependabot secret containing an access token for this registry.", - "type": "string" - }, - "replaces-base": { - "description": "For registries with type: python-index, if the boolean value is true, pip resolves dependencies by using the specified URL rather than the base URL of the Python Package Index (by default https://pypi.org/simple).", - "type": "boolean" - }, - "organization": { - "description": "", - "type": "string" - }, - "repo": { - "description": "", - "type": "string" - }, - "auth-key": { - "description": "", - "type": "string" - }, - "public-key-fingerprint": { - "description": "", - "type": "string" - } - }, - "required": ["type", "url"] - } - }, - "minProperties": 1 - } - }, - "properties": { - "version": { - "title": "Config file version", - "description": "Dependabot configuration files require this key, and its value must be 2", - "type": "integer", - "enum": [2] - }, - "enable-beta-ecosystems": { - "description": "Enable ecosystems that have beta-level support", - "type": "boolean" - }, - "updates": { - "type": "array", - "items": { - "$ref": "#/definitions/update", - "title": "Package Ecosystem", - "description": "Element for each one package manager that you want GitHub Dependabot to monitor for new versions" - } - }, - "registries": { - "$ref": "#/definitions/registry" - } - }, - "required": ["version", "updates"], - "title": "GitHub Dependabot v2 config", - "type": "object", - "allOf": [ - { - "$comment": "If 'enable-beta-ecosystems' is NOT enabled, enforce known 'package-ecosystem' values.", - "if": { - "properties": { - "enable-beta-ecosystems": { - "const": true - } - }, - "required": ["enable-beta-ecosystems"] - }, - "then": {}, - "else": { - "properties": { - "updates": { - "items": { - "properties": { - "package-ecosystem": { - "$ref": "#/definitions/package-ecosystem-values" - } - } - } - } - } - } - } - ] -} +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://json.schemastore.org/dependabot-2.0.json", + "additionalProperties": false, + "definitions": { + "timezone": { + "type": "string", + "enum": [ + "Africa/Abidjan", + "Africa/Accra", + "Africa/Addis_Ababa", + "Africa/Algiers", + "Africa/Asmara", + "Africa/Asmera", + "Africa/Bamako", + "Africa/Bangui", + "Africa/Banjul", + "Africa/Bissau", + "Africa/Blantyre", + "Africa/Brazzaville", + "Africa/Bujumbura", + "Africa/Cairo", + "Africa/Casablanca", + "Africa/Ceuta", + "Africa/Conakry", + "Africa/Dakar", + "Africa/Dar_es_Salaam", + "Africa/Djibouti", + "Africa/Douala", + "Africa/El_Aaiun", + "Africa/Freetown", + "Africa/Gaborone", + "Africa/Harare", + "Africa/Johannesburg", + "Africa/Juba", + "Africa/Kampala", + "Africa/Khartoum", + "Africa/Kigali", + "Africa/Kinshasa", + "Africa/Lagos", + "Africa/Libreville", + "Africa/Lome", + "Africa/Luanda", + "Africa/Lubumbashi", + "Africa/Lusaka", + "Africa/Malabo", + "Africa/Maputo", + "Africa/Maseru", + "Africa/Mbabane", + "Africa/Mogadishu", + "Africa/Monrovia", + "Africa/Nairobi", + "Africa/Ndjamena", + "Africa/Niamey", + "Africa/Nouakchott", + "Africa/Ouagadougou", + "Africa/Porto-Novo", + "Africa/Sao_Tome", + "Africa/Timbuktu", + "Africa/Tripoli", + "Africa/Tunis", + "Africa/Windhoek", + "America/Adak", + "America/Anchorage", + "America/Anguilla", + "America/Antigua", + "America/Araguaina", + "America/Argentina/Buenos_Aires", + "America/Argentina/Catamarca", + "America/Argentina/ComodRivadavia", + "America/Argentina/Cordoba", + "America/Argentina/Jujuy", + "America/Argentina/La_Rioja", + "America/Argentina/Mendoza", + "America/Argentina/Rio_Gallegos", + "America/Argentina/Salta", + "America/Argentina/San_Juan", + "America/Argentina/San_Luis", + "America/Argentina/Tucuman", + "America/Argentina/Ushuaia", + "America/Aruba", + "America/Asuncion", + "America/Atikokan", + "America/Atka", + "America/Bahia", + "America/Bahia_Banderas", + "America/Barbados", + "America/Belem", + "America/Belize", + "America/Blanc-Sablon", + "America/Boa_Vista", + "America/Bogota", + "America/Boise", + "America/Buenos_Aires", + "America/Cambridge_Bay", + "America/Campo_Grande", + "America/Cancun", + "America/Caracas", + "America/Catamarca", + "America/Cayenne", + "America/Cayman", + "America/Chicago", + "America/Chihuahua", + "America/Coral_Harbour", + "America/Cordoba", + "America/Costa_Rica", + "America/Creston", + "America/Cuiaba", + "America/Curacao", + "America/Danmarkshavn", + "America/Dawson", + "America/Dawson_Creek", + "America/Denver", + "America/Detroit", + "America/Dominica", + "America/Edmonton", + "America/Eirunepe", + "America/El_Salvador", + "America/Ensenada", + "America/Fort_Nelson", + "America/Fort_Wayne", + "America/Fortaleza", + "America/Glace_Bay", + "America/Godthab", + "America/Goose_Bay", + "America/Grand_Turk", + "America/Grenada", + "America/Guadeloupe", + "America/Guatemala", + "America/Guayaquil", + "America/Guyana", + "America/Halifax", + "America/Havana", + "America/Hermosillo", + "America/Indiana/Indianapolis", + "America/Indiana/Knox", + "America/Indiana/Marengo", + "America/Indiana/Petersburg", + "America/Indiana/Tell_City", + "America/Indiana/Vevay", + "America/Indiana/Vincennes", + "America/Indiana/Winamac", + "America/Indianapolis", + "America/Inuvik", + "America/Iqaluit", + "America/Jamaica", + "America/Jujuy", + "America/Juneau", + "America/Kentucky/Louisville", + "America/Kentucky/Monticello", + "America/Knox_IN", + "America/Kralendijk", + "America/La_Paz", + "America/Lima", + "America/Los_Angeles", + "America/Louisville", + "America/Lower_Princes", + "America/Maceio", + "America/Managua", + "America/Manaus", + "America/Marigot", + "America/Martinique", + "America/Matamoros", + "America/Mazatlan", + "America/Mendoza", + "America/Menominee", + "America/Merida", + "America/Metlakatla", + "America/Mexico_City", + "America/Miquelon", + "America/Moncton", + "America/Monterrey", + "America/Montevideo", + "America/Montreal", + "America/Montserrat", + "America/Nassau", + "America/New_York", + "America/Nipigon", + "America/Nome", + "America/Noronha", + "America/North_Dakota/Beulah", + "America/North_Dakota/Center", + "America/North_Dakota/New_Salem", + "America/Nuuk", + "America/Ojinaga", + "America/Panama", + "America/Pangnirtung", + "America/Paramaribo", + "America/Phoenix", + "America/Port-au-Prince", + "America/Port_of_Spain", + "America/Porto_Acre", + "America/Porto_Velho", + "America/Puerto_Rico", + "America/Punta_Arenas", + "America/Rainy_River", + "America/Rankin_Inlet", + "America/Recife", + "America/Regina", + "America/Resolute", + "America/Rio_Branco", + "America/Rosario", + "America/Santa_Isabel", + "America/Santarem", + "America/Santiago", + "America/Santo_Domingo", + "America/Sao_Paulo", + "America/Scoresbysund", + "America/Shiprock", + "America/Sitka", + "America/St_Barthelemy", + "America/St_Johns", + "America/St_Kitts", + "America/St_Lucia", + "America/St_Thomas", + "America/St_Vincent", + "America/Swift_Current", + "America/Tegucigalpa", + "America/Thule", + "America/Thunder_Bay", + "America/Tijuana", + "America/Toronto", + "America/Tortola", + "America/Vancouver", + "America/Virgin", + "America/Whitehorse", + "America/Winnipeg", + "America/Yakutat", + "America/Yellowknife", + "Antarctica/Casey", + "Antarctica/Davis", + "Antarctica/DumontDUrville", + "Antarctica/Macquarie", + "Antarctica/Mawson", + "Antarctica/McMurdo", + "Antarctica/Palmer", + "Antarctica/Rothera", + "Antarctica/South_Pole", + "Antarctica/Syowa", + "Antarctica/Troll", + "Antarctica/Vostok", + "Arctic/Longyearbyen", + "Asia/Aden", + "Asia/Almaty", + "Asia/Amman", + "Asia/Anadyr", + "Asia/Aqtau", + "Asia/Aqtobe", + "Asia/Ashgabat", + "Asia/Ashkhabad", + "Asia/Atyrau", + "Asia/Baghdad", + "Asia/Bahrain", + "Asia/Baku", + "Asia/Bangkok", + "Asia/Barnaul", + "Asia/Beirut", + "Asia/Bishkek", + "Asia/Brunei", + "Asia/Calcutta", + "Asia/Chita", + "Asia/Choibalsan", + "Asia/Chongqing", + "Asia/Chungking", + "Asia/Colombo", + "Asia/Dacca", + "Asia/Damascus", + "Asia/Dhaka", + "Asia/Dili", + "Asia/Dubai", + "Asia/Dushanbe", + "Asia/Famagusta", + "Asia/Gaza", + "Asia/Harbin", + "Asia/Hebron", + "Asia/Ho_Chi_Minh", + "Asia/Hong_Kong", + "Asia/Hovd", + "Asia/Irkutsk", + "Asia/Istanbul", + "Asia/Jakarta", + "Asia/Jayapura", + "Asia/Jerusalem", + "Asia/Kabul", + "Asia/Kamchatka", + "Asia/Karachi", + "Asia/Kashgar", + "Asia/Kathmandu", + "Asia/Katmandu", + "Asia/Khandyga", + "Asia/Kolkata", + "Asia/Krasnoyarsk", + "Asia/Kuala_Lumpur", + "Asia/Kuching", + "Asia/Kuwait", + "Asia/Macao", + "Asia/Macau", + "Asia/Magadan", + "Asia/Makassar", + "Asia/Manila", + "Asia/Muscat", + "Asia/Nicosia", + "Asia/Novokuznetsk", + "Asia/Novosibirsk", + "Asia/Omsk", + "Asia/Oral", + "Asia/Phnom_Penh", + "Asia/Pontianak", + "Asia/Pyongyang", + "Asia/Qatar", + "Asia/Qostanay", + "Asia/Qyzylorda", + "Asia/Rangoon", + "Asia/Riyadh", + "Asia/Saigon", + "Asia/Sakhalin", + "Asia/Samarkand", + "Asia/Seoul", + "Asia/Shanghai", + "Asia/Singapore", + "Asia/Srednekolymsk", + "Asia/Taipei", + "Asia/Tashkent", + "Asia/Tbilisi", + "Asia/Tehran", + "Asia/Tel_Aviv", + "Asia/Thimbu", + "Asia/Thimphu", + "Asia/Tokyo", + "Asia/Tomsk", + "Asia/Ujung_Pandang", + "Asia/Ulaanbaatar", + "Asia/Ulan_Bator", + "Asia/Urumqi", + "Asia/Ust-Nera", + "Asia/Vientiane", + "Asia/Vladivostok", + "Asia/Yakutsk", + "Asia/Yangon", + "Asia/Yekaterinburg", + "Asia/Yerevan", + "Atlantic/Azores", + "Atlantic/Bermuda", + "Atlantic/Canary", + "Atlantic/Cape_Verde", + "Atlantic/Faeroe", + "Atlantic/Faroe", + "Atlantic/Jan_Mayen", + "Atlantic/Madeira", + "Atlantic/Reykjavik", + "Atlantic/South_Georgia", + "Atlantic/St_Helena", + "Atlantic/Stanley", + "Australia/ACT", + "Australia/Adelaide", + "Australia/Brisbane", + "Australia/Broken_Hill", + "Australia/Canberra", + "Australia/Currie", + "Australia/Darwin", + "Australia/Eucla", + "Australia/Hobart", + "Australia/LHI", + "Australia/Lindeman", + "Australia/Lord_Howe", + "Australia/Melbourne", + "Australia/North", + "Australia/NSW", + "Australia/Perth", + "Australia/Queensland", + "Australia/South", + "Australia/Sydney", + "Australia/Tasmania", + "Australia/Victoria", + "Australia/West", + "Australia/Yancowinna", + "Brazil/Acre", + "Brazil/DeNoronha", + "Brazil/East", + "Brazil/West", + "Canada/Atlantic", + "Canada/Central", + "Canada/Eastern", + "Canada/Mountain", + "Canada/Newfoundland", + "Canada/Pacific", + "Canada/Saskatchewan", + "Canada/Yukon", + "Chile/Continental", + "Chile/EasterIsland", + "Cuba", + "Egypt", + "Eire", + "Etc/GMT", + "Etc/GMT+0", + "Etc/GMT+1", + "Etc/GMT+10", + "Etc/GMT+11", + "Etc/GMT+12", + "Etc/GMT+2", + "Etc/GMT+3", + "Etc/GMT+4", + "Etc/GMT+5", + "Etc/GMT+6", + "Etc/GMT+7", + "Etc/GMT+8", + "Etc/GMT+9", + "Etc/GMT-0", + "Etc/GMT-1", + "Etc/GMT-10", + "Etc/GMT-11", + "Etc/GMT-12", + "Etc/GMT-13", + "Etc/GMT-14", + "Etc/GMT-2", + "Etc/GMT-3", + "Etc/GMT-4", + "Etc/GMT-5", + "Etc/GMT-6", + "Etc/GMT-7", + "Etc/GMT-8", + "Etc/GMT-9", + "Etc/GMT0", + "Etc/Greenwich", + "Etc/UCT", + "Etc/Universal", + "Etc/UTC", + "Etc/Zulu", + "Europe/Amsterdam", + "Europe/Andorra", + "Europe/Astrakhan", + "Europe/Athens", + "Europe/Belfast", + "Europe/Belgrade", + "Europe/Berlin", + "Europe/Bratislava", + "Europe/Brussels", + "Europe/Bucharest", + "Europe/Budapest", + "Europe/Busingen", + "Europe/Chisinau", + "Europe/Copenhagen", + "Europe/Dublin", + "Europe/Gibraltar", + "Europe/Guernsey", + "Europe/Helsinki", + "Europe/Isle_of_Man", + "Europe/Istanbul", + "Europe/Jersey", + "Europe/Kaliningrad", + "Europe/Kiev", + "Europe/Kirov", + "Europe/Kyiv", + "Europe/Lisbon", + "Europe/Ljubljana", + "Europe/London", + "Europe/Luxembourg", + "Europe/Madrid", + "Europe/Malta", + "Europe/Mariehamn", + "Europe/Minsk", + "Europe/Monaco", + "Europe/Moscow", + "Europe/Nicosia", + "Europe/Oslo", + "Europe/Paris", + "Europe/Podgorica", + "Europe/Prague", + "Europe/Riga", + "Europe/Rome", + "Europe/Samara", + "Europe/San_Marino", + "Europe/Sarajevo", + "Europe/Saratov", + "Europe/Simferopol", + "Europe/Skopje", + "Europe/Sofia", + "Europe/Stockholm", + "Europe/Tallinn", + "Europe/Tirane", + "Europe/Tiraspol", + "Europe/Ulyanovsk", + "Europe/Uzhgorod", + "Europe/Vaduz", + "Europe/Vatican", + "Europe/Vienna", + "Europe/Vilnius", + "Europe/Volgograd", + "Europe/Warsaw", + "Europe/Zagreb", + "Europe/Zaporozhye", + "Europe/Zurich", + "GB", + "GB-Eire", + "Hongkong", + "Iceland", + "Indian/Antananarivo", + "Indian/Chagos", + "Indian/Christmas", + "Indian/Cocos", + "Indian/Comoro", + "Indian/Kerguelen", + "Indian/Mahe", + "Indian/Maldives", + "Indian/Mauritius", + "Indian/Mayotte", + "Indian/Reunion", + "Iran", + "Israel", + "Jamaica", + "Japan", + "Kwajalein", + "Libya", + "Mexico/BajaNorte", + "Mexico/BajaSur", + "Mexico/General", + "Navajo", + "NZ", + "NZ-CHAT", + "Pacific/Apia", + "Pacific/Auckland", + "Pacific/Bougainville", + "Pacific/Chatham", + "Pacific/Chuuk", + "Pacific/Easter", + "Pacific/Efate", + "Pacific/Enderbury", + "Pacific/Fakaofo", + "Pacific/Fiji", + "Pacific/Funafuti", + "Pacific/Galapagos", + "Pacific/Gambier", + "Pacific/Guadalcanal", + "Pacific/Guam", + "Pacific/Honolulu", + "Pacific/Johnston", + "Pacific/Kanton", + "Pacific/Kiritimati", + "Pacific/Kosrae", + "Pacific/Kwajalein", + "Pacific/Majuro", + "Pacific/Marquesas", + "Pacific/Midway", + "Pacific/Nauru", + "Pacific/Niue", + "Pacific/Norfolk", + "Pacific/Noumea", + "Pacific/Pago_Pago", + "Pacific/Palau", + "Pacific/Pitcairn", + "Pacific/Pohnpei", + "Pacific/Ponape", + "Pacific/Port_Moresby", + "Pacific/Rarotonga", + "Pacific/Saipan", + "Pacific/Samoa", + "Pacific/Tahiti", + "Pacific/Tarawa", + "Pacific/Tongatapu", + "Pacific/Truk", + "Pacific/Wake", + "Pacific/Wallis", + "Pacific/Yap", + "Poland", + "Portugal", + "PRC", + "ROC", + "Singapore", + "US/Alaska", + "US/Aleutian", + "US/Arizona", + "US/Central", + "US/East-Indiana", + "US/Eastern", + "US/Hawaii", + "US/Indiana-Starke", + "US/Michigan", + "US/Mountain", + "US/Pacific", + "US/Samoa" + ] + }, + "dependency-type": { + "type": "string", + "enum": ["direct", "indirect", "all", "production", "development"], + "x-intellij-enum-metadata": { + "direct": { + "description": "All explicitly defined dependencies." + }, + "indirect": { + "description": "Dependencies of direct dependencies (also known as sub-dependencies, or transient dependencies)." + }, + "all": { + "description": "All explicitly defined dependencies. For bundler, pip, composer, cargo, also the dependencies of direct dependencies." + }, + "production": { + "description": "Only dependencies in the 'Product dependency group'." + }, + "development": { + "description": "Only dependencies in the 'Development dependency group'." + } + } + }, + "update-types": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "version-update:semver-major", + "version-update:semver-minor", + "version-update:semver-patch" + ] + }, + "minItems": 1, + "uniqueItems": true + }, + "insecure-external-code-execution": { + "type": "string", + "enum": ["allow", "deny"] + }, + "versioning-strategy": { + "type": "string", + "enum": [ + "auto", + "increase", + "increase-if-necessary", + "lockfile-only", + "widen" + ], + "x-intellij-enum-metadata": { + "auto": { + "description": "Try to differentiate between apps and libraries. Use 'increase' for apps and 'widen' for libraries." + }, + "increase": { + "description": "Always increase the minimum version requirement to match the new version. If a range already exists, typically this only increases the lower bound." + }, + "increase-if-necessary": { + "description": "Leave the constraint if the original constraint allows the new version, otherwise, bump the constraint." + }, + "lockfile-only": { + "description": "Only create pull requests to update lockfiles. Ignore any new versions that would require package manifest changes." + }, + "widen": { + "description": "Widen the allowed version requirements to include both the new and old versions, when possible. Typically, this only increases the maximum allowed version requirement." + } + } + }, + "package-ecosystem-values": { + "enum": [ + "bun", + "bundler", + "cargo", + "composer", + "devcontainers", + "docker", + "docker-compose", + "dotnet-sdk", + "elm", + "gitsubmodule", + "github-actions", + "gomod", + "gradle", + "helm", + "maven", + "mix", + "npm", + "nuget", + "pip", + "pub", + "swift", + "terraform", + "uv" + ] + }, + "schedule-day": { + "type": "string", + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday" + ] + }, + "schedule-interval": { + "type": "string", + "enum": [ + "daily", + "weekly", + "monthly", + "quarterly", + "semiannually", + "yearly", + "cron" + ] + }, + "update": { + "type": "object", + "properties": { + "allow": { + "description": "Customize which updates are allowed", + "type": "array", + "items": { + "type": "object", + "properties": { + "dependency-name": { + "type": "string" + }, + "dependency-type": { + "$ref": "#/definitions/dependency-type" + } + }, + "anyOf": [ + { "required": ["dependency-name"] }, + { "required": ["dependency-type"] } + ], + "additionalProperties": false + } + }, + "assignees": { + "description": "Assignees to set on pull requests", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + }, + "minItems": 1, + "uniqueItems": true + }, + "commit-message": { + "description": "Dependabot attempts to detect your commit message preferences and use similar patterns. Use this option to specify your preferences explicitly.", + "type": "object", + "properties": { + "prefix": { + "description": "A prefix for all commit messages. When you specify a prefix for commit messages, GitHub will automatically add a colon between the defined prefix and the commit message provided the defined prefix ends with a letter, number, closing parenthesis, or closing bracket. This means that, for example, if you end the prefix with a whitespace, there will be no colon added between the prefix and the commit message.", + "type": "string", + "maxLength": 50 + }, + "prefix-development": { + "description": "A separate prefix for all commit messages that update dependencies in the Development dependency group. When you specify a value for this option, the prefix is used only for updates to dependencies in the Production dependency group. This is not supported by all package ecosystems.", + "type": "string", + "maxLength": 50 + }, + "include": { + "description": "Specifies that any prefix is followed by a list of the dependencies updated in the commit.", + "type": "string", + "enum": ["scope"], + "default": "scope" + } + }, + "anyOf": [ + { "required": ["prefix"] }, + { "required": ["prefix-development"] }, + { "required": ["include"] } + ], + "additionalProperties": false + }, + "directories": { + "description": "Locations of package manifests", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + }, + "minItems": 1, + "uniqueItems": true + }, + "directory": { + "description": "Location of package manifests", + "type": "string", + "default": "/" + }, + "groups": { + "description": "Configure groups for dependencies. Each 'groups' property is arbitrary will appear in pull request titles and branch names. For example, the code snippet '{\"groups\": {\"NPM dependencies\": {\"patterns\": [\"*\"]}}}' sets the group name to 'NPM dependencies'.", + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "applies-to": { + "description": "Use to specify a whether the rules in the group apply to version updates or security updates.", + "type": "string", + "enum": ["version-updates", "security-updates"] + }, + "dependency-type": { + "description": "Specify a dependency type to be included in the group.", + "type": "string", + "enum": ["development", "production"] + }, + "patterns": { + "description": "Define strings of characters that match with a dependency name (or multiple dependency names) to include those dependencies in the group.", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + }, + "uniqueItems": true, + "minItems": 1 + }, + "exclude-patterns": { + "description": "Exclude certain dependencies from the group. If a dependency is excluded from a group, Dependabot will continue to raise single pull requests to update the dependency to its latest version.", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + }, + "uniqueItems": true, + "minItems": 1 + }, + "update-types": { + "description": "Specify the semantic versioning level to include in the group", + "type": "array", + "items": { + "type": "string", + "enum": ["major", "minor", "patch"] + }, + "minItems": 1, + "uniqueItems": true + } + }, + "anyOf": [ + { "required": ["dependency-type"] }, + { "required": ["patterns"] }, + { "required": ["exclude-patterns"] }, + { "required": ["update-types"] } + ], + "additionalProperties": false + }, + "minProperties": 1 + }, + "ignore": { + "description": "Ignore certain dependencies or versions", + "type": "array", + "items": { + "type": "object", + "properties": { + "dependency-name": { + "description": "Use to ignore updates for dependencies with matching names, optionally using * to match zero or more characters.", + "type": "string" + }, + "update-types": { + "$ref": "#/definitions/update-types", + "description": "Use to ignore types of updates. You can combine this with 'dependency-name: \"*\"' to ignore particular update-types for all dependencies." + }, + "versions": { + "description": "Use to ignore specific versions or ranges of versions. If you want to define a range, use the standard pattern for the package manager.", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1, + "uniqueItems": true + } + }, + "anyOf": [ + { "required": ["dependency-name"] }, + { "required": ["update-types"] }, + { "required": ["versions"] } + ], + "additionalProperties": false + } + }, + "insecure-external-code-execution": { + "$ref": "#/definitions/insecure-external-code-execution", + "description": "Allow or deny code execution in manifest files" + }, + "labels": { + "description": "Labels to set on pull requests", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + }, + "minItems": 0, + "uniqueItems": true, + "default": ["dependencies"] + }, + "milestone": { + "description": "Associate all pull requests raised for a package manager with a milestone. You need to specify the numeric identifier of the milestone and not its label.", + "type": "integer", + "minimum": 1 + }, + "open-pull-requests-limit": { + "description": "Limit number of open pull requests for version updates", + "type": "integer", + "minimum": 0, + "default": 5 + }, + "package-ecosystem": { + "$comment": "These values are restricted by a top-level if-then-else when 'enable-beta-ecosystems' is not enabled.", + "description": "Package manager to use", + "type": "string", + "anyOf": [ + { "$ref": "#/definitions/package-ecosystem-values" }, + { "minLength": 1 } + ] + }, + "pull-request-branch-name": { + "description": "Pull request branch name preferences", + "type": "object", + "properties": { + "separator": { + "description": "Change separator for PR branch name", + "type": "string", + "default": "/", + "enum": ["-", "_", "/"] + } + }, + "required": ["separator"], + "additionalProperties": false + }, + "rebase-strategy": { + "description": "Disable automatic rebasing. 'auto' is the default and Dependabot will rebase open pull requests when changes are detected. 'disabled' will disable automatic rebasing.", + "type": "string", + "enum": ["auto", "disabled"], + "default": "auto" + }, + "registries": { + "$comment": "'registries' must be either an array of strings, or the string constant '*'.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "minLength": 1 + }, + "uniqueItems": true, + "minItems": 1 + }, + { + "type": "string", + "const": "*" + } + ] + }, + "reviewers": { + "type": "array", + "items": { + "type": "string", + "minLength": 1 + }, + "description": "Specify individual reviewers or teams of reviewers for all pull requests raised for a package manager. You must use the full team name, including the organization, as if you were @mentioning the team.", + "minItems": 1, + "uniqueItems": true + }, + "schedule": { + "description": "Schedule preferences", + "type": "object", + "properties": { + "interval": { + "$ref": "#/definitions/schedule-interval" + }, + "day": { + "$ref": "#/definitions/schedule-day", + "description": "Specify an alternative day to check for updates" + }, + "time": { + "type": "string", + "description": "Specify an alternative time of day to check for updates (format: hh:mm)", + "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$" + }, + "timezone": { + "$ref": "#/definitions/timezone", + "description": "The time zone identifier must be from the Time Zone database maintained by IANA" + }, + "cronjob": { + "type": "string", + "description": "Specify a valid cron expression for updates" + } + }, + "allOf": [ + { + "$comment": "If interval type is 'cron', enforce 'cronjob' property.", + "if": { + "properties": { + "interval": { + "const": "cron" + } + } + }, + "then": { + "required": ["interval", "cronjob"] + }, + "else": { + "required": ["interval"] + } + } + ] + }, + "target-branch": { + "description": "Specify a different branch for manifest files and for pull requests.", + "type": "string", + "minLength": 1 + }, + "vendor": { + "description": "Tell Dependabot to vendor dependencies when updating them. Don't use this option if you're using 'gomod'.", + "type": "boolean" + }, + "versioning-strategy": { + "$ref": "#/definitions/versioning-strategy", + "description": "How to update manifest version requirements" + } + }, + "allOf": [ + { + "required": ["package-ecosystem", "schedule"] + }, + { + "oneOf": [ + { "required": ["directories"] }, + { "required": ["directory"] } + ] + } + ] + }, + "registry": { + "type": "object", + "description": "The top-level registries key is optional. It allows you to specify authentication details that Dependabot can use to access private package registries.", + "additionalProperties": false, + "patternProperties": { + ".+": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "description": "Identifies the type of registry.", + "enum": [ + "composer-repository", + "docker-registry", + "git", + "hex-organization", + "hex-repository", + "maven-repository", + "npm-registry", + "nuget-feed", + "python-index", + "rubygems-server", + "terraform-registry" + ] + }, + "url": { + "description": "The URL to use to access the dependencies in this registry. The protocol is optional. If not specified, 'https://' is assumed. Dependabot adds or ignores trailing slashes as required.", + "type": "string" + }, + "username": { + "description": "The username that Dependabot uses to access the registry.", + "type": "string" + }, + "password": { + "description": "A reference to a Dependabot secret containing the password for the specified user.", + "type": "string" + }, + "key": { + "description": "A reference to a Dependabot secret containing an access key for this registry.", + "type": "string" + }, + "token": { + "description": "A reference to a Dependabot secret containing an access token for this registry.", + "type": "string" + }, + "replaces-base": { + "description": "For registries with type: python-index, if the boolean value is true, pip resolves dependencies by using the specified URL rather than the base URL of the Python Package Index (by default https://pypi.org/simple).", + "type": "boolean" + }, + "organization": { + "description": "", + "type": "string" + }, + "repo": { + "description": "", + "type": "string" + }, + "auth-key": { + "description": "", + "type": "string" + }, + "public-key-fingerprint": { + "description": "", + "type": "string" + } + }, + "required": ["type", "url"] + } + }, + "minProperties": 1 + } + }, + "properties": { + "version": { + "title": "Config file version", + "description": "Dependabot configuration files require this key, and its value must be 2", + "type": "integer", + "enum": [2] + }, + "enable-beta-ecosystems": { + "description": "Enable ecosystems that have beta-level support", + "type": "boolean" + }, + "updates": { + "type": "array", + "items": { + "$ref": "#/definitions/update", + "title": "Package Ecosystem", + "description": "Element for each one package manager that you want GitHub Dependabot to monitor for new versions" + } + }, + "registries": { + "$ref": "#/definitions/registry" + } + }, + "required": ["version", "updates"], + "title": "GitHub Dependabot v2 config", + "type": "object", + "allOf": [ + { + "$comment": "If 'enable-beta-ecosystems' is NOT enabled, enforce known 'package-ecosystem' values.", + "if": { + "properties": { + "enable-beta-ecosystems": { + "const": true + } + }, + "required": ["enable-beta-ecosystems"] + }, + "then": {}, + "else": { + "properties": { + "updates": { + "items": { + "properties": { + "package-ecosystem": { + "$ref": "#/definitions/package-ecosystem-values" + } + } + } + } + } + } + } + ] +} diff --git a/src/check_jsonschema/builtin_schemas/vendor/drone-ci.json b/src/check_jsonschema/builtin_schemas/vendor/drone-ci.json index 43d30239e..aa9d64787 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/drone-ci.json +++ b/src/check_jsonschema/builtin_schemas/vendor/drone-ci.json @@ -1,850 +1,850 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://json.schemastore.org/drone.json", - "definitions": { - "nonEmptyString": { - "type": "string", - "minLength": 1 - }, - "platform": { - "type": "object", - "properties": { - "os": { - "type": "string", - "enum": [ - "linux", - "windows", - "darwin", - "freebsd", - "netbsd", - "openbsd", - "dragonfly", - "solaris" - ] - }, - "arch": { - "type": "string", - "enum": ["arm", "arm64", "amd64", "386"] - }, - "variant": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "commands": { - "type": "array", - "items": { - "$ref": "#/definitions/nonEmptyString" - } - }, - "environment": { - "type": "object", - "additionalProperties": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "$ref": "#/definitions/secret" - } - ] - } - }, - "condition": { - "type": "array", - "items": { - "type": "string" - } - }, - "conditions": { - "anyOf": [ - { - "$ref": "#/definitions/condition" - }, - { - "type": "object", - "properties": { - "include": { - "$ref": "#/definitions/condition" - } - } - }, - { - "type": "object", - "properties": { - "exclude": { - "$ref": "#/definitions/condition" - } - } - } - ] - }, - "allConditions": { - "type": "object", - "properties": { - "branch": { - "$ref": "#/definitions/conditions" - }, - "cron": { - "$ref": "#/definitions/conditions" - }, - "event": { - "$ref": "#/definitions/conditions" - }, - "paths": { - "$ref": "#/definitions/conditions" - }, - "ref": { - "$ref": "#/definitions/conditions" - }, - "repo": { - "$ref": "#/definitions/conditions" - }, - "status": { - "$ref": "#/definitions/condition" - }, - "target": { - "$ref": "#/definitions/conditions" - }, - "instance": { - "$ref": "#/definitions/conditions" - } - } - }, - "volumes": { - "type": "array", - "items": { - "type": "object", - "oneOf": [ - { - "required": ["name", "host"] - }, - { - "required": ["name", "path"] - }, - { - "required": ["name", "temp"] - }, - { - "required": ["name", "claim"] - }, - { - "required": ["name", "config_map"] - } - ], - "properties": { - "name": { - "$ref": "#/definitions/nonEmptyString" - }, - "host": { - "type": "object", - "properties": { - "path": { - "$ref": "#/definitions/nonEmptyString" - } - } - }, - "temp": { - "type": "object", - "additionalProperties": false, - "properties": { - "medium": { - "type": "string", - "enum": ["memory"] - } - } - }, - "claim": { - "type": "object", - "properties": { - "name": { - "$ref": "#/definitions/nonEmptyString" - }, - "read_only": { - "type": "boolean" - } - } - }, - "config_map": { - "type": "object", - "properties": { - "name": { - "$ref": "#/definitions/nonEmptyString" - }, - "default_mode": { - "type": "integer" - }, - "optional": { - "type": "boolean" - } - } - } - } - } - }, - "services": { - "type": "array", - "items": { - "type": "object", - "required": ["name", "image"], - "properties": { - "name": { - "$ref": "#/definitions/nonEmptyString" - }, - "image": { - "$ref": "#/definitions/nonEmptyString" - }, - "command": { - "$ref": "#/definitions/commands" - }, - "entrypoint": { - "$ref": "#/definitions/commands" - }, - "environment": { - "$ref": "#/definitions/environment" - }, - "privileged": { - "type": "boolean" - }, - "pull": { - "const": "always" - }, - "volumes": { - "$ref": "#/definitions/volumes" - }, - "working_dir": { - "$ref": "#/definitions/nonEmptyString" - } - } - } - }, - "secret": { - "type": "object", - "required": ["from_secret"], - "properties": { - "from_secret": { - "type": "string" - } - } - }, - "stringOrSecret": { - "oneOf": [ - { - "$ref": "#/definitions/nonEmptyString" - }, - { - "$ref": "#/definitions/secret" - } - ] - }, - "node": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "concurrency": { - "type": "object", - "required": ["limit"], - "properties": { - "limit": { - "type": "number" - } - } - }, - "kind_signature": { - "type": "object", - "required": ["hmac"], - "properties": { - "kind": { - "const": "signature" - }, - "hmac": { - "type": "string", - "minLength": 40, - "maxLength": 64 - } - } - }, - "kind_secret": { - "type": "object", - "required": ["name"], - "properties": { - "kind": { - "const": "secret" - }, - "name": { - "$ref": "#/definitions/nonEmptyString" - }, - "data": { - "type": "string" - }, - "get": { - "type": "object", - "required": ["path", "name"], - "properties": { - "path": { - "$ref": "#/definitions/nonEmptyString" - }, - "name": { - "$ref": "#/definitions/nonEmptyString" - } - } - } - } - }, - "kind_template": { - "type": "object", - "required": ["load"], - "properties": { - "load": { - "type": "string" - }, - "data": { - "type": "object" - } - } - }, - "kind_pipeline": { - "type": "object", - "required": ["type", "name", "steps"], - "properties": { - "kind": { - "const": "pipeline" - }, - "name": { - "$ref": "#/definitions/nonEmptyString" - }, - "type": { - "enum": [ - "docker", - "kubernetes", - "ssh", - "exec", - "digitalocean", - "macstadium" - ] - }, - "platform": { - "$ref": "#/definitions/platform" - }, - "workspace": { - "type": "object", - "required": ["path"], - "properties": { - "path": { - "$ref": "#/definitions/nonEmptyString" - } - } - }, - "clone": { - "type": "object", - "properties": { - "depth": { - "type": "integer" - }, - "disable": { - "const": true - }, - "retries": { - "type": "integer" - } - } - }, - "steps": { - "type": "array", - "minLength": 1 - }, - "trigger": { - "$ref": "#/definitions/allConditions" - }, - "depends_on": { - "type": "array", - "items": { - "$ref": "#/definitions/nonEmptyString" - } - } - } - }, - "pipeline_docker": { - "type": "object", - "additionalProperties": false, - "properties": { - "type": { - "const": "docker" - }, - "environment": { - "$ref": "#/definitions/environment" - }, - "steps": { - "items": { - "$ref": "#/definitions/step_docker" - } - }, - "volumes": { - "$ref": "#/definitions/volumes" - }, - "services": { - "$ref": "#/definitions/services" - }, - "image_pull_secrets": { - "type": "array", - "items": { - "type": "string" - } - }, - "node": { - "$ref": "#/definitions/node" - }, - "concurrency": { - "$ref": "#/definitions/concurrency" - }, - "kind": {}, - "name": {}, - "platform": {}, - "workspace": {}, - "clone": {}, - "trigger": {}, - "depends_on": {} - } - }, - "pipeline_kubernetes": { - "type": "object", - "additionalProperties": false, - "properties": { - "type": { - "const": "kubernetes" - }, - "metadata": { - "$ref": "https://json.schemastore.org/kubernetes-definitions.json#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" - }, - "node": { - "$ref": "#/definitions/node" - }, - "tolerations": { - "description": "If specified, the pod's tolerations.", - "items": { - "$ref": "https://json.schemastore.org/kubernetes-definitions.json#/definitions/io.k8s.api.core.v1.Toleration" - }, - "type": "array" - }, - "dns_config": { - "$ref": "https://json.schemastore.org/kubernetes-definitions.json#/definitions/io.k8s.api.core.v1.PodDNSConfig", - "description": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy." - }, - "host_aliases": { - "description": "HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", - "items": { - "$ref": "https://json.schemastore.org/kubernetes-definitions.json#/definitions/io.k8s.api.core.v1.HostAlias" - }, - "type": "array" - }, - "node_selector": { - "description": "A list of node selector terms.", - "items": { - "$ref": "https://json.schemastore.org/kubernetes-definitions.json#/definitions/io.k8s.api.core.v1.NodeSelectorTerm" - } - }, - "steps": { - "items": { - "$ref": "#/definitions/step_kubernetes" - } - }, - "volumes": { - "$ref": "#/definitions/volumes" - }, - "services": { - "$ref": "#/definitions/services" - }, - "image_pull_secrets": { - "type": "array", - "items": { - "type": "string" - } - }, - "service_account_name": { - "description": "The name of the service account to use when running the kubernetes pipeline", - "type": "string" - }, - "kind": {}, - "name": {}, - "platform": {}, - "workspace": {}, - "clone": {}, - "trigger": {}, - "depends_on": {} - } - }, - "pipeline_exec": { - "type": "object", - "additionalProperties": false, - "properties": { - "type": { - "const": "exec" - }, - "steps": { - "items": { - "$ref": "#/definitions/step_exec" - } - }, - "node": { - "$ref": "#/definitions/node" - }, - "kind": {}, - "name": {}, - "platform": {}, - "workspace": {}, - "clone": {}, - "trigger": {}, - "depends_on": {} - } - }, - "pipeline_ssh": { - "type": "object", - "additionalProperties": false, - "required": ["server"], - "properties": { - "type": { - "const": "ssh" - }, - "steps": { - "items": { - "$ref": "#/definitions/step_ssh" - } - }, - "server": { - "required": ["host", "user"], - "properties": { - "host": { - "$ref": "#/definitions/stringOrSecret" - }, - "user": { - "$ref": "#/definitions/stringOrSecret" - }, - "password": { - "$ref": "#/definitions/stringOrSecret" - }, - "ssh_key": { - "$ref": "#/definitions/stringOrSecret" - } - } - }, - "kind": {}, - "name": {}, - "platform": {}, - "workspace": {}, - "clone": {}, - "trigger": {}, - "depends_on": {} - } - }, - "pipeline_digitalocean": { - "type": "object", - "additionalProperties": false, - "required": ["token"], - "properties": { - "type": { - "const": "digitalocean" - }, - "token": { - "$ref": "#/definitions/stringOrSecret" - }, - "steps": { - "items": { - "$ref": "#/definitions/step_digitalocean" - } - }, - "kind": {}, - "name": {}, - "platform": {}, - "workspace": {}, - "clone": {}, - "trigger": {}, - "depends_on": {} - } - }, - "pipeline_macstadium": { - "type": "object", - "additionalProperties": false, - "properties": { - "type": { - "const": "macstadium" - }, - "steps": { - "items": { - "$ref": "#/definitions/step_macstadium" - } - }, - "kind": {}, - "name": {}, - "platform": {}, - "workspace": {}, - "clone": {}, - "trigger": {}, - "depends_on": {} - } - }, - "step": { - "type": "object", - "required": ["name"], - "properties": { - "name": { - "$ref": "#/definitions/nonEmptyString" - }, - "failure": { - "type": "string", - "enum": ["always", "ignore"] - }, - "commands": { - "$ref": "#/definitions/commands" - }, - "detach": { - "type": "boolean" - }, - "environment": { - "$ref": "#/definitions/environment" - }, - "when": { - "$ref": "#/definitions/allConditions" - }, - "depends_on": { - "type": "array", - "items": { - "$ref": "#/definitions/nonEmptyString" - } - } - } - }, - "step_docker": { - "allOf": [ - { - "$ref": "#/definitions/step" - }, - { - "type": "object", - "additionalProperties": false, - "required": ["image"], - "properties": { - "image": { - "$ref": "#/definitions/nonEmptyString" - }, - "network_mode": { - "type": "string", - "enum": ["bridge", "host"] - }, - "privileged": { - "type": "boolean" - }, - "pull": { - "type": "string", - "enum": ["always", "never", "if-not-exists"] - }, - "volumes": { - "$ref": "#/definitions/steps_volumes" - }, - "settings": { - "type": "object" - }, - "name": {}, - "detach": { - "type": "boolean" - }, - "failure": {}, - "commands": {}, - "environment": {}, - "when": {}, - "depends_on": {}, - "user": {} - } - } - ] - }, - "step_kubernetes": { - "allOf": [ - { - "$ref": "#/definitions/step" - }, - { - "type": "object", - "additionalProperties": false, - "required": ["image"], - "properties": { - "image": { - "$ref": "#/definitions/nonEmptyString" - }, - "privileged": { - "type": "boolean" - }, - "pull": { - "type": "string", - "enum": ["always", "never", "if-not-exists"] - }, - "resources": { - "$ref": "https://json.schemastore.org/kubernetes-definitions.json#/definitions/io.k8s.api.core.v1.ResourceRequirements" - }, - "volumes": { - "$ref": "#/definitions/steps_volumes" - }, - "settings": { - "type": "object" - }, - "name": {}, - "failure": {}, - "commands": {}, - "environment": {}, - "when": {}, - "depends_on": {} - } - } - ] - }, - "step_exec": { - "allOf": [ - { - "$ref": "#/definitions/step" - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "name": {}, - "failure": {}, - "commands": {}, - "environment": {}, - "when": {}, - "depends_on": {} - } - } - ] - }, - "step_ssh": { - "allOf": [ - { - "$ref": "#/definitions/step" - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "name": {}, - "failure": {}, - "commands": {}, - "environment": {}, - "when": {}, - "depends_on": {} - } - } - ] - }, - "step_digitalocean": { - "allOf": [ - { - "$ref": "#/definitions/step" - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "name": {}, - "failure": {}, - "commands": {}, - "environment": {}, - "when": {}, - "depends_on": {} - } - } - ] - }, - "step_macstadium": { - "allOf": [ - { - "$ref": "#/definitions/step" - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "name": {}, - "failure": {}, - "commands": {}, - "environment": {}, - "when": {}, - "depends_on": {} - } - } - ] - }, - "steps_volumes": { - "type": "array", - "items": { - "type": "object", - "required": ["name", "path"], - "properties": { - "name": { - "$ref": "#/definitions/nonEmptyString" - }, - "path": { - "$ref": "#/definitions/nonEmptyString" - } - } - } - } - }, - "oneOf": [ - { - "$ref": "#/definitions/kind_signature" - }, - { - "$ref": "#/definitions/kind_secret" - }, - { - "$ref": "#/definitions/kind_template" - }, - { - "allOf": [ - { - "$ref": "#/definitions/kind_pipeline" - }, - { - "oneOf": [ - { - "$ref": "#/definitions/pipeline_docker" - }, - { - "$ref": "#/definitions/pipeline_kubernetes" - }, - { - "$ref": "#/definitions/pipeline_exec" - }, - { - "$ref": "#/definitions/pipeline_ssh" - }, - { - "$ref": "#/definitions/pipeline_digitalocean" - }, - { - "$ref": "#/definitions/pipeline_macstadium" - } - ] - } - ] - } - ], - "properties": { - "kind": { - "enum": ["signature", "secret", "template", "pipeline"] - } - }, - "required": ["kind"], - "title": "Drone CI configuration file", - "type": "object" -} +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://json.schemastore.org/drone.json", + "definitions": { + "nonEmptyString": { + "type": "string", + "minLength": 1 + }, + "platform": { + "type": "object", + "properties": { + "os": { + "type": "string", + "enum": [ + "linux", + "windows", + "darwin", + "freebsd", + "netbsd", + "openbsd", + "dragonfly", + "solaris" + ] + }, + "arch": { + "type": "string", + "enum": ["arm", "arm64", "amd64", "386"] + }, + "variant": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "commands": { + "type": "array", + "items": { + "$ref": "#/definitions/nonEmptyString" + } + }, + "environment": { + "type": "object", + "additionalProperties": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "$ref": "#/definitions/secret" + } + ] + } + }, + "condition": { + "type": "array", + "items": { + "type": "string" + } + }, + "conditions": { + "anyOf": [ + { + "$ref": "#/definitions/condition" + }, + { + "type": "object", + "properties": { + "include": { + "$ref": "#/definitions/condition" + } + } + }, + { + "type": "object", + "properties": { + "exclude": { + "$ref": "#/definitions/condition" + } + } + } + ] + }, + "allConditions": { + "type": "object", + "properties": { + "branch": { + "$ref": "#/definitions/conditions" + }, + "cron": { + "$ref": "#/definitions/conditions" + }, + "event": { + "$ref": "#/definitions/conditions" + }, + "paths": { + "$ref": "#/definitions/conditions" + }, + "ref": { + "$ref": "#/definitions/conditions" + }, + "repo": { + "$ref": "#/definitions/conditions" + }, + "status": { + "$ref": "#/definitions/condition" + }, + "target": { + "$ref": "#/definitions/conditions" + }, + "instance": { + "$ref": "#/definitions/conditions" + } + } + }, + "volumes": { + "type": "array", + "items": { + "type": "object", + "oneOf": [ + { + "required": ["name", "host"] + }, + { + "required": ["name", "path"] + }, + { + "required": ["name", "temp"] + }, + { + "required": ["name", "claim"] + }, + { + "required": ["name", "config_map"] + } + ], + "properties": { + "name": { + "$ref": "#/definitions/nonEmptyString" + }, + "host": { + "type": "object", + "properties": { + "path": { + "$ref": "#/definitions/nonEmptyString" + } + } + }, + "temp": { + "type": "object", + "additionalProperties": false, + "properties": { + "medium": { + "type": "string", + "enum": ["memory"] + } + } + }, + "claim": { + "type": "object", + "properties": { + "name": { + "$ref": "#/definitions/nonEmptyString" + }, + "read_only": { + "type": "boolean" + } + } + }, + "config_map": { + "type": "object", + "properties": { + "name": { + "$ref": "#/definitions/nonEmptyString" + }, + "default_mode": { + "type": "integer" + }, + "optional": { + "type": "boolean" + } + } + } + } + } + }, + "services": { + "type": "array", + "items": { + "type": "object", + "required": ["name", "image"], + "properties": { + "name": { + "$ref": "#/definitions/nonEmptyString" + }, + "image": { + "$ref": "#/definitions/nonEmptyString" + }, + "command": { + "$ref": "#/definitions/commands" + }, + "entrypoint": { + "$ref": "#/definitions/commands" + }, + "environment": { + "$ref": "#/definitions/environment" + }, + "privileged": { + "type": "boolean" + }, + "pull": { + "const": "always" + }, + "volumes": { + "$ref": "#/definitions/volumes" + }, + "working_dir": { + "$ref": "#/definitions/nonEmptyString" + } + } + } + }, + "secret": { + "type": "object", + "required": ["from_secret"], + "properties": { + "from_secret": { + "type": "string" + } + } + }, + "stringOrSecret": { + "oneOf": [ + { + "$ref": "#/definitions/nonEmptyString" + }, + { + "$ref": "#/definitions/secret" + } + ] + }, + "node": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "concurrency": { + "type": "object", + "required": ["limit"], + "properties": { + "limit": { + "type": "number" + } + } + }, + "kind_signature": { + "type": "object", + "required": ["hmac"], + "properties": { + "kind": { + "const": "signature" + }, + "hmac": { + "type": "string", + "minLength": 40, + "maxLength": 64 + } + } + }, + "kind_secret": { + "type": "object", + "required": ["name"], + "properties": { + "kind": { + "const": "secret" + }, + "name": { + "$ref": "#/definitions/nonEmptyString" + }, + "data": { + "type": "string" + }, + "get": { + "type": "object", + "required": ["path", "name"], + "properties": { + "path": { + "$ref": "#/definitions/nonEmptyString" + }, + "name": { + "$ref": "#/definitions/nonEmptyString" + } + } + } + } + }, + "kind_template": { + "type": "object", + "required": ["load"], + "properties": { + "load": { + "type": "string" + }, + "data": { + "type": "object" + } + } + }, + "kind_pipeline": { + "type": "object", + "required": ["type", "name", "steps"], + "properties": { + "kind": { + "const": "pipeline" + }, + "name": { + "$ref": "#/definitions/nonEmptyString" + }, + "type": { + "enum": [ + "docker", + "kubernetes", + "ssh", + "exec", + "digitalocean", + "macstadium" + ] + }, + "platform": { + "$ref": "#/definitions/platform" + }, + "workspace": { + "type": "object", + "required": ["path"], + "properties": { + "path": { + "$ref": "#/definitions/nonEmptyString" + } + } + }, + "clone": { + "type": "object", + "properties": { + "depth": { + "type": "integer" + }, + "disable": { + "const": true + }, + "retries": { + "type": "integer" + } + } + }, + "steps": { + "type": "array", + "minLength": 1 + }, + "trigger": { + "$ref": "#/definitions/allConditions" + }, + "depends_on": { + "type": "array", + "items": { + "$ref": "#/definitions/nonEmptyString" + } + } + } + }, + "pipeline_docker": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "const": "docker" + }, + "environment": { + "$ref": "#/definitions/environment" + }, + "steps": { + "items": { + "$ref": "#/definitions/step_docker" + } + }, + "volumes": { + "$ref": "#/definitions/volumes" + }, + "services": { + "$ref": "#/definitions/services" + }, + "image_pull_secrets": { + "type": "array", + "items": { + "type": "string" + } + }, + "node": { + "$ref": "#/definitions/node" + }, + "concurrency": { + "$ref": "#/definitions/concurrency" + }, + "kind": {}, + "name": {}, + "platform": {}, + "workspace": {}, + "clone": {}, + "trigger": {}, + "depends_on": {} + } + }, + "pipeline_kubernetes": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "const": "kubernetes" + }, + "metadata": { + "$ref": "https://json.schemastore.org/kubernetes-definitions.json#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" + }, + "node": { + "$ref": "#/definitions/node" + }, + "tolerations": { + "description": "If specified, the pod's tolerations.", + "items": { + "$ref": "https://json.schemastore.org/kubernetes-definitions.json#/definitions/io.k8s.api.core.v1.Toleration" + }, + "type": "array" + }, + "dns_config": { + "$ref": "https://json.schemastore.org/kubernetes-definitions.json#/definitions/io.k8s.api.core.v1.PodDNSConfig", + "description": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy." + }, + "host_aliases": { + "description": "HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", + "items": { + "$ref": "https://json.schemastore.org/kubernetes-definitions.json#/definitions/io.k8s.api.core.v1.HostAlias" + }, + "type": "array" + }, + "node_selector": { + "description": "A list of node selector terms.", + "items": { + "$ref": "https://json.schemastore.org/kubernetes-definitions.json#/definitions/io.k8s.api.core.v1.NodeSelectorTerm" + } + }, + "steps": { + "items": { + "$ref": "#/definitions/step_kubernetes" + } + }, + "volumes": { + "$ref": "#/definitions/volumes" + }, + "services": { + "$ref": "#/definitions/services" + }, + "image_pull_secrets": { + "type": "array", + "items": { + "type": "string" + } + }, + "service_account_name": { + "description": "The name of the service account to use when running the kubernetes pipeline", + "type": "string" + }, + "kind": {}, + "name": {}, + "platform": {}, + "workspace": {}, + "clone": {}, + "trigger": {}, + "depends_on": {} + } + }, + "pipeline_exec": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "const": "exec" + }, + "steps": { + "items": { + "$ref": "#/definitions/step_exec" + } + }, + "node": { + "$ref": "#/definitions/node" + }, + "kind": {}, + "name": {}, + "platform": {}, + "workspace": {}, + "clone": {}, + "trigger": {}, + "depends_on": {} + } + }, + "pipeline_ssh": { + "type": "object", + "additionalProperties": false, + "required": ["server"], + "properties": { + "type": { + "const": "ssh" + }, + "steps": { + "items": { + "$ref": "#/definitions/step_ssh" + } + }, + "server": { + "required": ["host", "user"], + "properties": { + "host": { + "$ref": "#/definitions/stringOrSecret" + }, + "user": { + "$ref": "#/definitions/stringOrSecret" + }, + "password": { + "$ref": "#/definitions/stringOrSecret" + }, + "ssh_key": { + "$ref": "#/definitions/stringOrSecret" + } + } + }, + "kind": {}, + "name": {}, + "platform": {}, + "workspace": {}, + "clone": {}, + "trigger": {}, + "depends_on": {} + } + }, + "pipeline_digitalocean": { + "type": "object", + "additionalProperties": false, + "required": ["token"], + "properties": { + "type": { + "const": "digitalocean" + }, + "token": { + "$ref": "#/definitions/stringOrSecret" + }, + "steps": { + "items": { + "$ref": "#/definitions/step_digitalocean" + } + }, + "kind": {}, + "name": {}, + "platform": {}, + "workspace": {}, + "clone": {}, + "trigger": {}, + "depends_on": {} + } + }, + "pipeline_macstadium": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "const": "macstadium" + }, + "steps": { + "items": { + "$ref": "#/definitions/step_macstadium" + } + }, + "kind": {}, + "name": {}, + "platform": {}, + "workspace": {}, + "clone": {}, + "trigger": {}, + "depends_on": {} + } + }, + "step": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "$ref": "#/definitions/nonEmptyString" + }, + "failure": { + "type": "string", + "enum": ["always", "ignore"] + }, + "commands": { + "$ref": "#/definitions/commands" + }, + "detach": { + "type": "boolean" + }, + "environment": { + "$ref": "#/definitions/environment" + }, + "when": { + "$ref": "#/definitions/allConditions" + }, + "depends_on": { + "type": "array", + "items": { + "$ref": "#/definitions/nonEmptyString" + } + } + } + }, + "step_docker": { + "allOf": [ + { + "$ref": "#/definitions/step" + }, + { + "type": "object", + "additionalProperties": false, + "required": ["image"], + "properties": { + "image": { + "$ref": "#/definitions/nonEmptyString" + }, + "network_mode": { + "type": "string", + "enum": ["bridge", "host"] + }, + "privileged": { + "type": "boolean" + }, + "pull": { + "type": "string", + "enum": ["always", "never", "if-not-exists"] + }, + "volumes": { + "$ref": "#/definitions/steps_volumes" + }, + "settings": { + "type": "object" + }, + "name": {}, + "detach": { + "type": "boolean" + }, + "failure": {}, + "commands": {}, + "environment": {}, + "when": {}, + "depends_on": {}, + "user": {} + } + } + ] + }, + "step_kubernetes": { + "allOf": [ + { + "$ref": "#/definitions/step" + }, + { + "type": "object", + "additionalProperties": false, + "required": ["image"], + "properties": { + "image": { + "$ref": "#/definitions/nonEmptyString" + }, + "privileged": { + "type": "boolean" + }, + "pull": { + "type": "string", + "enum": ["always", "never", "if-not-exists"] + }, + "resources": { + "$ref": "https://json.schemastore.org/kubernetes-definitions.json#/definitions/io.k8s.api.core.v1.ResourceRequirements" + }, + "volumes": { + "$ref": "#/definitions/steps_volumes" + }, + "settings": { + "type": "object" + }, + "name": {}, + "failure": {}, + "commands": {}, + "environment": {}, + "when": {}, + "depends_on": {} + } + } + ] + }, + "step_exec": { + "allOf": [ + { + "$ref": "#/definitions/step" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "name": {}, + "failure": {}, + "commands": {}, + "environment": {}, + "when": {}, + "depends_on": {} + } + } + ] + }, + "step_ssh": { + "allOf": [ + { + "$ref": "#/definitions/step" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "name": {}, + "failure": {}, + "commands": {}, + "environment": {}, + "when": {}, + "depends_on": {} + } + } + ] + }, + "step_digitalocean": { + "allOf": [ + { + "$ref": "#/definitions/step" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "name": {}, + "failure": {}, + "commands": {}, + "environment": {}, + "when": {}, + "depends_on": {} + } + } + ] + }, + "step_macstadium": { + "allOf": [ + { + "$ref": "#/definitions/step" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "name": {}, + "failure": {}, + "commands": {}, + "environment": {}, + "when": {}, + "depends_on": {} + } + } + ] + }, + "steps_volumes": { + "type": "array", + "items": { + "type": "object", + "required": ["name", "path"], + "properties": { + "name": { + "$ref": "#/definitions/nonEmptyString" + }, + "path": { + "$ref": "#/definitions/nonEmptyString" + } + } + } + } + }, + "oneOf": [ + { + "$ref": "#/definitions/kind_signature" + }, + { + "$ref": "#/definitions/kind_secret" + }, + { + "$ref": "#/definitions/kind_template" + }, + { + "allOf": [ + { + "$ref": "#/definitions/kind_pipeline" + }, + { + "oneOf": [ + { + "$ref": "#/definitions/pipeline_docker" + }, + { + "$ref": "#/definitions/pipeline_kubernetes" + }, + { + "$ref": "#/definitions/pipeline_exec" + }, + { + "$ref": "#/definitions/pipeline_ssh" + }, + { + "$ref": "#/definitions/pipeline_digitalocean" + }, + { + "$ref": "#/definitions/pipeline_macstadium" + } + ] + } + ] + } + ], + "properties": { + "kind": { + "enum": ["signature", "secret", "template", "pipeline"] + } + }, + "required": ["kind"], + "title": "Drone CI configuration file", + "type": "object" +} diff --git a/src/check_jsonschema/builtin_schemas/vendor/github-actions.json b/src/check_jsonschema/builtin_schemas/vendor/github-actions.json index c31b2ff40..10e442c4c 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/github-actions.json +++ b/src/check_jsonschema/builtin_schemas/vendor/github-actions.json @@ -1,695 +1,695 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://json.schemastore.org/github-action.json", - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions", - "additionalProperties": false, - "definitions": { - "expressionSyntax": { - "$comment": "escape `{` and `}` in pattern to be unicode compatible (#1360)", - "type": "string", - "pattern": "^\\$\\{\\{(.|[\r\n])*\\}\\}$" - }, - "stringContainingExpressionSyntax": { - "$comment": "escape `{` and `}` in pattern to be unicode compatible (#1360)", - "type": "string", - "pattern": "^.*\\$\\{\\{(.|[\r\n])*\\}\\}.*$" - }, - "pre-if": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runspre-if", - "description": "Allows you to define conditions for the `pre:` action execution. The `pre:` action will only run if the conditions in `pre-if` are met. If not set, then `pre-if` defaults to `always()`. Note that the `step` context is unavailable, as no steps have run yet.", - "type": "string" - }, - "post-if": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runspost-if", - "description": "Allows you to define conditions for the `post:` action execution. The `post:` action will only run if the conditions in `post-if` are met. If not set, then `post-if` defaults to `always()`.", - "type": "string" - }, - "runs-javascript": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runs-for-javascript-actions", - "description": "Configures the path to the action's code and the application used to execute the code.", - "type": "object", - "properties": { - "using": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsusing", - "description": "The application used to execute the code specified in `main`.", - "enum": ["node12", "node16", "node20"] - }, - "main": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsmain", - "description": "The file that contains your action code. The application specified in `using` executes this file.", - "type": "string" - }, - "pre": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runspre", - "description": "Allows you to run a script at the start of a job, before the `main:` action begins. For example, you can use `pre:` to run a prerequisite setup script. The application specified with the `using` syntax will execute this file. The `pre:` action always runs by default but you can override this using `pre-if`.", - "type": "string" - }, - "pre-if": { - "$ref": "#/definitions/pre-if" - }, - "post": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runspost", - "description": "Allows you to run a script at the end of a job, once the `main:` action has completed. For example, you can use `post:` to terminate certain processes or remove unneeded files. The application specified with the `using` syntax will execute this file. The `post:` action always runs by default but you can override this using `post-if`.", - "type": "string" - }, - "post-if": { - "$ref": "#/definitions/post-if" - } - }, - "required": ["using", "main"], - "additionalProperties": false - }, - "runs-composite": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runs-for-composite-actions", - "description": "Configures the path to the composite action, and the application used to execute the code.", - "type": "object", - "properties": { - "using": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsusing-for-composite-actions", - "description": "To use a composite run steps action, set this to 'composite'.", - "const": "composite" - }, - "steps": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runssteps", - "description": "The run steps that you plan to run in this action.", - "type": "array", - "items": { - "type": "object", - "properties": { - "run": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepsrun", - "description": "The command you want to run. This can be inline or a script in your action repository.", - "type": "string" - }, - "shell": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepsshell", - "description": "The shell where you want to run the command.", - "type": "string", - "anyOf": [ - { - "$comment": "https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#custom-shell" - }, - { - "enum": [ - "bash", - "pwsh", - "python", - "sh", - "cmd", - "powershell" - ] - } - ] - }, - "uses": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepsuses", - "description": "Selects an action to run as part of a step in your job.", - "type": "string" - }, - "with": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepswith", - "description": "A map of the input parameters defined by the action. Each input parameter is a key/value pair. Input parameters are set as environment variables. The variable is prefixed with INPUT_ and converted to upper case.", - "type": "object" - }, - "name": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepsname", - "description": "The name of the composite run step.", - "type": "string" - }, - "id": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepsid", - "description": "A unique identifier for the step. You can use the `id` to reference the step in contexts.", - "type": "string" - }, - "if": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepsif", - "description": "You can use the if conditional to prevent a step from running unless a condition is met. You can use any supported context and expression to create a conditional.\nExpressions in an if conditional do not require the ${{ }} syntax. For more information, see https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.", - "type": "string" - }, - "env": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepsenv", - "description": "Sets a map of environment variables for only that step.", - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - } - ] - } - }, - { - "$ref": "#/definitions/stringContainingExpressionSyntax" - } - ] - }, - "continue-on-error": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepscontinue-on-error", - "description": "Prevents a job from failing when a step fails. Set to true to allow a job to pass when this step fails.", - "oneOf": [ - { - "type": "boolean" - }, - { - "$ref": "#/definitions/expressionSyntax" - } - ], - "default": false - }, - "working-directory": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepsworking-directory", - "description": "Specifies the working directory where the command is run.", - "type": "string" - } - }, - "oneOf": [ - { - "required": ["run", "shell"] - }, - { - "required": ["uses"] - } - ], - "additionalProperties": false - } - } - }, - "required": ["using", "steps"], - "additionalProperties": false - }, - "runs-docker": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runs-for-docker-container-actions", - "description": "Configures the image used for the Docker action.", - "type": "object", - "properties": { - "using": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsusing-for-docker-container-actions", - "description": "You must set this value to 'docker'.", - "const": "docker" - }, - "image": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsimage", - "description": "The Docker image to use as the container to run the action. The value can be the Docker base image name, a local `Dockerfile` in your repository, or a public image in Docker Hub or another registry. To reference a `Dockerfile` local to your repository, use a path relative to your action metadata file. The `docker` application will execute this file.", - "type": "string" - }, - "env": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsenv", - "description": "Specifies a key/value map of environment variables to set in the container environment.", - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - } - ] - } - }, - { - "$ref": "#/definitions/stringContainingExpressionSyntax" - } - ] - }, - "entrypoint": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsentrypoint", - "description": "Overrides the Docker `ENTRYPOINT` in the `Dockerfile`, or sets it if one wasn't already specified. Use `entrypoint` when the `Dockerfile` does not specify an `ENTRYPOINT` or you want to override the `ENTRYPOINT` instruction. If you omit `entrypoint`, the commands you specify in the Docker `ENTRYPOINT` instruction will execute. The Docker `ENTRYPOINT instruction has a *shell* form and *exec* form. The Docker `ENTRYPOINT` documentation recommends using the *exec* form of the `ENTRYPOINT` instruction.", - "type": "string" - }, - "pre-entrypoint": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runspre-entrypoint", - "description": "Allows you to run a script before the `entrypoint` action begins. For example, you can use `pre-entrypoint:` to run a prerequisite setup script. GitHub Actions uses `docker run` to launch this action, and runs the script inside a new container that uses the same base image. This means that the runtime state is different from the main `entrypoint` container, and any states you require must be accessed in either the workspace, `HOME`, or as a `STATE_` variable. The `pre-entrypoint:` action always runs by default but you can override this using `pre-if`.", - "type": "string" - }, - "pre-if": { - "$ref": "#/definitions/pre-if" - }, - "post-entrypoint": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runspost-entrypoint", - "description": "Allows you to run a cleanup script once the `runs.entrypoint` action has completed. GitHub Actions uses `docker run` to launch this action. Because GitHub Actions runs the script inside a new container using the same base image, the runtime state is different from the main `entrypoint` container. You can access any state you need in either the workspace, `HOME`, or as a `STATE_` variable. The `post-entrypoint:` action always runs by default but you can override this using `post-if`.", - "type": "string" - }, - "post-if": { - "$ref": "#/definitions/post-if" - }, - "args": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsargs", - "description": "An array of strings that define the inputs for a Docker container. Inputs can include hardcoded strings. GitHub passes the `args` to the container's `ENTRYPOINT` when the container starts up.\nThe `args` are used in place of the `CMD` instruction in a `Dockerfile`. If you use `CMD` in your `Dockerfile`, use the guidelines ordered by preference:\n- Document required arguments in the action's README and omit them from the `CMD` instruction.\n- Use defaults that allow using the action without specifying any `args`.\n- If the action exposes a `--help` flag, or something similar, use that to make your action self-documenting.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": ["using", "image"], - "additionalProperties": false - }, - "outputs": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#outputs-for-docker-container-and-javascript-actions", - "description": "Output parameters allow you to declare data that an action sets. Actions that run later in a workflow can use the output data set in previously run actions. For example, if you had an action that performed the addition of two inputs (x + y = z), the action could output the sum (z) for other actions to use as an input.\nIf you don't declare an output in your action metadata file, you can still set outputs and use them in a workflow.", - "type": "object", - "patternProperties": { - "^[_a-zA-Z][a-zA-Z0-9_-]*$": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#outputsoutput_id", - "description": "A string identifier to associate with the output. The value of `` is a map of the output's metadata. The `` must be a unique identifier within the outputs object. The `` must start with a letter or `_` and contain only alphanumeric characters, `-`, or `_`.", - "type": "object", - "properties": { - "description": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#outputsoutput_iddescription", - "description": "A string description of the output parameter.", - "type": "string" - } - }, - "required": ["description"], - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "outputs-composite": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#outputs-for-composite-actions", - "description": "Output parameters allow you to declare data that an action sets. Actions that run later in a workflow can use the output data set in previously run actions. For example, if you had an action that performed the addition of two inputs (x + y = z), the action could output the sum (z) for other actions to use as an input.\nIf you don't declare an output in your action metadata file, you can still set outputs and use them in a workflow.", - "type": "object", - "patternProperties": { - "^[_a-zA-Z][a-zA-Z0-9_-]*$": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#outputsoutput_id", - "description": "A string identifier to associate with the output. The value of `` is a map of the output's metadata. The `` must be a unique identifier within the outputs object. The `` must start with a letter or `_` and contain only alphanumeric characters, `-`, or `_`.", - "type": "object", - "properties": { - "description": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#outputsoutput_iddescription", - "description": "A string description of the output parameter.", - "type": "string" - }, - "value": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#outputsoutput_idvalue", - "description": "The value that the output parameter will be mapped to. You can set this to a string or an expression with context. For example, you can use the steps context to set the value of an output to the output value of a step.", - "type": "string" - } - }, - "required": ["description", "value"], - "additionalProperties": false - } - }, - "additionalProperties": false - } - }, - "else": { - "properties": { - "outputs": { - "$ref": "#/definitions/outputs" - } - } - }, - "if": { - "properties": { - "runs": { - "properties": { - "using": { - "const": "composite" - } - } - } - } - }, - "properties": { - "name": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#name", - "description": "The name of your action. GitHub displays the `name` in the Actions tab to help visually identify actions in each job.", - "type": "string" - }, - "author": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#author", - "description": "The name of the action's author.", - "type": "string" - }, - "description": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#description", - "description": "A short description of the action.", - "type": "string" - }, - "inputs": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#inputs", - "description": "Input parameters allow you to specify data that the action expects to use during runtime. GitHub stores input parameters as environment variables. Input ids with uppercase letters are converted to lowercase during runtime. We recommended using lowercase input ids.", - "type": "object", - "patternProperties": { - "^[_a-zA-Z][a-zA-Z0-9_-]*$": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#inputsinput_id", - "description": "A string identifier to associate with the input. The value of `` is a map of the input's metadata. The `` must be a unique identifier within the inputs object. The `` must start with a letter or `_` and contain only alphanumeric characters, `-`, or `_`.", - "type": "object", - "properties": { - "description": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#inputsinput_iddescription", - "description": "A string description of the input parameter.", - "type": "string" - }, - "deprecationMessage": { - "description": "A string shown to users using the deprecated input.", - "type": "string" - }, - "required": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#inputsinput_idrequired", - "description": "A boolean to indicate whether the action requires the input parameter. Set to `true` when the parameter is required.", - "type": "boolean" - }, - "default": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#inputsinput_iddefault", - "description": "A string representing the default value. The default value is used when an input parameter isn't specified in a workflow file.", - "type": "string" - } - }, - "required": ["description"], - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "outputs": { - "$comment": "Because of `additionalProperties: false`, this empty schema is needed to allow the `outputs` property. The `outputs` subschema is determined by the if/then/else keywords." - }, - "runs": { - "oneOf": [ - { - "$ref": "#/definitions/runs-javascript" - }, - { - "$ref": "#/definitions/runs-composite" - }, - { - "$ref": "#/definitions/runs-docker" - } - ] - }, - "branding": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#branding", - "description": "You can use a color and Feather icon to create a badge to personalize and distinguish your action. Badges are shown next to your action name in GitHub Marketplace.", - "type": "object", - "properties": { - "color": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#brandingcolor", - "description": "The background color of the badge.", - "type": "string", - "enum": [ - "white", - "black", - "yellow", - "blue", - "green", - "orange", - "red", - "purple", - "gray-dark" - ] - }, - "icon": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#brandingicon", - "description": "The name of the Feather icon to use.", - "type": "string", - "enum": [ - "activity", - "airplay", - "alert-circle", - "alert-octagon", - "alert-triangle", - "align-center", - "align-justify", - "align-left", - "align-right", - "anchor", - "aperture", - "archive", - "arrow-down-circle", - "arrow-down-left", - "arrow-down-right", - "arrow-down", - "arrow-left-circle", - "arrow-left", - "arrow-right-circle", - "arrow-right", - "arrow-up-circle", - "arrow-up-left", - "arrow-up-right", - "arrow-up", - "at-sign", - "award", - "bar-chart-2", - "bar-chart", - "battery-charging", - "battery", - "bell-off", - "bell", - "bluetooth", - "bold", - "book-open", - "book", - "bookmark", - "box", - "briefcase", - "calendar", - "camera-off", - "camera", - "cast", - "check-circle", - "check-square", - "check", - "chevron-down", - "chevron-left", - "chevron-right", - "chevron-up", - "chevrons-down", - "chevrons-left", - "chevrons-right", - "chevrons-up", - "circle", - "clipboard", - "clock", - "cloud-drizzle", - "cloud-lightning", - "cloud-off", - "cloud-rain", - "cloud-snow", - "cloud", - "code", - "command", - "compass", - "copy", - "corner-down-left", - "corner-down-right", - "corner-left-down", - "corner-left-up", - "corner-right-down", - "corner-right-up", - "corner-up-left", - "corner-up-right", - "cpu", - "credit-card", - "crop", - "crosshair", - "database", - "delete", - "disc", - "dollar-sign", - "download-cloud", - "download", - "droplet", - "edit-2", - "edit-3", - "edit", - "external-link", - "eye-off", - "eye", - "fast-forward", - "feather", - "file-minus", - "file-plus", - "file-text", - "file", - "film", - "filter", - "flag", - "folder-minus", - "folder-plus", - "folder", - "gift", - "git-branch", - "git-commit", - "git-merge", - "git-pull-request", - "globe", - "grid", - "hard-drive", - "hash", - "headphones", - "heart", - "help-circle", - "home", - "image", - "inbox", - "info", - "italic", - "layers", - "layout", - "life-buoy", - "link-2", - "link", - "list", - "loader", - "lock", - "log-in", - "log-out", - "mail", - "map-pin", - "map", - "maximize-2", - "maximize", - "menu", - "message-circle", - "message-square", - "mic-off", - "mic", - "minimize-2", - "minimize", - "minus-circle", - "minus-square", - "minus", - "monitor", - "moon", - "more-horizontal", - "more-vertical", - "move", - "music", - "navigation-2", - "navigation", - "octagon", - "package", - "paperclip", - "pause-circle", - "pause", - "percent", - "phone-call", - "phone-forwarded", - "phone-incoming", - "phone-missed", - "phone-off", - "phone-outgoing", - "phone", - "pie-chart", - "play-circle", - "play", - "plus-circle", - "plus-square", - "plus", - "pocket", - "power", - "printer", - "radio", - "refresh-ccw", - "refresh-cw", - "repeat", - "rewind", - "rotate-ccw", - "rotate-cw", - "rss", - "save", - "scissors", - "search", - "send", - "server", - "settings", - "share-2", - "share", - "shield-off", - "shield", - "shopping-bag", - "shopping-cart", - "shuffle", - "sidebar", - "skip-back", - "skip-forward", - "slash", - "sliders", - "smartphone", - "speaker", - "square", - "star", - "stop-circle", - "sun", - "sunrise", - "sunset", - "table", - "tablet", - "tag", - "target", - "terminal", - "thermometer", - "thumbs-down", - "thumbs-up", - "toggle-left", - "toggle-right", - "trash-2", - "trash", - "trending-down", - "trending-up", - "triangle", - "truck", - "tv", - "type", - "umbrella", - "underline", - "unlock", - "upload-cloud", - "upload", - "user-check", - "user-minus", - "user-plus", - "user-x", - "user", - "users", - "video-off", - "video", - "voicemail", - "volume-1", - "volume-2", - "volume-x", - "volume", - "watch", - "wifi-off", - "wifi", - "wind", - "x-circle", - "x-square", - "x", - "zap-off", - "zap", - "zoom-in", - "zoom-out" - ] - } - }, - "additionalProperties": false - } - }, - "required": ["name", "description", "runs"], - "then": { - "properties": { - "outputs": { - "$ref": "#/definitions/outputs-composite" - } - } - }, - "type": "object" -} +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://json.schemastore.org/github-action.json", + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions", + "additionalProperties": false, + "definitions": { + "expressionSyntax": { + "$comment": "escape `{` and `}` in pattern to be unicode compatible (#1360)", + "type": "string", + "pattern": "^\\$\\{\\{(.|[\r\n])*\\}\\}$" + }, + "stringContainingExpressionSyntax": { + "$comment": "escape `{` and `}` in pattern to be unicode compatible (#1360)", + "type": "string", + "pattern": "^.*\\$\\{\\{(.|[\r\n])*\\}\\}.*$" + }, + "pre-if": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runspre-if", + "description": "Allows you to define conditions for the `pre:` action execution. The `pre:` action will only run if the conditions in `pre-if` are met. If not set, then `pre-if` defaults to `always()`. Note that the `step` context is unavailable, as no steps have run yet.", + "type": "string" + }, + "post-if": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runspost-if", + "description": "Allows you to define conditions for the `post:` action execution. The `post:` action will only run if the conditions in `post-if` are met. If not set, then `post-if` defaults to `always()`.", + "type": "string" + }, + "runs-javascript": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runs-for-javascript-actions", + "description": "Configures the path to the action's code and the application used to execute the code.", + "type": "object", + "properties": { + "using": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsusing", + "description": "The application used to execute the code specified in `main`.", + "enum": ["node12", "node16", "node20"] + }, + "main": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsmain", + "description": "The file that contains your action code. The application specified in `using` executes this file.", + "type": "string" + }, + "pre": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runspre", + "description": "Allows you to run a script at the start of a job, before the `main:` action begins. For example, you can use `pre:` to run a prerequisite setup script. The application specified with the `using` syntax will execute this file. The `pre:` action always runs by default but you can override this using `pre-if`.", + "type": "string" + }, + "pre-if": { + "$ref": "#/definitions/pre-if" + }, + "post": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runspost", + "description": "Allows you to run a script at the end of a job, once the `main:` action has completed. For example, you can use `post:` to terminate certain processes or remove unneeded files. The application specified with the `using` syntax will execute this file. The `post:` action always runs by default but you can override this using `post-if`.", + "type": "string" + }, + "post-if": { + "$ref": "#/definitions/post-if" + } + }, + "required": ["using", "main"], + "additionalProperties": false + }, + "runs-composite": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runs-for-composite-actions", + "description": "Configures the path to the composite action, and the application used to execute the code.", + "type": "object", + "properties": { + "using": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsusing-for-composite-actions", + "description": "To use a composite run steps action, set this to 'composite'.", + "const": "composite" + }, + "steps": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runssteps", + "description": "The run steps that you plan to run in this action.", + "type": "array", + "items": { + "type": "object", + "properties": { + "run": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepsrun", + "description": "The command you want to run. This can be inline or a script in your action repository.", + "type": "string" + }, + "shell": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepsshell", + "description": "The shell where you want to run the command.", + "type": "string", + "anyOf": [ + { + "$comment": "https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#custom-shell" + }, + { + "enum": [ + "bash", + "pwsh", + "python", + "sh", + "cmd", + "powershell" + ] + } + ] + }, + "uses": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepsuses", + "description": "Selects an action to run as part of a step in your job.", + "type": "string" + }, + "with": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepswith", + "description": "A map of the input parameters defined by the action. Each input parameter is a key/value pair. Input parameters are set as environment variables. The variable is prefixed with INPUT_ and converted to upper case.", + "type": "object" + }, + "name": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepsname", + "description": "The name of the composite run step.", + "type": "string" + }, + "id": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepsid", + "description": "A unique identifier for the step. You can use the `id` to reference the step in contexts.", + "type": "string" + }, + "if": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepsif", + "description": "You can use the if conditional to prevent a step from running unless a condition is met. You can use any supported context and expression to create a conditional.\nExpressions in an if conditional do not require the ${{ }} syntax. For more information, see https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.", + "type": "string" + }, + "env": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepsenv", + "description": "Sets a map of environment variables for only that step.", + "oneOf": [ + { + "type": "object", + "additionalProperties": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + } + ] + } + }, + { + "$ref": "#/definitions/stringContainingExpressionSyntax" + } + ] + }, + "continue-on-error": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepscontinue-on-error", + "description": "Prevents a job from failing when a step fails. Set to true to allow a job to pass when this step fails.", + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/expressionSyntax" + } + ], + "default": false + }, + "working-directory": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsstepsworking-directory", + "description": "Specifies the working directory where the command is run.", + "type": "string" + } + }, + "oneOf": [ + { + "required": ["run", "shell"] + }, + { + "required": ["uses"] + } + ], + "additionalProperties": false + } + } + }, + "required": ["using", "steps"], + "additionalProperties": false + }, + "runs-docker": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runs-for-docker-container-actions", + "description": "Configures the image used for the Docker action.", + "type": "object", + "properties": { + "using": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsusing-for-docker-container-actions", + "description": "You must set this value to 'docker'.", + "const": "docker" + }, + "image": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsimage", + "description": "The Docker image to use as the container to run the action. The value can be the Docker base image name, a local `Dockerfile` in your repository, or a public image in Docker Hub or another registry. To reference a `Dockerfile` local to your repository, use a path relative to your action metadata file. The `docker` application will execute this file.", + "type": "string" + }, + "env": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsenv", + "description": "Specifies a key/value map of environment variables to set in the container environment.", + "oneOf": [ + { + "type": "object", + "additionalProperties": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + } + ] + } + }, + { + "$ref": "#/definitions/stringContainingExpressionSyntax" + } + ] + }, + "entrypoint": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsentrypoint", + "description": "Overrides the Docker `ENTRYPOINT` in the `Dockerfile`, or sets it if one wasn't already specified. Use `entrypoint` when the `Dockerfile` does not specify an `ENTRYPOINT` or you want to override the `ENTRYPOINT` instruction. If you omit `entrypoint`, the commands you specify in the Docker `ENTRYPOINT` instruction will execute. The Docker `ENTRYPOINT instruction has a *shell* form and *exec* form. The Docker `ENTRYPOINT` documentation recommends using the *exec* form of the `ENTRYPOINT` instruction.", + "type": "string" + }, + "pre-entrypoint": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runspre-entrypoint", + "description": "Allows you to run a script before the `entrypoint` action begins. For example, you can use `pre-entrypoint:` to run a prerequisite setup script. GitHub Actions uses `docker run` to launch this action, and runs the script inside a new container that uses the same base image. This means that the runtime state is different from the main `entrypoint` container, and any states you require must be accessed in either the workspace, `HOME`, or as a `STATE_` variable. The `pre-entrypoint:` action always runs by default but you can override this using `pre-if`.", + "type": "string" + }, + "pre-if": { + "$ref": "#/definitions/pre-if" + }, + "post-entrypoint": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runspost-entrypoint", + "description": "Allows you to run a cleanup script once the `runs.entrypoint` action has completed. GitHub Actions uses `docker run` to launch this action. Because GitHub Actions runs the script inside a new container using the same base image, the runtime state is different from the main `entrypoint` container. You can access any state you need in either the workspace, `HOME`, or as a `STATE_` variable. The `post-entrypoint:` action always runs by default but you can override this using `post-if`.", + "type": "string" + }, + "post-if": { + "$ref": "#/definitions/post-if" + }, + "args": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsargs", + "description": "An array of strings that define the inputs for a Docker container. Inputs can include hardcoded strings. GitHub passes the `args` to the container's `ENTRYPOINT` when the container starts up.\nThe `args` are used in place of the `CMD` instruction in a `Dockerfile`. If you use `CMD` in your `Dockerfile`, use the guidelines ordered by preference:\n- Document required arguments in the action's README and omit them from the `CMD` instruction.\n- Use defaults that allow using the action without specifying any `args`.\n- If the action exposes a `--help` flag, or something similar, use that to make your action self-documenting.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": ["using", "image"], + "additionalProperties": false + }, + "outputs": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#outputs-for-docker-container-and-javascript-actions", + "description": "Output parameters allow you to declare data that an action sets. Actions that run later in a workflow can use the output data set in previously run actions. For example, if you had an action that performed the addition of two inputs (x + y = z), the action could output the sum (z) for other actions to use as an input.\nIf you don't declare an output in your action metadata file, you can still set outputs and use them in a workflow.", + "type": "object", + "patternProperties": { + "^[_a-zA-Z][a-zA-Z0-9_-]*$": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#outputsoutput_id", + "description": "A string identifier to associate with the output. The value of `` is a map of the output's metadata. The `` must be a unique identifier within the outputs object. The `` must start with a letter or `_` and contain only alphanumeric characters, `-`, or `_`.", + "type": "object", + "properties": { + "description": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#outputsoutput_iddescription", + "description": "A string description of the output parameter.", + "type": "string" + } + }, + "required": ["description"], + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "outputs-composite": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#outputs-for-composite-actions", + "description": "Output parameters allow you to declare data that an action sets. Actions that run later in a workflow can use the output data set in previously run actions. For example, if you had an action that performed the addition of two inputs (x + y = z), the action could output the sum (z) for other actions to use as an input.\nIf you don't declare an output in your action metadata file, you can still set outputs and use them in a workflow.", + "type": "object", + "patternProperties": { + "^[_a-zA-Z][a-zA-Z0-9_-]*$": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#outputsoutput_id", + "description": "A string identifier to associate with the output. The value of `` is a map of the output's metadata. The `` must be a unique identifier within the outputs object. The `` must start with a letter or `_` and contain only alphanumeric characters, `-`, or `_`.", + "type": "object", + "properties": { + "description": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#outputsoutput_iddescription", + "description": "A string description of the output parameter.", + "type": "string" + }, + "value": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#outputsoutput_idvalue", + "description": "The value that the output parameter will be mapped to. You can set this to a string or an expression with context. For example, you can use the steps context to set the value of an output to the output value of a step.", + "type": "string" + } + }, + "required": ["description", "value"], + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "else": { + "properties": { + "outputs": { + "$ref": "#/definitions/outputs" + } + } + }, + "if": { + "properties": { + "runs": { + "properties": { + "using": { + "const": "composite" + } + } + } + } + }, + "properties": { + "name": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#name", + "description": "The name of your action. GitHub displays the `name` in the Actions tab to help visually identify actions in each job.", + "type": "string" + }, + "author": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#author", + "description": "The name of the action's author.", + "type": "string" + }, + "description": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#description", + "description": "A short description of the action.", + "type": "string" + }, + "inputs": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#inputs", + "description": "Input parameters allow you to specify data that the action expects to use during runtime. GitHub stores input parameters as environment variables. Input ids with uppercase letters are converted to lowercase during runtime. We recommended using lowercase input ids.", + "type": "object", + "patternProperties": { + "^[_a-zA-Z][a-zA-Z0-9_-]*$": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#inputsinput_id", + "description": "A string identifier to associate with the input. The value of `` is a map of the input's metadata. The `` must be a unique identifier within the inputs object. The `` must start with a letter or `_` and contain only alphanumeric characters, `-`, or `_`.", + "type": "object", + "properties": { + "description": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#inputsinput_iddescription", + "description": "A string description of the input parameter.", + "type": "string" + }, + "deprecationMessage": { + "description": "A string shown to users using the deprecated input.", + "type": "string" + }, + "required": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#inputsinput_idrequired", + "description": "A boolean to indicate whether the action requires the input parameter. Set to `true` when the parameter is required.", + "type": "boolean" + }, + "default": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#inputsinput_iddefault", + "description": "A string representing the default value. The default value is used when an input parameter isn't specified in a workflow file.", + "type": "string" + } + }, + "required": ["description"], + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "outputs": { + "$comment": "Because of `additionalProperties: false`, this empty schema is needed to allow the `outputs` property. The `outputs` subschema is determined by the if/then/else keywords." + }, + "runs": { + "oneOf": [ + { + "$ref": "#/definitions/runs-javascript" + }, + { + "$ref": "#/definitions/runs-composite" + }, + { + "$ref": "#/definitions/runs-docker" + } + ] + }, + "branding": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#branding", + "description": "You can use a color and Feather icon to create a badge to personalize and distinguish your action. Badges are shown next to your action name in GitHub Marketplace.", + "type": "object", + "properties": { + "color": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#brandingcolor", + "description": "The background color of the badge.", + "type": "string", + "enum": [ + "white", + "black", + "yellow", + "blue", + "green", + "orange", + "red", + "purple", + "gray-dark" + ] + }, + "icon": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#brandingicon", + "description": "The name of the Feather icon to use.", + "type": "string", + "enum": [ + "activity", + "airplay", + "alert-circle", + "alert-octagon", + "alert-triangle", + "align-center", + "align-justify", + "align-left", + "align-right", + "anchor", + "aperture", + "archive", + "arrow-down-circle", + "arrow-down-left", + "arrow-down-right", + "arrow-down", + "arrow-left-circle", + "arrow-left", + "arrow-right-circle", + "arrow-right", + "arrow-up-circle", + "arrow-up-left", + "arrow-up-right", + "arrow-up", + "at-sign", + "award", + "bar-chart-2", + "bar-chart", + "battery-charging", + "battery", + "bell-off", + "bell", + "bluetooth", + "bold", + "book-open", + "book", + "bookmark", + "box", + "briefcase", + "calendar", + "camera-off", + "camera", + "cast", + "check-circle", + "check-square", + "check", + "chevron-down", + "chevron-left", + "chevron-right", + "chevron-up", + "chevrons-down", + "chevrons-left", + "chevrons-right", + "chevrons-up", + "circle", + "clipboard", + "clock", + "cloud-drizzle", + "cloud-lightning", + "cloud-off", + "cloud-rain", + "cloud-snow", + "cloud", + "code", + "command", + "compass", + "copy", + "corner-down-left", + "corner-down-right", + "corner-left-down", + "corner-left-up", + "corner-right-down", + "corner-right-up", + "corner-up-left", + "corner-up-right", + "cpu", + "credit-card", + "crop", + "crosshair", + "database", + "delete", + "disc", + "dollar-sign", + "download-cloud", + "download", + "droplet", + "edit-2", + "edit-3", + "edit", + "external-link", + "eye-off", + "eye", + "fast-forward", + "feather", + "file-minus", + "file-plus", + "file-text", + "file", + "film", + "filter", + "flag", + "folder-minus", + "folder-plus", + "folder", + "gift", + "git-branch", + "git-commit", + "git-merge", + "git-pull-request", + "globe", + "grid", + "hard-drive", + "hash", + "headphones", + "heart", + "help-circle", + "home", + "image", + "inbox", + "info", + "italic", + "layers", + "layout", + "life-buoy", + "link-2", + "link", + "list", + "loader", + "lock", + "log-in", + "log-out", + "mail", + "map-pin", + "map", + "maximize-2", + "maximize", + "menu", + "message-circle", + "message-square", + "mic-off", + "mic", + "minimize-2", + "minimize", + "minus-circle", + "minus-square", + "minus", + "monitor", + "moon", + "more-horizontal", + "more-vertical", + "move", + "music", + "navigation-2", + "navigation", + "octagon", + "package", + "paperclip", + "pause-circle", + "pause", + "percent", + "phone-call", + "phone-forwarded", + "phone-incoming", + "phone-missed", + "phone-off", + "phone-outgoing", + "phone", + "pie-chart", + "play-circle", + "play", + "plus-circle", + "plus-square", + "plus", + "pocket", + "power", + "printer", + "radio", + "refresh-ccw", + "refresh-cw", + "repeat", + "rewind", + "rotate-ccw", + "rotate-cw", + "rss", + "save", + "scissors", + "search", + "send", + "server", + "settings", + "share-2", + "share", + "shield-off", + "shield", + "shopping-bag", + "shopping-cart", + "shuffle", + "sidebar", + "skip-back", + "skip-forward", + "slash", + "sliders", + "smartphone", + "speaker", + "square", + "star", + "stop-circle", + "sun", + "sunrise", + "sunset", + "table", + "tablet", + "tag", + "target", + "terminal", + "thermometer", + "thumbs-down", + "thumbs-up", + "toggle-left", + "toggle-right", + "trash-2", + "trash", + "trending-down", + "trending-up", + "triangle", + "truck", + "tv", + "type", + "umbrella", + "underline", + "unlock", + "upload-cloud", + "upload", + "user-check", + "user-minus", + "user-plus", + "user-x", + "user", + "users", + "video-off", + "video", + "voicemail", + "volume-1", + "volume-2", + "volume-x", + "volume", + "watch", + "wifi-off", + "wifi", + "wind", + "x-circle", + "x-square", + "x", + "zap-off", + "zap", + "zoom-in", + "zoom-out" + ] + } + }, + "additionalProperties": false + } + }, + "required": ["name", "description", "runs"], + "then": { + "properties": { + "outputs": { + "$ref": "#/definitions/outputs-composite" + } + } + }, + "type": "object" +} diff --git a/src/check_jsonschema/builtin_schemas/vendor/github-workflows.json b/src/check_jsonschema/builtin_schemas/vendor/github-workflows.json index 7df318b6c..ae3199a76 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/github-workflows.json +++ b/src/check_jsonschema/builtin_schemas/vendor/github-workflows.json @@ -1,1711 +1,1742 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://json.schemastore.org/github-workflow.json", - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions", - "additionalProperties": false, - "definitions": { - "architecture": { - "type": "string", - "enum": ["ARM32", "x64", "x86"] - }, - "branch": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#onpushpull_requestbranchestags", - "$ref": "#/definitions/globs", - "description": "When using the push and pull_request events, you can configure a workflow to run on specific branches or tags. If you only define only tags or only branches, the workflow won't run for events affecting the undefined Git ref.\nThe branches, branches-ignore, tags, and tags-ignore keywords accept glob patterns that use the * and ** wildcard characters to match more than one branch or tag name. For more information, see https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet.\nThe patterns defined in branches and tags are evaluated against the Git ref's name. For example, defining the pattern mona/octocat in branches will match the refs/heads/mona/octocat Git ref. The pattern releases/** will match the refs/heads/releases/10 Git ref.\nYou can use two types of filters to prevent a workflow from running on pushes and pull requests to tags and branches:\n- branches or branches-ignore - You cannot use both the branches and branches-ignore filters for the same event in a workflow. Use the branches filter when you need to filter branches for positive matches and exclude branches. Use the branches-ignore filter when you only need to exclude branch names.\n- tags or tags-ignore - You cannot use both the tags and tags-ignore filters for the same event in a workflow. Use the tags filter when you need to filter tags for positive matches and exclude tags. Use the tags-ignore filter when you only need to exclude tag names.\nYou can exclude tags and branches using the ! character. The order that you define patterns matters.\n- A matching negative pattern (prefixed with !) after a positive match will exclude the Git ref.\n- A matching positive pattern after a negative match will include the Git ref again." - }, - "concurrency": { - "type": "object", - "properties": { - "group": { - "$comment": "https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#example-using-concurrency-to-cancel-any-in-progress-job-or-run-1", - "description": "When a concurrent job or workflow is queued, if another job or workflow using the same concurrency group in the repository is in progress, the queued job or workflow will be pending. Any previously pending job or workflow in the concurrency group will be canceled.", - "type": "string" - }, - "cancel-in-progress": { - "$comment": "https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#example-using-concurrency-to-cancel-any-in-progress-job-or-run-1", - "description": "To cancel any currently running job or workflow in the same concurrency group, specify cancel-in-progress: true.", - "oneOf": [ - { - "type": "boolean" - }, - { - "$ref": "#/definitions/expressionSyntax" - } - ] - } - }, - "required": ["group"], - "additionalProperties": false - }, - "configuration": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/configuration" - } - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/configuration" - } - } - ] - }, - "container": { - "type": "object", - "properties": { - "image": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idcontainerimage", - "description": "The Docker image to use as the container to run the action. The value can be the Docker Hub image name or a registry name.", - "type": "string" - }, - "credentials": { - "$comment": "https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions#jobsjob_idcontainercredentials", - "description": "If the image's container registry requires authentication to pull the image, you can use credentials to set a map of the username and password. The credentials are the same values that you would provide to the `docker login` command.", - "type": "object", - "properties": { - "username": { - "type": "string" - }, - "password": { - "type": "string" - } - } - }, - "env": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idcontainerenv", - "$ref": "#/definitions/env", - "description": "Sets an array of environment variables in the container." - }, - "ports": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idcontainerports", - "description": "Sets an array of ports to expose on the container.", - "type": "array", - "items": { - "oneOf": [ - { - "type": "number" - }, - { - "type": "string" - } - ] - }, - "minItems": 1 - }, - "volumes": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idcontainervolumes", - "description": "Sets an array of volumes for the container to use. You can use volumes to share data between services or other steps in a job. You can specify named Docker volumes, anonymous Docker volumes, or bind mounts on the host.\nTo specify a volume, you specify the source and destination path: :\nThe is a volume name or an absolute path on the host machine, and is an absolute path in the container.", - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "options": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idcontaineroptions", - "description": "Additional Docker container resource options. For a list of options, see https://docs.docker.com/engine/reference/commandline/create/#options.", - "type": "string" - } - }, - "required": ["image"], - "additionalProperties": false - }, - "defaults": { - "type": "object", - "properties": { - "run": { - "type": "object", - "properties": { - "shell": { - "$ref": "#/definitions/shell" - }, - "working-directory": { - "$ref": "#/definitions/working-directory" - } - }, - "minProperties": 1, - "additionalProperties": false - } - }, - "minProperties": 1, - "additionalProperties": false - }, - "permissions": { - "$comment": "https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#permissions", - "description": "You can modify the default permissions granted to the GITHUB_TOKEN, adding or removing access as required, so that you only allow the minimum required access.", - "oneOf": [ - { - "type": "string", - "enum": ["read-all", "write-all"] - }, - { - "$ref": "#/definitions/permissions-event" - } - ] - }, - "permissions-event": { - "type": "object", - "additionalProperties": false, - "properties": { - "actions": { - "$ref": "#/definitions/permissions-level" - }, - "attestations": { - "$ref": "#/definitions/permissions-level" - }, - "checks": { - "$ref": "#/definitions/permissions-level" - }, - "contents": { - "$ref": "#/definitions/permissions-level" - }, - "deployments": { - "$ref": "#/definitions/permissions-level" - }, - "discussions": { - "$ref": "#/definitions/permissions-level" - }, - "id-token": { - "$ref": "#/definitions/permissions-level" - }, - "issues": { - "$ref": "#/definitions/permissions-level" - }, - "packages": { - "$ref": "#/definitions/permissions-level" - }, - "pages": { - "$ref": "#/definitions/permissions-level" - }, - "pull-requests": { - "$ref": "#/definitions/permissions-level" - }, - "repository-projects": { - "$ref": "#/definitions/permissions-level" - }, - "security-events": { - "$ref": "#/definitions/permissions-level" - }, - "statuses": { - "$ref": "#/definitions/permissions-level" - } - } - }, - "permissions-level": { - "type": "string", - "enum": ["read", "write", "none"] - }, - "env": { - "$comment": "https://docs.github.com/en/actions/learn-github-actions/environment-variables", - "description": "To set custom environment variables, you need to specify the variables in the workflow file. You can define environment variables for a step, job, or entire workflow using the jobs..steps[*].env, jobs..env, and env keywords. For more information, see https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepsenv", - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - } - ] - } - }, - { - "$ref": "#/definitions/stringContainingExpressionSyntax" - } - ] - }, - "environment": { - "$comment": "https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions#jobsjob_idenvironment", - "description": "The environment that the job references", - "type": "object", - "properties": { - "name": { - "$comment": "https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions#example-using-a-single-environment-name", - "description": "The name of the environment configured in the repo.", - "type": "string" - }, - "url": { - "$comment": "https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions#example-using-environment-name-and-url", - "description": "A deployment URL", - "type": "string" - } - }, - "required": ["name"], - "additionalProperties": false - }, - "event": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows", - "type": "string", - "enum": [ - "branch_protection_rule", - "check_run", - "check_suite", - "create", - "delete", - "deployment", - "deployment_status", - "discussion", - "discussion_comment", - "fork", - "gollum", - "issue_comment", - "issues", - "label", - "merge_group", - "milestone", - "page_build", - "project", - "project_card", - "project_column", - "public", - "pull_request", - "pull_request_review", - "pull_request_review_comment", - "pull_request_target", - "push", - "registry_package", - "release", - "status", - "watch", - "workflow_call", - "workflow_dispatch", - "workflow_run", - "repository_dispatch" - ] - }, - "eventObject": { - "oneOf": [ - { - "type": "object" - }, - { - "type": "null" - } - ], - "additionalProperties": true - }, - "expressionSyntax": { - "$comment": "escape `{` and `}` in pattern to be unicode compatible (#1360)", - "type": "string", - "pattern": "^\\$\\{\\{(.|[\r\n])*\\}\\}$" - }, - "stringContainingExpressionSyntax": { - "$comment": "escape `{` and `}` in pattern to be unicode compatible (#1360)", - "type": "string", - "pattern": "^.*\\$\\{\\{(.|[\r\n])*\\}\\}.*$" - }, - "globs": { - "type": "array", - "items": { - "type": "string", - "minLength": 1 - }, - "minItems": 1 - }, - "machine": { - "type": "string", - "enum": ["linux", "macos", "windows"] - }, - "name": { - "type": "string", - "pattern": "^[_a-zA-Z][a-zA-Z0-9_-]*$" - }, - "path": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#onpushpull_requestpaths", - "$ref": "#/definitions/globs", - "description": "When using the push and pull_request events, you can configure a workflow to run when at least one file does not match paths-ignore or at least one modified file matches the configured paths. Path filters are not evaluated for pushes to tags.\nThe paths-ignore and paths keywords accept glob patterns that use the * and ** wildcard characters to match more than one path name. For more information, see https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet.\nYou can exclude paths using two types of filters. You cannot use both of these filters for the same event in a workflow.\n- paths-ignore - Use the paths-ignore filter when you only need to exclude path names.\n- paths - Use the paths filter when you need to filter paths for positive matches and exclude paths." - }, - "ref": { - "properties": { - "branches": { - "$ref": "#/definitions/branch" - }, - "branches-ignore": { - "$ref": "#/definitions/branch" - }, - "tags": { - "$ref": "#/definitions/branch" - }, - "tags-ignore": { - "$ref": "#/definitions/branch" - }, - "paths": { - "$ref": "#/definitions/path" - }, - "paths-ignore": { - "$ref": "#/definitions/path" - } - }, - "oneOf": [ - { - "type": "object", - "allOf": [ - { - "not": { - "required": ["branches", "branches-ignore"] - } - }, - { - "not": { - "required": ["tags", "tags-ignore"] - } - }, - { - "not": { - "required": ["paths", "paths-ignore"] - } - } - ] - }, - { - "type": "null" - } - ] - }, - "shell": { - "$comment": "https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell", - "description": "You can override the default shell settings in the runner's operating system using the shell keyword. You can use built-in shell keywords, or you can define a custom set of shell options.", - "anyOf": [ - { - "type": "string" - }, - { - "$comment": "https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#custom-shell", - "type": "string", - "enum": ["bash", "pwsh", "python", "sh", "cmd", "powershell"] - } - ] - }, - "step": { - "type": "object", - "additionalProperties": false, - "dependencies": { - "working-directory": ["run"], - "shell": ["run"] - }, - "oneOf": [ - { - "required": ["uses"] - }, - { - "required": ["run"] - } - ], - "properties": { - "id": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepsid", - "description": "A unique identifier for the step. You can use the id to reference the step in contexts. For more information, see https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.", - "type": "string" - }, - "if": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepsif", - "description": "You can use the if conditional to prevent a step from running unless a condition is met. You can use any supported context and expression to create a conditional.\nExpressions in an if conditional do not require the ${{ }} syntax. For more information, see https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.", - "type": ["boolean", "number", "string"] - }, - "name": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepsname", - "description": "A name for your step to display on GitHub.", - "type": "string" - }, - "uses": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepsuses", - "description": "Selects an action to run as part of a step in your job. An action is a reusable unit of code. You can use an action defined in the same repository as the workflow, a public repository, or in a published Docker container image (https://hub.docker.com/).\nWe strongly recommend that you include the version of the action you are using by specifying a Git ref, SHA, or Docker tag number. If you don't specify a version, it could break your workflows or cause unexpected behavior when the action owner publishes an update.\n- Using the commit SHA of a released action version is the safest for stability and security.\n- Using the specific major action version allows you to receive critical fixes and security patches while still maintaining compatibility. It also assures that your workflow should still work.\n- Using the master branch of an action may be convenient, but if someone releases a new major version with a breaking change, your workflow could break.\nSome actions require inputs that you must set using the with keyword. Review the action's README file to determine the inputs required.\nActions are either JavaScript files or Docker containers. If the action you're using is a Docker container you must run the job in a Linux virtual environment. For more details, see https://help.github.com/en/articles/virtual-environments-for-github-actions.", - "type": "string" - }, - "run": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepsrun", - "description": "Runs command-line programs using the operating system's shell. If you do not provide a name, the step name will default to the text specified in the run command.\nCommands run using non-login shells by default. You can choose a different shell and customize the shell used to run commands. For more information, see https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#using-a-specific-shell.\nEach run keyword represents a new process and shell in the virtual environment. When you provide multi-line commands, each line runs in the same shell.", - "type": "string" - }, - "working-directory": { - "$ref": "#/definitions/working-directory" - }, - "shell": { - "$ref": "#/definitions/shell" - }, - "with": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepswith", - "$ref": "#/definitions/env", - "description": "A map of the input parameters defined by the action. Each input parameter is a key/value pair. Input parameters are set as environment variables. The variable is prefixed with INPUT_ and converted to upper case.", - "properties": { - "args": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepswithargs", - "type": "string" - }, - "entrypoint": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepswithentrypoint", - "type": "string" - } - } - }, - "env": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepsenv", - "$ref": "#/definitions/env", - "description": "Sets environment variables for steps to use in the virtual environment. You can also set environment variables for the entire workflow or a job." - }, - "continue-on-error": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepscontinue-on-error", - "description": "Prevents a job from failing when a step fails. Set to true to allow a job to pass when this step fails.", - "oneOf": [ - { - "type": "boolean" - }, - { - "$ref": "#/definitions/expressionSyntax" - } - ], - "default": false - }, - "timeout-minutes": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepstimeout-minutes", - "description": "The maximum number of minutes to run the step before killing the process.", - "oneOf": [ - { - "type": "number" - }, - { - "$ref": "#/definitions/expressionSyntax" - } - ] - } - } - }, - "types": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#onevent_nametypes", - "description": "Selects the types of activity that will trigger a workflow run. Most GitHub events are triggered by more than one type of activity. For example, the event for the release resource is triggered when a release is published, unpublished, created, edited, deleted, or prereleased. The types keyword enables you to narrow down activity that causes the workflow to run. When only one activity type triggers a webhook event, the types keyword is unnecessary.\nYou can use an array of event types. For more information about each event and their activity types, see https://help.github.com/en/articles/events-that-trigger-workflows#webhook-events.", - "oneOf": [ - { - "type": "array", - "minItems": 1 - }, - { - "type": "string" - } - ] - }, - "working-directory": { - "$comment": "https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsrun", - "description": "Using the working-directory keyword, you can specify the working directory of where to run the command.", - "type": "string" - }, - "jobNeeds": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idneeds", - "description": "Identifies any jobs that must complete successfully before this job will run. It can be a string or array of strings. If a job fails, all jobs that need it are skipped unless the jobs use a conditional statement that causes the job to continue.", - "oneOf": [ - { - "type": "array", - "items": { - "$ref": "#/definitions/name" - }, - "minItems": 1 - }, - { - "$ref": "#/definitions/name" - } - ] - }, - "matrix": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategymatrix", - "description": "A build matrix is a set of different configurations of the virtual environment. For example you might run a job against more than one supported version of a language, operating system, or tool. Each configuration is a copy of the job that runs and reports a status.\nYou can specify a matrix by supplying an array for the configuration options. For example, if the GitHub virtual environment supports Node.js versions 6, 8, and 10 you could specify an array of those versions in the matrix.\nWhen you define a matrix of operating systems, you must set the required runs-on keyword to the operating system of the current job, rather than hard-coding the operating system name. To access the operating system name, you can use the matrix.os context parameter to set runs-on. For more information, see https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.", - "oneOf": [ - { - "type": "object", - "patternProperties": { - "^(in|ex)clude$": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#example-including-configurations-in-a-matrix-build", - "oneOf": [ - { - "$ref": "#/definitions/expressionSyntax" - }, - { - "type": "array", - "items": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/configuration" - } - }, - "minItems": 1 - } - ] - } - }, - "additionalProperties": { - "oneOf": [ - { - "type": "array", - "items": { - "$ref": "#/definitions/configuration" - }, - "minItems": 1 - }, - { - "$ref": "#/definitions/expressionSyntax" - } - ] - }, - "minProperties": 1 - }, - { - "$ref": "#/definitions/expressionSyntax" - } - ] - }, - "reusableWorkflowCallJob": { - "$comment": "https://docs.github.com/en/actions/learn-github-actions/reusing-workflows#calling-a-reusable-workflow", - "description": "Each job must have an id to associate with the job. The key job_id is a string and its value is a map of the job's configuration data. You must replace with a string that is unique to the jobs object. The must start with a letter or _ and contain only alphanumeric characters, -, or _.", - "type": "object", - "properties": { - "name": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idname", - "description": "The name of the job displayed on GitHub.", - "type": "string" - }, - "needs": { - "$ref": "#/definitions/jobNeeds" - }, - "permissions": { - "$ref": "#/definitions/permissions" - }, - "if": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idif", - "description": "You can use the if conditional to prevent a job from running unless a condition is met. You can use any supported context and expression to create a conditional.\nExpressions in an if conditional do not require the ${{ }} syntax. For more information, see https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.", - "type": ["boolean", "number", "string"] - }, - "uses": { - "$comment": "https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#jobsjob_iduses", - "description": "The location and version of a reusable workflow file to run as a job, of the form './{path/to}/{localfile}.yml' or '{owner}/{repo}/{path}/{filename}@{ref}'. {ref} can be a SHA, a release tag, or a branch name. Using the commit SHA is the safest for stability and security.", - "type": "string", - "pattern": "^(.+\\/)+(.+)\\.(ya?ml)(@.+)?$" - }, - "with": { - "$comment": "https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#jobsjob_idwith", - "$ref": "#/definitions/env", - "description": "A map of inputs that are passed to the called workflow. Any inputs that you pass must match the input specifications defined in the called workflow. Unlike 'jobs..steps[*].with', the inputs you pass with 'jobs..with' are not be available as environment variables in the called workflow. Instead, you can reference the inputs by using the inputs context." - }, - "secrets": { - "$comment": "https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#jobsjob_idsecrets", - "description": "When a job is used to call a reusable workflow, you can use 'secrets' to provide a map of secrets that are passed to the called workflow. Any secrets that you pass must match the names defined in the called workflow.", - "oneOf": [ - { - "$ref": "#/definitions/env" - }, - { - "type": "string", - "enum": ["inherit"] - } - ] - }, - "strategy": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategy", - "description": "A strategy creates a build matrix for your jobs. You can define different variations of an environment to run each job in.", - "type": "object", - "properties": { - "matrix": { - "$ref": "#/definitions/matrix" - }, - "fail-fast": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategyfail-fast", - "description": "When set to true, GitHub cancels all in-progress jobs if any matrix job fails. Default: true", - "type": ["boolean", "string"], - "default": true - }, - "max-parallel": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategymax-parallel", - "description": "The maximum number of jobs that can run simultaneously when using a matrix job strategy. By default, GitHub will maximize the number of jobs run in parallel depending on the available runners on GitHub-hosted virtual machines.", - "type": ["number", "string"] - } - }, - "required": ["matrix"], - "additionalProperties": false - }, - "concurrency": { - "$comment": "https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idconcurrency", - "description": "Concurrency ensures that only a single job or workflow using the same concurrency group will run at a time. A concurrency group can be any string or expression. The expression can use any context except for the secrets context. \nYou can also specify concurrency at the workflow level. \nWhen a concurrent job or workflow is queued, if another job or workflow using the same concurrency group in the repository is in progress, the queued job or workflow will be pending. Any previously pending job or workflow in the concurrency group will be canceled. To also cancel any currently running job or workflow in the same concurrency group, specify cancel-in-progress: true.", - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/concurrency" - } - ] - } - }, - "required": ["uses"], - "additionalProperties": false - }, - "normalJob": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_id", - "description": "Each job must have an id to associate with the job. The key job_id is a string and its value is a map of the job's configuration data. You must replace with a string that is unique to the jobs object. The must start with a letter or _ and contain only alphanumeric characters, -, or _.", - "type": "object", - "properties": { - "name": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idname", - "description": "The name of the job displayed on GitHub.", - "type": "string" - }, - "needs": { - "$ref": "#/definitions/jobNeeds" - }, - "permissions": { - "$ref": "#/definitions/permissions" - }, - "runs-on": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idruns-on", - "description": "The type of machine to run the job on. The machine can be either a GitHub-hosted runner, or a self-hosted runner.", - "anyOf": [ - { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#github-hosted-runners", - "type": "string" - }, - { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#self-hosted-runners", - "type": "array", - "anyOf": [ - { - "items": [ - { - "type": "string" - } - ], - "minItems": 1, - "additionalItems": { - "type": "string" - } - } - ] - }, - { - "$comment": "https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#choosing-runners-in-a-group", - "type": "object", - "properties": { - "group": { - "type": "string" - }, - "labels": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - } - } - }, - { - "$ref": "#/definitions/stringContainingExpressionSyntax" - }, - { - "$ref": "#/definitions/expressionSyntax" - } - ] - }, - "environment": { - "$comment": "https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions#jobsjob_idenvironment", - "description": "The environment that the job references.", - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/environment" - } - ] - }, - "outputs": { - "$comment": "https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idoutputs", - "description": "A map of outputs for a job. Job outputs are available to all downstream jobs that depend on this job.", - "type": "object", - "additionalProperties": { - "type": "string" - }, - "minProperties": 1 - }, - "env": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idenv", - "$ref": "#/definitions/env", - "description": "A map of environment variables that are available to all steps in the job." - }, - "defaults": { - "$comment": "https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_iddefaults", - "$ref": "#/definitions/defaults", - "description": "A map of default settings that will apply to all steps in the job." - }, - "if": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idif", - "description": "You can use the if conditional to prevent a job from running unless a condition is met. You can use any supported context and expression to create a conditional.\nExpressions in an if conditional do not require the ${{ }} syntax. For more information, see https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.", - "type": ["boolean", "number", "string"] - }, - "steps": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idsteps", - "description": "A job contains a sequence of tasks called steps. Steps can run commands, run setup tasks, or run an action in your repository, a public repository, or an action published in a Docker registry. Not all steps run actions, but all actions run as a step. Each step runs in its own process in the virtual environment and has access to the workspace and filesystem. Because steps run in their own process, changes to environment variables are not preserved between steps. GitHub provides built-in steps to set up and complete a job.\nMust contain either `uses` or `run`\n", - "type": "array", - "items": { - "$ref": "#/definitions/step" - }, - "minItems": 1 - }, - "timeout-minutes": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes", - "description": "The maximum number of minutes to let a workflow run before GitHub automatically cancels it. Default: 360", - "oneOf": [ - { - "type": "number" - }, - { - "$ref": "#/definitions/expressionSyntax" - } - ], - "default": 360 - }, - "strategy": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategy", - "description": "A strategy creates a build matrix for your jobs. You can define different variations of an environment to run each job in.", - "type": "object", - "properties": { - "matrix": { - "$ref": "#/definitions/matrix" - }, - "fail-fast": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategyfail-fast", - "description": "When set to true, GitHub cancels all in-progress jobs if any matrix job fails. Default: true", - "type": ["boolean", "string"], - "default": true - }, - "max-parallel": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategymax-parallel", - "description": "The maximum number of jobs that can run simultaneously when using a matrix job strategy. By default, GitHub will maximize the number of jobs run in parallel depending on the available runners on GitHub-hosted virtual machines.", - "type": ["number", "string"] - } - }, - "required": ["matrix"], - "additionalProperties": false - }, - "continue-on-error": { - "$comment": "https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idcontinue-on-error", - "description": "Prevents a workflow run from failing when a job fails. Set to true to allow a workflow run to pass when this job fails.", - "oneOf": [ - { - "type": "boolean" - }, - { - "$ref": "#/definitions/expressionSyntax" - } - ] - }, - "container": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idcontainer", - "description": "A container to run any steps in a job that don't already specify a container. If you have steps that use both script and container actions, the container actions will run as sibling containers on the same network with the same volume mounts.\nIf you do not set a container, all steps will run directly on the host specified by runs-on unless a step refers to an action configured to run in a container.", - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/container" - } - ] - }, - "services": { - "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idservices", - "description": "Additional containers to host services for a job in a workflow. These are useful for creating databases or cache services like redis. The runner on the virtual machine will automatically create a network and manage the life cycle of the service containers.\nWhen you use a service container for a job or your step uses container actions, you don't need to set port information to access the service. Docker automatically exposes all ports between containers on the same network.\nWhen both the job and the action run in a container, you can directly reference the container by its hostname. The hostname is automatically mapped to the service name.\nWhen a step does not use a container action, you must access the service using localhost and bind the ports.", - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/container" - } - }, - "concurrency": { - "$comment": "https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idconcurrency", - "description": "Concurrency ensures that only a single job or workflow using the same concurrency group will run at a time. A concurrency group can be any string or expression. The expression can use any context except for the secrets context. \nYou can also specify concurrency at the workflow level. \nWhen a concurrent job or workflow is queued, if another job or workflow using the same concurrency group in the repository is in progress, the queued job or workflow will be pending. Any previously pending job or workflow in the concurrency group will be canceled. To also cancel any currently running job or workflow in the same concurrency group, specify cancel-in-progress: true.", - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/concurrency" - } - ] - } - }, - "required": ["runs-on"], - "additionalProperties": false - }, - "workflowDispatchInput": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_id", - "description": "A string identifier to associate with the input. The value of is a map of the input's metadata. The must be a unique identifier within the inputs object. The must start with a letter or _ and contain only alphanumeric characters, -, or _.", - "type": "object", - "properties": { - "description": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_iddescription", - "description": "A string description of the input parameter.", - "type": "string" - }, - "deprecationMessage": { - "description": "A string shown to users using the deprecated input.", - "type": "string" - }, - "required": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_idrequired", - "description": "A boolean to indicate whether the action requires the input parameter. Set to true when the parameter is required.", - "type": "boolean" - }, - "default": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_iddefault", - "description": "A string representing the default value. The default value is used when an input parameter isn't specified in a workflow file." - }, - "type": { - "$comment": "https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onworkflow_dispatchinputsinput_idtype", - "description": "A string representing the type of the input.", - "type": "string", - "enum": ["string", "choice", "boolean", "number", "environment"] - }, - "options": { - "$comment": "https://github.blog/changelog/2021-11-10-github-actions-input-types-for-manual-workflows", - "description": "The options of the dropdown list, if the type is a choice.", - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - } - }, - "allOf": [ - { - "if": { - "properties": { - "type": { - "const": "string" - } - }, - "required": ["type"] - }, - "then": { - "properties": { - "default": { - "type": "string" - } - } - } - }, - { - "if": { - "properties": { - "type": { - "const": "boolean" - } - }, - "required": ["type"] - }, - "then": { - "properties": { - "default": { - "type": "boolean" - } - } - } - }, - { - "if": { - "properties": { - "type": { - "const": "number" - } - }, - "required": ["type"] - }, - "then": { - "properties": { - "default": { - "type": "number" - } - } - } - }, - { - "if": { - "properties": { - "type": { - "const": "environment" - } - }, - "required": ["type"] - }, - "then": { - "properties": { - "default": { - "type": "string" - } - } - } - }, - { - "if": { - "properties": { - "type": { - "const": "choice" - } - }, - "required": ["type"] - }, - "then": { - "required": ["options"] - } - } - ], - "required": ["description"], - "additionalProperties": false - } - }, - "properties": { - "name": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#name", - "description": "The name of your workflow. GitHub displays the names of your workflows on your repository's actions page. If you omit this field, GitHub sets the name to the workflow's filename.", - "type": "string" - }, - "on": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#on", - "description": "The name of the GitHub event that triggers the workflow. You can provide a single event string, array of events, array of event types, or an event configuration map that schedules a workflow or restricts the execution of a workflow to specific files, tags, or branch changes. For a list of available events, see https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows.", - "oneOf": [ - { - "$ref": "#/definitions/event" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/event" - }, - "minItems": 1 - }, - { - "type": "object", - "properties": { - "branch_protection_rule": { - "$comment": "https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#branch_protection_rule", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow anytime the branch_protection_rule event occurs. More than one activity type triggers this event.", - "properties": { - "types": { - "$ref": "#/definitions/types", - "items": { - "type": "string", - "enum": ["created", "edited", "deleted"] - }, - "default": ["created", "edited", "deleted"] - } - } - }, - "check_run": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#check-run-event-check_run", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow anytime the check_run event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/checks/runs.", - "properties": { - "types": { - "$ref": "#/definitions/types", - "items": { - "type": "string", - "enum": [ - "created", - "rerequested", - "completed", - "requested_action" - ] - }, - "default": [ - "created", - "rerequested", - "completed", - "requested_action" - ] - } - } - }, - "check_suite": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#check-suite-event-check_suite", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow anytime the check_suite event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/checks/suites/.", - "properties": { - "types": { - "$ref": "#/definitions/types", - "items": { - "type": "string", - "enum": ["completed", "requested", "rerequested"] - }, - "default": ["completed", "requested", "rerequested"] - } - } - }, - "create": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#create-event-create", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow anytime someone creates a branch or tag, which triggers the create event. For information about the REST API, see https://developer.github.com/v3/git/refs/#create-a-reference." - }, - "delete": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#delete-event-delete", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow anytime someone deletes a branch or tag, which triggers the delete event. For information about the REST API, see https://developer.github.com/v3/git/refs/#delete-a-reference." - }, - "deployment": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#deployment-event-deployment", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow anytime someone creates a deployment, which triggers the deployment event. Deployments created with a commit SHA may not have a Git ref. For information about the REST API, see https://developer.github.com/v3/repos/deployments/." - }, - "deployment_status": { - "$comment": "https://docs.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow anytime a third party provides a deployment status, which triggers the deployment_status event. Deployments created with a commit SHA may not have a Git ref. For information about the REST API, see https://developer.github.com/v3/repos/deployments/#create-a-deployment-status." - }, - "discussion": { - "$comment": "https://docs.github.com/en/actions/reference/events-that-trigger-workflows#discussion", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow anytime the discussion event occurs. More than one activity type triggers this event. For information about the GraphQL API, see https://docs.github.com/en/graphql/guides/using-the-graphql-api-for-discussions", - "properties": { - "types": { - "$ref": "#/definitions/types", - "items": { - "type": "string", - "enum": [ - "created", - "edited", - "deleted", - "transferred", - "pinned", - "unpinned", - "labeled", - "unlabeled", - "locked", - "unlocked", - "category_changed", - "answered", - "unanswered" - ] - }, - "default": [ - "created", - "edited", - "deleted", - "transferred", - "pinned", - "unpinned", - "labeled", - "unlabeled", - "locked", - "unlocked", - "category_changed", - "answered", - "unanswered" - ] - } - } - }, - "discussion_comment": { - "$comment": "https://docs.github.com/en/actions/reference/events-that-trigger-workflows#discussion_comment", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow anytime the discussion_comment event occurs. More than one activity type triggers this event. For information about the GraphQL API, see https://docs.github.com/en/graphql/guides/using-the-graphql-api-for-discussions", - "properties": { - "types": { - "$ref": "#/definitions/types", - "items": { - "type": "string", - "enum": ["created", "edited", "deleted"] - }, - "default": ["created", "edited", "deleted"] - } - } - }, - "fork": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#fork-event-fork", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow anytime when someone forks a repository, which triggers the fork event. For information about the REST API, see https://developer.github.com/v3/repos/forks/#create-a-fork." - }, - "gollum": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#gollum-event-gollum", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow when someone creates or updates a Wiki page, which triggers the gollum event." - }, - "issue_comment": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#issue-comment-event-issue_comment", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow anytime the issue_comment event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/issues/comments/.", - "properties": { - "types": { - "$ref": "#/definitions/types", - "items": { - "type": "string", - "enum": ["created", "edited", "deleted"] - }, - "default": ["created", "edited", "deleted"] - } - } - }, - "issues": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#issues-event-issues", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow anytime the issues event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/issues.", - "properties": { - "types": { - "$ref": "#/definitions/types", - "items": { - "type": "string", - "enum": [ - "opened", - "edited", - "deleted", - "transferred", - "pinned", - "unpinned", - "closed", - "reopened", - "assigned", - "unassigned", - "labeled", - "unlabeled", - "locked", - "unlocked", - "milestoned", - "demilestoned" - ] - }, - "default": [ - "opened", - "edited", - "deleted", - "transferred", - "pinned", - "unpinned", - "closed", - "reopened", - "assigned", - "unassigned", - "labeled", - "unlabeled", - "locked", - "unlocked", - "milestoned", - "demilestoned" - ] - } - } - }, - "label": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#label-event-label", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow anytime the label event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/issues/labels/.", - "properties": { - "types": { - "$ref": "#/definitions/types", - "items": { - "type": "string", - "enum": ["created", "edited", "deleted"] - }, - "default": ["created", "edited", "deleted"] - } - } - }, - "merge_group": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#merge_group", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow when a pull request is added to a merge queue, which adds the pull request to a merge group. For information about the merge queue, see https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request-with-a-merge-queue .", - "properties": { - "types": { - "$ref": "#/definitions/types", - "items": { - "type": "string", - "enum": ["checks_requested"] - }, - "default": ["checks_requested"] - } - } - }, - "milestone": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#milestone-event-milestone", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow anytime the milestone event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/issues/milestones/.", - "properties": { - "types": { - "$ref": "#/definitions/types", - "items": { - "type": "string", - "enum": ["created", "closed", "opened", "edited", "deleted"] - }, - "default": [ - "created", - "closed", - "opened", - "edited", - "deleted" - ] - } - } - }, - "page_build": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#page-build-event-page_build", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow anytime someone pushes to a GitHub Pages-enabled branch, which triggers the page_build event. For information about the REST API, see https://developer.github.com/v3/repos/pages/." - }, - "project": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#project-event-project", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow anytime the project event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/projects/.", - "properties": { - "types": { - "$ref": "#/definitions/types", - "items": { - "type": "string", - "enum": [ - "created", - "updated", - "closed", - "reopened", - "edited", - "deleted" - ] - }, - "default": [ - "created", - "updated", - "closed", - "reopened", - "edited", - "deleted" - ] - } - } - }, - "project_card": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#project-card-event-project_card", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow anytime the project_card event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/projects/cards.", - "properties": { - "types": { - "$ref": "#/definitions/types", - "items": { - "type": "string", - "enum": [ - "created", - "moved", - "converted", - "edited", - "deleted" - ] - }, - "default": [ - "created", - "moved", - "converted", - "edited", - "deleted" - ] - } - } - }, - "project_column": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#project-column-event-project_column", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow anytime the project_column event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/projects/columns.", - "properties": { - "types": { - "$ref": "#/definitions/types", - "items": { - "type": "string", - "enum": ["created", "updated", "moved", "deleted"] - }, - "default": ["created", "updated", "moved", "deleted"] - } - } - }, - "public": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#public-event-public", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow anytime someone makes a private repository public, which triggers the public event. For information about the REST API, see https://developer.github.com/v3/repos/#edit." - }, - "pull_request": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#pull-request-event-pull_request", - "$ref": "#/definitions/ref", - "description": "Runs your workflow anytime the pull_request event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/pulls.\nNote: Workflows do not run on private base repositories when you open a pull request from a forked repository.\nWhen you create a pull request from a forked repository to the base repository, GitHub sends the pull_request event to the base repository and no pull request events occur on the forked repository.\nWorkflows don't run on forked repositories by default. You must enable GitHub Actions in the Actions tab of the forked repository.\nThe permissions for the GITHUB_TOKEN in forked repositories is read-only. For more information about the GITHUB_TOKEN, see https://help.github.com/en/articles/virtual-environments-for-github-actions.", - "properties": { - "types": { - "$ref": "#/definitions/types", - "items": { - "type": "string", - "enum": [ - "assigned", - "unassigned", - "labeled", - "unlabeled", - "opened", - "edited", - "closed", - "reopened", - "synchronize", - "converted_to_draft", - "ready_for_review", - "locked", - "unlocked", - "milestoned", - "demilestoned", - "review_requested", - "review_request_removed", - "auto_merge_enabled", - "auto_merge_disabled", - "enqueued", - "dequeued" - ] - }, - "default": ["opened", "synchronize", "reopened"] - } - }, - "patternProperties": { - "^(branche|tag|path)s(-ignore)?$": { - "type": "array" - } - }, - "additionalProperties": false - }, - "pull_request_review": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#pull-request-review-event-pull_request_review", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow anytime the pull_request_review event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/pulls/reviews.\nNote: Workflows do not run on private base repositories when you open a pull request from a forked repository.\nWhen you create a pull request from a forked repository to the base repository, GitHub sends the pull_request event to the base repository and no pull request events occur on the forked repository.\nWorkflows don't run on forked repositories by default. You must enable GitHub Actions in the Actions tab of the forked repository.\nThe permissions for the GITHUB_TOKEN in forked repositories is read-only. For more information about the GITHUB_TOKEN, see https://help.github.com/en/articles/virtual-environments-for-github-actions.", - "properties": { - "types": { - "$ref": "#/definitions/types", - "items": { - "type": "string", - "enum": ["submitted", "edited", "dismissed"] - }, - "default": ["submitted", "edited", "dismissed"] - } - } - }, - "pull_request_review_comment": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#pull-request-review-comment-event-pull_request_review_comment", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow anytime a comment on a pull request's unified diff is modified, which triggers the pull_request_review_comment event. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/pulls/comments.\nNote: Workflows do not run on private base repositories when you open a pull request from a forked repository.\nWhen you create a pull request from a forked repository to the base repository, GitHub sends the pull_request event to the base repository and no pull request events occur on the forked repository.\nWorkflows don't run on forked repositories by default. You must enable GitHub Actions in the Actions tab of the forked repository.\nThe permissions for the GITHUB_TOKEN in forked repositories is read-only. For more information about the GITHUB_TOKEN, see https://help.github.com/en/articles/virtual-environments-for-github-actions.", - "properties": { - "types": { - "$ref": "#/definitions/types", - "items": { - "type": "string", - "enum": ["created", "edited", "deleted"] - }, - "default": ["created", "edited", "deleted"] - } - } - }, - "pull_request_target": { - "$comment": "https://docs.github.com/en/actions/reference/events-that-trigger-workflows#pull_request_target", - "$ref": "#/definitions/ref", - "description": "This event is similar to pull_request, except that it runs in the context of the base repository of the pull request, rather than in the merge commit. This means that you can more safely make your secrets available to the workflows triggered by the pull request, because only workflows defined in the commit on the base repository are run. For example, this event allows you to create workflows that label and comment on pull requests, based on the contents of the event payload.", - "properties": { - "types": { - "$ref": "#/definitions/types", - "items": { - "type": "string", - "enum": [ - "assigned", - "unassigned", - "labeled", - "unlabeled", - "opened", - "edited", - "closed", - "reopened", - "synchronize", - "converted_to_draft", - "ready_for_review", - "locked", - "unlocked", - "review_requested", - "review_request_removed", - "auto_merge_enabled", - "auto_merge_disabled" - ] - }, - "default": ["opened", "synchronize", "reopened"] - } - }, - "patternProperties": { - "^(branche|tag|path)s(-ignore)?$": {} - }, - "additionalProperties": false - }, - "push": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#push-event-push", - "$ref": "#/definitions/ref", - "description": "Runs your workflow when someone pushes to a repository branch, which triggers the push event.\nNote: The webhook payload available to GitHub Actions does not include the added, removed, and modified attributes in the commit object. You can retrieve the full commit object using the REST API. For more information, see https://developer.github.com/v3/repos/commits/#get-a-single-commit.", - "patternProperties": { - "^(branche|tag|path)s(-ignore)?$": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "additionalProperties": false - }, - "registry_package": { - "$comment": "https://help.github.com/en/actions/reference/events-that-trigger-workflows#registry-package-event-registry_package", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow anytime a package is published or updated. For more information, see https://help.github.com/en/github/managing-packages-with-github-packages.", - "properties": { - "types": { - "$ref": "#/definitions/types", - "items": { - "type": "string", - "enum": ["published", "updated"] - }, - "default": ["published", "updated"] - } - } - }, - "release": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#release-event-release", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow anytime the release event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/repos/releases/ in the GitHub Developer documentation.", - "properties": { - "types": { - "$ref": "#/definitions/types", - "items": { - "type": "string", - "enum": [ - "published", - "unpublished", - "created", - "edited", - "deleted", - "prereleased", - "released" - ] - }, - "default": [ - "published", - "unpublished", - "created", - "edited", - "deleted", - "prereleased", - "released" - ] - } - } - }, - "status": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#status-event-status", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow anytime the status of a Git commit changes, which triggers the status event. For information about the REST API, see https://developer.github.com/v3/repos/statuses/." - }, - "watch": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#watch-event-watch", - "$ref": "#/definitions/eventObject", - "description": "Runs your workflow anytime the watch event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/activity/starring/." - }, - "workflow_call": { - "$comment": "https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#workflow_call", - "description": "Allows workflows to be reused by other workflows.", - "properties": { - "inputs": { - "$comment": "https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#onworkflow_callinputs", - "description": "When using the workflow_call keyword, you can optionally specify inputs that are passed to the called workflow from the caller workflow.", - "type": "object", - "patternProperties": { - "^[_a-zA-Z][a-zA-Z0-9_-]*$": { - "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#inputsinput_id", - "description": "A string identifier to associate with the input. The value of is a map of the input's metadata. The must be a unique identifier within the inputs object. The must start with a letter or _ and contain only alphanumeric characters, -, or _.", - "type": "object", - "properties": { - "description": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_iddescription", - "description": "A string description of the input parameter.", - "type": "string" - }, - "required": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_idrequired", - "description": "A boolean to indicate whether the action requires the input parameter. Set to true when the parameter is required.", - "type": "boolean" - }, - "type": { - "$comment": "https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#onworkflow_callinput_idtype", - "description": "Required if input is defined for the on.workflow_call keyword. The value of this parameter is a string specifying the data type of the input. This must be one of: boolean, number, or string.", - "type": "string", - "enum": ["boolean", "number", "string"] - }, - "default": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_iddefault", - "description": "The default value is used when an input parameter isn't specified in a workflow file.", - "type": ["boolean", "number", "string"] - } - }, - "required": ["type"], - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "secrets": { - "$comment": "https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#onworkflow_callsecrets", - "description": "A map of the secrets that can be used in the called workflow. Within the called workflow, you can use the secrets context to refer to a secret.", - "patternProperties": { - "^[_a-zA-Z][a-zA-Z0-9_-]*$": { - "$comment": "https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#onworkflow_callsecretssecret_id", - "description": "A string identifier to associate with the secret.", - "properties": { - "description": { - "description": "A string description of the secret parameter.", - "type": "string" - }, - "required": { - "$comment": "https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#onworkflow_callsecretssecret_idrequired", - "description": "A boolean specifying whether the secret must be supplied.", - "type": "boolean" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - } - }, - "workflow_dispatch": { - "$comment": "https://github.blog/changelog/2020-07-06-github-actions-manual-triggers-with-workflow_dispatch/", - "description": "You can now create workflows that are manually triggered with the new workflow_dispatch event. You will then see a 'Run workflow' button on the Actions tab, enabling you to easily trigger a run.", - "properties": { - "inputs": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputs", - "description": "Input parameters allow you to specify data that the action expects to use during runtime. GitHub stores input parameters as environment variables. Input ids with uppercase letters are converted to lowercase during runtime. We recommended using lowercase input ids.", - "type": "object", - "patternProperties": { - "^[_a-zA-Z][a-zA-Z0-9_-]*$": { - "$ref": "#/definitions/workflowDispatchInput" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "workflow_run": { - "$comment": "https://docs.github.com/en/actions/reference/events-that-trigger-workflows#workflow_run", - "$ref": "#/definitions/eventObject", - "description": "This event occurs when a workflow run is requested or completed, and allows you to execute a workflow based on the finished result of another workflow. For example, if your pull_request workflow generates build artifacts, you can create a new workflow that uses workflow_run to analyze the results and add a comment to the original pull request.", - "properties": { - "types": { - "$ref": "#/definitions/types", - "items": { - "type": "string", - "enum": ["requested", "completed", "in_progress"] - }, - "default": ["requested", "completed"] - }, - "workflows": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - } - }, - "patternProperties": { - "^branches(-ignore)?$": {} - } - }, - "repository_dispatch": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#external-events-repository_dispatch", - "$ref": "#/definitions/eventObject", - "description": "You can use the GitHub API to trigger a webhook event called repository_dispatch when you want to trigger a workflow for activity that happens outside of GitHub. For more information, see https://developer.github.com/v3/repos/#create-a-repository-dispatch-event.\nTo trigger the custom repository_dispatch webhook event, you must send a POST request to a GitHub API endpoint and provide an event_type name to describe the activity type. To trigger a workflow run, you must also configure your workflow to use the repository_dispatch event." - }, - "schedule": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#scheduled-events-schedule", - "description": "You can schedule a workflow to run at specific UTC times using POSIX cron syntax (https://pubs.opengroup.org/onlinepubs/9699919799/utilities/crontab.html#tag_20_25_07). Scheduled workflows run on the latest commit on the default or base branch. The shortest interval you can run scheduled workflows is once every 5 minutes.\nNote: GitHub Actions does not support the non-standard syntax @yearly, @monthly, @weekly, @daily, @hourly, and @reboot.\nYou can use crontab guru (https://crontab.guru/). to help generate your cron syntax and confirm what time it will run. To help you get started, there is also a list of crontab guru examples (https://crontab.guru/examples.html).", - "type": "array", - "items": { - "type": "object", - "properties": { - "cron": { - "type": "string" - } - }, - "additionalProperties": false - }, - "minItems": 1 - } - }, - "additionalProperties": false - } - ] - }, - "env": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#env", - "$ref": "#/definitions/env", - "description": "A map of environment variables that are available to all jobs and steps in the workflow." - }, - "defaults": { - "$comment": "https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#defaults", - "$ref": "#/definitions/defaults", - "description": "A map of default settings that will apply to all jobs in the workflow." - }, - "concurrency": { - "$comment": "https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#concurrency", - "description": "Concurrency ensures that only a single job or workflow using the same concurrency group will run at a time. A concurrency group can be any string or expression. The expression can use any context except for the secrets context. \nYou can also specify concurrency at the workflow level. \nWhen a concurrent job or workflow is queued, if another job or workflow using the same concurrency group in the repository is in progress, the queued job or workflow will be pending. Any previously pending job or workflow in the concurrency group will be canceled. To also cancel any currently running job or workflow in the same concurrency group, specify cancel-in-progress: true.", - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/concurrency" - } - ] - }, - "jobs": { - "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobs", - "description": "A workflow run is made up of one or more jobs. Jobs run in parallel by default. To run jobs sequentially, you can define dependencies on other jobs using the jobs..needs keyword.\nEach job runs in a fresh instance of the virtual environment specified by runs-on.\nYou can run an unlimited number of jobs as long as you are within the workflow usage limits. For more information, see https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#usage-limits.", - "type": "object", - "patternProperties": { - "^[_a-zA-Z][a-zA-Z0-9_-]*$": { - "oneOf": [ - { - "$ref": "#/definitions/normalJob" - }, - { - "$ref": "#/definitions/reusableWorkflowCallJob" - } - ] - } - }, - "minProperties": 1, - "additionalProperties": false - }, - "run-name": { - "$comment": "https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#run-name", - "description": "The name for workflow runs generated from the workflow. GitHub displays the workflow run name in the list of workflow runs on your repository's 'Actions' tab.", - "type": "string" - }, - "permissions": { - "$ref": "#/definitions/permissions" - } - }, - "required": ["on", "jobs"], - "type": "object" -} +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://json.schemastore.org/github-workflow.json", + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions", + "additionalProperties": false, + "definitions": { + "architecture": { + "type": "string", + "enum": ["ARM32", "x64", "x86"] + }, + "branch": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#onpushpull_requestbranchestags", + "$ref": "#/definitions/globs", + "description": "When using the push and pull_request events, you can configure a workflow to run on specific branches or tags. If you only define only tags or only branches, the workflow won't run for events affecting the undefined Git ref.\nThe branches, branches-ignore, tags, and tags-ignore keywords accept glob patterns that use the * and ** wildcard characters to match more than one branch or tag name. For more information, see https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet.\nThe patterns defined in branches and tags are evaluated against the Git ref's name. For example, defining the pattern mona/octocat in branches will match the refs/heads/mona/octocat Git ref. The pattern releases/** will match the refs/heads/releases/10 Git ref.\nYou can use two types of filters to prevent a workflow from running on pushes and pull requests to tags and branches:\n- branches or branches-ignore - You cannot use both the branches and branches-ignore filters for the same event in a workflow. Use the branches filter when you need to filter branches for positive matches and exclude branches. Use the branches-ignore filter when you only need to exclude branch names.\n- tags or tags-ignore - You cannot use both the tags and tags-ignore filters for the same event in a workflow. Use the tags filter when you need to filter tags for positive matches and exclude tags. Use the tags-ignore filter when you only need to exclude tag names.\nYou can exclude tags and branches using the ! character. The order that you define patterns matters.\n- A matching negative pattern (prefixed with !) after a positive match will exclude the Git ref.\n- A matching positive pattern after a negative match will include the Git ref again." + }, + "concurrency": { + "type": "object", + "properties": { + "group": { + "$comment": "https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#example-using-concurrency-to-cancel-any-in-progress-job-or-run-1", + "description": "When a concurrent job or workflow is queued, if another job or workflow using the same concurrency group in the repository is in progress, the queued job or workflow will be pending. Any previously pending job or workflow in the concurrency group will be canceled.", + "type": "string" + }, + "cancel-in-progress": { + "$comment": "https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#example-using-concurrency-to-cancel-any-in-progress-job-or-run-1", + "description": "To cancel any currently running job or workflow in the same concurrency group, specify cancel-in-progress: true.", + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/expressionSyntax" + } + ] + } + }, + "required": ["group"], + "additionalProperties": false + }, + "configuration": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/configuration" + } + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/configuration" + } + } + ] + }, + "container": { + "type": "object", + "properties": { + "image": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idcontainerimage", + "description": "The Docker image to use as the container to run the action. The value can be the Docker Hub image name or a registry name.", + "type": "string" + }, + "credentials": { + "$comment": "https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions#jobsjob_idcontainercredentials", + "description": "If the image's container registry requires authentication to pull the image, you can use credentials to set a map of the username and password. The credentials are the same values that you would provide to the `docker login` command.", + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + } + } + }, + "env": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idcontainerenv", + "$ref": "#/definitions/env", + "description": "Sets an array of environment variables in the container." + }, + "ports": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idcontainerports", + "description": "Sets an array of ports to expose on the container.", + "type": "array", + "items": { + "oneOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "minItems": 1 + }, + "volumes": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idcontainervolumes", + "description": "Sets an array of volumes for the container to use. You can use volumes to share data between services or other steps in a job. You can specify named Docker volumes, anonymous Docker volumes, or bind mounts on the host.\nTo specify a volume, you specify the source and destination path: :\nThe is a volume name or an absolute path on the host machine, and is an absolute path in the container.", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "options": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idcontaineroptions", + "description": "Additional Docker container resource options. For a list of options, see https://docs.docker.com/engine/reference/commandline/create/#options.", + "type": "string" + } + }, + "required": ["image"], + "additionalProperties": false + }, + "defaults": { + "type": "object", + "properties": { + "run": { + "type": "object", + "properties": { + "shell": { + "$ref": "#/definitions/shell" + }, + "working-directory": { + "$ref": "#/definitions/working-directory" + } + }, + "minProperties": 1, + "additionalProperties": false + } + }, + "minProperties": 1, + "additionalProperties": false + }, + "permissions": { + "$comment": "https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#permissions", + "description": "You can modify the default permissions granted to the GITHUB_TOKEN, adding or removing access as required, so that you only allow the minimum required access.", + "oneOf": [ + { + "type": "string", + "enum": ["read-all", "write-all"] + }, + { + "$ref": "#/definitions/permissions-event" + } + ] + }, + "permissions-event": { + "type": "object", + "additionalProperties": false, + "properties": { + "actions": { + "$ref": "#/definitions/permissions-level" + }, + "attestations": { + "$ref": "#/definitions/permissions-level" + }, + "checks": { + "$ref": "#/definitions/permissions-level" + }, + "contents": { + "$ref": "#/definitions/permissions-level" + }, + "deployments": { + "$ref": "#/definitions/permissions-level" + }, + "discussions": { + "$ref": "#/definitions/permissions-level" + }, + "id-token": { + "$ref": "#/definitions/permissions-level" + }, + "issues": { + "$ref": "#/definitions/permissions-level" + }, + "models": { + "type": "string", + "enum": ["read", "none"] + }, + "packages": { + "$ref": "#/definitions/permissions-level" + }, + "pages": { + "$ref": "#/definitions/permissions-level" + }, + "pull-requests": { + "$ref": "#/definitions/permissions-level" + }, + "repository-projects": { + "$ref": "#/definitions/permissions-level" + }, + "security-events": { + "$ref": "#/definitions/permissions-level" + }, + "statuses": { + "$ref": "#/definitions/permissions-level" + } + } + }, + "permissions-level": { + "type": "string", + "enum": ["read", "write", "none"] + }, + "env": { + "$comment": "https://docs.github.com/en/actions/learn-github-actions/environment-variables", + "description": "To set custom environment variables, you need to specify the variables in the workflow file. You can define environment variables for a step, job, or entire workflow using the jobs..steps[*].env, jobs..env, and env keywords. For more information, see https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepsenv", + "oneOf": [ + { + "type": "object", + "additionalProperties": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + } + ] + } + }, + { + "$ref": "#/definitions/stringContainingExpressionSyntax" + } + ] + }, + "environment": { + "$comment": "https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions#jobsjob_idenvironment", + "description": "The environment that the job references", + "type": "object", + "properties": { + "name": { + "$comment": "https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions#example-using-a-single-environment-name", + "description": "The name of the environment configured in the repo.", + "type": "string" + }, + "url": { + "$comment": "https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions#example-using-environment-name-and-url", + "description": "A deployment URL", + "type": "string" + } + }, + "required": ["name"], + "additionalProperties": false + }, + "event": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows", + "type": "string", + "enum": [ + "branch_protection_rule", + "check_run", + "check_suite", + "create", + "delete", + "deployment", + "deployment_status", + "discussion", + "discussion_comment", + "fork", + "gollum", + "issue_comment", + "issues", + "label", + "merge_group", + "milestone", + "page_build", + "project", + "project_card", + "project_column", + "public", + "pull_request", + "pull_request_review", + "pull_request_review_comment", + "pull_request_target", + "push", + "registry_package", + "release", + "status", + "watch", + "workflow_call", + "workflow_dispatch", + "workflow_run", + "repository_dispatch" + ] + }, + "eventObject": { + "oneOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "additionalProperties": true + }, + "expressionSyntax": { + "$comment": "escape `{` and `}` in pattern to be unicode compatible (#1360)", + "type": "string", + "pattern": "^\\$\\{\\{(.|[\r\n])*\\}\\}$" + }, + "stringContainingExpressionSyntax": { + "$comment": "escape `{` and `}` in pattern to be unicode compatible (#1360)", + "type": "string", + "pattern": "^.*\\$\\{\\{(.|[\r\n])*\\}\\}.*$" + }, + "globs": { + "type": "array", + "items": { + "type": "string", + "minLength": 1 + }, + "minItems": 1 + }, + "machine": { + "type": "string", + "enum": ["linux", "macos", "windows"] + }, + "name": { + "type": "string", + "pattern": "^[_a-zA-Z][a-zA-Z0-9_-]*$" + }, + "path": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#onpushpull_requestpaths", + "$ref": "#/definitions/globs", + "description": "When using the push and pull_request events, you can configure a workflow to run when at least one file does not match paths-ignore or at least one modified file matches the configured paths. Path filters are not evaluated for pushes to tags.\nThe paths-ignore and paths keywords accept glob patterns that use the * and ** wildcard characters to match more than one path name. For more information, see https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet.\nYou can exclude paths using two types of filters. You cannot use both of these filters for the same event in a workflow.\n- paths-ignore - Use the paths-ignore filter when you only need to exclude path names.\n- paths - Use the paths filter when you need to filter paths for positive matches and exclude paths." + }, + "ref": { + "properties": { + "branches": { + "$ref": "#/definitions/branch" + }, + "branches-ignore": { + "$ref": "#/definitions/branch" + }, + "tags": { + "$ref": "#/definitions/branch" + }, + "tags-ignore": { + "$ref": "#/definitions/branch" + }, + "paths": { + "$ref": "#/definitions/path" + }, + "paths-ignore": { + "$ref": "#/definitions/path" + } + }, + "oneOf": [ + { + "type": "object", + "allOf": [ + { + "not": { + "required": ["branches", "branches-ignore"] + } + }, + { + "not": { + "required": ["tags", "tags-ignore"] + } + }, + { + "not": { + "required": ["paths", "paths-ignore"] + } + } + ] + }, + { + "type": "null" + } + ] + }, + "shell": { + "$comment": "https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell", + "description": "You can override the default shell settings in the runner's operating system using the shell keyword. You can use built-in shell keywords, or you can define a custom set of shell options.", + "anyOf": [ + { + "type": "string" + }, + { + "$comment": "https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#custom-shell", + "type": "string", + "enum": ["bash", "pwsh", "python", "sh", "cmd", "powershell"] + } + ] + }, + "step": { + "type": "object", + "additionalProperties": false, + "dependencies": { + "working-directory": ["run"], + "shell": ["run"] + }, + "oneOf": [ + { + "required": ["uses"] + }, + { + "required": ["run"] + } + ], + "properties": { + "id": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepsid", + "description": "A unique identifier for the step. You can use the id to reference the step in contexts. For more information, see https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.", + "type": "string" + }, + "if": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepsif", + "description": "You can use the if conditional to prevent a step from running unless a condition is met. You can use any supported context and expression to create a conditional.\nExpressions in an if conditional do not require the ${{ }} syntax. For more information, see https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.", + "type": ["boolean", "number", "string"] + }, + "name": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepsname", + "description": "A name for your step to display on GitHub.", + "type": "string" + }, + "uses": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepsuses", + "description": "Selects an action to run as part of a step in your job. An action is a reusable unit of code. You can use an action defined in the same repository as the workflow, a public repository, or in a published Docker container image (https://hub.docker.com/).\nWe strongly recommend that you include the version of the action you are using by specifying a Git ref, SHA, or Docker tag number. If you don't specify a version, it could break your workflows or cause unexpected behavior when the action owner publishes an update.\n- Using the commit SHA of a released action version is the safest for stability and security.\n- Using the specific major action version allows you to receive critical fixes and security patches while still maintaining compatibility. It also assures that your workflow should still work.\n- Using the master branch of an action may be convenient, but if someone releases a new major version with a breaking change, your workflow could break.\nSome actions require inputs that you must set using the with keyword. Review the action's README file to determine the inputs required.\nActions are either JavaScript files or Docker containers. If the action you're using is a Docker container you must run the job in a Linux virtual environment. For more details, see https://help.github.com/en/articles/virtual-environments-for-github-actions.", + "type": "string" + }, + "run": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepsrun", + "description": "Runs command-line programs using the operating system's shell. If you do not provide a name, the step name will default to the text specified in the run command.\nCommands run using non-login shells by default. You can choose a different shell and customize the shell used to run commands. For more information, see https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#using-a-specific-shell.\nEach run keyword represents a new process and shell in the virtual environment. When you provide multi-line commands, each line runs in the same shell.", + "type": "string" + }, + "working-directory": { + "$ref": "#/definitions/working-directory" + }, + "shell": { + "$ref": "#/definitions/shell" + }, + "with": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepswith", + "$ref": "#/definitions/env", + "description": "A map of the input parameters defined by the action. Each input parameter is a key/value pair. Input parameters are set as environment variables. The variable is prefixed with INPUT_ and converted to upper case.", + "properties": { + "args": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepswithargs", + "type": "string" + }, + "entrypoint": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepswithentrypoint", + "type": "string" + } + } + }, + "env": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepsenv", + "$ref": "#/definitions/env", + "description": "Sets environment variables for steps to use in the virtual environment. You can also set environment variables for the entire workflow or a job." + }, + "continue-on-error": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepscontinue-on-error", + "description": "Prevents a job from failing when a step fails. Set to true to allow a job to pass when this step fails.", + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/expressionSyntax" + } + ], + "default": false + }, + "timeout-minutes": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepstimeout-minutes", + "description": "The maximum number of minutes to run the step before killing the process.", + "oneOf": [ + { + "type": "number" + }, + { + "$ref": "#/definitions/expressionSyntax" + } + ] + } + } + }, + "types": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#onevent_nametypes", + "description": "Selects the types of activity that will trigger a workflow run. Most GitHub events are triggered by more than one type of activity. For example, the event for the release resource is triggered when a release is published, unpublished, created, edited, deleted, or prereleased. The types keyword enables you to narrow down activity that causes the workflow to run. When only one activity type triggers a webhook event, the types keyword is unnecessary.\nYou can use an array of event types. For more information about each event and their activity types, see https://help.github.com/en/articles/events-that-trigger-workflows#webhook-events.", + "oneOf": [ + { + "type": "array", + "minItems": 1 + }, + { + "type": "string" + } + ] + }, + "working-directory": { + "$comment": "https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsrun", + "description": "Using the working-directory keyword, you can specify the working directory of where to run the command.", + "type": "string" + }, + "jobNeeds": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idneeds", + "description": "Identifies any jobs that must complete successfully before this job will run. It can be a string or array of strings. If a job fails, all jobs that need it are skipped unless the jobs use a conditional statement that causes the job to continue.", + "oneOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/name" + }, + "minItems": 1 + }, + { + "$ref": "#/definitions/name" + } + ] + }, + "matrix": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategymatrix", + "description": "A build matrix is a set of different configurations of the virtual environment. For example you might run a job against more than one supported version of a language, operating system, or tool. Each configuration is a copy of the job that runs and reports a status.\nYou can specify a matrix by supplying an array for the configuration options. For example, if the GitHub virtual environment supports Node.js versions 6, 8, and 10 you could specify an array of those versions in the matrix.\nWhen you define a matrix of operating systems, you must set the required runs-on keyword to the operating system of the current job, rather than hard-coding the operating system name. To access the operating system name, you can use the matrix.os context parameter to set runs-on. For more information, see https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.", + "oneOf": [ + { + "type": "object", + "patternProperties": { + "^(in|ex)clude$": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#example-including-configurations-in-a-matrix-build", + "oneOf": [ + { + "$ref": "#/definitions/expressionSyntax" + }, + { + "type": "array", + "items": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/configuration" + } + }, + "minItems": 1 + } + ] + } + }, + "additionalProperties": { + "oneOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/configuration" + }, + "minItems": 1 + }, + { + "$ref": "#/definitions/expressionSyntax" + } + ] + }, + "minProperties": 1 + }, + { + "$ref": "#/definitions/expressionSyntax" + } + ] + }, + "reusableWorkflowCallJob": { + "$comment": "https://docs.github.com/en/actions/learn-github-actions/reusing-workflows#calling-a-reusable-workflow", + "description": "Each job must have an id to associate with the job. The key job_id is a string and its value is a map of the job's configuration data. You must replace with a string that is unique to the jobs object. The must start with a letter or _ and contain only alphanumeric characters, -, or _.", + "type": "object", + "properties": { + "name": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idname", + "description": "The name of the job displayed on GitHub.", + "type": "string" + }, + "needs": { + "$ref": "#/definitions/jobNeeds" + }, + "permissions": { + "$ref": "#/definitions/permissions" + }, + "if": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idif", + "description": "You can use the if conditional to prevent a job from running unless a condition is met. You can use any supported context and expression to create a conditional.\nExpressions in an if conditional do not require the ${{ }} syntax. For more information, see https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.", + "type": ["boolean", "number", "string"] + }, + "uses": { + "$comment": "https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#jobsjob_iduses", + "description": "The location and version of a reusable workflow file to run as a job, of the form './{path/to}/{localfile}.yml' or '{owner}/{repo}/{path}/{filename}@{ref}'. {ref} can be a SHA, a release tag, or a branch name. Using the commit SHA is the safest for stability and security.", + "type": "string", + "pattern": "^(.+\\/)+(.+)\\.(ya?ml)(@.+)?$" + }, + "with": { + "$comment": "https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#jobsjob_idwith", + "$ref": "#/definitions/env", + "description": "A map of inputs that are passed to the called workflow. Any inputs that you pass must match the input specifications defined in the called workflow. Unlike 'jobs..steps[*].with', the inputs you pass with 'jobs..with' are not be available as environment variables in the called workflow. Instead, you can reference the inputs by using the inputs context." + }, + "secrets": { + "$comment": "https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#jobsjob_idsecrets", + "description": "When a job is used to call a reusable workflow, you can use 'secrets' to provide a map of secrets that are passed to the called workflow. Any secrets that you pass must match the names defined in the called workflow.", + "oneOf": [ + { + "$ref": "#/definitions/env" + }, + { + "type": "string", + "enum": ["inherit"] + } + ] + }, + "strategy": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategy", + "description": "A strategy creates a build matrix for your jobs. You can define different variations of an environment to run each job in.", + "type": "object", + "properties": { + "matrix": { + "$ref": "#/definitions/matrix" + }, + "fail-fast": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategyfail-fast", + "description": "When set to true, GitHub cancels all in-progress jobs if any matrix job fails. Default: true", + "type": ["boolean", "string"], + "default": true + }, + "max-parallel": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategymax-parallel", + "description": "The maximum number of jobs that can run simultaneously when using a matrix job strategy. By default, GitHub will maximize the number of jobs run in parallel depending on the available runners on GitHub-hosted virtual machines.", + "type": ["number", "string"] + } + }, + "required": ["matrix"], + "additionalProperties": false + }, + "concurrency": { + "$comment": "https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idconcurrency", + "description": "Concurrency ensures that only a single job or workflow using the same concurrency group will run at a time. A concurrency group can be any string or expression. The expression can use any context except for the secrets context. \nYou can also specify concurrency at the workflow level. \nWhen a concurrent job or workflow is queued, if another job or workflow using the same concurrency group in the repository is in progress, the queued job or workflow will be pending. Any previously pending job or workflow in the concurrency group will be canceled. To also cancel any currently running job or workflow in the same concurrency group, specify cancel-in-progress: true.", + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/concurrency" + } + ] + } + }, + "required": ["uses"], + "additionalProperties": false + }, + "normalJob": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_id", + "description": "Each job must have an id to associate with the job. The key job_id is a string and its value is a map of the job's configuration data. You must replace with a string that is unique to the jobs object. The must start with a letter or _ and contain only alphanumeric characters, -, or _.", + "type": "object", + "properties": { + "name": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idname", + "description": "The name of the job displayed on GitHub.", + "type": "string" + }, + "needs": { + "$ref": "#/definitions/jobNeeds" + }, + "permissions": { + "$ref": "#/definitions/permissions" + }, + "runs-on": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idruns-on", + "description": "The type of machine to run the job on. The machine can be either a GitHub-hosted runner, or a self-hosted runner.", + "anyOf": [ + { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#github-hosted-runners", + "type": "string" + }, + { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#self-hosted-runners", + "type": "array", + "anyOf": [ + { + "items": [ + { + "type": "string" + } + ], + "minItems": 1, + "additionalItems": { + "type": "string" + } + } + ] + }, + { + "$comment": "https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#choosing-runners-in-a-group", + "type": "object", + "properties": { + "group": { + "type": "string" + }, + "labels": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + } + } + }, + { + "$ref": "#/definitions/stringContainingExpressionSyntax" + }, + { + "$ref": "#/definitions/expressionSyntax" + } + ] + }, + "environment": { + "$comment": "https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions#jobsjob_idenvironment", + "description": "The environment that the job references.", + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/environment" + } + ] + }, + "outputs": { + "$comment": "https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idoutputs", + "description": "A map of outputs for a job. Job outputs are available to all downstream jobs that depend on this job.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "minProperties": 1 + }, + "env": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idenv", + "$ref": "#/definitions/env", + "description": "A map of environment variables that are available to all steps in the job." + }, + "defaults": { + "$comment": "https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_iddefaults", + "$ref": "#/definitions/defaults", + "description": "A map of default settings that will apply to all steps in the job." + }, + "if": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idif", + "description": "You can use the if conditional to prevent a job from running unless a condition is met. You can use any supported context and expression to create a conditional.\nExpressions in an if conditional do not require the ${{ }} syntax. For more information, see https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions.", + "type": ["boolean", "number", "string"] + }, + "steps": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idsteps", + "description": "A job contains a sequence of tasks called steps. Steps can run commands, run setup tasks, or run an action in your repository, a public repository, or an action published in a Docker registry. Not all steps run actions, but all actions run as a step. Each step runs in its own process in the virtual environment and has access to the workspace and filesystem. Because steps run in their own process, changes to environment variables are not preserved between steps. GitHub provides built-in steps to set up and complete a job.\nMust contain either `uses` or `run`\n", + "type": "array", + "items": { + "$ref": "#/definitions/step" + }, + "minItems": 1 + }, + "timeout-minutes": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes", + "description": "The maximum number of minutes to let a workflow run before GitHub automatically cancels it. Default: 360", + "oneOf": [ + { + "type": "number" + }, + { + "$ref": "#/definitions/expressionSyntax" + } + ], + "default": 360 + }, + "strategy": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategy", + "description": "A strategy creates a build matrix for your jobs. You can define different variations of an environment to run each job in.", + "type": "object", + "properties": { + "matrix": { + "$ref": "#/definitions/matrix" + }, + "fail-fast": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategyfail-fast", + "description": "When set to true, GitHub cancels all in-progress jobs if any matrix job fails. Default: true", + "type": ["boolean", "string"], + "default": true + }, + "max-parallel": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idstrategymax-parallel", + "description": "The maximum number of jobs that can run simultaneously when using a matrix job strategy. By default, GitHub will maximize the number of jobs run in parallel depending on the available runners on GitHub-hosted virtual machines.", + "type": ["number", "string"] + } + }, + "required": ["matrix"], + "additionalProperties": false + }, + "continue-on-error": { + "$comment": "https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idcontinue-on-error", + "description": "Prevents a workflow run from failing when a job fails. Set to true to allow a workflow run to pass when this job fails.", + "oneOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/expressionSyntax" + } + ] + }, + "container": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idcontainer", + "description": "A container to run any steps in a job that don't already specify a container. If you have steps that use both script and container actions, the container actions will run as sibling containers on the same network with the same volume mounts.\nIf you do not set a container, all steps will run directly on the host specified by runs-on unless a step refers to an action configured to run in a container.", + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/container" + } + ] + }, + "services": { + "$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idservices", + "description": "Additional containers to host services for a job in a workflow. These are useful for creating databases or cache services like redis. The runner on the virtual machine will automatically create a network and manage the life cycle of the service containers.\nWhen you use a service container for a job or your step uses container actions, you don't need to set port information to access the service. Docker automatically exposes all ports between containers on the same network.\nWhen both the job and the action run in a container, you can directly reference the container by its hostname. The hostname is automatically mapped to the service name.\nWhen a step does not use a container action, you must access the service using localhost and bind the ports.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/container" + } + }, + "concurrency": { + "$comment": "https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idconcurrency", + "description": "Concurrency ensures that only a single job or workflow using the same concurrency group will run at a time. A concurrency group can be any string or expression. The expression can use any context except for the secrets context. \nYou can also specify concurrency at the workflow level. \nWhen a concurrent job or workflow is queued, if another job or workflow using the same concurrency group in the repository is in progress, the queued job or workflow will be pending. Any previously pending job or workflow in the concurrency group will be canceled. To also cancel any currently running job or workflow in the same concurrency group, specify cancel-in-progress: true.", + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/concurrency" + } + ] + } + }, + "required": ["runs-on"], + "additionalProperties": false + }, + "workflowDispatchInput": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_id", + "description": "A string identifier to associate with the input. The value of is a map of the input's metadata. The must be a unique identifier within the inputs object. The must start with a letter or _ and contain only alphanumeric characters, -, or _.", + "type": "object", + "properties": { + "description": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_iddescription", + "description": "A string description of the input parameter.", + "type": "string" + }, + "deprecationMessage": { + "description": "A string shown to users using the deprecated input.", + "type": "string" + }, + "required": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_idrequired", + "description": "A boolean to indicate whether the action requires the input parameter. Set to true when the parameter is required.", + "type": "boolean" + }, + "default": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_iddefault", + "description": "A string representing the default value. The default value is used when an input parameter isn't specified in a workflow file." + }, + "type": { + "$comment": "https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onworkflow_dispatchinputsinput_idtype", + "description": "A string representing the type of the input.", + "type": "string", + "enum": ["string", "choice", "boolean", "number", "environment"] + }, + "options": { + "$comment": "https://github.blog/changelog/2021-11-10-github-actions-input-types-for-manual-workflows", + "description": "The options of the dropdown list, if the type is a choice.", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + }, + "allOf": [ + { + "if": { + "properties": { + "type": { + "const": "string" + } + }, + "required": ["type"] + }, + "then": { + "properties": { + "default": { + "type": "string" + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "boolean" + } + }, + "required": ["type"] + }, + "then": { + "properties": { + "default": { + "type": "boolean" + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "number" + } + }, + "required": ["type"] + }, + "then": { + "properties": { + "default": { + "type": "number" + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "environment" + } + }, + "required": ["type"] + }, + "then": { + "properties": { + "default": { + "type": "string" + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "choice" + } + }, + "required": ["type"] + }, + "then": { + "required": ["options"] + } + } + ], + "required": ["description"], + "additionalProperties": false + } + }, + "properties": { + "name": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#name", + "description": "The name of your workflow. GitHub displays the names of your workflows on your repository's actions page. If you omit this field, GitHub sets the name to the workflow's filename.", + "type": "string" + }, + "on": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#on", + "description": "The name of the GitHub event that triggers the workflow. You can provide a single event string, array of events, array of event types, or an event configuration map that schedules a workflow or restricts the execution of a workflow to specific files, tags, or branch changes. For a list of available events, see https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows.", + "oneOf": [ + { + "$ref": "#/definitions/event" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/event" + }, + "minItems": 1 + }, + { + "type": "object", + "properties": { + "branch_protection_rule": { + "$comment": "https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#branch_protection_rule", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow anytime the branch_protection_rule event occurs. More than one activity type triggers this event.", + "properties": { + "types": { + "$ref": "#/definitions/types", + "items": { + "type": "string", + "enum": ["created", "edited", "deleted"] + }, + "default": ["created", "edited", "deleted"] + } + } + }, + "check_run": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#check-run-event-check_run", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow anytime the check_run event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/checks/runs.", + "properties": { + "types": { + "$ref": "#/definitions/types", + "items": { + "type": "string", + "enum": [ + "created", + "rerequested", + "completed", + "requested_action" + ] + }, + "default": [ + "created", + "rerequested", + "completed", + "requested_action" + ] + } + } + }, + "check_suite": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#check-suite-event-check_suite", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow anytime the check_suite event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/checks/suites/.", + "properties": { + "types": { + "$ref": "#/definitions/types", + "items": { + "type": "string", + "enum": ["completed", "requested", "rerequested"] + }, + "default": ["completed", "requested", "rerequested"] + } + } + }, + "create": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#create-event-create", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow anytime someone creates a branch or tag, which triggers the create event. For information about the REST API, see https://developer.github.com/v3/git/refs/#create-a-reference." + }, + "delete": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#delete-event-delete", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow anytime someone deletes a branch or tag, which triggers the delete event. For information about the REST API, see https://developer.github.com/v3/git/refs/#delete-a-reference." + }, + "deployment": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#deployment-event-deployment", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow anytime someone creates a deployment, which triggers the deployment event. Deployments created with a commit SHA may not have a Git ref. For information about the REST API, see https://developer.github.com/v3/repos/deployments/." + }, + "deployment_status": { + "$comment": "https://docs.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow anytime a third party provides a deployment status, which triggers the deployment_status event. Deployments created with a commit SHA may not have a Git ref. For information about the REST API, see https://developer.github.com/v3/repos/deployments/#create-a-deployment-status." + }, + "discussion": { + "$comment": "https://docs.github.com/en/actions/reference/events-that-trigger-workflows#discussion", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow anytime the discussion event occurs. More than one activity type triggers this event. For information about the GraphQL API, see https://docs.github.com/en/graphql/guides/using-the-graphql-api-for-discussions", + "properties": { + "types": { + "$ref": "#/definitions/types", + "items": { + "type": "string", + "enum": [ + "created", + "edited", + "deleted", + "transferred", + "pinned", + "unpinned", + "labeled", + "unlabeled", + "locked", + "unlocked", + "category_changed", + "answered", + "unanswered" + ] + }, + "default": [ + "created", + "edited", + "deleted", + "transferred", + "pinned", + "unpinned", + "labeled", + "unlabeled", + "locked", + "unlocked", + "category_changed", + "answered", + "unanswered" + ] + } + } + }, + "discussion_comment": { + "$comment": "https://docs.github.com/en/actions/reference/events-that-trigger-workflows#discussion_comment", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow anytime the discussion_comment event occurs. More than one activity type triggers this event. For information about the GraphQL API, see https://docs.github.com/en/graphql/guides/using-the-graphql-api-for-discussions", + "properties": { + "types": { + "$ref": "#/definitions/types", + "items": { + "type": "string", + "enum": ["created", "edited", "deleted"] + }, + "default": ["created", "edited", "deleted"] + } + } + }, + "fork": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#fork-event-fork", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow anytime when someone forks a repository, which triggers the fork event. For information about the REST API, see https://developer.github.com/v3/repos/forks/#create-a-fork." + }, + "gollum": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#gollum-event-gollum", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow when someone creates or updates a Wiki page, which triggers the gollum event." + }, + "issue_comment": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#issue-comment-event-issue_comment", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow anytime the issue_comment event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/issues/comments/.", + "properties": { + "types": { + "$ref": "#/definitions/types", + "items": { + "type": "string", + "enum": ["created", "edited", "deleted"] + }, + "default": ["created", "edited", "deleted"] + } + } + }, + "issues": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#issues-event-issues", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow anytime the issues event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/issues.", + "properties": { + "types": { + "$ref": "#/definitions/types", + "items": { + "type": "string", + "enum": [ + "opened", + "edited", + "deleted", + "transferred", + "pinned", + "unpinned", + "closed", + "reopened", + "assigned", + "unassigned", + "labeled", + "unlabeled", + "locked", + "unlocked", + "milestoned", + "demilestoned" + ] + }, + "default": [ + "opened", + "edited", + "deleted", + "transferred", + "pinned", + "unpinned", + "closed", + "reopened", + "assigned", + "unassigned", + "labeled", + "unlabeled", + "locked", + "unlocked", + "milestoned", + "demilestoned" + ] + } + } + }, + "label": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#label-event-label", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow anytime the label event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/issues/labels/.", + "properties": { + "types": { + "$ref": "#/definitions/types", + "items": { + "type": "string", + "enum": ["created", "edited", "deleted"] + }, + "default": ["created", "edited", "deleted"] + } + } + }, + "merge_group": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#merge_group", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow when a pull request is added to a merge queue, which adds the pull request to a merge group. For information about the merge queue, see https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request-with-a-merge-queue .", + "properties": { + "types": { + "$ref": "#/definitions/types", + "items": { + "type": "string", + "enum": ["checks_requested"] + }, + "default": ["checks_requested"] + } + } + }, + "milestone": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#milestone-event-milestone", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow anytime the milestone event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/issues/milestones/.", + "properties": { + "types": { + "$ref": "#/definitions/types", + "items": { + "type": "string", + "enum": ["created", "closed", "opened", "edited", "deleted"] + }, + "default": [ + "created", + "closed", + "opened", + "edited", + "deleted" + ] + } + } + }, + "page_build": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#page-build-event-page_build", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow anytime someone pushes to a GitHub Pages-enabled branch, which triggers the page_build event. For information about the REST API, see https://developer.github.com/v3/repos/pages/." + }, + "project": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#project-event-project", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow anytime the project event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/projects/.", + "properties": { + "types": { + "$ref": "#/definitions/types", + "items": { + "type": "string", + "enum": [ + "created", + "updated", + "closed", + "reopened", + "edited", + "deleted" + ] + }, + "default": [ + "created", + "updated", + "closed", + "reopened", + "edited", + "deleted" + ] + } + } + }, + "project_card": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#project-card-event-project_card", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow anytime the project_card event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/projects/cards.", + "properties": { + "types": { + "$ref": "#/definitions/types", + "items": { + "type": "string", + "enum": [ + "created", + "moved", + "converted", + "edited", + "deleted" + ] + }, + "default": [ + "created", + "moved", + "converted", + "edited", + "deleted" + ] + } + } + }, + "project_column": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#project-column-event-project_column", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow anytime the project_column event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/projects/columns.", + "properties": { + "types": { + "$ref": "#/definitions/types", + "items": { + "type": "string", + "enum": ["created", "updated", "moved", "deleted"] + }, + "default": ["created", "updated", "moved", "deleted"] + } + } + }, + "public": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#public-event-public", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow anytime someone makes a private repository public, which triggers the public event. For information about the REST API, see https://developer.github.com/v3/repos/#edit." + }, + "pull_request": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#pull-request-event-pull_request", + "$ref": "#/definitions/ref", + "description": "Runs your workflow anytime the pull_request event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/pulls.\nNote: Workflows do not run on private base repositories when you open a pull request from a forked repository.\nWhen you create a pull request from a forked repository to the base repository, GitHub sends the pull_request event to the base repository and no pull request events occur on the forked repository.\nWorkflows don't run on forked repositories by default. You must enable GitHub Actions in the Actions tab of the forked repository.\nThe permissions for the GITHUB_TOKEN in forked repositories is read-only. For more information about the GITHUB_TOKEN, see https://help.github.com/en/articles/virtual-environments-for-github-actions.", + "properties": { + "types": { + "$ref": "#/definitions/types", + "items": { + "type": "string", + "enum": [ + "assigned", + "unassigned", + "labeled", + "unlabeled", + "opened", + "edited", + "closed", + "reopened", + "synchronize", + "converted_to_draft", + "ready_for_review", + "locked", + "unlocked", + "milestoned", + "demilestoned", + "review_requested", + "review_request_removed", + "auto_merge_enabled", + "auto_merge_disabled", + "enqueued", + "dequeued" + ] + }, + "default": ["opened", "synchronize", "reopened"] + } + }, + "patternProperties": { + "^(branche|tag|path)s(-ignore)?$": { + "type": "array" + } + }, + "additionalProperties": false + }, + "pull_request_review": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#pull-request-review-event-pull_request_review", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow anytime the pull_request_review event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/pulls/reviews.\nNote: Workflows do not run on private base repositories when you open a pull request from a forked repository.\nWhen you create a pull request from a forked repository to the base repository, GitHub sends the pull_request event to the base repository and no pull request events occur on the forked repository.\nWorkflows don't run on forked repositories by default. You must enable GitHub Actions in the Actions tab of the forked repository.\nThe permissions for the GITHUB_TOKEN in forked repositories is read-only. For more information about the GITHUB_TOKEN, see https://help.github.com/en/articles/virtual-environments-for-github-actions.", + "properties": { + "types": { + "$ref": "#/definitions/types", + "items": { + "type": "string", + "enum": ["submitted", "edited", "dismissed"] + }, + "default": ["submitted", "edited", "dismissed"] + } + } + }, + "pull_request_review_comment": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#pull-request-review-comment-event-pull_request_review_comment", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow anytime a comment on a pull request's unified diff is modified, which triggers the pull_request_review_comment event. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/pulls/comments.\nNote: Workflows do not run on private base repositories when you open a pull request from a forked repository.\nWhen you create a pull request from a forked repository to the base repository, GitHub sends the pull_request event to the base repository and no pull request events occur on the forked repository.\nWorkflows don't run on forked repositories by default. You must enable GitHub Actions in the Actions tab of the forked repository.\nThe permissions for the GITHUB_TOKEN in forked repositories is read-only. For more information about the GITHUB_TOKEN, see https://help.github.com/en/articles/virtual-environments-for-github-actions.", + "properties": { + "types": { + "$ref": "#/definitions/types", + "items": { + "type": "string", + "enum": ["created", "edited", "deleted"] + }, + "default": ["created", "edited", "deleted"] + } + } + }, + "pull_request_target": { + "$comment": "https://docs.github.com/en/actions/reference/events-that-trigger-workflows#pull_request_target", + "$ref": "#/definitions/ref", + "description": "This event is similar to pull_request, except that it runs in the context of the base repository of the pull request, rather than in the merge commit. This means that you can more safely make your secrets available to the workflows triggered by the pull request, because only workflows defined in the commit on the base repository are run. For example, this event allows you to create workflows that label and comment on pull requests, based on the contents of the event payload.", + "properties": { + "types": { + "$ref": "#/definitions/types", + "items": { + "type": "string", + "enum": [ + "assigned", + "unassigned", + "labeled", + "unlabeled", + "opened", + "edited", + "closed", + "reopened", + "synchronize", + "converted_to_draft", + "ready_for_review", + "locked", + "unlocked", + "review_requested", + "review_request_removed", + "auto_merge_enabled", + "auto_merge_disabled" + ] + }, + "default": ["opened", "synchronize", "reopened"] + } + }, + "patternProperties": { + "^(branche|tag|path)s(-ignore)?$": {} + }, + "additionalProperties": false + }, + "push": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#push-event-push", + "$ref": "#/definitions/ref", + "description": "Runs your workflow when someone pushes to a repository branch, which triggers the push event.\nNote: The webhook payload available to GitHub Actions does not include the added, removed, and modified attributes in the commit object. You can retrieve the full commit object using the REST API. For more information, see https://developer.github.com/v3/repos/commits/#get-a-single-commit.", + "patternProperties": { + "^(branche|tag|path)s(-ignore)?$": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "additionalProperties": false + }, + "registry_package": { + "$comment": "https://help.github.com/en/actions/reference/events-that-trigger-workflows#registry-package-event-registry_package", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow anytime a package is published or updated. For more information, see https://help.github.com/en/github/managing-packages-with-github-packages.", + "properties": { + "types": { + "$ref": "#/definitions/types", + "items": { + "type": "string", + "enum": ["published", "updated"] + }, + "default": ["published", "updated"] + } + } + }, + "release": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#release-event-release", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow anytime the release event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/repos/releases/ in the GitHub Developer documentation.", + "properties": { + "types": { + "$ref": "#/definitions/types", + "items": { + "type": "string", + "enum": [ + "published", + "unpublished", + "created", + "edited", + "deleted", + "prereleased", + "released" + ] + }, + "default": [ + "published", + "unpublished", + "created", + "edited", + "deleted", + "prereleased", + "released" + ] + } + } + }, + "status": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#status-event-status", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow anytime the status of a Git commit changes, which triggers the status event. For information about the REST API, see https://developer.github.com/v3/repos/statuses/." + }, + "watch": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#watch-event-watch", + "$ref": "#/definitions/eventObject", + "description": "Runs your workflow anytime the watch event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/activity/starring/." + }, + "workflow_call": { + "$comment": "https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#workflow_call", + "description": "Allows workflows to be reused by other workflows.", + "properties": { + "inputs": { + "$comment": "https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#onworkflow_callinputs", + "description": "When using the workflow_call keyword, you can optionally specify inputs that are passed to the called workflow from the caller workflow.", + "type": "object", + "patternProperties": { + "^[_a-zA-Z][a-zA-Z0-9_-]*$": { + "$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#inputsinput_id", + "description": "A string identifier to associate with the input. The value of is a map of the input's metadata. The must be a unique identifier within the inputs object. The must start with a letter or _ and contain only alphanumeric characters, -, or _.", + "type": "object", + "properties": { + "description": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_iddescription", + "description": "A string description of the input parameter.", + "type": "string" + }, + "required": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_idrequired", + "description": "A boolean to indicate whether the action requires the input parameter. Set to true when the parameter is required.", + "type": "boolean" + }, + "type": { + "$comment": "https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#onworkflow_callinput_idtype", + "description": "Required if input is defined for the on.workflow_call keyword. The value of this parameter is a string specifying the data type of the input. This must be one of: boolean, number, or string.", + "type": "string", + "enum": ["boolean", "number", "string"] + }, + "default": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_iddefault", + "description": "The default value is used when an input parameter isn't specified in a workflow file.", + "type": ["boolean", "number", "string"] + } + }, + "required": ["type"], + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "outputs": { + "$comment": "https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#onworkflow_calloutputs", + "description": "When using the workflow_call keyword, you can optionally specify inputs that are passed to the called workflow from the caller workflow.", + "type": "object", + "patternProperties": { + "^[_a-zA-Z][a-zA-Z0-9_-]*$": { + "$comment": "https://docs.github.com/en/actions/sharing-automations/creating-actions/metadata-syntax-for-github-actions#outputsoutput_id", + "description": "A string identifier to associate with the output. The value of is a map of the output's metadata. The must be a unique identifier within the outputs object. The must start with a letter or _ and contain only alphanumeric characters, -, or _.", + "type": "object", + "properties": { + "description": { + "$comment": "https://docs.github.com/en/actions/sharing-automations/creating-actions/metadata-syntax-for-github-actions#outputsoutput_iddescription", + "description": "A string description of the output parameter.", + "type": "string" + }, + "value": { + "$comment": "https://docs.github.com/en/actions/sharing-automations/creating-actions/metadata-syntax-for-github-actions#outputsoutput_idvalue", + "description": "The value that the output parameter will be mapped to. You can set this to a string or an expression with context. For example, you can use the steps context to set the value of an output to the output value of a step.", + "type": "string" + } + }, + "required": ["value"], + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "secrets": { + "$comment": "https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#onworkflow_callsecrets", + "description": "A map of the secrets that can be used in the called workflow. Within the called workflow, you can use the secrets context to refer to a secret.", + "patternProperties": { + "^[_a-zA-Z][a-zA-Z0-9_-]*$": { + "$comment": "https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#onworkflow_callsecretssecret_id", + "description": "A string identifier to associate with the secret.", + "properties": { + "description": { + "description": "A string description of the secret parameter.", + "type": "string" + }, + "required": { + "$comment": "https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#onworkflow_callsecretssecret_idrequired", + "description": "A boolean specifying whether the secret must be supplied.", + "type": "boolean" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + } + }, + "workflow_dispatch": { + "$comment": "https://github.blog/changelog/2020-07-06-github-actions-manual-triggers-with-workflow_dispatch/", + "description": "You can now create workflows that are manually triggered with the new workflow_dispatch event. You will then see a 'Run workflow' button on the Actions tab, enabling you to easily trigger a run.", + "properties": { + "inputs": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputs", + "description": "Input parameters allow you to specify data that the action expects to use during runtime. GitHub stores input parameters as environment variables. Input ids with uppercase letters are converted to lowercase during runtime. We recommended using lowercase input ids.", + "type": "object", + "patternProperties": { + "^[_a-zA-Z][a-zA-Z0-9_-]*$": { + "$ref": "#/definitions/workflowDispatchInput" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "workflow_run": { + "$comment": "https://docs.github.com/en/actions/reference/events-that-trigger-workflows#workflow_run", + "$ref": "#/definitions/eventObject", + "description": "This event occurs when a workflow run is requested or completed, and allows you to execute a workflow based on the finished result of another workflow. For example, if your pull_request workflow generates build artifacts, you can create a new workflow that uses workflow_run to analyze the results and add a comment to the original pull request.", + "properties": { + "types": { + "$ref": "#/definitions/types", + "items": { + "type": "string", + "enum": ["requested", "completed", "in_progress"] + }, + "default": ["requested", "completed"] + }, + "workflows": { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + }, + "patternProperties": { + "^branches(-ignore)?$": {} + } + }, + "repository_dispatch": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#external-events-repository_dispatch", + "$ref": "#/definitions/eventObject", + "description": "You can use the GitHub API to trigger a webhook event called repository_dispatch when you want to trigger a workflow for activity that happens outside of GitHub. For more information, see https://developer.github.com/v3/repos/#create-a-repository-dispatch-event.\nTo trigger the custom repository_dispatch webhook event, you must send a POST request to a GitHub API endpoint and provide an event_type name to describe the activity type. To trigger a workflow run, you must also configure your workflow to use the repository_dispatch event." + }, + "schedule": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#scheduled-events-schedule", + "description": "You can schedule a workflow to run at specific UTC times using POSIX cron syntax (https://pubs.opengroup.org/onlinepubs/9699919799/utilities/crontab.html#tag_20_25_07). Scheduled workflows run on the latest commit on the default or base branch. The shortest interval you can run scheduled workflows is once every 5 minutes.\nNote: GitHub Actions does not support the non-standard syntax @yearly, @monthly, @weekly, @daily, @hourly, and @reboot.\nYou can use crontab guru (https://crontab.guru/). to help generate your cron syntax and confirm what time it will run. To help you get started, there is also a list of crontab guru examples (https://crontab.guru/examples.html).", + "type": "array", + "items": { + "type": "object", + "properties": { + "cron": { + "type": "string" + } + }, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "additionalProperties": false + } + ] + }, + "env": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#env", + "$ref": "#/definitions/env", + "description": "A map of environment variables that are available to all jobs and steps in the workflow." + }, + "defaults": { + "$comment": "https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#defaults", + "$ref": "#/definitions/defaults", + "description": "A map of default settings that will apply to all jobs in the workflow." + }, + "concurrency": { + "$comment": "https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#concurrency", + "description": "Concurrency ensures that only a single job or workflow using the same concurrency group will run at a time. A concurrency group can be any string or expression. The expression can use any context except for the secrets context. \nYou can also specify concurrency at the workflow level. \nWhen a concurrent job or workflow is queued, if another job or workflow using the same concurrency group in the repository is in progress, the queued job or workflow will be pending. Any previously pending job or workflow in the concurrency group will be canceled. To also cancel any currently running job or workflow in the same concurrency group, specify cancel-in-progress: true.", + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/concurrency" + } + ] + }, + "jobs": { + "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobs", + "description": "A workflow run is made up of one or more jobs. Jobs run in parallel by default. To run jobs sequentially, you can define dependencies on other jobs using the jobs..needs keyword.\nEach job runs in a fresh instance of the virtual environment specified by runs-on.\nYou can run an unlimited number of jobs as long as you are within the workflow usage limits. For more information, see https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#usage-limits.", + "type": "object", + "patternProperties": { + "^[_a-zA-Z][a-zA-Z0-9_-]*$": { + "oneOf": [ + { + "$ref": "#/definitions/normalJob" + }, + { + "$ref": "#/definitions/reusableWorkflowCallJob" + } + ] + } + }, + "minProperties": 1, + "additionalProperties": false + }, + "run-name": { + "$comment": "https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#run-name", + "description": "The name for workflow runs generated from the workflow. GitHub displays the workflow run name in the list of workflow runs on your repository's 'Actions' tab.", + "type": "string" + }, + "permissions": { + "$ref": "#/definitions/permissions" + } + }, + "required": ["on", "jobs"], + "type": "object" +} diff --git a/src/check_jsonschema/builtin_schemas/vendor/gitlab-ci.json b/src/check_jsonschema/builtin_schemas/vendor/gitlab-ci.json index 5a71408b1..cadc1ad05 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/gitlab-ci.json +++ b/src/check_jsonschema/builtin_schemas/vendor/gitlab-ci.json @@ -1,7 +1,7 @@ { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://gitlab.com/.gitlab-ci.yml", - "markdownDescription": "Gitlab has a built-in solution for doing CI called Gitlab CI. It is configured by supplying a file called `.gitlab-ci.yml`, which will list all the jobs that are going to run for the project. A full list of all options can be found [here](https://docs.gitlab.com/ee/ci/yaml/). [Learn More](https://docs.gitlab.com/ee/ci/).", + "markdownDescription": "GitLab has a built-in solution for doing CI called GitLab CI. It is configured by supplying a file called `.gitlab-ci.yml`, which will list all the jobs that are going to run for the project. A full list of all options can be found [here](https://docs.gitlab.com/ci/yaml/). [Learn More](https://docs.gitlab.com/ci/).", "type": "object", "properties": { "$schema": { @@ -10,7 +10,7 @@ }, "spec": { "type": "object", - "markdownDescription": "Specification for pipeline configuration. Must be declared at the top of a configuration file, in a header section separated from the rest of the configuration with `---`. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#spec).", + "markdownDescription": "Specification for pipeline configuration. Must be declared at the top of a configuration file, in a header section separated from the rest of the configuration with `---`. [Learn More](https://docs.gitlab.com/ci/yaml/#spec).", "properties": { "inputs": { "$ref": "#/definitions/inputParameters" @@ -20,26 +20,26 @@ }, "image": { "$ref": "#/definitions/image", - "markdownDescription": "Defining `image` globally is deprecated. Use [`default`](https://docs.gitlab.com/ee/ci/yaml/#default) instead. [Learn more](https://docs.gitlab.com/ee/ci/yaml/#globally-defined-image-services-cache-before_script-after_script)." + "markdownDescription": "Defining `image` globally is deprecated. Use [`default`](https://docs.gitlab.com/ci/yaml/#default) instead. [Learn more](https://docs.gitlab.com/ci/yaml/#globally-defined-image-services-cache-before_script-after_script)." }, "services": { "$ref": "#/definitions/services", - "markdownDescription": "Defining `services` globally is deprecated. Use [`default`](https://docs.gitlab.com/ee/ci/yaml/#default) instead. [Learn more](https://docs.gitlab.com/ee/ci/yaml/#globally-defined-image-services-cache-before_script-after_script)." + "markdownDescription": "Defining `services` globally is deprecated. Use [`default`](https://docs.gitlab.com/ci/yaml/#default) instead. [Learn more](https://docs.gitlab.com/ci/yaml/#globally-defined-image-services-cache-before_script-after_script)." }, "before_script": { "$ref": "#/definitions/before_script", - "markdownDescription": "Defining `before_script` globally is deprecated. Use [`default`](https://docs.gitlab.com/ee/ci/yaml/#default) instead. [Learn more](https://docs.gitlab.com/ee/ci/yaml/#globally-defined-image-services-cache-before_script-after_script)." + "markdownDescription": "Defining `before_script` globally is deprecated. Use [`default`](https://docs.gitlab.com/ci/yaml/#default) instead. [Learn more](https://docs.gitlab.com/ci/yaml/#globally-defined-image-services-cache-before_script-after_script)." }, "after_script": { "$ref": "#/definitions/after_script", - "markdownDescription": "Defining `after_script` globally is deprecated. Use [`default`](https://docs.gitlab.com/ee/ci/yaml/#default) instead. [Learn more](https://docs.gitlab.com/ee/ci/yaml/#globally-defined-image-services-cache-before_script-after_script)." + "markdownDescription": "Defining `after_script` globally is deprecated. Use [`default`](https://docs.gitlab.com/ci/yaml/#default) instead. [Learn more](https://docs.gitlab.com/ci/yaml/#globally-defined-image-services-cache-before_script-after_script)." }, "variables": { "$ref": "#/definitions/globalVariables" }, "cache": { "$ref": "#/definitions/cache", - "markdownDescription": "Defining `cache` globally is deprecated. Use [`default`](https://docs.gitlab.com/ee/ci/yaml/#default) instead. [Learn more](https://docs.gitlab.com/ee/ci/yaml/#globally-defined-image-services-cache-before_script-after_script)." + "markdownDescription": "Defining `cache` globally is deprecated. Use [`default`](https://docs.gitlab.com/ci/yaml/#default) instead. [Learn more](https://docs.gitlab.com/ci/yaml/#globally-defined-image-services-cache-before_script-after_script)." }, "!reference": { "$ref": "#/definitions/!reference" @@ -94,7 +94,7 @@ }, "stages": { "type": "array", - "markdownDescription": "Groups jobs into stages. All jobs in one stage must complete before next stage is executed. Defaults to ['build', 'test', 'deploy']. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#stages).", + "markdownDescription": "Groups jobs into stages. All jobs in one stage must complete before next stage is executed. Defaults to ['build', 'test', 'deploy']. [Learn More](https://docs.gitlab.com/ci/yaml/#stages).", "default": [ "build", "test", @@ -117,7 +117,7 @@ "minItems": 1 }, "include": { - "markdownDescription": "Can be `IncludeItem` or `IncludeItem[]`. Each `IncludeItem` will be a string, or an object with properties for the method if including external YAML file. The external content will be fetched, included and evaluated along the `.gitlab-ci.yml`. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#include).", + "markdownDescription": "Can be `IncludeItem` or `IncludeItem[]`. Each `IncludeItem` will be a string, or an object with properties for the method if including external YAML file. The external content will be fetched, included and evaluated along the `.gitlab-ci.yml`. [Learn More](https://docs.gitlab.com/ci/yaml/#include).", "oneOf": [ { "$ref": "#/definitions/include_item" @@ -132,7 +132,7 @@ }, "pages": { "$ref": "#/definitions/job", - "markdownDescription": "A special job used to upload static sites to Gitlab pages. Requires a `public/` directory with `artifacts.path` pointing to it. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#pages)." + "markdownDescription": "A special job used to upload static sites to GitLab pages. Requires a `public/` directory with `artifacts.path` pointing to it. [Learn More](https://docs.gitlab.com/ci/yaml/#pages)." }, "workflow": { "type": "object", @@ -210,12 +210,12 @@ "object", "null" ], - "markdownDescription": "Used to specify a list of files and directories that should be attached to the job if it succeeds. Artifacts are sent to Gitlab where they can be downloaded. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#artifacts).", + "markdownDescription": "Used to specify a list of files and directories that should be attached to the job if it succeeds. Artifacts are sent to GitLab where they can be downloaded. [Learn More](https://docs.gitlab.com/ci/yaml/#artifacts).", "additionalProperties": false, "properties": { "paths": { "type": "array", - "markdownDescription": "A list of paths to files/folders that should be included in the artifact. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#artifactspaths).", + "markdownDescription": "A list of paths to files/folders that should be included in the artifact. [Learn More](https://docs.gitlab.com/ci/yaml/#artifactspaths).", "items": { "type": "string" }, @@ -223,7 +223,7 @@ }, "exclude": { "type": "array", - "markdownDescription": "A list of paths to files/folders that should be excluded in the artifact. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#artifactsexclude).", + "markdownDescription": "A list of paths to files/folders that should be excluded in the artifact. [Learn More](https://docs.gitlab.com/ci/yaml/#artifactsexclude).", "items": { "type": "string" }, @@ -231,19 +231,19 @@ }, "expose_as": { "type": "string", - "markdownDescription": "Can be used to expose job artifacts in the merge request UI. GitLab will add a link to the relevant merge request that points to the artifact. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#artifactsexpose_as)." + "markdownDescription": "Can be used to expose job artifacts in the merge request UI. GitLab will add a link to the relevant merge request that points to the artifact. [Learn More](https://docs.gitlab.com/ci/yaml/#artifactsexpose_as)." }, "name": { "type": "string", - "markdownDescription": "Name for the archive created on job success. Can use variables in the name, e.g. '$CI_JOB_NAME' [Learn More](https://docs.gitlab.com/ee/ci/yaml/#artifactsname)." + "markdownDescription": "Name for the archive created on job success. Can use variables in the name, e.g. '$CI_JOB_NAME' [Learn More](https://docs.gitlab.com/ci/yaml/#artifactsname)." }, "untracked": { "type": "boolean", - "markdownDescription": "Whether to add all untracked files (along with 'artifacts.paths') to the artifact. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#artifactsuntracked).", + "markdownDescription": "Whether to add all untracked files (along with 'artifacts.paths') to the artifact. [Learn More](https://docs.gitlab.com/ci/yaml/#artifactsuntracked).", "default": false }, "when": { - "markdownDescription": "Configure when artifacts are uploaded depended on job status. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#artifactswhen).", + "markdownDescription": "Configure when artifacts are uploaded depended on job status. [Learn More](https://docs.gitlab.com/ci/yaml/#artifactswhen).", "default": "on_success", "type": "string", "enum": [ @@ -253,7 +253,7 @@ ] }, "access": { - "markdownDescription": "Configure who can access the artifacts. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#artifactsaccess).", + "markdownDescription": "Configure who can access the artifacts. [Learn More](https://docs.gitlab.com/ci/yaml/#artifactsaccess).", "default": "all", "type": "string", "enum": [ @@ -264,12 +264,12 @@ }, "expire_in": { "type": "string", - "markdownDescription": "How long artifacts should be kept. They are saved 30 days by default. Artifacts that have expired are removed periodically via cron job. Supports a wide variety of formats, e.g. '1 week', '3 mins 4 sec', '2 hrs 20 min', '2h20min', '6 mos 1 day', '47 yrs 6 mos and 4d', '3 weeks and 2 days'. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#artifactsexpire_in).", + "markdownDescription": "How long artifacts should be kept. They are saved 30 days by default. Artifacts that have expired are removed periodically via cron job. Supports a wide variety of formats, e.g. '1 week', '3 mins 4 sec', '2 hrs 20 min', '2h20min', '6 mos 1 day', '47 yrs 6 mos and 4d', '3 weeks and 2 days'. [Learn More](https://docs.gitlab.com/ci/yaml/#artifactsexpire_in).", "default": "30 days" }, "reports": { "type": "object", - "markdownDescription": "Reports will be uploaded as artifacts, and often displayed in the Gitlab UI, such as in merge requests. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#artifactsreports).", + "markdownDescription": "Reports will be uploaded as artifacts, and often displayed in the GitLab UI, such as in merge requests. [Learn More](https://docs.gitlab.com/ci/yaml/#artifactsreports).", "additionalProperties": false, "properties": { "annotations": { @@ -372,11 +372,11 @@ }, "cyclonedx": { "$ref": "#/definitions/string_file_list", - "markdownDescription": "Path to file or list of files with cyclonedx report(s). [Learn More](https://docs.gitlab.com/ee/ci/yaml/artifacts_reports.html#artifactsreportscyclonedx)." + "markdownDescription": "Path to file or list of files with cyclonedx report(s). [Learn More](https://docs.gitlab.com/ci/yaml/artifacts_reports/#artifactsreportscyclonedx)." }, "load_performance": { "$ref": "#/definitions/string_file_list", - "markdownDescription": "Path to file or list of files with load performance testing report(s). [Learn More](https://docs.gitlab.com/ee/ci/yaml/artifacts_reports.html#artifactsreportsload_performance)." + "markdownDescription": "Path to file or list of files with load performance testing report(s). [Learn More](https://docs.gitlab.com/ci/yaml/artifacts_reports/#artifactsreportsload_performance)." }, "repository_xray": { "$ref": "#/definitions/string_file_list", @@ -401,7 +401,7 @@ }, "inputParameters": { "type": "object", - "markdownDescription": "Define parameters that can be populated in reusable CI/CD configuration files when added to a pipeline. [Learn More](https://docs.gitlab.com/ee/ci/yaml/inputs).", + "markdownDescription": "Define parameters that can be populated in reusable CI/CD configuration files when added to a pipeline. [Learn More](https://docs.gitlab.com/ci/inputs/).", "patternProperties": { ".*": { "markdownDescription": "**Input Configuration**\n\nAvailable properties:\n- `type`: string (default), array, boolean, or number\n- `description`: Human-readable explanation of the parameter (supports Markdown)\n- `options`: List of allowed values\n- `default`: Value to use when not specified (makes input optional)\n- `regex`: Pattern that string values must match", @@ -411,7 +411,7 @@ "properties": { "type": { "type": "string", - "markdownDescription": "Force a specific input type. Defaults to 'string' when not specified. [Learn More](https://docs.gitlab.com/ee/ci/yaml/inputs/#input-types).", + "markdownDescription": "Force a specific input type. Defaults to 'string' when not specified. [Learn More](https://docs.gitlab.com/ci/inputs/#input-types).", "enum": [ "array", "boolean", @@ -593,7 +593,7 @@ "additionalProperties": false, "properties": { "project": { - "description": "Path to the project, e.g. `group/project`, or `group/sub-group/project` [Learn more](https://docs.gitlab.com/ee/ci/yaml/#includefile).", + "description": "Path to the project, e.g. `group/project`, or `group/sub-group/project` [Learn more](https://docs.gitlab.com/ci/yaml/#includeproject).", "type": "string", "pattern": "(?:\\S/\\S|\\$\\S+)" }, @@ -715,7 +715,7 @@ }, { "type": "object", - "description": "Specifies the docker image to use for the job or globally for all jobs. Job configuration takes precedence over global setting. Requires a certain kind of Gitlab runner executor.", + "description": "Specifies the docker image to use for the job or globally for all jobs. Job configuration takes precedence over global setting. Requires a certain kind of GitLab runner executor.", "additionalProperties": false, "properties": { "name": { @@ -730,7 +730,7 @@ }, "docker": { "type": "object", - "markdownDescription": "Options to pass to Runners Docker Executor. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#imagedocker)", + "markdownDescription": "Options to pass to Runners Docker Executor. [Learn More](https://docs.gitlab.com/ci/yaml/#imagedocker)", "additionalProperties": false, "properties": { "platform": { @@ -746,8 +746,21 @@ } } }, + "kubernetes": { + "type": "object", + "markdownDescription": "Options to pass to Runners Kubernetes Executor. [Learn More](https://docs.gitlab.com/ci/yaml/#imagekubernetes)", + "additionalProperties": false, + "properties": { + "user": { + "type": ["string", "integer"], + "minLength": 1, + "maxLength": 255, + "description": "Username or UID to use for the container. It also supports the UID:GID format." + } + } + }, "pull_policy": { - "markdownDescription": "Specifies how to pull the image in Runner. It can be one of `always`, `never` or `if-not-present`. The default value is `always`. [Learn more](https://docs.gitlab.com/ee/ci/yaml/#imagepull_policy).", + "markdownDescription": "Specifies how to pull the image in Runner. It can be one of `always`, `never` or `if-not-present`. The default value is `always`. [Learn more](https://docs.gitlab.com/ci/yaml/#imagepull_policy).", "default": "always", "oneOf": [ { @@ -779,11 +792,11 @@ ] } ], - "markdownDescription": "Specifies the docker image to use for the job or globally for all jobs. Job configuration takes precedence over global setting. Requires a certain kind of Gitlab runner executor. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#image)." + "markdownDescription": "Specifies the docker image to use for the job or globally for all jobs. Job configuration takes precedence over global setting. Requires a certain kind of GitLab runner executor. [Learn More](https://docs.gitlab.com/ci/yaml/#image)." }, "services": { "type": "array", - "markdownDescription": "Similar to `image` property, but will link the specified services to the `image` container. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#services).", + "markdownDescription": "Similar to `image` property, but will link the specified services to the `image` container. [Learn More](https://docs.gitlab.com/ci/yaml/#services).", "items": { "oneOf": [ { @@ -803,7 +816,7 @@ }, "entrypoint": { "type": "array", - "markdownDescription": "Command or script that should be executed as the container's entrypoint. It will be translated to Docker's --entrypoint option while creating the container. The syntax is similar to Dockerfile's ENTRYPOINT directive, where each shell token is a separate string in the array. [Learn More](https://docs.gitlab.com/ee/ci/services/#available-settings-for-services)", + "markdownDescription": "Command or script that should be executed as the container's entrypoint. It will be translated to Docker's --entrypoint option while creating the container. The syntax is similar to Dockerfile's ENTRYPOINT directive, where each shell token is a separate string in the array. [Learn More](https://docs.gitlab.com/ci/services/#available-settings-for-services)", "minItems": 1, "items": { "type": "string" @@ -811,7 +824,7 @@ }, "docker": { "type": "object", - "markdownDescription": "Options to pass to Runners Docker Executor. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#servicesdocker)", + "markdownDescription": "Options to pass to Runners Docker Executor. [Learn More](https://docs.gitlab.com/ci/yaml/#servicesdocker)", "additionalProperties": false, "properties": { "platform": { @@ -827,8 +840,21 @@ } } }, + "kubernetes": { + "type": "object", + "markdownDescription": "Options to pass to Runners Kubernetes Executor. [Learn More](https://docs.gitlab.com/ci/yaml/#imagekubernetes)", + "additionalProperties": false, + "properties": { + "user": { + "type": ["string", "integer"], + "minLength": 1, + "maxLength": 255, + "description": "Username or UID to use for the container. It also supports the UID:GID format." + } + } + }, "pull_policy": { - "markdownDescription": "Specifies how to pull the image in Runner. It can be one of `always`, `never` or `if-not-present`. The default value is `always`. [Learn more](https://docs.gitlab.com/ee/ci/yaml/#servicespull_policy).", + "markdownDescription": "Specifies how to pull the image in Runner. It can be one of `always`, `never` or `if-not-present`. The default value is `always`. [Learn more](https://docs.gitlab.com/ci/yaml/#servicespull_policy).", "default": "always", "oneOf": [ { @@ -856,7 +882,7 @@ }, "command": { "type": "array", - "markdownDescription": "Command or script that should be used as the container's command. It will be translated to arguments passed to Docker after the image's name. The syntax is similar to Dockerfile's CMD directive, where each shell token is a separate string in the array. [Learn More](https://docs.gitlab.com/ee/ci/services/#available-settings-for-services)", + "markdownDescription": "Command or script that should be used as the container's command. It will be translated to arguments passed to Docker after the image's name. The syntax is similar to Dockerfile's CMD directive, where each shell token is a separate string in the array. [Learn More](https://docs.gitlab.com/ci/services/#available-settings-for-services)", "minItems": 1, "items": { "type": "string" @@ -864,12 +890,12 @@ }, "alias": { "type": "string", - "markdownDescription": "Additional alias that can be used to access the service from the job's container. Read Accessing the services for more information. [Learn More](https://docs.gitlab.com/ee/ci/services/#available-settings-for-services)", + "markdownDescription": "Additional alias that can be used to access the service from the job's container. Read Accessing the services for more information. [Learn More](https://docs.gitlab.com/ci/services/#available-settings-for-services)", "minLength": 1 }, "variables": { "$ref": "#/definitions/jobVariables", - "markdownDescription": "Additional environment variables that are passed exclusively to the service. Service variables cannot reference themselves. [Learn More](https://docs.gitlab.com/ee/ci/services/#available-settings-for-services)" + "markdownDescription": "Additional environment variables that are passed exclusively to the service. Service variables cannot reference themselves. [Learn More](https://docs.gitlab.com/ci/services/#available-settings-for-services)" } }, "required": [ @@ -911,14 +937,14 @@ }, "identity": { "type": "string", - "markdownDescription": "Sets a workload identity (experimental), allowing automatic authentication with the external system. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#identity).", + "markdownDescription": "Sets a workload identity (experimental), allowing automatic authentication with the external system. [Learn More](https://docs.gitlab.com/ci/yaml/#identity).", "enum": [ "google_cloud" ] }, "secrets": { "type": "object", - "markdownDescription": "Defines secrets to be injected as environment variables. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#secrets).", + "markdownDescription": "Defines secrets to be injected as environment variables. [Learn More](https://docs.gitlab.com/ci/yaml/#secrets).", "patternProperties": { ".*": { "type": "object", @@ -927,7 +953,7 @@ "oneOf": [ { "type": "string", - "markdownDescription": "The secret to be fetched from Vault (e.g. 'production/db/password@ops' translates to secret 'ops/data/production/db', field `password`). [Learn More](https://docs.gitlab.com/ee/ci/yaml/#secretsvault)" + "markdownDescription": "The secret to be fetched from Vault (e.g. 'production/db/password@ops' translates to secret 'ops/data/production/db', field `password`). [Learn More](https://docs.gitlab.com/ci/yaml/#secretsvault)" }, { "type": "object", @@ -1026,7 +1052,7 @@ "file": { "type": "boolean", "default": true, - "markdownDescription": "Configures the secret to be stored as either a file or variable type CI/CD variable. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#secretsfile)" + "markdownDescription": "Configures the secret to be stored as either a file or variable type CI/CD variable. [Learn More](https://docs.gitlab.com/ci/yaml/#secretsfile)" }, "token": { "type": "string", @@ -1120,18 +1146,18 @@ }, "before_script": { "$ref": "#/definitions/optional_script", - "markdownDescription": "Defines scripts that should run *before* the job. Can be set globally or per job. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#before_script)." + "markdownDescription": "Defines scripts that should run *before* the job. Can be set globally or per job. [Learn More](https://docs.gitlab.com/ci/yaml/#before_script)." }, "after_script": { "$ref": "#/definitions/optional_script", - "markdownDescription": "Defines scripts that should run *after* the job. Can be set globally or per job. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#after_script)." + "markdownDescription": "Defines scripts that should run *after* the job. Can be set globally or per job. [Learn More](https://docs.gitlab.com/ci/yaml/#after_script)." }, "rules": { "type": [ "array", "null" ], - "markdownDescription": "Rules allows for an array of individual rule objects to be evaluated in order, until one matches and dynamically provides attributes to the job. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#rules).", + "markdownDescription": "Rules allows for an array of individual rule objects to be evaluated in order, until one matches and dynamically provides attributes to the job. [Learn More](https://docs.gitlab.com/ci/yaml/#rules).", "items": { "anyOf": [ { @@ -1186,7 +1212,7 @@ "array", "null" ], - "markdownDescription": "You can use rules to conditionally include other configuration files. [Learn More](https://docs.gitlab.com/ee/ci/yaml/includes.html#use-rules-with-include).", + "markdownDescription": "You can use rules to conditionally include other configuration files. [Learn More](https://docs.gitlab.com/ci/yaml/includes/#use-rules-with-include).", "items": { "anyOf": [ { @@ -1203,7 +1229,7 @@ "$ref": "#/definitions/exists" }, "when": { - "markdownDescription": "Use `when: never` to exclude the configuration file if the condition matches. [Learn More](https://docs.gitlab.com/ee/ci/yaml/includes.html#include-with-rulesif).", + "markdownDescription": "Use `when: never` to exclude the configuration file if the condition matches. [Learn More](https://docs.gitlab.com/ci/yaml/includes/#include-with-rulesif).", "oneOf": [ { "type": "string", @@ -1235,7 +1261,7 @@ }, "workflowName": { "type": "string", - "markdownDescription": "Defines the pipeline name. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#workflowname).", + "markdownDescription": "Defines the pipeline name. [Learn More](https://docs.gitlab.com/ci/yaml/#workflowname).", "minLength": 1, "maxLength": 255 }, @@ -1254,7 +1280,7 @@ ] }, "on_new_commit": { - "markdownDescription": "Configure the behavior of the auto-cancel redundant pipelines feature. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#workflowauto_cancelon_new_commit)", + "markdownDescription": "Configure the behavior of the auto-cancel redundant pipelines feature. [Learn More](https://docs.gitlab.com/ci/yaml/#workflowauto_cancelon_new_commit)", "type": "string", "enum": [ "conservative", @@ -1265,7 +1291,7 @@ } }, "globalVariables": { - "markdownDescription": "Defines default variables for all jobs. Job level property overrides global variables. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#variables).", + "markdownDescription": "Defines default variables for all jobs. Job level property overrides global variables. [Learn More](https://docs.gitlab.com/ci/yaml/#variables).", "type": "object", "patternProperties": { ".*": { @@ -1282,7 +1308,7 @@ "properties": { "value": { "type": "string", - "markdownDescription": "Default value of the variable. If used with `options`, `value` must be included in the array. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#variablesvalue)" + "markdownDescription": "Default value of the variable. If used with `options`, `value` must be included in the array. [Learn More](https://docs.gitlab.com/ci/yaml/#variablesvalue)" }, "options": { "type": "array", @@ -1291,15 +1317,15 @@ }, "minItems": 1, "uniqueItems": true, - "markdownDescription": "A list of predefined values that users can select from in the **Run pipeline** page when running a pipeline manually. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#variablesoptions)" + "markdownDescription": "A list of predefined values that users can select from in the **Run pipeline** page when running a pipeline manually. [Learn More](https://docs.gitlab.com/ci/yaml/#variablesoptions)" }, "description": { "type": "string", - "markdownDescription": "Explains what the variable is used for, what the acceptable values are. Variables with `description` are prefilled when running a pipeline manually. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#variablesdescription)." + "markdownDescription": "Explains what the variable is used for, what the acceptable values are. Variables with `description` are prefilled when running a pipeline manually. [Learn More](https://docs.gitlab.com/ci/yaml/#variablesdescription)." }, "expand": { "type": "boolean", - "markdownDescription": "If the variable is expandable or not. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#variablesexpand)." + "markdownDescription": "If the variable is expandable or not. [Learn More](https://docs.gitlab.com/ci/yaml/#variablesexpand)." } }, "additionalProperties": false @@ -1309,7 +1335,7 @@ } }, "jobVariables": { - "markdownDescription": "Defines variables for a job. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#variables).", + "markdownDescription": "Defines variables for a job. [Learn More](https://docs.gitlab.com/ci/yaml/#variables).", "type": "object", "patternProperties": { ".*": { @@ -1329,7 +1355,7 @@ }, "expand": { "type": "boolean", - "markdownDescription": "Defines if the variable is expandable or not. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#variablesexpand)." + "markdownDescription": "Defines if the variable is expandable or not. [Learn More](https://docs.gitlab.com/ci/yaml/#variablesexpand)." } }, "additionalProperties": false @@ -1339,7 +1365,7 @@ } }, "rulesVariables": { - "markdownDescription": "Defines variables for a rule result. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#rulesvariables).", + "markdownDescription": "Defines variables for a rule result. [Learn More](https://docs.gitlab.com/ci/yaml/#rulesvariables).", "type": "object", "patternProperties": { ".*": { @@ -1353,10 +1379,10 @@ }, "if": { "type": "string", - "markdownDescription": "Expression to evaluate whether additional attributes should be provided to the job. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#rulesif)." + "markdownDescription": "Expression to evaluate whether additional attributes should be provided to the job. [Learn More](https://docs.gitlab.com/ci/yaml/#rulesif)." }, "changes": { - "markdownDescription": "Additional attributes will be provided to job if any of the provided paths matches a modified file. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#ruleschanges).", + "markdownDescription": "Additional attributes will be provided to job if any of the provided paths matches a modified file. [Learn More](https://docs.gitlab.com/ci/yaml/#ruleschanges).", "anyOf": [ { "type": "object", @@ -1387,7 +1413,7 @@ ] }, "exists": { - "markdownDescription": "Additional attributes will be provided to job if any of the provided paths matches an existing file in the repository. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#rulesexists).", + "markdownDescription": "Additional attributes will be provided to job if any of the provided paths matches an existing file in the repository. [Learn More](https://docs.gitlab.com/ci/yaml/#rulesexists).", "anyOf": [ { "type": "array", @@ -1444,16 +1470,16 @@ }, "timeout": { "type": "string", - "markdownDescription": "Allows you to configure a timeout for a specific job (e.g. `1 minute`, `1h 30m 12s`). [Learn More](https://docs.gitlab.com/ee/ci/yaml/#timeout).", + "markdownDescription": "Allows you to configure a timeout for a specific job (e.g. `1 minute`, `1h 30m 12s`). [Learn More](https://docs.gitlab.com/ci/yaml/#timeout).", "minLength": 1 }, "start_in": { "type": "string", - "markdownDescription": "Used in conjunction with 'when: delayed' to set how long to delay before starting a job. e.g. '5', 5 seconds, 30 minutes, 1 week, etc. [Learn More](https://docs.gitlab.com/ee/ci/jobs/job_control.html#run-a-job-after-a-delay).", + "markdownDescription": "Used in conjunction with 'when: delayed' to set how long to delay before starting a job. e.g. '5', 5 seconds, 30 minutes, 1 week, etc. [Learn More](https://docs.gitlab.com/ci/jobs/job_control/#run-a-job-after-a-delay).", "minLength": 1 }, "rulesNeeds": { - "markdownDescription": "Use needs in rules to update job needs for specific conditions. When a condition matches a rule, the job's needs configuration is completely replaced with the needs in the rule. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#rulesneeds).", + "markdownDescription": "Use needs in rules to update job needs for specific conditions. When a condition matches a rule, the job's needs configuration is completely replaced with the needs in the rule. [Learn More](https://docs.gitlab.com/ci/yaml/#rulesneeds).", "type": "array", "items": { "oneOf": [ @@ -1486,7 +1512,7 @@ } }, "allow_failure": { - "markdownDescription": "Allow job to fail. A failed job does not cause the pipeline to fail. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#allow_failure).", + "markdownDescription": "Allow job to fail. A failed job does not cause the pipeline to fail. [Learn More](https://docs.gitlab.com/ci/yaml/#allow_failure).", "oneOf": [ { "description": "Setting this option to true will allow the job to fail while still letting the pipeline pass.", @@ -1564,7 +1590,7 @@ ] }, "parallel_matrix": { - "description": "Use the `needs:parallel:matrix` keyword to specify parallelized jobs needed to be completed for the job to run. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#needsparallelmatrix)", + "description": "Use the `needs:parallel:matrix` keyword to specify parallelized jobs needed to be completed for the job to run. [Learn More](https://docs.gitlab.com/ci/yaml/#needsparallelmatrix)", "oneOf": [ { "type": "object", @@ -1594,7 +1620,7 @@ ] }, "when": { - "markdownDescription": "Describes the conditions for when to run the job. Defaults to 'on_success'. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#when).", + "markdownDescription": "Describes the conditions for when to run the job. Defaults to 'on_success'. [Learn More](https://docs.gitlab.com/ci/yaml/#when).", "default": "on_success", "type": "string", "enum": [ @@ -1607,7 +1633,7 @@ ] }, "cache": { - "markdownDescription": "Use `cache` to specify a list of files and directories to cache between jobs. You can only use paths that are in the local working copy. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#cache)", + "markdownDescription": "Use `cache` to specify a list of files and directories to cache between jobs. You can only use paths that are in the local working copy. [Learn More](https://docs.gitlab.com/ci/yaml/#cache)", "oneOf": [ { "$ref": "#/definitions/cache_item" @@ -1624,7 +1650,7 @@ "type": "object", "properties": { "key": { - "markdownDescription": "Use the `cache:key` keyword to give each cache a unique identifying key. All jobs that use the same cache key use the same cache, including in different pipelines. Must be used with `cache:path`, or nothing is cached. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#cachekey).", + "markdownDescription": "Use the `cache:key` keyword to give each cache a unique identifying key. All jobs that use the same cache key use the same cache, including in different pipelines. Must be used with `cache:path`, or nothing is cached. [Learn More](https://docs.gitlab.com/ci/yaml/#cachekey).", "oneOf": [ { "type": "string", @@ -1634,7 +1660,7 @@ "type": "object", "properties": { "files": { - "markdownDescription": "Use the `cache:key:files` keyword to generate a new key when one or two specific files change. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#cachekeyfiles)", + "markdownDescription": "Use the `cache:key:files` keyword to generate a new key when one or two specific files change. [Learn More](https://docs.gitlab.com/ci/yaml/#cachekeyfiles)", "type": "array", "items": { "type": "string" @@ -1643,7 +1669,7 @@ "maxItems": 2 }, "prefix": { - "markdownDescription": "Use `cache:key:prefix` to combine a prefix with the SHA computed for `cache:key:files`. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#cachekeyprefix)", + "markdownDescription": "Use `cache:key:prefix` to combine a prefix with the SHA computed for `cache:key:files`. [Learn More](https://docs.gitlab.com/ci/yaml/#cachekeyprefix)", "type": "string" } } @@ -1652,14 +1678,14 @@ }, "paths": { "type": "array", - "markdownDescription": "Use the `cache:paths` keyword to choose which files or directories to cache. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#cachepaths)", + "markdownDescription": "Use the `cache:paths` keyword to choose which files or directories to cache. [Learn More](https://docs.gitlab.com/ci/yaml/#cachepaths)", "items": { "type": "string" } }, "policy": { "type": "string", - "markdownDescription": "Determines the strategy for downloading and updating the cache. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#cachepolicy)", + "markdownDescription": "Determines the strategy for downloading and updating the cache. [Learn More](https://docs.gitlab.com/ci/yaml/#cachepolicy)", "default": "pull-push", "pattern": "pull-push|pull|push|\\$\\w{1,255}" }, @@ -1670,12 +1696,12 @@ }, "untracked": { "type": "boolean", - "markdownDescription": "Use `untracked: true` to cache all files that are untracked in your Git repository. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#cacheuntracked)", + "markdownDescription": "Use `untracked: true` to cache all files that are untracked in your Git repository. [Learn More](https://docs.gitlab.com/ci/yaml/#cacheuntracked)", "default": false }, "when": { "type": "string", - "markdownDescription": "Defines when to save the cache, based on the status of the job. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#cachewhen).", + "markdownDescription": "Defines when to save the cache, based on the status of the job. [Learn More](https://docs.gitlab.com/ci/yaml/#cachewhen).", "default": "on_success", "enum": [ "on_success", @@ -1722,7 +1748,7 @@ "enum": [ "external" ], - "description": "When using CI services other than Gitlab" + "description": "When using CI services other than GitLab" }, { "enum": [ @@ -1752,7 +1778,7 @@ "enum": [ "web" ], - "description": "For pipelines created using *Run pipeline* button in Gitlab UI (under your project's *Pipelines*)." + "description": "For pipelines created using *Run pipeline* button in GitLab UI (under your project's *Pipelines*)." } ] }, @@ -1786,7 +1812,7 @@ }, "variables": { "type": "array", - "markdownDescription": "Filter job by checking comparing values of CI/CD variables. [Learn More](https://docs.gitlab.com/ee/ci/jobs/job_control.html#cicd-variable-expressions).", + "markdownDescription": "Filter job by checking comparing values of CI/CD variables. [Learn More](https://docs.gitlab.com/ci/jobs/job_control/#cicd-variable-expressions).", "items": { "type": "string" } @@ -1803,7 +1829,7 @@ ] }, "retry": { - "markdownDescription": "Retry a job if it fails. Can be a simple integer or object definition. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#retry).", + "markdownDescription": "Retry a job if it fails. Can be a simple integer or object definition. [Learn More](https://docs.gitlab.com/ci/yaml/#retry).", "oneOf": [ { "$ref": "#/definitions/retry_max" @@ -1816,7 +1842,7 @@ "$ref": "#/definitions/retry_max" }, "when": { - "markdownDescription": "Either a single or array of error types to trigger job retry. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#retrywhen).", + "markdownDescription": "Either a single or array of error types to trigger job retry. [Learn More](https://docs.gitlab.com/ci/yaml/#retrywhen).", "oneOf": [ { "$ref": "#/definitions/retry_errors" @@ -1830,7 +1856,7 @@ ] }, "exit_codes": { - "markdownDescription": "Either a single or array of exit codes to trigger job retry on. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#retryexit_codes).", + "markdownDescription": "Either a single or array of exit codes to trigger job retry on. [Learn More](https://docs.gitlab.com/ci/yaml/#retryexit_codes).", "oneOf": [ { "description": "Retry when the job exit code is included in the array's values.", @@ -1916,11 +1942,11 @@ }, "interruptible": { "type": "boolean", - "markdownDescription": "Interruptible is used to indicate that a job should be canceled if made redundant by a newer pipeline run. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#interruptible).", + "markdownDescription": "Interruptible is used to indicate that a job should be canceled if made redundant by a newer pipeline run. [Learn More](https://docs.gitlab.com/ci/yaml/#interruptible).", "default": false }, "inputs": { - "markdownDescription": "Used to pass input values to included templates, components, downstream pipelines, or child pipelines. [Learn More](https://docs.gitlab.com/ee/ci/yaml/inputs.html).", + "markdownDescription": "Used to pass input values to included templates, components, downstream pipelines, or child pipelines. [Learn More](https://docs.gitlab.com/ci/inputs/).", "type": "object", "patternProperties": { "^[a-zA-Z0-9_-]+$": { @@ -2020,7 +2046,7 @@ }, "script": { "$ref": "#/definitions/script", - "markdownDescription": "Shell scripts executed by the Runner. The only required property of jobs. Be careful with special characters (e.g. `:`, `{`, `}`, `&`) and use single or double quotes to avoid issues. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#script)" + "markdownDescription": "Shell scripts executed by the Runner. The only required property of jobs. Be careful with special characters (e.g. `:`, `{`, `}`, `&`) and use single or double quotes to avoid issues. [Learn More](https://docs.gitlab.com/ci/yaml/#script)" }, "run": { "$ref": "#/definitions/steps", @@ -2164,7 +2190,7 @@ "$ref": "#/definitions/start_in" }, "manual_confirmation": { - "markdownDescription": "Describes the Custom confirmation message for a manual job [Learn More](https://docs.gitlab.com/ee/ci/yaml/#when).", + "markdownDescription": "Describes the Custom confirmation message for a manual job [Learn More](https://docs.gitlab.com/ci/yaml/#when).", "type": "string" }, "dependencies": { @@ -2194,7 +2220,7 @@ }, "url": { "type": "string", - "description": "When set, this will expose buttons in various places for the current environment in Gitlab, that will take you to the defined URL.", + "description": "When set, this will expose buttons in various places for the current environment in GitLab, that will take you to the defined URL.", "format": "uri", "pattern": "^(https?://.+|\\$[A-Za-z]+)" }, @@ -2215,11 +2241,11 @@ }, "auto_stop_in": { "type": "string", - "description": "The amount of time it should take before Gitlab will automatically stop the environment. Supports a wide variety of formats, e.g. '1 week', '3 mins 4 sec', '2 hrs 20 min', '2h20min', '6 mos 1 day', '47 yrs 6 mos and 4d', '3 weeks and 2 days'." + "description": "The amount of time it should take before GitLab will automatically stop the environment. Supports a wide variety of formats, e.g. '1 week', '3 mins 4 sec', '2 hrs 20 min', '2h20min', '6 mos 1 day', '47 yrs 6 mos and 4d', '3 weeks and 2 days'." }, "kubernetes": { "type": "object", - "description": "Used to configure the kubernetes deployment for this environment. This is currently not supported for kubernetes clusters that are managed by Gitlab.", + "description": "Used to configure the kubernetes deployment for this environment. This is currently not supported for kubernetes clusters that are managed by GitLab.", "properties": { "namespace": { "type": "string", @@ -2228,7 +2254,7 @@ }, "agent": { "type": "string", - "description": "Specifies the Gitlab Agent for Kubernetes. The format is `path/to/agent/project:agent-name`." + "description": "Specifies the GitLab Agent for Kubernetes. The format is `path/to/agent/project:agent-name`." }, "flux_resource_path": { "type": "string", @@ -2368,7 +2394,7 @@ "description": "Limit job concurrency. Can be used to ensure that the Runner will not run certain jobs simultaneously." }, "trigger": { - "markdownDescription": "Trigger allows you to define downstream pipeline trigger. When a job created from trigger definition is started by GitLab, a downstream pipeline gets created. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#trigger).", + "markdownDescription": "Trigger allows you to define downstream pipeline trigger. When a job created from trigger definition is started by GitLab, a downstream pipeline gets created. [Learn More](https://docs.gitlab.com/ci/yaml/#trigger).", "oneOf": [ { "type": "object", @@ -2595,7 +2621,7 @@ } }, { - "markdownDescription": "Path to the project, e.g. `group/project`, or `group/sub-group/project`. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#trigger).", + "markdownDescription": "Path to the project, e.g. `group/project`, or `group/sub-group/project`. [Learn More](https://docs.gitlab.com/ci/yaml/#trigger).", "type": "string", "pattern": "(?:\\S/\\S|\\$\\S+)" } @@ -2603,10 +2629,10 @@ }, "inherit": { "type": "object", - "markdownDescription": "Controls inheritance of globally-defined defaults and variables. Boolean values control inheritance of all default: or variables: keywords. To inherit only a subset of default: or variables: keywords, specify what you wish to inherit. Anything not listed is not inherited. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#inherit).", + "markdownDescription": "Controls inheritance of globally-defined defaults and variables. Boolean values control inheritance of all default: or variables: keywords. To inherit only a subset of default: or variables: keywords, specify what you wish to inherit. Anything not listed is not inherited. [Learn More](https://docs.gitlab.com/ci/yaml/#inherit).", "properties": { "default": { - "markdownDescription": "Whether to inherit all globally-defined defaults or not. Or subset of inherited defaults. [Learn more](https://docs.gitlab.com/ee/ci/yaml/#inheritdefault).", + "markdownDescription": "Whether to inherit all globally-defined defaults or not. Or subset of inherited defaults. [Learn more](https://docs.gitlab.com/ci/yaml/#inheritdefault).", "oneOf": [ { "type": "boolean" @@ -2632,7 +2658,7 @@ ] }, "variables": { - "markdownDescription": "Whether to inherit all globally-defined variables or not. Or subset of inherited variables. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#inheritvariables).", + "markdownDescription": "Whether to inherit all globally-defined variables or not. Or subset of inherited variables. [Learn More](https://docs.gitlab.com/ci/yaml/#inheritvariables).", "oneOf": [ { "type": "boolean" @@ -2664,7 +2690,7 @@ }, "expire_in": { "type": "string", - "markdownDescription": "How long the deployment should be active. Deployments that have expired are no longer available on the web. Supports a wide variety of formats, e.g. '1 week', '3 mins 4 sec', '2 hrs 20 min', '2h20min', '6 mos 1 day', '47 yrs 6 mos and 4d', '3 weeks and 2 days'. Set to 'never' to prevent extra deployments from expiring. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#pagesexpire_in)." + "markdownDescription": "How long the deployment should be active. Deployments that have expired are no longer available on the web. Supports a wide variety of formats, e.g. '1 week', '3 mins 4 sec', '2 hrs 20 min', '2h20min', '6 mos 1 day', '47 yrs 6 mos and 4d', '3 weeks and 2 days'. Set to 'never' to prevent extra deployments from expiring. [Learn More](https://docs.gitlab.com/ci/yaml/#pagesexpire_in)." }, "publish": { "type": "string", @@ -2710,7 +2736,7 @@ "tags": { "type": "array", "minItems": 1, - "markdownDescription": "Used to select runners from the list of available runners. A runner must have all tags listed here to run the job. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#tags).", + "markdownDescription": "Used to select runners from the list of available runners. A runner must have all tags listed here to run the job. [Learn More](https://docs.gitlab.com/ci/yaml/#tags).", "items": { "anyOf": [ { @@ -2729,11 +2755,11 @@ }, "hooks": { "type": "object", - "markdownDescription": "Specifies lists of commands to execute on the runner at certain stages of job execution. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#hooks).", + "markdownDescription": "Specifies lists of commands to execute on the runner at certain stages of job execution. [Learn More](https://docs.gitlab.com/ci/yaml/#hooks).", "properties": { "pre_get_sources_script": { "$ref": "#/definitions/optional_script", - "markdownDescription": "Specifies a list of commands to execute on the runner before updating the Git repository and any submodules. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#hookspre_get_sources_script)." + "markdownDescription": "Specifies a list of commands to execute on the runner before updating the Git repository and any submodules. [Learn More](https://docs.gitlab.com/ci/yaml/#hookspre_get_sources_script)." } }, "additionalProperties": false diff --git a/src/check_jsonschema/builtin_schemas/vendor/mergify.json b/src/check_jsonschema/builtin_schemas/vendor/mergify.json index d11b98d61..95303555d 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/mergify.json +++ b/src/check_jsonschema/builtin_schemas/vendor/mergify.json @@ -1305,7 +1305,7 @@ "additionalProperties": false, "properties": { "max_parallel_checks": { - "default": 1, + "default": 5, "description": "The maximum number of speculative checks allowed to run at the same time.", "maximum": 128, "minimum": 1, @@ -1696,7 +1696,7 @@ "PR_DEQUEUED", "PR_DEQUEUED_FROM_PARTITION", "PR_AHEAD_DEQUEUED", - "PR_AHEAD_FAILED_TO_MERGE", + "BATCH_AHEAD_FAILED", "PR_WITH_HIGHER_PRIORITY_QUEUED", "PR_QUEUED_TWICE", "SPECULATIVE_CHECK_NUMBER_REDUCED", @@ -2306,122 +2306,6 @@ "default": null, "description": "The name of the queue where the pull request should be added. If no name is set, queue_conditions will be applied instead.", "title": "Name" - }, - "merge_method": { - "anyOf": [ - { - "enum": [ - "merge", - "rebase", - "squash", - "fast-forward" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "configuration_deprecated_attribute": { - "deprecated_summary_ghes_mode": "\n:bangbang: **Action Required** :bangbang:\n> **The configuration uses the deprecated `merge_method` attribute of the queue action in one or more `pull_request_rules`. It must now be used under the `queue_rules` configuration.**\n> This option will be removed in a future version.\n> For more information: https://docs.mergify.com/configuration/file-format/#queue-rules", - "deprecated_summary_saas_mode": "\n:bangbang: **Action Required** :bangbang:\n> **The configuration uses the deprecated `merge_method` attribute of the queue action in one or more `pull_request_rules`. It must now be used under the `queue_rules` configuration.**\n> This option will be removed on January 31st, 2025.\n> For more information: https://docs.mergify.com/configuration/file-format/#queue-rules" - }, - "default": null, - "deprecated": true, - "description": "Merge method to use. If no value is set, Mergify uses the first authorized method available in the repository configuration. `fast-forward` is not supported on queues with `max_parallel_checks > 1, `batch_size > 1`, or with `allow_inplace_checks` set to `false`.", - "title": "Merge Method" - }, - "merge_bot_account": { - "anyOf": [ - { - "description": "A string template using the Jinja2 syntax.", - "format": "template", - "title": "Template", - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "deprecated": true, - "description": "Mergify can impersonate a GitHub user to merge pull requests. If no `merge_bot_account` is set, Mergify merges the pull request itself. The user account **must** have already been logged in Mergify dashboard once and have **write** or **maintain** permission.", - "title": "Merge Bot Account" - }, - "update_bot_account": { - "anyOf": [ - { - "description": "A string template using the Jinja2 syntax.", - "format": "template", - "title": "Template", - "type": "string" - }, - { - "type": "null" - } - ], - "configuration_deprecated_attribute": { - "deprecated_summary_ghes_mode": "\n:bangbang: **Action Required** :bangbang:\n> **The configuration uses the deprecated `update_bot_account` attribute of the queue action in one or more `pull_request_rules`. It must now be used under the `queue_rules` configuration.**\n> This option will be removed in a future version.\n> For more information: https://docs.mergify.com/configuration/file-format/#queue-rules", - "deprecated_summary_saas_mode": "\n:bangbang: **Action Required** :bangbang:\n> **The configuration uses the deprecated `update_bot_account` attribute of the queue action in one or more `pull_request_rules`. It must now be used under the `queue_rules` configuration.**\n> This option will be removed on January 31st, 2025.\n> For more information: https://docs.mergify.com/configuration/file-format/#queue-rules" - }, - "default": null, - "deprecated": true, - "description": "For certain actions, such as rebasing branches, Mergify has to impersonate a GitHub user. You can specify the account to use with this option. If no `update_bot_account` is set, Mergify picks randomly one of the organization users instead. The user account **must** have already been logged in Mergify dashboard once. This option overrides the value defined in the queue rules section of the configuration.", - "title": "Update Bot Account" - }, - "update_method": { - "anyOf": [ - { - "enum": [ - "merge", - "rebase" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "configuration_deprecated_attribute": { - "deprecated_summary_ghes_mode": "\n:bangbang: **Action Required** :bangbang:\n> **The configuration uses the deprecated `update_method` attribute of the queue action in one or more `pull_request_rules`. It must now be used under the `queue_rules` configuration.**\n> This option will be removed in a future version.\n> For more information: https://docs.mergify.com/configuration/file-format/#queue-rules", - "deprecated_summary_saas_mode": "\n:bangbang: **Action Required** :bangbang:\n> **The configuration uses the deprecated `update_method` attribute of the queue action in one or more `pull_request_rules`. It must now be used under the `queue_rules` configuration.**\n> This option will be removed on January 31st, 2025.\n> For more information: https://docs.mergify.com/configuration/file-format/#queue-rules" - }, - "default": null, - "deprecated": true, - "description": "Method to use to update the pull request with its base\nbranch when the check is done in place. Possible values:\n\n- `merge` to merge the base branch into the pull request.\n- `rebase` to rebase the pull request against its base branch.\n\nThis option overrides the value defined in the queue rules section of the configuration.\nThe default is rebase when the `merge_method` is `fast-forward`.", - "title": "Update Method" - }, - "commit_message_template": { - "anyOf": [ - { - "description": "A string template using the Jinja2 syntax.", - "format": "template", - "title": "Template", - "type": "string" - }, - { - "type": "null" - } - ], - "configuration_deprecated_attribute": { - "deprecated_summary_ghes_mode": "\n:bangbang: **Action Required** :bangbang:\n> **The configuration uses the deprecated `commit_message_template` attribute of the queue action in one or more `pull_request_rules`. It must now be used under the `queue_rules` configuration.**\n> This option will be removed in a future version.\n> For more information: https://docs.mergify.com/configuration/file-format/#queue-rules", - "deprecated_summary_saas_mode": "\n:bangbang: **Action Required** :bangbang:\n> **The configuration uses the deprecated `commit_message_template` attribute of the queue action in one or more `pull_request_rules`. It must now be used under the `queue_rules` configuration.**\n> This option will be removed on January 31st, 2025.\n> For more information: https://docs.mergify.com/configuration/file-format/#queue-rules" - }, - "default": null, - "deprecated": true, - "description": "Template to use as the commit message when using the merge or squash merge method.", - "title": "Commit Message Template" - }, - "allow_merging_configuration_change": { - "configuration_deprecated_attribute": { - "deprecated_summary_ghes_mode": "\n:bangbang: **Action Required** :bangbang:\n> **The configuration uses the deprecated `allow_merging_configuration_change` attribute of the queue action in one or more `pull_request_rules`. It must be removed from the configuration.**\n> For more information: https://docs.mergify.com/configuration/file-format/#queue-rules", - "deprecated_summary_saas_mode": "\n:bangbang: **Action Required** :bangbang:\n> **The configuration uses the deprecated `allow_merging_configuration_change` attribute of the queue action in one or more `pull_request_rules`. It must be removed from the configuration.**\n> This option will be removed on January 31st, 2025.\n> For more information: https://docs.mergify.com/configuration/file-format/#queue-rules" - }, - "default": true, - "deprecated": true, - "description": "Allow merging the Mergify configuration file. *This option does not do anything and is only present for backward compatibility.*", - "title": "Allow Merging Configuration Change", - "type": "boolean" } }, "title": "QueueActionModel", @@ -2600,8 +2484,8 @@ "anyOf": [ { "enum": [ - "merge", - "rebase" + "rebase", + "merge" ], "type": "string" }, @@ -2661,19 +2545,6 @@ "description": "For certain actions, such as rebasing branches, Mergify has to impersonate a GitHub user. You can specify the account to use with this option. If no `update_bot_account` is set, Mergify picks randomly one of the organization users instead. The user account **must** have already been logged in Mergify dashboard once. This option overrides the value defined in the queue rules section of the configuration.", "title": "Update Bot Account" }, - "disallow_checks_interruption_from_queues": { - "configuration_deprecated_attribute": { - "deprecated_summary_ghes_mode": "\n:bangbang: **Action Required** :bangbang:\n> **The configuration uses the deprecated `disallow_checks_interruption_from_queues` attribute in the `queue_rules` section. It has been replaced in favor of using `priority_rules` at the top-level of the configuration.\n> For more information: https://docs.mergify.com/merge-queue/priority/", - "deprecated_summary_saas_mode": "\n:bangbang: **Action Required** :bangbang:\n> **The configuration uses the deprecated `disallow_checks_interruption_from_queues` attribute in the `queue_rules` section. It has been replaced in favor of using `priority_rules` at the top-level of the configuration.\n> For more information: https://docs.mergify.com/merge-queue/priority/" - }, - "deprecated": true, - "items": { - "type": "string" - }, - "maxItems": 50, - "title": "Disallow Checks Interruption From Queues", - "type": "array" - }, "name": { "title": "Name", "type": "string" @@ -2837,8 +2708,8 @@ "anyOf": [ { "enum": [ - "merge", - "rebase" + "rebase", + "merge" ], "type": "string" }, @@ -2897,19 +2768,6 @@ "default": null, "description": "For certain actions, such as rebasing branches, Mergify has to impersonate a GitHub user. You can specify the account to use with this option. If no `update_bot_account` is set, Mergify picks randomly one of the organization users instead. The user account **must** have already been logged in Mergify dashboard once. This option overrides the value defined in the queue rules section of the configuration.", "title": "Update Bot Account" - }, - "disallow_checks_interruption_from_queues": { - "configuration_deprecated_attribute": { - "deprecated_summary_ghes_mode": "\n:bangbang: **Action Required** :bangbang:\n> **The configuration uses the deprecated `disallow_checks_interruption_from_queues` attribute in the `queue_rules` section. It has been replaced in favor of using `priority_rules` at the top-level of the configuration.\n> For more information: https://docs.mergify.com/merge-queue/priority/", - "deprecated_summary_saas_mode": "\n:bangbang: **Action Required** :bangbang:\n> **The configuration uses the deprecated `disallow_checks_interruption_from_queues` attribute in the `queue_rules` section. It has been replaced in favor of using `priority_rules` at the top-level of the configuration.\n> For more information: https://docs.mergify.com/merge-queue/priority/" - }, - "deprecated": true, - "items": { - "type": "string" - }, - "maxItems": 50, - "title": "Disallow Checks Interruption From Queues", - "type": "array" } }, "title": "QueueRuleModelForDefaults", @@ -3175,6 +3033,7 @@ "shared": { "anyOf": [ { + "additionalProperties": true, "type": "object" }, { diff --git a/src/check_jsonschema/builtin_schemas/vendor/readthedocs.json b/src/check_jsonschema/builtin_schemas/vendor/readthedocs.json index f11436c0c..2619c9f8f 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/readthedocs.json +++ b/src/check_jsonschema/builtin_schemas/vendor/readthedocs.json @@ -209,7 +209,7 @@ "enum": ["14", "16", "18", "19", "20", "22", "23", "latest"] }, "ruby": { - "enum": ["3.3", "latest"] + "enum": ["3.3", "3.4", "latest"] }, "rust": { "enum": [ @@ -220,6 +220,7 @@ "1.75", "1.78", "1.82", + "1.86", "latest" ] }, @@ -232,6 +233,7 @@ "1.21", "1.22", "1.23", + "1.24", "latest" ] } @@ -259,7 +261,11 @@ } } }, - "required": ["os", "tools"], + "required": ["os"], + "anyOf": [ + {"required": ["tools"]}, + {"required": ["commands"]} + ], "additionalProperties": false }, "python": { diff --git a/src/check_jsonschema/builtin_schemas/vendor/renovate.json b/src/check_jsonschema/builtin_schemas/vendor/renovate.json index 57ff96ca4..4c1bb9fe7 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/renovate.json +++ b/src/check_jsonschema/builtin_schemas/vendor/renovate.json @@ -3,6 +3,14 @@ "$schema": "http://json-schema.org/draft-04/schema#", "type": "object", "properties": { + "abandonmentThreshold": { + "description": "Flags packages that have not been updated within this period as abandoned.", + "type": [ + "string", + "null" + ], + "default": null + }, "addLabels": { "description": "Labels to add to Pull Request.", "type": "array", @@ -22,11 +30,6 @@ "type": "string" } }, - "allowCommandTemplating": { - "description": "Set this to `false` to disable template compilation for post-upgrade commands.", - "type": "boolean", - "default": true - }, "allowCustomCrateRegistries": { "description": "Set this to `true` to allow custom crate registries.", "type": "boolean", @@ -72,39 +75,191 @@ "description": "Configuration object for the ansible manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)tasks/[^/]+\\.ya?ml$" + "managerFilePatterns": [ + "/(^|/)tasks/[^/]+\\.ya?ml$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "ansible-galaxy": { "description": "Configuration object for the ansible-galaxy manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)(galaxy|requirements)(\\.ansible)?\\.ya?ml$" + "managerFilePatterns": [ + "/(^|/)(galaxy|requirements)(\\.ansible)?\\.ya?ml$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "argocd": { "description": "Configuration object for the argocd manager", "type": "object", "default": { - "fileMatch": [] + "managerFilePatterns": [] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "asdf": { "description": "Configuration object for the asdf manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)\\.tool-versions$" + "managerFilePatterns": [ + "/(^|/)\\.tool-versions$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "assignAutomerge": { "description": "Assign reviewers and assignees even if the PR is to be automerged.", @@ -278,13 +433,51 @@ "description": "Configuration object for the azure-pipelines manager", "type": "object", "default": { - "fileMatch": [ - "(^|/).azuredevops/.+\\.ya?ml$", - "azure.*pipelines?.*\\.ya?ml$" + "managerFilePatterns": [ + "/(^|/).azuredevops/.+\\.ya?ml$/", + "/azure.*pipelines?.*\\.ya?ml$/" ], "enabled": false }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "azureWorkItemId": { "description": "The id of an existing work item on Azure Boards to link to each PR.", @@ -306,56 +499,246 @@ "description": "Configuration object for the batect manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)batect(-bundle)?\\.ya?ml$" + "managerFilePatterns": [ + "/(^|/)batect(-bundle)?\\.ya?ml$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "batect-wrapper": { "description": "Configuration object for the batect-wrapper manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)batect$" + "managerFilePatterns": [ + "/(^|/)batect$/" ], "versioning": "semver" }, - "$ref": "#" - }, - "bazel": { - "description": "Configuration object for the bazel manager", - "type": "object", - "default": { - "fileMatch": [ - "(^|/)WORKSPACE(|\\.bazel|\\.bzlmod)$", - "\\.WORKSPACE\\.bazel$", - "\\.bzl$" - ] - }, - "$ref": "#" - }, - "bazel-module": { - "description": "Configuration object for the bazel-module manager", - "type": "object", - "default": { - "fileMatch": [ - "(^|/|\\.)MODULE\\.bazel$" - ] - }, - "$ref": "#" - }, - "bazelisk": { + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } + }, + "bazel": { + "description": "Configuration object for the bazel manager", + "type": "object", + "default": { + "managerFilePatterns": [ + "/(^|/)WORKSPACE(|\\.bazel|\\.bzlmod)$/", + "/\\.WORKSPACE\\.bazel$/", + "/\\.bzl$/" + ] + }, + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } + }, + "bazel-module": { + "description": "Configuration object for the bazel-module manager", + "type": "object", + "default": { + "managerFilePatterns": [ + "/(^|/|\\.)MODULE\\.bazel$/" + ] + }, + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } + }, + "bazelisk": { "description": "Configuration object for the bazelisk manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)\\.bazelversion$" + "managerFilePatterns": [ + "/(^|/)\\.bazelversion$/" ], "pinDigests": false, "versioning": "semver" }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "bbAutoResolvePrTasks": { "description": "The PR tasks will be automatically completed after the PR is raised.", @@ -376,11 +759,49 @@ "description": "Configuration object for the bicep manager", "type": "object", "default": { - "fileMatch": [ - "\\.bicep$" + "managerFilePatterns": [ + "/\\.bicep$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "binarySource": { "description": "Controls how third-party tools like npm or Gradle are called: directly, via Docker sidecar containers, or via dynamic install.", @@ -397,35 +818,111 @@ "description": "Configuration object for the bitbucket-pipelines manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)\\.?bitbucket-pipelines\\.ya?ml$" + "managerFilePatterns": [ + "/(^|/)\\.?bitbucket-pipelines\\.ya?ml$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "bitrise": { "description": "Configuration object for the bitrise manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)bitrise\\.ya?ml$" + "managerFilePatterns": [ + "/(^|/)bitrise\\.ya?ml$/" ] }, - "$ref": "#" - }, - "branchConcurrentLimit": { - "description": "Limit to a maximum of x concurrent branches. 0 means no limit, `null` (default) inherits value from `prConcurrentLimit`.", - "type": [ - "integer", - "null" - ], - "default": null - }, - "branchName": { - "description": "Branch name template.", - "type": "string", - "default": "{{{branchPrefix}}}{{{additionalBranchPrefix}}}{{{branchTopic}}}" - }, + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } + }, + "branchConcurrentLimit": { + "description": "Limit to a maximum of x concurrent branches. 0 means no limit, `null` (default) inherits value from `prConcurrentLimit`.", + "type": [ + "integer", + "null" + ], + "default": null + }, + "branchName": { + "description": "Branch name template.", + "type": "string", + "default": "{{{branchPrefix}}}{{{additionalBranchPrefix}}}{{{branchTopic}}}" + }, "branchNameStrict": { "description": "Whether to be strict about the use of special characters within the branch name.", "type": "boolean", @@ -444,32 +941,108 @@ "branchTopic": { "description": "Branch topic.", "type": "string", - "default": "{{{depNameSanitized}}}-{{{newMajor}}}{{#if separateMinorPatch}}{{#if isPatch}}.{{{newMinor}}}{{/if}}{{/if}}.x{{#if isLockfileUpdate}}-lockfile{{/if}}" + "default": "{{{depNameSanitized}}}-{{{newMajor}}}{{#if separateMinorPatch}}{{#if isPatch}}.{{{newMinor}}}{{/if}}{{/if}}{{#if separateMultipleMinor}}{{#if isMinor}}.{{{newMinor}}}{{/if}}{{/if}}.x{{#if isLockfileUpdate}}-lockfile{{/if}}" }, "buildkite": { "description": "Configuration object for the buildkite manager", "type": "object", "default": { - "fileMatch": [ - "buildkite\\.ya?ml", - "\\.buildkite/.+\\.ya?ml$" + "managerFilePatterns": [ + "/buildkite\\.ya?ml/", + "/\\.buildkite/.+\\.ya?ml$/" ], "commitMessageTopic": "buildkite plugin {{depName}}", "commitMessageExtra": "to {{#if isMajor}}{{{prettyNewMajor}}}{{else}}{{{newValue}}}{{/if}}" }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "buildpacks": { "description": "Configuration object for the buildpacks manager", "type": "object", "default": { "commitMessageTopic": "buildpack {{depName}}", - "fileMatch": [ - "(^|/)project\\.toml$" + "managerFilePatterns": [ + "/(^|/)project\\.toml$/" ], "pinDigests": false }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "bumpVersion": { "description": "Bump the version in the package file being updated.", @@ -481,12 +1054,64 @@ "prerelease" ] }, + "bumpVersions": { + "description": "A list of bumpVersion config options to bump generic version numbers.", + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "bumpType": { + "description": "The semver level to use when bumping versions. This is used by the `bumpVersions` feature.", + "type": "string" + }, + "filePatterns": { + "description": "A list of patterns to match files that contain the version string.", + "type": "array", + "items": { + "type": "string" + } + }, + "matchStrings": { + "description": "Queries to use. Valid only within `bumpVersions` or `customManagers` object.", + "type": "array", + "items": { + "type": "string" + } + }, + "name": { + "description": "A name for the bumpVersion config. This is used for logging and debugging.", + "type": "string" + } + } + } + ] + }, + "default": [] + }, "bun": { "description": "Configuration object for the bun manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)bun\\.lockb?$" + "managerFilePatterns": [ + "/(^|/)bun\\.lockb?$/", + "/(^|/)package\\.json$/" ], "digest": { "prBodyDefinitions": { @@ -497,39 +1122,153 @@ "Change": "[{{#if displayFrom}}`{{{displayFrom}}}` -> {{else}}{{#if currentValue}}`{{{currentValue}}}` -> {{/if}}{{/if}}{{#if displayTo}}`{{{displayTo}}}`{{else}}`{{{newValue}}}`{{/if}}]({{#if depName}}https://renovatebot.com/diffs/npm/{{replace '/' '%2f' depName}}/{{{currentVersion}}}/{{{newVersion}}}{{/if}})" } }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "bun-version": { "description": "Configuration object for the bun-version manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)\\.bun-version$" + "managerFilePatterns": [ + "/(^|/)\\.bun-version$/" ], "versioning": "npm" }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "bundler": { "description": "Configuration object for the bundler manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)Gemfile$" + "managerFilePatterns": [ + "/(^|/)Gemfile$/" ], "versioning": "ruby" }, - "$ref": "#" - }, - "cacheDir": { - "description": "The directory where Renovate stores its cache. If left empty, Renovate creates a subdirectory within the `baseDir`.", - "type": "string" - }, - "cacheHardTtlMinutes": { - "description": "Maximum duration in minutes to keep datasource cache entries.", - "type": "integer", - "default": 10080 - }, + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } + }, + "cacheDir": { + "description": "The directory where Renovate stores its cache. If left empty, Renovate creates a subdirectory within the `baseDir`.", + "type": "string" + }, + "cacheHardTtlMinutes": { + "description": "Maximum duration in minutes to keep datasource cache entries.", + "type": "integer", + "default": 10080 + }, "cachePrivatePackages": { "description": "Cache private packages in the datasource cache. This is useful for self-hosted setups", "type": "boolean", @@ -545,32 +1284,146 @@ "description": "Configuration object for the cake manager", "type": "object", "default": { - "fileMatch": [ - "\\.cake$" + "managerFilePatterns": [ + "/\\.cake$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "cargo": { "description": "Configuration object for the cargo manager", "type": "object", "default": { "commitMessageTopic": "Rust crate {{depName}}", - "fileMatch": [ - "(^|/)Cargo\\.toml$" + "managerFilePatterns": [ + "/(^|/)Cargo\\.toml$/" ], "versioning": "cargo" }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "cdnurl": { "description": "Configuration object for the cdnurl manager", "type": "object", "default": { - "fileMatch": [], + "managerFilePatterns": [], "versioning": "semver" }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "checkedBranches": { "description": "A list of branch names to mark for creation or rebasing as if it was selected in the Dependency Dashboard issue.", @@ -584,11 +1437,49 @@ "description": "Configuration object for the circleci manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)\\.circleci/.+\\.ya?ml$" + "managerFilePatterns": [ + "/(^|/)\\.circleci/.+\\.ya?ml$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "cloneSubmodules": { "description": "Set to `true` to initialize submodules during repository clone.", @@ -609,40 +1500,116 @@ "description": "Configuration object for the cloudbuild manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)cloudbuild\\.ya?ml" + "managerFilePatterns": [ + "/(^|/)cloudbuild\\.ya?ml/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "cocoapods": { "description": "Configuration object for the cocoapods manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)Podfile$" + "managerFilePatterns": [ + "/(^|/)Podfile$/" ], "versioning": "ruby" }, - "$ref": "#" - }, - "commitBody": { - "description": "Commit message body template. Will be appended to commit message, separated by two line returns.", - "type": "string" - }, - "commitBodyTable": { - "description": "If enabled, append a table in the commit message body describing all updates in the commit.", - "type": "boolean", - "default": false - }, - "commitMessage": { - "description": "Message to use for commit messages and pull request titles.", - "type": "string", - "default": "{{{commitMessagePrefix}}} {{{commitMessageAction}}} {{{commitMessageTopic}}} {{{commitMessageExtra}}} {{{commitMessageSuffix}}}" - }, - "commitMessageAction": { - "description": "Action verb to use in commit messages and PR titles.", - "type": "string", + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } + }, + "commitBody": { + "description": "Commit message body template. Will be appended to commit message, separated by two line returns.", + "type": "string" + }, + "commitBodyTable": { + "description": "If enabled, append a table in the commit message body describing all updates in the commit.", + "type": "boolean", + "default": false + }, + "commitMessage": { + "description": "Message to use for commit messages and pull request titles.", + "type": "string", + "default": "{{{commitMessagePrefix}}} {{{commitMessageAction}}} {{{commitMessageTopic}}} {{{commitMessageExtra}}} {{{commitMessageSuffix}}}" + }, + "commitMessageAction": { + "description": "Action verb to use in commit messages and PR titles.", + "type": "string", "default": "Update" }, "commitMessageExtra": { @@ -676,12 +1643,50 @@ "description": "Configuration object for the composer manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)([\\w-]*)composer\\.json$" + "managerFilePatterns": [ + "/(^|/)([\\w-]*)composer\\.json$/" ], "versioning": "composer" }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "composerIgnorePlatformReqs": { "description": "Configure use of `--ignore-platform-reqs` or `--ignore-platform-req` for the Composer package manager.", @@ -695,14 +1700,52 @@ "description": "Configuration object for the conan manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)conanfile\\.(txt|py)$" + "managerFilePatterns": [ + "/(^|/)conanfile\\.(txt|py)$/" ], "datasource": "conan", "versioning": "conan", "enabled": false }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "confidential": { "description": "If enabled, issues created by Renovate are set as confidential.", @@ -715,15 +1758,17 @@ "default": false }, "configWarningReuseIssue": { - "description": "Set this to `false` to make Renovate create a new issue for each config warning, instead of reopening or reusing an existing issue.", + "description": "Set this to `true` to make Renovate reuse/reopen an existing closed Config Warning issue, instead of opening a new one each time.", "type": "boolean", - "default": true + "default": false }, "constraints": { "description": "Configuration object to define language or manager version constraints.", "type": "object", "default": {}, - "$ref": "#" + "additionalProperties": { + "type": "string" + } }, "constraintsFiltering": { "description": "Perform release filtering based on language constraints.", @@ -742,30 +1787,144 @@ "description": "Configuration object for the copier manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)\\.copier-answers(\\..+)?\\.ya?ml" + "managerFilePatterns": [ + "/(^|/)\\.copier-answers(\\..+)?\\.ya?ml/" ], "versioning": "pep440" }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "cpanfile": { "description": "Configuration object for the cpanfile manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)cpanfile$" + "managerFilePatterns": [ + "/(^|/)cpanfile$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "crossplane": { "description": "Configuration object for the crossplane manager", "type": "object", "default": { - "fileMatch": [] + "managerFilePatterns": [] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "customDatasources": { "description": "Defines custom datasources for usage by managers.", @@ -889,12 +2048,26 @@ "yaml" ] }, - "matchStrings": { - "description": "Queries to use. Valid only within a `customManagers` object.", - "type": "array", - "items": { - "type": "string" - } + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "matchStrings": { + "description": "Queries to use. Valid only within `bumpVersions` or `customManagers` object.", + "type": "array", + "items": { + "type": "string" + } }, "matchStringsStrategy": { "description": "Strategy how to interpret matchStrings.", @@ -993,6 +2166,11 @@ ], "default": "none" }, + "dependencyDashboardReportAbandonment": { + "description": "Controls whether abandoned packages are reported in the dependency dashboard.", + "type": "boolean", + "default": true + }, "dependencyDashboardTitle": { "description": "Title for the Dependency Dashboard issue.", "type": "string", @@ -1002,12 +2180,50 @@ "description": "Configuration object for the deps-edn manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)(?:deps|bb)\\.edn$" + "managerFilePatterns": [ + "/(^|/)(?:deps|bb)\\.edn$/" ], "versioning": "maven" }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "description": { "description": "Plain text description for a config or preset.", @@ -1037,22 +2253,98 @@ "description": "Configuration object for the devbox manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)devbox\\.json$" + "managerFilePatterns": [ + "/(^|/)devbox\\.json$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "devcontainer": { "description": "Configuration object for the devcontainer manager", "type": "object", "default": { - "fileMatch": [ - "^.devcontainer/devcontainer.json$", - "^.devcontainer.json$" + "managerFilePatterns": [ + "/^.devcontainer/devcontainer.json$/", + "/^.devcontainer.json$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "digest": { "description": "Configuration to apply when updating a digest (no change in tag/version).", @@ -1068,11 +2360,49 @@ "description": "Configuration object for the docker-compose manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)(?:docker-)?compose[^/]*\\.ya?ml$" + "managerFilePatterns": [ + "/(^|/)(?:docker-)?compose[^/]*\\.ya?ml$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "dockerChildPrefix": { "description": "Change this value to add a prefix to the Renovate Docker sidecar container names and labels.", @@ -1091,7 +2421,7 @@ "dockerSidecarImage": { "description": "Change this value to override the default Renovate sidecar image.", "type": "string", - "default": "ghcr.io/containerbase/sidecar:13.8.13" + "default": "ghcr.io/containerbase/sidecar:13.8.23" }, "dockerUser": { "description": "Set the `UID` and `GID` for Docker-based binaries if you use `binarySource=docker`.", @@ -1101,12 +2431,50 @@ "description": "Configuration object for the dockerfile manager", "type": "object", "default": { - "fileMatch": [ - "(^|/|\\.)([Dd]ocker|[Cc]ontainer)file$", - "(^|/)([Dd]ocker|[Cc]ontainer)file[^/]*$" + "managerFilePatterns": [ + "/(^|/|\\.)([Dd]ocker|[Cc]ontainer)file$/", + "/(^|/)([Dd]ocker|[Cc]ontainer)file[^/]*$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "draftPR": { "description": "If set to `true` then Renovate creates draft PRs, instead of normal status PRs.", @@ -1117,11 +2485,49 @@ "description": "Configuration object for the droneci manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)\\.drone\\.yml$" + "managerFilePatterns": [ + "/(^|/)\\.drone\\.yml$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "dryRun": { "description": "If enabled, perform a dry run by logging messages instead of creating/updating/deleting branches and PRs.", @@ -1227,22 +2633,6 @@ ], "default": "pr" }, - "fileMatch": { - "description": "RegEx (`re2`) pattern for matching manager files.", - "oneOf": [ - { - "type": "array", - "items": { - "type": "string", - "format": "regex" - } - }, - { - "type": "string", - "format": "regex" - } - ] - }, "filterUnavailableUsers": { "description": "Filter reviewers and assignees based on their availability.", "type": "boolean", @@ -1252,21 +2642,97 @@ "description": "Configuration object for the fleet manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)fleet\\.ya?ml" + "managerFilePatterns": [ + "/(^|/)fleet\\.ya?ml/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "flux": { "description": "Configuration object for the flux manager", "type": "object", "default": { - "fileMatch": [ - "(?:^|/)gotk-components\\.ya?ml$" + "managerFilePatterns": [ + "/(?:^|/)gotk-components\\.ya?ml$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "followTag": { "description": "If defined, packages will follow this release tag exactly.", @@ -1314,13 +2780,51 @@ "description": "Configuration object for the fvm manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)\\.fvm/fvm_config\\.json$", - "(^|/)\\.fvmrc$" + "managerFilePatterns": [ + "/(^|/)\\.fvm/fvm_config\\.json$/", + "/(^|/)\\.fvmrc$/" ], "versioning": "semver" }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "git-submodules": { "description": "Configuration object for the git-submodules manager", @@ -1328,11 +2832,49 @@ "default": { "enabled": false, "versioning": "git", - "fileMatch": [ - "(^|/)\\.gitmodules$" + "managerFilePatterns": [ + "/(^|/)\\.gitmodules$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "gitAuthor": { "description": "Author to use for Git commits. Must conform to [RFC5322](https://datatracker.ietf.org/doc/html/rfc5322).", @@ -1399,12 +2941,50 @@ "description": "Configuration object for the github-actions manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)(workflow-templates|\\.(?:github|gitea|forgejo)/(?:workflows|actions))/.+\\.ya?ml$", - "(^|/)action\\.ya?ml$" + "managerFilePatterns": [ + "/(^|/)(workflow-templates|\\.(?:github|gitea|forgejo)/(?:workflows|actions))/.+\\.ya?ml$/", + "/(^|/)action\\.ya?ml$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "githubTokenWarn": { "description": "Display warnings about GitHub token not being set.", @@ -1415,47 +2995,199 @@ "description": "Configuration object for the gitlabci manager", "type": "object", "default": { - "fileMatch": [ - "\\.gitlab-ci\\.ya?ml$" + "managerFilePatterns": [ + "/\\.gitlab-ci\\.ya?ml$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "gitlabci-include": { "description": "Configuration object for the gitlabci-include manager", "type": "object", "default": { - "fileMatch": [ - "\\.gitlab-ci\\.ya?ml$" + "managerFilePatterns": [ + "/\\.gitlab-ci\\.ya?ml$/" ] }, - "$ref": "#" - }, - "glasskube": { - "description": "Configuration object for the glasskube manager", - "type": "object", - "default": { - "fileMatch": [] - }, - "$ref": "#" - }, - "gleam": { - "description": "Configuration object for the gleam manager", - "type": "object", - "default": { - "fileMatch": [ - "(^|/)gleam.toml$" - ], - "versioning": "hex" - }, - "$ref": "#" - }, - "globalExtends": { - "description": "Configuration presets to use or extend for a self-hosted config.", - "type": "array", + "$ref": "#", "items": { - "type": "string" - } + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } + }, + "glasskube": { + "description": "Configuration object for the glasskube manager", + "type": "object", + "default": { + "managerFilePatterns": [] + }, + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } + }, + "gleam": { + "description": "Configuration object for the gleam manager", + "type": "object", + "default": { + "managerFilePatterns": [ + "/(^|/)gleam.toml$/" + ], + "versioning": "hex" + }, + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } + }, + "globalExtends": { + "description": "Configuration presets to use or extend for a self-hosted config.", + "type": "array", + "items": { + "type": "string" + } }, "goGetDirs": { "description": "Directory pattern to run `go get` on.", @@ -1471,41 +3203,155 @@ "description": "Configuration object for the gomod manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)go\\.mod$" + "managerFilePatterns": [ + "/(^|/)go\\.mod$/" ], "pinDigests": false }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "gradle": { "description": "Configuration object for the gradle manager", "type": "object", "default": { - "fileMatch": [ - "\\.gradle(\\.kts)?$", - "(^|/)gradle\\.properties$", - "(^|/)gradle/.+\\.toml$", - "(^|/)buildSrc/.+\\.kt$", - "\\.versions\\.toml$", - "(^|/)versions.props$", - "(^|/)versions.lock$" + "managerFilePatterns": [ + "/\\.gradle(\\.kts)?$/", + "/(^|/)gradle\\.properties$/", + "/(^|/)gradle/.+\\.toml$/", + "/(^|/)buildSrc/.+\\.kt$/", + "/\\.versions\\.toml$/", + "/(^|/)versions.props$/", + "/(^|/)versions.lock$/" ], "timeout": 600, "versioning": "gradle" }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "gradle-wrapper": { "description": "Configuration object for the gradle-wrapper manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)gradle/wrapper/gradle-wrapper\\.properties$" + "managerFilePatterns": [ + "/(^|/)gradle/wrapper/gradle-wrapper\\.properties$/" ], "versioning": "gradle" }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "group": { "description": "Config if `groupName` is enabled.", @@ -1544,38 +3390,152 @@ "description": "Configuration object for the haskell-cabal manager", "type": "object", "default": { - "fileMatch": [ - "\\.cabal$" + "managerFilePatterns": [ + "/\\.cabal$/" ], "pinDigests": false }, - "$ref": "#" - }, - "helm-requirements": { - "description": "Configuration object for the helm-requirements manager", - "type": "object", - "default": { - "registryAliases": { - "stable": "https://charts.helm.sh/stable" - }, - "commitMessageTopic": "helm chart {{depName}}", - "fileMatch": [ - "(^|/)requirements\\.ya?ml$" - ] - }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } + }, + "helm-requirements": { + "description": "Configuration object for the helm-requirements manager", + "type": "object", + "default": { + "registryAliases": { + "stable": "https://charts.helm.sh/stable" + }, + "commitMessageTopic": "helm chart {{depName}}", + "managerFilePatterns": [ + "/(^|/)requirements\\.ya?ml$/" + ] + }, + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "helm-values": { "description": "Configuration object for the helm-values manager", "type": "object", "default": { "commitMessageTopic": "helm values {{depName}}", - "fileMatch": [ - "(^|/)values\\.ya?ml$" + "managerFilePatterns": [ + "/(^|/)values\\.ya?ml$/" ], "pinDigests": false }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "helmfile": { "description": "Configuration object for the helmfile manager", @@ -1585,19 +3545,95 @@ "stable": "https://charts.helm.sh/stable" }, "commitMessageTopic": "helm chart {{depName}}", - "fileMatch": [ - "(^|/)helmfile\\.ya?ml(?:\\.gotmpl)?$" + "managerFilePatterns": [ + "/(^|/)helmfile\\.ya?ml(?:\\.gotmpl)?$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "helmsman": { "description": "Configuration object for the helmsman manager", "type": "object", "default": { - "fileMatch": [] + "managerFilePatterns": [] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "helmv3": { "description": "Configuration object for the helmv3 manager", @@ -1607,40 +3643,63 @@ "stable": "https://charts.helm.sh/stable" }, "commitMessageTopic": "helm chart {{depName}}", - "fileMatch": [ - "(^|/)Chart\\.ya?ml$" + "managerFilePatterns": [ + "/(^|/)Chart\\.ya?ml$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "hermit": { "description": "Configuration object for the hermit manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)bin/hermit$" + "managerFilePatterns": [ + "/(^|/)bin/hermit$/" ], "excludeCommitPaths": [ "**/bin/hermit" ], "versioning": "hermit" }, - "$ref": "#" - }, - "homebrew": { - "description": "Configuration object for the homebrew manager", - "type": "object", - "default": { - "commitMessageTopic": "Homebrew Formula {{depName}}", - "fileMatch": [ - "^Formula/[^/]+[.]rb$" - ] - }, - "$ref": "#" - }, - "hostRules": { - "description": "Host rules/configuration including credentials.", - "type": "array", + "$ref": "#", "items": { "allOf": [ { @@ -1661,9 +3720,100 @@ } ] }, - "abortIgnoreStatusCodes": { - "description": "A list of HTTP status codes safe to ignore even when `abortOnError=true`.", - "type": "array", + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } + }, + "homebrew": { + "description": "Configuration object for the homebrew manager", + "type": "object", + "default": { + "commitMessageTopic": "Homebrew Formula {{depName}}", + "managerFilePatterns": [ + "/^Formula/[^/]+[.]rb$/" + ] + }, + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } + }, + "hostRules": { + "description": "Host rules/configuration including credentials.", + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "abortIgnoreStatusCodes": { + "description": "A list of HTTP status codes safe to ignore even when `abortOnError=true`.", + "type": "array", "items": { "type": "number" } @@ -1784,8 +3934,8 @@ "description": "Configuration object for the html manager", "type": "object", "default": { - "fileMatch": [ - "\\.html?$" + "managerFilePatterns": [ + "/\\.html?$/" ], "versioning": "semver", "digest": { @@ -1793,7 +3943,45 @@ }, "pinDigests": false }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "httpCacheTtlDays": { "description": "Maximum duration in days to keep HTTP cache entries.", @@ -1921,11 +4109,49 @@ "description": "Configuration object for the jenkins manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)plugins\\.(txt|ya?ml)$" + "managerFilePatterns": [ + "/(^|/)plugins\\.(txt|ya?ml)$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "jsonata": { "description": "Configuration object for the jsonata manager", @@ -1939,96 +4165,12 @@ "description": "Configuration object for the jsonnet-bundler manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)jsonnetfile\\.json$" + "managerFilePatterns": [ + "/(^|/)jsonnetfile\\.json$/" ], "datasource": "git-tags" }, - "$ref": "#" - }, - "keepUpdatedLabel": { - "description": "If set, users can add this label to PRs to request they be kept updated with the base branch.", - "type": "string" - }, - "kotlin-script": { - "description": "Configuration object for the kotlin-script manager", - "type": "object", - "default": { - "fileMatch": [ - "^.+\\.main\\.kts$" - ] - }, - "$ref": "#" - }, - "kubernetes": { - "description": "Configuration object for the kubernetes manager", - "type": "object", - "default": { - "fileMatch": [] - }, - "$ref": "#" - }, - "kustomize": { - "description": "Configuration object for the kustomize manager", - "type": "object", - "default": { - "fileMatch": [ - "(^|/)kustomization\\.ya?ml$" - ], - "pinDigests": false - }, - "$ref": "#" - }, - "labels": { - "description": "Labels to set in Pull Request.", - "type": "array", - "items": { - "type": "string" - } - }, - "leiningen": { - "description": "Configuration object for the leiningen manager", - "type": "object", - "default": { - "fileMatch": [ - "(^|/)project\\.clj$" - ], - "versioning": "maven" - }, - "$ref": "#" - }, - "lockFileMaintenance": { - "description": "Configuration for lock file maintenance.", - "type": "object", - "default": { - "enabled": false, - "recreateWhen": "always", - "rebaseStalePrs": true, - "branchTopic": "lock-file-maintenance", - "commitMessageAction": "Lock file maintenance", - "commitMessageTopic": null, - "commitMessageExtra": null, - "schedule": [ - "before 4am on monday" - ], - "groupName": null, - "prBodyDefinitions": { - "Change": "All locks refreshed" - } - }, - "$ref": "#" - }, - "logContext": { - "description": "Add a global or per-repo log context to each log entry.", - "type": [ - "string", - "null" - ], - "default": null - }, - "logLevelRemap": { - "description": "Remap log levels to different levels.", - "type": "array", + "$ref": "#", "items": { "allOf": [ { @@ -2049,19 +4191,293 @@ } ] }, - "matchMessage": { - "description": "Regex/minimatch expression to match against log message.", - "type": "string" - }, - "newLogLevel": { - "description": "New log level to use if matchMessage matches.", - "type": "string", - "enum": [ - "trace", - "debug", - "info", - "warn", - "error", + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } + }, + "keepUpdatedLabel": { + "description": "If set, users can add this label to PRs to request they be kept updated with the base branch.", + "type": "string" + }, + "kotlin-script": { + "description": "Configuration object for the kotlin-script manager", + "type": "object", + "default": { + "managerFilePatterns": [ + "/^.+\\.main\\.kts$/" + ] + }, + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } + }, + "kubernetes": { + "description": "Configuration object for the kubernetes manager", + "type": "object", + "default": { + "managerFilePatterns": [] + }, + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } + }, + "kustomize": { + "description": "Configuration object for the kustomize manager", + "type": "object", + "default": { + "managerFilePatterns": [ + "/(^|/)kustomization\\.ya?ml$/" + ], + "pinDigests": false + }, + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } + }, + "labels": { + "description": "Labels to set in Pull Request.", + "type": "array", + "items": { + "type": "string" + } + }, + "leiningen": { + "description": "Configuration object for the leiningen manager", + "type": "object", + "default": { + "managerFilePatterns": [ + "/(^|/)project\\.clj$/" + ], + "versioning": "maven" + }, + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } + }, + "lockFileMaintenance": { + "description": "Configuration for lock file maintenance.", + "type": "object", + "default": { + "enabled": false, + "recreateWhen": "always", + "rebaseStalePrs": true, + "branchTopic": "lock-file-maintenance", + "commitMessageAction": "Lock file maintenance", + "commitMessageTopic": null, + "commitMessageExtra": null, + "schedule": [ + "before 4am on monday" + ], + "groupName": null, + "prBodyDefinitions": { + "Change": "All locks refreshed" + } + }, + "$ref": "#" + }, + "logContext": { + "description": "Add a global or per-repo log context to each log entry.", + "type": [ + "string", + "null" + ], + "default": null + }, + "logLevelRemap": { + "description": "Remap log levels to different levels.", + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "matchMessage": { + "description": "Regex/minimatch expression to match against log message.", + "type": "string" + }, + "newLogLevel": { + "description": "New log level to use if matchMessage matches.", + "type": "string", + "enum": [ + "trace", + "debug", + "info", + "warn", + "error", "fatal" ] } @@ -2080,25 +4496,100 @@ "description": "Configuration object for the maven manager", "type": "object", "default": { - "fileMatch": [ - "(^|/|\\.)pom\\.xml$", - "^(((\\.mvn)|(\\.m2))/)?settings\\.xml$", - "(^|/)\\.mvn/extensions\\.xml$" - ], - "versioning": "maven" + "managerFilePatterns": [ + "/(^|/|\\.)pom\\.xml$/", + "/^(((\\.mvn)|(\\.m2))/)?settings\\.xml$/", + "/(^|/)\\.mvn/extensions\\.xml$/" + ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "maven-wrapper": { "description": "Configuration object for the maven-wrapper manager", "type": "object", "default": { - "fileMatch": [ - "(^|\\/).mvn/wrapper/maven-wrapper.properties$" + "managerFilePatterns": [ + "/(^|\\/).mvn/wrapper/maven-wrapper.properties$/" ], "versioning": "maven" }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "mergeConfidenceDatasources": { "description": "If set, Renovate will query the merge-confidence JSON API only for datasources that are part of this list.", @@ -2134,11 +4625,49 @@ "description": "Configuration object for the meteor manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)package\\.js$" + "managerFilePatterns": [ + "/(^|/)package\\.js$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "migratePresets": { "description": "Define presets here which have been removed or renamed and should be migrated automatically.", @@ -2175,32 +4704,146 @@ "description": "Configuration object for the mint manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)Mintfile$" + "managerFilePatterns": [ + "/(^|/)Mintfile$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "mise": { "description": "Configuration object for the mise manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)\\.?mise\\.toml$", - "(^|/)\\.?mise/config\\.toml$" + "managerFilePatterns": [ + "/(^|/)\\.?mise\\.toml$/", + "/(^|/)\\.?mise/config\\.toml$/" + ] + }, + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } ] - }, - "$ref": "#" + } }, "mix": { "description": "Configuration object for the mix manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)mix\\.exs$" + "managerFilePatterns": [ + "/(^|/)mix\\.exs$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "mode": { "description": "Mode of operation.", @@ -2215,33 +4858,109 @@ "description": "Configuration object for the nix manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)flake\\.nix$" + "managerFilePatterns": [ + "/(^|/)flake\\.nix$/" ], "commitMessageTopic": "nix", "commitMessageExtra": "to {{newValue}}", "enabled": false }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "nodenv": { "description": "Configuration object for the nodenv manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)\\.node-version$" + "managerFilePatterns": [ + "/(^|/)\\.node-version$/" ], "versioning": "node" }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "npm": { "description": "Configuration object for the npm manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)package\\.json$", - "(^|/)pnpm-workspace\\.yaml$" + "managerFilePatterns": [ + "/(^|/)package\\.json$/", + "/(^|/)pnpm-workspace\\.yaml$/" ], "digest": { "prBodyDefinitions": { @@ -2252,7 +4971,45 @@ "Change": "[{{#if displayFrom}}`{{{displayFrom}}}` -> {{else}}{{#if currentValue}}`{{{currentValue}}}` -> {{/if}}{{/if}}{{#if displayTo}}`{{{displayTo}}}`{{else}}`{{{newValue}}}`{{/if}}]({{#if depName}}https://renovatebot.com/diffs/npm/{{replace '/' '%2f' depName}}/{{{currentVersion}}}/{{{newVersion}}}{{/if}})" } }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "npmToken": { "description": "npm token used to authenticate with the default registry.", @@ -2271,34 +5028,148 @@ "description": "Configuration object for the nuget manager", "type": "object", "default": { - "fileMatch": [ - "\\.(?:cs|fs|vb)proj$", - "\\.(?:props|targets)$", - "(^|/)dotnet-tools\\.json$", - "(^|/)global\\.json$" + "managerFilePatterns": [ + "/\\.(?:cs|fs|vb)proj$/", + "/\\.(?:props|targets)$/", + "/(^|/)dotnet-tools\\.json$/", + "/(^|/)global\\.json$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "nvm": { "description": "Configuration object for the nvm manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)\\.nvmrc$" + "managerFilePatterns": [ + "/(^|/)\\.nvmrc$/" ], "versioning": "node", "pinDigests": false }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "ocb": { "description": "Configuration object for the ocb manager", "type": "object", "default": { - "fileMatch": [] + "managerFilePatterns": [] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "onboarding": { "description": "Require a Configuration PR first.", @@ -2359,11 +5230,49 @@ "description": "Configuration object for the osgi manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)src/main/features/.+\\.json$" + "managerFilePatterns": [ + "/(^|/)src/main/features/.+\\.json$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "osvVulnerabilityAlerts": { "description": "Use vulnerability alerts from `osv.dev`.", @@ -2570,7 +5479,7 @@ ] }, "matchSourceUrls": { - "description": "A list of source URLs to exact match against.", + "description": "A list of exact match URLs (or URL patterns) to match sourceUrl against.", "oneOf": [ { "type": "array", @@ -2682,19 +5591,95 @@ "description": "Configuration object for the pep621 manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)pyproject\\.toml$" + "managerFilePatterns": [ + "/(^|/)pyproject\\.toml$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "pep723": { "description": "Configuration object for the pep723 manager", "type": "object", "default": { - "fileMatch": [] + "managerFilePatterns": [] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "persistRepoData": { "description": "If set to `true`: keep repository data between runs instead of deleting the data.", @@ -2739,55 +5724,245 @@ "description": "Configuration object for the pip-compile manager", "type": "object", "default": { - "fileMatch": [], + "managerFilePatterns": [], "lockFileMaintenance": { "enabled": true, "branchTopic": "pip-compile-refresh", "commitMessageAction": "Refresh pip-compile outputs" } }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "pip_requirements": { "description": "Configuration object for the pip_requirements manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)[\\w-]*requirements([-.]\\w+)?\\.(txt|pip)$" + "managerFilePatterns": [ + "/(^|/)[\\w-]*requirements([-.]\\w+)?\\.(txt|pip)$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "pip_setup": { "description": "Configuration object for the pip_setup manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)setup\\.py$" + "managerFilePatterns": [ + "/(^|/)setup\\.py$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "pipenv": { "description": "Configuration object for the pipenv manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)Pipfile$" + "managerFilePatterns": [ + "/(^|/)Pipfile$/" + ] + }, + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } ] - }, - "$ref": "#" + } }, "pixi": { "description": "Configuration object for the pixi manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)pyproject\\.toml$", - "(^|/)pixi\\.toml$" + "managerFilePatterns": [ + "/(^|/)pyproject\\.toml$/", + "/(^|/)pixi\\.toml$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "platform": { "description": "Platform type of repository.", @@ -2824,11 +5999,49 @@ "description": "Configuration object for the poetry manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)pyproject\\.toml$" + "managerFilePatterns": [ + "/(^|/)pyproject\\.toml$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "postUpdateOptions": { "description": "Enable post-update options to be run after package/artifact updating.", @@ -2891,6 +6104,10 @@ }, "default": [] }, + "dataFileTemplate": { + "description": "A template to create post-upgrade command data file from.", + "type": "string" + }, "executionMode": { "description": "Controls when the post upgrade tasks run: on every update, or once per upgrade branch.", "type": "string", @@ -3027,14 +6244,52 @@ "default": { "commitMessageTopic": "pre-commit hook {{depName}}", "enabled": false, - "fileMatch": [ - "(^|/)\\.pre-commit-config\\.ya?ml$" + "managerFilePatterns": [ + "/(^|/)\\.pre-commit-config\\.ya?ml$/" ], "prBodyNotes": [ "Note: The `pre-commit` manager in Renovate is not supported by the `pre-commit` maintainers or community. Please do not report any problems there, instead [create a Discussion in the Renovate repository](https://github.com/renovatebot/renovate/discussions/new) if you have any questions." ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "presetCachePersistence": { "description": "Cache resolved presets in package cache.", @@ -3099,34 +6354,148 @@ "description": "Configuration object for the pub manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)pubspec\\.ya?ml$" + "managerFilePatterns": [ + "/(^|/)pubspec\\.ya?ml$/" ], "versioning": "npm" }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "puppet": { "description": "Configuration object for the puppet manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)Puppetfile$" + "managerFilePatterns": [ + "/(^|/)Puppetfile$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "pyenv": { "description": "Configuration object for the pyenv manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)\\.python-version$" + "managerFilePatterns": [ + "/(^|/)\\.python-version$/" ], "versioning": "docker", "pinDigests": false }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "rangeStrategy": { "description": "Determines how to modify or update existing ranges.", @@ -3205,6 +6574,62 @@ }, "default": null }, + "renovate-config-presets": { + "description": "Configuration object for the renovate-config-presets manager", + "type": "object", + "default": { + "managerFilePatterns": [ + "renovate.json", + "renovate.json5", + ".github/renovate.json", + ".github/renovate.json5", + ".gitlab/renovate.json", + ".gitlab/renovate.json5", + ".renovaterc", + ".renovaterc.json", + ".renovaterc.json5" + ] + }, + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } + }, "replacement": { "description": "Configuration to apply when replacing a dependency.", "type": "object", @@ -3324,23 +6749,99 @@ "description": "Configuration object for the ruby-version manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)\\.ruby-version$" + "managerFilePatterns": [ + "/(^|/)\\.ruby-version$/" ], "versioning": "ruby" }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "runtime-version": { "description": "Configuration object for the runtime-version manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)runtime.txt$" + "managerFilePatterns": [ + "/(^|/)runtime.txt$/" ], "pinDigests": false }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "s3Endpoint": { "description": "If set, Renovate will use this string as the `endpoint` when creating the AWS S3 client instance.", @@ -3355,25 +6856,101 @@ "description": "Configuration object for the sbt manager", "type": "object", "default": { - "fileMatch": [ - "\\.sbt$", - "project/[^/]*\\.scala$", - "project/build\\.properties$", - "(^|/)repositories$" + "managerFilePatterns": [ + "/\\.sbt$/", + "/project/[^/]*\\.scala$/", + "/project/build\\.properties$/", + "/(^|/)repositories$/" ], "versioning": "ivy" }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "scalafmt": { "description": "Configuration object for the scalafmt manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)\\.scalafmt.conf$" + "managerFilePatterns": [ + "/(^|/)\\.scalafmt.conf$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "schedule": { "description": "Limit branch creation to these times of day or week.", @@ -3445,12 +7022,50 @@ "description": "Configuration object for the setup-cfg manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)setup\\.cfg$" + "managerFilePatterns": [ + "/(^|/)setup\\.cfg$/" ], "versioning": "pep440" }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "skipInstalls": { "description": "Skip installing modules/dependencies if lock file updating is possible without a full install.", @@ -3492,95 +7107,399 @@ "prEditedNotification", "prIgnoreNotification" ] - }, - "default": [] - }, - "sveltos": { - "description": "Configuration object for the sveltos manager", - "type": "object", - "default": { - "fileMatch": [] - }, - "$ref": "#" + }, + "default": [] + }, + "sveltos": { + "description": "Configuration object for the sveltos manager", + "type": "object", + "default": { + "managerFilePatterns": [] + }, + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "swift": { "description": "Configuration object for the swift manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)Package\\.swift" + "managerFilePatterns": [ + "/(^|/)Package\\.swift/" ], "versioning": "swift", "pinDigests": false }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "tekton": { "description": "Configuration object for the tekton manager", "type": "object", "default": { - "fileMatch": [] + "managerFilePatterns": [] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "terraform": { "description": "Configuration object for the terraform manager", "type": "object", "default": { "commitMessageTopic": "Terraform {{depName}}", - "fileMatch": [ - "\\.tf$" + "managerFilePatterns": [ + "/\\.tf$/" ], "pinDigests": false }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "terraform-version": { "description": "Configuration object for the terraform-version manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)\\.terraform-version$" + "managerFilePatterns": [ + "/(^|/)\\.terraform-version$/" ], "versioning": "hashicorp", "extractVersion": "^v(?.*)$" }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "terragrunt": { "description": "Configuration object for the terragrunt manager", "type": "object", "default": { "commitMessageTopic": "Terragrunt dependency {{depName}}", - "fileMatch": [ - "(^|/)terragrunt\\.hcl$" + "managerFilePatterns": [ + "/(^|/)terragrunt\\.hcl$/" + ] + }, + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } + }, + "terragrunt-version": { + "description": "Configuration object for the terragrunt-version manager", + "type": "object", + "default": { + "managerFilePatterns": [ + "/(^|/)\\.terragrunt-version$/" + ], + "versioning": "hashicorp", + "extractVersion": "^v(?.+)$" + }, + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } ] - }, - "$ref": "#" - }, - "terragrunt-version": { - "description": "Configuration object for the terragrunt-version manager", - "type": "object", - "default": { - "fileMatch": [ - "(^|/)\\.terragrunt-version$" - ], - "versioning": "hashicorp", - "extractVersion": "^v(?.+)$" - }, - "$ref": "#" + } }, "tflint-plugin": { "description": "Configuration object for the tflint-plugin manager", "type": "object", "default": { "commitMessageTopic": "TFLint plugin {{depName}}", - "fileMatch": [ - "\\.tflint\\.hcl$" + "managerFilePatterns": [ + "/\\.tflint\\.hcl$/" ], "extractVersion": "^v(?.*)$" }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "timezone": { "description": "Must conform to [IANA Time Zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) format.", @@ -3594,21 +7513,107 @@ "description": "Configuration object for the travis manager", "type": "object", "default": { - "fileMatch": [ - "^\\.travis\\.ya?ml$" + "managerFilePatterns": [ + "/^\\.travis\\.ya?ml$/" ], "major": { "enabled": false }, "versioning": "node" }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "unicodeEmoji": { "description": "Enable or disable Unicode emoji.", "type": "boolean", "default": true }, + "unity3d": { + "description": "Configuration object for the unity3d manager", + "type": "object", + "default": { + "managerFilePatterns": [ + "**/ProjectSettings/ProjectVersion.txt" + ] + }, + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } + }, "updateInternalDeps": { "description": "Whether to update internal dep versions in a monorepo. Works on Yarn Workspaces.", "type": "boolean", @@ -3669,22 +7674,98 @@ "description": "Configuration object for the velaci manager", "type": "object", "default": { - "fileMatch": [ - "(^|/)\\.vela\\.ya?ml$" + "managerFilePatterns": [ + "/(^|/)\\.vela\\.ya?ml$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "vendir": { "description": "Configuration object for the vendir manager", "type": "object", "default": { "commitMessageTopic": "vendir {{depName}}", - "fileMatch": [ - "(^|/)vendir\\.yml$" + "managerFilePatterns": [ + "/(^|/)vendir\\.yml$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "versionCompatibility": { "description": "A regex (`re2`) with named capture groups to show how version and compatibility are split from a raw version string.", @@ -3719,6 +7800,7 @@ "hex", "ivy", "kubernetes-api", + "lambda-node", "loose", "maven", "nixpkgs", @@ -3740,7 +7822,8 @@ "semver-coerced", "swift", "ubuntu", - "unity3d" + "unity3d", + "unity3d-packages" ] }, { @@ -3802,11 +7885,49 @@ "description": "Configuration object for the woodpecker manager", "type": "object", "default": { - "fileMatch": [ - "^\\.woodpecker(?:/[^/]+)?\\.ya?ml$" + "managerFilePatterns": [ + "/^\\.woodpecker(?:/[^/]+)?\\.ya?ml$/" ] }, - "$ref": "#" + "$ref": "#", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "description": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string", + "description": "A custom description for this configuration object" + } + }, + { + "type": "string", + "description": "A custom description for this configuration object" + } + ] + }, + "managerFilePatterns": { + "description": "RegEx (`re2`) and glob patterns for matching manager files.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + } + } + } + ] + } }, "writeDiscoveredRepos": { "description": "Writes discovered repositories to a JSON file and then exit.", diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/bamboo-spec.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/bamboo-spec.sha256 index 28e614fde..d53a95667 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/bamboo-spec.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/bamboo-spec.sha256 @@ -1 +1 @@ -c7724c5e67e2d3fcb081a36adcbe2ba5f59c884937a09397139d85afc86985a2 \ No newline at end of file +43e12e6ecf5f81c8a713cb27dc4f0cff3fd751a3748cc564131b706adcd4dc5c \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/bitbucket-pipelines.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/bitbucket-pipelines.sha256 index aad5dcef8..b1b1dce33 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/bitbucket-pipelines.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/bitbucket-pipelines.sha256 @@ -1 +1 @@ -22aa0ca154ac4a264f97702428bb771e372237993db32537980d25f12120715a \ No newline at end of file +3280b728dc9412b571f5c46b6b95e60ff67ed926f78f4557235fbe14d3eb5e70 \ 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 437fb58a5..2f283a809 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 @@ -4d5d0bb592542dc4600680f7805ea640186627043c4816bd6839c33e388692d9 \ No newline at end of file +ff44ba737e404a5bb3cd78d2be654edd2a990237521200fede86e996777f6e37 \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/cloudbuild.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/cloudbuild.sha256 index a6e8c16ee..6103cb21b 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/cloudbuild.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/cloudbuild.sha256 @@ -1 +1 @@ -e2444a4bcf66bdb777f954ff294800c94d1f1a54cf1104d2600d6bded0dd5b3b \ No newline at end of file +68524c6a0a83f91767cabe96ec92bd59924c336f114551e5254027d14dbdc1f3 \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/compose-spec.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/compose-spec.sha256 index a59ea0990..c04dc18e4 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/compose-spec.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/compose-spec.sha256 @@ -1 +1 @@ -1bf44a391eb97a0426d09792a325b63805cb8731e1cd81ed144161b3e473aa59 \ No newline at end of file +211cb0f6633d057a28f26c73f01c182a6833ea7b7f80a1a428a6c2bff63e3932 \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/dependabot.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/dependabot.sha256 index 92886561a..68e57c85a 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/dependabot.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/dependabot.sha256 @@ -1 +1 @@ -cb463f9339bdd74292186de0b64876d8a033a491b76c2f0355b7bbee2f8cfda3 \ No newline at end of file +6c5b8ebc737752ee140da9083e95ebb09c0e3d31d0398d8d301930adb64ea705 \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/drone-ci.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/drone-ci.sha256 index 6dff84938..0a8e4375c 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/drone-ci.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/drone-ci.sha256 @@ -1 +1 @@ -808953201a4919eae19007cde74e27679f547e95619c2f926f21e6fb1cc814f5 \ No newline at end of file +d7d82fffa073650b29dbb41348020ac48a2f4fcad7325dd36827015fa487a4da \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/github-actions.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/github-actions.sha256 index 8e70152ea..3fcfc54f0 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/github-actions.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/github-actions.sha256 @@ -1 +1 @@ -589d4a1519173a8659b097ffdf5bdd00aa20fa4296720fe39c8a3a43c849dd6b \ No newline at end of file +356f33184489fae25dc7848edbb631c4f8d20e157da56f5727604db648fa7988 \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/github-workflows.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/github-workflows.sha256 index 07e6912cd..a7c0a0507 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/github-workflows.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/github-workflows.sha256 @@ -1 +1 @@ -78456fc783a9166a52731197fb303f28961457e7a87acc9a78e4783a0ae284c9 \ No newline at end of file +72a6127a6ceefe1723e1fa7f868c3ce040de20d10a0c46df6f5618505b7a4d46 \ 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 a2e5344f2..7dcdda295 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 @@ -97c097a9307c49b1db177bc7d94979d4e30d6ff91705f5de33c31cd38f375746 \ No newline at end of file +10e9a42e805b622c5e73997396757ea6a444a0aeb4c1e16a02fbb69d880ab387 \ 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 e2756efea..a124f9dea 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/mergify.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/mergify.sha256 @@ -1 +1 @@ -e2d985102db50b5ab5c36d67ae60ba8dcd0f6a0fecf2e6bcd10bf3eb36d468ed \ No newline at end of file +bbcf88a9253516a49e9f766370e85d6caccfbe6c7ef35a1b17c9ff4fd12cff7a \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/readthedocs.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/readthedocs.sha256 index 5b21ceb74..ebf567cf8 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/readthedocs.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/readthedocs.sha256 @@ -1 +1 @@ -77278afd8de08da09665e12d305c9c23721e940d3869355eb6bda2a024a2f0d7 \ No newline at end of file +766573458eecad3b32a532ce3dc87a0f241b933f94a71bac06971e44ea37c771 \ 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 7e14e9ed5..79b679e54 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/renovate.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/renovate.sha256 @@ -1 +1 @@ -2dc6e675330d40bd9b1446e7a038eeee1ed656defeb35b44f11431ef97573ebd \ No newline at end of file +9e10dc362af292cd614bd4d2ad0545f8769ec3a9e3cd8d323d5ea9d2ec3e00e4 \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/taskfile.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/taskfile.sha256 index 680a8bc64..e9bbd059c 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/taskfile.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/taskfile.sha256 @@ -1 +1 @@ -0cd16e7df47d129c51fbea320f34361eb177e6447ccce10df769dcd672cccdad \ No newline at end of file +91fcacea6f24a246fcf83ceaebb7b182a0e63670ce5ee19a3eb25a40c0251185 \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/travis.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/travis.sha256 index 4a297bf16..70ecbdf40 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/travis.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/travis.sha256 @@ -1 +1 @@ -89c9ec99a48c5c2b630cea5d245697ff691221832017135ffca6248bc975bab0 \ No newline at end of file +042035967d075c4134e66035c2cd9ca2f31843a53ff75f68a70b13cfe5a32526 \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/sha256/woodpecker-ci.sha256 b/src/check_jsonschema/builtin_schemas/vendor/sha256/woodpecker-ci.sha256 index ded967da0..402f45680 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/sha256/woodpecker-ci.sha256 +++ b/src/check_jsonschema/builtin_schemas/vendor/sha256/woodpecker-ci.sha256 @@ -1 +1 @@ -927fec729aca41a30c4c6d73aae3ef7a0a8572d3fdcf6faf569a4869c71d59f0 \ No newline at end of file +c31e3bd22a6f9ad1b591e79703e5a784df413633648ccc065d8c2695d18a9422 \ No newline at end of file diff --git a/src/check_jsonschema/builtin_schemas/vendor/taskfile.json b/src/check_jsonschema/builtin_schemas/vendor/taskfile.json index 0a942697d..0a229bedc 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/taskfile.json +++ b/src/check_jsonschema/builtin_schemas/vendor/taskfile.json @@ -684,6 +684,10 @@ "vars": { "description": "A set of variables to apply to the included Taskfile.", "$ref": "#/definitions/vars" + }, + "checksum": { + "description": "The checksum of the file you expect to include. If the checksum does not match, the file will not be included.", + "type": "string" } } } diff --git a/src/check_jsonschema/builtin_schemas/vendor/travis.json b/src/check_jsonschema/builtin_schemas/vendor/travis.json index f363faba4..426de53ef 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/travis.json +++ b/src/check_jsonschema/builtin_schemas/vendor/travis.json @@ -1,2264 +1,2272 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "allOf": [ - { - "$ref": "#/definitions/job" - }, - { - "type": "object", - "properties": { - "notifications": { - "type": "object", - "properties": { - "webhooks": { - "oneOf": [ - { - "$ref": "#/definitions/possiblySecretStringOrPossiblySecretStringTypeArrayUnique" - }, - { - "type": "boolean" - }, - { - "$ref": "#/definitions/notificationObject/webhooks" - }, - { - "type": "array", - "uniqueItems": true, - "minItems": 1, - "items": { - "$ref": "#/definitions/notificationObject/webhooks" - } - } - ] - }, - "slack": { - "oneOf": [ - { - "$ref": "#/definitions/slackRoom" - }, - { - "type": "boolean" - }, - { - "$ref": "#/definitions/notificationObject/slack" - }, - { - "type": "array", - "uniqueItems": true, - "minItems": 1, - "items": { - "$ref": "#/definitions/notificationObject/slack" - } - } - ] - }, - "email": { - "oneOf": [ - { - "$ref": "#/definitions/possiblySecretStringOrPossiblySecretStringTypeArrayUnique" - }, - { - "type": "boolean" - }, - { - "$ref": "#/definitions/notificationObject/email" - }, - { - "type": "array", - "uniqueItems": true, - "minItems": 1, - "items": { - "$ref": "#/definitions/notificationObject/email" - } - } - ] - }, - "irc": { - "oneOf": [ - { - "$ref": "#/definitions/possiblySecretStringOrPossiblySecretStringTypeArrayUnique" - }, - { - "type": "boolean" - }, - { - "$ref": "#/definitions/notificationObject/irc" - }, - { - "type": "array", - "uniqueItems": true, - "minItems": 1, - "items": { - "$ref": "#/definitions/notificationObject/irc" - } - } - ] - }, - "pushover": { - "oneOf": [ - { - "$ref": "#/definitions/nonEmptyStringOrArrayOfNonEmptyStrings" - }, - { - "type": "boolean" - }, - { - "$ref": "#/definitions/notificationObject/pushover" - }, - { - "type": "array", - "uniqueItems": true, - "minItems": 1, - "items": { - "$ref": "#/definitions/notificationObject/pushover" - } - } - ] - }, - "campfire": { - "oneOf": [ - { - "$ref": "#/definitions/possiblySecretStringOrPossiblySecretStringTypeArrayUnique" - }, - { - "type": "boolean" - }, - { - "$ref": "#/definitions/notificationObject/campfire" - }, - { - "type": "array", - "uniqueItems": true, - "minItems": 1, - "items": { - "$ref": "#/definitions/notificationObject/campfire" - } - } - ] - }, - "flowdock": { - "oneOf": [ - { - "$ref": "#/definitions/possiblySecretString" - }, - { - "type": "boolean" - }, - { - "$ref": "#/definitions/notificationObject/flowdock" - }, - { - "type": "array", - "uniqueItems": true, - "minItems": 1, - "items": { - "$ref": "#/definitions/notificationObject/flowdock" - } - } - ] - }, - "hipchat": { - "oneOf": [ - { - "$ref": "#/definitions/possiblySecretStringOrPossiblySecretStringTypeArrayUnique" - }, - { - "type": "boolean" - }, - { - "$ref": "#/definitions/notificationObject/hipchat" - }, - { - "type": "array", - "uniqueItems": true, - "minItems": 1, - "items": { - "$ref": "#/definitions/notificationObject/hipchat" - } - } - ] - } - }, - "additionalProperties": false - }, - "matrix": { - "type": "object", - "properties": { - "exclude": { - "type": "array", - "items": { - "$ref": "#/definitions/job" - } - }, - "include": { - "type": "array", - "items": { - "$ref": "#/definitions/job" - } - }, - "allow_failures": { - "type": "array", - "items": { - "$ref": "#/definitions/job" - } - }, - "fast_finish": { - "type": "boolean", - "description": "If some rows in the build matrix are allowed to fail, the build won't be marked as finished until they have completed. To mark the build as finished as soon as possible, add fast_finish: true" - } - }, - "additionalProperties": false - }, - "jobs": { - "type": "object", - "additionalProperties": false, - "properties": { - "include": { - "type": "array", - "items": { - "allOf": [ - { - "$ref": "#/definitions/job" - }, - { - "type": "object", - "properties": { - "stage": { - "type": "string", - "description": "The name of the build stage", - "default": "test" - } - } - } - ] - } - }, - "exclude": { - "type": "array", - "items": { - "allOf": [ - { - "$ref": "#/definitions/job" - }, - { - "type": "object", - "properties": { - "stage": { - "type": "string", - "description": "The name of the build stage", - "default": "test" - } - } - } - ] - } - }, - "allow_failures": { - "type": "array", - "items": { - "$ref": "#/definitions/job" - } - }, - "fast_finish": { - "type": "boolean", - "description": "If some rows in the build matrix are allowed to fail, the build won't be marked as finished until they have completed. To mark the build as finished as soon as possible, add fast_finish: true" - } - } - }, - "stages": { - "type": "array", - "description": "Specifies the order of build stages", - "items": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "name": { - "type": "string" - }, - "if": { - "description": "Specifies a condition for the stage", - "type": "string" - } - } - } - ] - } - }, - "version": { - "type": "string", - "description": "Build config specification version", - "pattern": "^(~>|>|>=|=|<=|<) (\\d+(?:\\.\\d+)?(?:\\.\\d+)?)$" - }, - "import": { - "description": "Import YAML config snippets that can be shared across repositories.", - "oneOf": [ - { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/definitions/import" - } - }, - { - "$ref": "#/definitions/import" - } - ] - } - } - } - ], - "definitions": { - "nonEmptyString": { - "type": "string", - "minLength": 1 - }, - "notRequiredNonEmptyString": { - "oneOf": [ - { - "$ref": "#/definitions/nonEmptyString" - }, - { - "type": "null" - } - ] - }, - "arrayOfNonEmptyStrings": { - "type": "array", - "items": { - "$ref": "#/definitions/nonEmptyString" - } - }, - "nonEmptyStringOrArrayOfNonEmptyStrings": { - "oneOf": [ - { - "$ref": "#/definitions/nonEmptyString" - }, - { - "$ref": "#/definitions/arrayOfNonEmptyStrings" - } - ] - }, - "notRequiredNonEmptyStringOrArrayOfNonEmptyStrings": { - "oneOf": [ - { - "$ref": "#/definitions/nonEmptyStringOrArrayOfNonEmptyStrings" - }, - { - "type": "null" - } - ] - }, - "stringArrayUnique": { - "type": "array", - "uniqueItems": true, - "minItems": 1, - "items": { - "$ref": "#/definitions/nonEmptyString" - } - }, - "stringOrStringArrayUnique": { - "oneOf": [ - { - "$ref": "#/definitions/nonEmptyString" - }, - { - "$ref": "#/definitions/stringArrayUnique" - } - ] - }, - "stringOrNumber": { - "oneOf": [ - { - "$ref": "#/definitions/nonEmptyString" - }, - { - "type": "number" - } - ] - }, - "stringOrNumberAndBothAreTypeArrayUnique": { - "type": "array", - "uniqueItems": true, - "minItems": 1, - "items": { - "$ref": "#/definitions/stringOrNumber" - } - }, - "stringOrNumberOrAcceptBothTypeAsArrayUnique": { - "oneOf": [ - { - "$ref": "#/definitions/stringOrNumber" - }, - { - "$ref": "#/definitions/stringOrNumberAndBothAreTypeArrayUnique" - } - ] - }, - "secretString": { - "type": "object", - "additionalProperties": false, - "properties": { - "secure": { - "$ref": "#/definitions/nonEmptyString" - } - } - }, - "possiblySecretString": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "secure": { - "type": "string" - } - } - } - ] - }, - "possiblySecretStringOrPossiblySecretStringTypeArrayUnique": { - "oneOf": [ - { - "$ref": "#/definitions/possiblySecretString" - }, - { - "type": "array", - "uniqueItems": true, - "minItems": 1, - "items": { - "$ref": "#/definitions/possiblySecretString" - } - } - ] - }, - "slackRoom": { - "description": "Your account name, token and optional channel", - "oneOf": [ - { - "type": "string", - "pattern": ".+:.+(#.+)?" - }, - { - "$ref": "#/definitions/secretString" - } - ] - }, - "notificationFrequency": { - "enum": ["always", "never", "change"] - }, - "step": { - "anyOf": [ - { - "type": "boolean" - }, - { - "enum": ["skip", "ignore"] - }, - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "service": { - "enum": [ - "cassandra", - "couchdb", - "docker", - "elasticsearch", - "mariadb", - "memcached", - "mongodb", - "mysql", - "neo4j", - "postgresql", - "rabbitmq", - "redis", - "redis-server", - "rethinkdb", - "riak", - "xvfb" - ] - }, - "cache": { - "enum": [ - "apt", - "bundler", - "cargo", - "ccache", - "cocoapods", - "packages", - "pip", - "yarn", - "npm" - ] - }, - "xcodeVersions": { - "enum": [ - "xcode6.4", - "xcode7.3", - "xcode8", - "xcode8.3", - "xcode9", - "xcode9.1", - "xcode9.2", - "xcode9.3", - "xcode9.4", - "xcode10", - "xcode10.1", - "xcode10.2", - "xcode10.3", - "xcode11", - "xcode11.1", - "xcode11.2", - "xcode11.3", - "xcode11.4", - "xcode11.4.1", - "xcode11.5", - "xcode11.6", - "xcode12u", - "xcode12", - "xcode12.2", - "xcode12.3", - "xcode12.4", - "xcode12.5", - "xcode13.1", - "xcode13.2", - "xcode13.3", - "xcode13.4", - "xcode14", - "xcode14.1", - "xcode14.2" - ] - }, - "envVars": { - "oneOf": [ - { - "$ref": "#/definitions/envVar" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/envVar" - } - } - ] - }, - "envVar": { - "oneOf": [ - { - "type": "string", - "pattern": "[^=]+=.*" - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "secure": { - "type": "string", - "pattern": "[^=]+=.*" - } - } - } - ] - }, - "job": { - "type": "object", - "properties": { - "language": { - "enum": [ - "android", - "bash", - "c", - "c++", - "clojure", - "cpp", - "crystal", - "csharp", - "d", - "dart", - "dartlang", - "elixir", - "elm", - "erlang", - "generic", - "go", - "golang", - "groovy", - "haskell", - "haxe", - "java", - "javascript", - "julia", - "jvm", - "matlab", - "minimal", - "nix", - "node", - "node.js", - "node_js", - "nodejs", - "obj-c", - "obj_c", - "objective-c", - "objective_c", - "perl", - "perl6", - "php", - "python", - "r", - "ruby", - "rust", - "scala", - "sh", - "shell", - "smalltalk" - ] - }, - "matlab": { - "$ref": "#/definitions/stringOrStringArrayUnique" - }, - "elm": { - "$ref": "#/definitions/stringOrStringArrayUnique" - }, - "elm-test": { - "$ref": "#/definitions/nonEmptyString" - }, - "elm-format": { - "$ref": "#/definitions/nonEmptyString" - }, - "haxe": { - "type": "array", - "items": { - "type": "string" - } - }, - "scala": { - "type": "array", - "items": { - "type": "string" - } - }, - "sbt_args": { - "type": "string" - }, - "crystal": { - "type": "array", - "items": { - "type": "string" - } - }, - "neko": { - "type": "string" - }, - "hxml": { - "type": "array", - "items": { - "type": "string" - } - }, - "smalltalk": { - "type": "array", - "items": { - "type": "string" - } - }, - "perl": { - "type": "array", - "items": { - "type": "string" - } - }, - "perl6": { - "type": "array", - "items": { - "type": "string" - } - }, - "d": { - "type": "array", - "items": { - "type": "string" - } - }, - "dart": { - "type": "array", - "items": { - "type": "string" - } - }, - "dart_task": { - "type": "array", - "items": { - "type": "object", - "properties": { - "test": { - "type": "string" - }, - "install_dartium": { - "type": "boolean" - }, - "xvfb": { - "type": "boolean" - }, - "dartanalyzer": { - "type": "boolean" - }, - "dartfmt": { - "type": "boolean" - } - } - } - }, - "ghc": { - "type": "array", - "items": { - "type": "string" - } - }, - "lein": { - "type": "string" - }, - "android": { - "type": "object", - "properties": { - "components": { - "type": "array", - "items": { - "type": "string" - } - }, - "licenses": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false - }, - "node_js": { - "$ref": "#/definitions/stringOrNumberOrAcceptBothTypeAsArrayUnique" - }, - "compiler": { - "oneOf": [ - { - "type": "array", - "items": { - "enum": ["clang", "gcc"] - } - }, - { - "enum": ["clang", "gcc"] - } - ] - }, - "php": { - "$ref": "#/definitions/stringOrNumberOrAcceptBothTypeAsArrayUnique" - }, - "go": { - "oneOf": [ - { - "type": "array", - "items": { - "type": "string" - } - }, - { - "type": "string" - } - ] - }, - "jdk": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "solution": { - "type": "string", - "description": "When the optional solution key is present, Travis will run NuGet package restore and build the given solution." - }, - "mono": { - "oneOf": [ - { - "enum": ["none"] - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "xcode_project": { - "type": "string" - }, - "xcode_workspace": { - "type": "string" - }, - "xcode_scheme": { - "type": "string" - }, - "xcode_sdk": { - "type": "string" - }, - "podfile": { - "type": "string", - "description": "By default, Travis CI will assume that your Podfile is in the root of the repository. If this is not the case, you can specify where the Podfile is" - }, - "python": { - "$ref": "#/definitions/stringOrNumberOrAcceptBothTypeAsArrayUnique" - }, - "elixir": { - "oneOf": [ - { - "type": "array", - "items": { - "type": "string" - } - }, - { - "type": "string" - } - ] - }, - "rust": { - "oneOf": [ - { - "type": "array", - "items": { - "type": "string" - } - }, - { - "type": "string" - }, - { - "type": "number" - } - ] - }, - "erlang": { - "oneOf": [ - { - "type": "array", - "items": { - "type": "string" - } - }, - { - "type": "string" - } - ] - }, - "julia": { - "$ref": "#/definitions/stringOrNumberOrAcceptBothTypeAsArrayUnique" - }, - "opt_release": { - "oneOf": [ - { - "type": "array", - "items": { - "type": "string" - } - }, - { - "type": "string" - } - ] - }, - "rvm": { - "$ref": "#/definitions/stringOrNumberOrAcceptBothTypeAsArrayUnique" - }, - "gemfile": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "bundler_args": { - "type": "string" - }, - "r": { - "oneOf": [ - { - "type": "array", - "items": { - "type": "string" - } - }, - { - "type": "string" - } - ] - }, - "pandoc_version": { - "type": "string" - }, - "brew_packages": { - "type": "array", - "description": "A list of packages to install via brew. This option is ignored on non-OS X builds.", - "items": { - "type": "string" - } - }, - "r_binary_packages": { - "type": "array", - "items": { - "type": "string" - } - }, - "r_packages": { - "type": "array", - "items": { - "type": "string" - } - }, - "bioc_packages": { - "type": "array", - "items": { - "type": "string" - } - }, - "r_github_packages": { - "type": "array", - "items": { - "type": "string" - } - }, - "apt_packages": { - "type": "array", - "items": { - "type": "string" - } - }, - "cran": { - "type": "string", - "description": "CRAN mirror to use for fetching packages" - }, - "repos": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Dictionary of repositories to pass to options(repos)" - }, - "arch": { - "description": "The CPU Architecture to run the job on", - "oneOf": [ - { - "enum": [ - "amd64", - "x86_64", - "arm64", - "ppc64le", - "s390x", - "arm64-graviton2" - ] - }, - { - "type": "array", - "uniqueItems": true, - "minItems": 1, - "items": { - "enum": [ - "amd64", - "arm64", - "ppc64le", - "s390x", - "arm64-graviton2" - ] - } - } - ] - }, - "os": { - "description": "The operating system to run the job on", - "oneOf": [ - { - "enum": ["osx", "linux", "linux-ppc64le", "windows"] - }, - { - "type": "array", - "uniqueItems": true, - "minItems": 1, - "items": { - "enum": ["osx", "linux", "linux-ppc64le", "windows"] - } - } - ] - }, - "osx_image": { - "oneOf": [ - { - "$ref": "#/definitions/xcodeVersions" - }, - { - "type": "array", - "uniqueItems": true, - "minItems": 1, - "items": { - "$ref": "#/definitions/xcodeVersions" - } - } - ], - "default": "xcode9.4" - }, - "dist": { - "description": "The Ubuntu distribution to use", - "enum": ["precise", "trusty", "xenial", "bionic", "focal", "jammy"] - }, - "sudo": { - "enum": [true, false, "", "required", "enabled"], - "description": "sudo is deprecated" - }, - "addons": { - "type": "object", - "properties": { - "apt": { - "type": "object", - "description": "To install packages not included in the default container-based-infrastructure you need to use the APT addon, as sudo apt-get is not available", - "properties": { - "update": { - "type": "boolean", - "description": "To update the list of available packages" - }, - "sources": { - "type": "array", - "items": { - "oneOf": [ - { - "type": "object", - "properties": { - "sourceline": { - "type": "string", - "description": "Key-value pairs which will be added to /etc/apt/sources.list" - }, - "key_url": { - "type": "string", - "description": "When APT sources require GPG keys, you can specify this with key_url" - } - }, - "required": ["sourceline"], - "additionalProperties": false - }, - { - "type": "string", - "description": "Alias defined in source whitelist" - } - ] - } - }, - "packages": { - "type": "array", - "description": "To install packages from the package whitelist before your custom build steps", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false - }, - "hosts": { - "description": "If your build requires setting up custom hostnames, you can specify a single host or a list of them. Travis CI will automatically setup the hostnames in /etc/hosts for both IPv4 and IPv6.", - "oneOf": [ - { - "type": "array", - "items": { - "type": "string" - } - }, - { - "type": "string" - } - ] - }, - "ssh_known_hosts": { - "$ref": "#/definitions/stringOrStringArrayUnique", - "description": "Travis CI can add entries to ~/.ssh/known_hosts prior to cloning your git repository, which is necessary if there are git submodules from domains other than github.com, gist.github.com, or ssh.github.com." - }, - "artifacts": { - "oneOf": [ - { - "enum": [true] - }, - { - "type": "object", - "properties": { - "s3_region": { - "type": "string" - }, - "paths": { - "type": "array", - "items": { - "type": "string" - } - }, - "working_dir": { - "type": "string", - "description": "If you'd like to upload file from a specific directory, you can change your working directory " - }, - "debug": { - "type": "boolean", - "description": "If you'd like to see more detail about what the artifacts addon is doing" - } - } - } - ] - }, - "firefox": { - "description": "Firefox addon", - "anyOf": [ - { - "type": "string", - "enum": [ - "latest", - "latest-esr", - "latest-beta", - "latest-dev", - "latest-nightly", - "latest-unsigned" - ] - }, - { - "$ref": "#/definitions/nonEmptyString" - } - ] - }, - "chrome": { - "description": "Chrome addon", - "type": "string", - "enum": ["stable", "beta"] - }, - "rethinkdb": { - "description": "RethinkDB addon", - "type": "string" - }, - "postgresql": { - "description": "PostgreSQL addon", - "type": "string" - }, - "mariadb": { - "description": "MariaDB addon", - "type": "string" - }, - "sauce_connect": { - "description": "Sauce Connect addon", - "oneOf": [ - { - "type": "object", - "properties": { - "username": { - "type": "string" - }, - "access_key": { - "type": "string" - } - } - }, - { - "type": "boolean" - } - ] - }, - "sonarcloud": { - "description": "SonarCloud addon", - "type": "object", - "properties": { - "organization": { - "type": "string" - }, - "token": { - "$ref": "#/definitions/secretString" - } - } - }, - "coverity_scan": { - "description": "Coverity Scan addon", - "type": "object", - "properties": { - "project": { - "description": "GitHub project metadata", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "version": { - "type": "number" - }, - "description": { - "type": "string" - } - }, - "required": ["name"] - }, - "notification_email": { - "description": "Where email notification of build analysis results will be sent", - "type": "string" - }, - "build_command_prepend": { - "description": "Commands to prepare for build_command", - "type": "string" - }, - "build_command": { - "description": "The command that will be added as an argument to 'cov-build' to compile your project for analysis", - "type": "string" - }, - "branch_pattern": { - "description": "Pattern to match selecting branches that will run analysis. We recommend leaving this set to 'coverity_scan'", - "type": "string" - } - } - }, - "homebrew": { - "description": "Homebrew addon", - "type": "object", - "additionalProperties": false, - "properties": { - "taps": { - "$ref": "#/definitions/stringOrStringArrayUnique" - }, - "packages": { - "$ref": "#/definitions/stringOrStringArrayUnique" - }, - "casks": { - "$ref": "#/definitions/stringOrStringArrayUnique" - }, - "brewfile": { - "oneOf": [ - { - "$ref": "#/definitions/nonEmptyString" - }, - { - "type": "boolean", - "default": true - } - ] - }, - "update": { - "type": "boolean", - "default": true - } - } - }, - "srcclr": { - "description": "SourceClear addon", - "oneOf": [ - { - "type": "boolean", - "default": true - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "debug": { - "type": "boolean", - "default": true - } - } - } - ] - }, - "snaps": { - "description": "Snaps addon", - "oneOf": [ - { - "$ref": "#/definitions/nonEmptyString" - }, - { - "type": "array", - "uniqueItems": true, - "minItems": 1, - "items": { - "oneOf": [ - { - "$ref": "#/definitions/nonEmptyString" - }, - { - "type": "object", - "additionalProperties": false, - "required": ["name"], - "properties": { - "name": { - "$ref": "#/definitions/nonEmptyString" - }, - "channel": { - "$ref": "#/definitions/nonEmptyString" - }, - "classic": { - "type": "boolean", - "description": "'classic:' is deprecated, use 'confinement:'" - }, - "confinement": { - "enum": ["classic", "devmode"] - } - } - } - ] - } - } - ] - }, - "browserstack": { - "description": "BrowserStack addon", - "type": "object", - "properties": { - "username": { - "$ref": "#/definitions/nonEmptyString" - }, - "access_key": { - "$ref": "#/definitions/possiblySecretString" - }, - "app_path": { - "$ref": "#/definitions/nonEmptyString" - }, - "proxyHost": { - "$ref": "#/definitions/nonEmptyString" - }, - "proxyPort": { - "$ref": "#/definitions/nonEmptyString" - }, - "proxyUser": { - "$ref": "#/definitions/nonEmptyString" - }, - "proxyPass": { - "$ref": "#/definitions/nonEmptyString" - }, - "forcelocal": { - "type": "boolean" - }, - "only": { - "$ref": "#/definitions/nonEmptyString" - } - } - } - }, - "additionalProperties": false - }, - "cache": { - "oneOf": [ - { - "enum": [false] - }, - { - "$ref": "#/definitions/cache" - }, - { - "type": "array", - "items": { - "oneOf": [ - { - "$ref": "#/definitions/cache" - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "directories": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - ] - } - }, - { - "type": "object", - "properties": { - "directories": { - "type": "array", - "items": { - "type": "string" - } - }, - "timeout": { - "type": "number", - "description": "Upload timeout in seconds", - "default": 1800 - }, - "apt": { - "type": "boolean" - }, - "bundler": { - "type": "boolean" - }, - "cocoapods": { - "type": "boolean" - }, - "pip": { - "type": "boolean" - }, - "yarn": { - "type": "boolean" - }, - "ccache": { - "type": "boolean" - }, - "packages": { - "type": "boolean" - }, - "cargo": { - "type": "boolean" - }, - "npm": { - "type": "boolean" - } - }, - "additionalProperties": false - } - ] - }, - "services": { - "oneOf": [ - { - "$ref": "#/definitions/service" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/service" - } - } - ] - }, - "git": { - "type": "object", - "properties": { - "depth": { - "oneOf": [ - { - "type": "integer", - "description": "Set the git clone depth", - "default": 50 - }, - { - "enum": [false] - } - ] - }, - "quiet": { - "type": "boolean", - "description": "Travis CI clones repositories without the quiet flag (-q) by default. Enabling the quiet flag can be useful if you're trying to avoid log file size limits or even if you just don't need to include it." - }, - "submodules": { - "type": "boolean", - "description": "Control whether submodules should be cloned" - }, - "lfs_skip_smudge": { - "type": "boolean", - "description": "Skip fetching the git-lfs files during the initial git clone (equivalent to git lfs smudge --skip)," - }, - "clone": { - "type": "boolean", - "description": "In some work flows, like build stages, it might be beneficial to skip the automatic git clone step." - }, - "sparse_checkout": { - "$ref": "#/definitions/nonEmptyString", - "description": "Is a path to the existing file in the current repository with data you'd like to put into $GIT_DIR/info/sparse-checkout file of format described in Git documentation." - }, - "autocrlf": { - "oneOf": [ - { - "type": "boolean" - }, - { - "type": "string", - "enum": ["input"] - } - ], - "description": "Specify handling of line endings when cloning repository" - } - }, - "additionalProperties": false - }, - "branches": { - "type": "object", - "description": "Specify which branches to build", - "properties": { - "except": { - "type": "array", - "items": { - "type": "string" - } - }, - "only": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false - }, - "env": { - "oneOf": [ - { - "$ref": "#/definitions/envVars" - }, - { - "type": "object", - "properties": { - "global": { - "$ref": "#/definitions/envVars" - }, - "matrix": { - "$ref": "#/definitions/envVars" - }, - "jobs": { - "$ref": "#/definitions/envVars" - } - }, - "additionalProperties": false - } - ] - }, - "before_install": { - "$ref": "#/definitions/step" - }, - "install": { - "$ref": "#/definitions/step" - }, - "before_script": { - "$ref": "#/definitions/step" - }, - "script": { - "$ref": "#/definitions/step" - }, - "before_cache": { - "$ref": "#/definitions/step" - }, - "after_success": { - "$ref": "#/definitions/step" - }, - "after_failure": { - "$ref": "#/definitions/step" - }, - "before_deploy": { - "$ref": "#/definitions/step" - }, - "deploy": { - "oneOf": [ - { - "type": "array", - "items": { - "$ref": "#/definitions/deployment" - } - }, - { - "$ref": "#/definitions/deployment" - } - ] - }, - "after_deploy": { - "$ref": "#/definitions/step" - }, - "after_script": { - "$ref": "#/definitions/step" - } - } - }, - "deployment": { - "allOf": [ - { - "type": "object", - "properties": { - "on": { - "type": "object", - "properties": { - "tags": { - "description": "Tell Travis CI to only deploy on tagged commits", - "oneOf": [ - { - "type": "boolean" - }, - { - "type": "string" - } - ] - }, - "branch": { - "type": "string" - }, - "all_branches": { - "type": "boolean" - }, - "skip_cleanup": { - "type": "boolean", - "description": "After your tests ran and before the release, Travis CI will clean up any additional files and changes you made. Maybe that is not what you want, as you might generate some artifacts that are supposed to be released, too." - }, - "repo": { - "type": "string" - }, - "condition": { - "type": "string", - "description": "if [[ ]]; then ; fi" - } - } - } - } - }, - { - "oneOf": [ - { - "type": "object", - "properties": { - "provider": { - "enum": ["script"] - }, - "script": { - "type": "string" - } - }, - "required": ["provider", "script"] - }, - { - "type": "object", - "properties": { - "provider": { - "enum": ["npm"] - }, - "email": { - "$ref": "#/definitions/possiblySecretString" - }, - "api_key": { - "$ref": "#/definitions/possiblySecretString" - }, - "api_token": { - "$ref": "#/definitions/possiblySecretString" - }, - "tag": { - "type": "string" - } - }, - "oneOf": [ - { - "required": ["provider", "email", "api_key"] - }, - { - "required": ["provider", "email", "api_token"] - } - ] - }, - { - "type": "object", - "properties": { - "provider": { - "enum": ["surge"] - }, - "project": { - "type": "string" - }, - "domain": { - "type": "string" - } - }, - "required": ["provider"] - }, - { - "type": "object", - "properties": { - "provider": { - "enum": ["releases"] - }, - "api_key": { - "$ref": "#/definitions/possiblySecretString" - }, - "user": { - "$ref": "#/definitions/possiblySecretString" - }, - "password": { - "$ref": "#/definitions/possiblySecretString" - }, - "file": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "file_glob": { - "type": "boolean" - }, - "overwrite": { - "type": "boolean", - "description": "If you need to overwrite existing files" - } - }, - "required": ["provider"] - }, - { - "type": "object", - "description": "deploy to heroku, to see https://docs.travis-ci.com/user/deployment/heroku/", - "properties": { - "provider": { - "enum": ["heroku"] - }, - "api_key": { - "description": "heroku auth token", - "anyOf": [ - { - "$ref": "#/definitions/possiblySecretString" - }, - { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/possiblySecretString" - } - } - ] - }, - "app": { - "oneOf": [ - { - "type": "string", - "description": "Deploy master branch to heroku app" - }, - { - "type": "object", - "description": "Deploy the different branch to the different heroku app", - "additionalProperties": { - "type": "string" - } - } - ] - }, - "run": { - "description": "to run a command on Heroku after a successful deploy", - "oneOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "skip_cleanup": { - "type": "boolean", - "description": "Travis CI default will clean up any additional files and changes you made, you can by it to skip the clean up" - }, - "strategy": { - "enum": ["api", "git"], - "description": "Travis CI supports different mechanisms for deploying to Heroku: api is default" - } - }, - "required": ["provider", "api_key"] - }, - { - "type": "object", - "properties": { - "provider": { - "enum": ["s3"] - }, - "access_key_id": { - "$ref": "#/definitions/possiblySecretString" - }, - "secret_access_key": { - "$ref": "#/definitions/possiblySecretString" - }, - "bucket": { - "type": "string" - }, - "region": { - "type": "string" - }, - "skip_cleanup": { - "type": "boolean", - "default": false - }, - "acl": { - "enum": [ - "private", - "public_read", - "public_read_write", - "authenticated_read", - "bucket_owner_read", - "bucket_owner_full_control" - ] - }, - "local_dir": { - "type": "string" - }, - "upload-dir": { - "type": "string" - }, - "detect_encoding": { - "type": "boolean", - "default": false - }, - "default_text_charset": { - "type": "string" - }, - "cache_control": { - "type": "string" - }, - "expires": { - "type": "string" - }, - "endpoint": { - "type": "string" - } - }, - "required": [ - "provider", - "access_key_id", - "secret_access_key", - "bucket" - ] - }, - { - "type": "object", - "properties": { - "provider": { - "type": "string", - "not": { - "enum": [ - "script", - "npm", - "surge", - "releases", - "heroku", - "s3" - ] - } - } - }, - "required": ["provider"] - } - ] - } - ] - }, - "notificationObject": { - "webhooks": { - "type": "object", - "additionalProperties": false, - "properties": { - "disabled": { - "type": "boolean" - }, - "enabled": { - "type": "boolean" - }, - "urls": { - "oneOf": [ - { - "type": "string", - "format": "uri" - }, - { - "$ref": "#/definitions/secretString" - }, - { - "type": "array", - "uniqueItems": true, - "minItems": 1, - "items": { - "oneOf": [ - { - "type": "string", - "format": "uri" - }, - { - "$ref": "#/definitions/secretString" - } - ] - } - } - ] - }, - "on_success": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - }, - "on_failure": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - }, - "on_start": { - "$ref": "#/definitions/notificationFrequency", - "default": "never" - }, - "on_cancel": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - }, - "on_error": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - } - } - }, - "slack": { - "type": "object", - "additionalProperties": false, - "properties": { - "disabled": { - "type": "boolean" - }, - "enabled": { - "type": "boolean" - }, - "rooms": { - "type": "array", - "uniqueItems": true, - "minItems": 1, - "items": { - "$ref": "#/definitions/slackRoom" - } - }, - "on_pull_requests": { - "type": "boolean" - }, - "template": { - "$ref": "#/definitions/notRequiredNonEmptyStringOrArrayOfNonEmptyStrings" - }, - "on_success": { - "$ref": "#/definitions/notificationFrequency" - }, - "on_failure": { - "$ref": "#/definitions/notificationFrequency" - }, - "on_start": { - "$ref": "#/definitions/notificationFrequency", - "default": "never" - }, - "on_cancel": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - }, - "on_error": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - } - } - }, - "email": { - "type": "object", - "additionalProperties": false, - "properties": { - "disabled": { - "type": "boolean" - }, - "enabled": { - "type": "boolean" - }, - "recipients": { - "$ref": "#/definitions/possiblySecretStringOrPossiblySecretStringTypeArrayUnique" - }, - "on_success": { - "$ref": "#/definitions/notificationFrequency", - "default": "change" - }, - "on_failure": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - }, - "on_start": { - "$ref": "#/definitions/notificationFrequency", - "default": "never" - }, - "on_cancel": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - }, - "on_error": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - } - } - }, - "irc": { - "type": "object", - "additionalProperties": false, - "properties": { - "disabled": { - "type": "boolean" - }, - "enabled": { - "type": "boolean" - }, - "channels": { - "$ref": "#/definitions/possiblySecretStringOrPossiblySecretStringTypeArrayUnique" - }, - "channel_key": { - "$ref": "#/definitions/possiblySecretString" - }, - "nick": { - "$ref": "#/definitions/nonEmptyString" - }, - "password": { - "$ref": "#/definitions/possiblySecretString" - }, - "template": { - "$ref": "#/definitions/notRequiredNonEmptyStringOrArrayOfNonEmptyStrings" - }, - "on_success": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - }, - "on_failure": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - }, - "on_start": { - "$ref": "#/definitions/notificationFrequency", - "default": "never" - }, - "on_cancel": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - }, - "on_error": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - }, - "skip_join": { - "type": "boolean" - }, - "use_notice": { - "type": "boolean" - } - } - }, - "pushover": { - "type": "object", - "additionalProperties": false, - "properties": { - "disabled": { - "type": "boolean" - }, - "enabled": { - "type": "boolean" - }, - "api_key": { - "$ref": "#/definitions/possiblySecretString" - }, - "users": { - "$ref": "#/definitions/possiblySecretStringOrPossiblySecretStringTypeArrayUnique" - }, - "template": { - "$ref": "#/definitions/notRequiredNonEmptyStringOrArrayOfNonEmptyStrings" - }, - "on_success": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - }, - "on_failure": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - }, - "on_start": { - "$ref": "#/definitions/notificationFrequency", - "default": "never" - }, - "on_cancel": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - }, - "on_error": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - } - } - }, - "campfire": { - "type": "object", - "additionalProperties": false, - "properties": { - "disabled": { - "type": "boolean" - }, - "enabled": { - "type": "boolean" - }, - "rooms": { - "$ref": "#/definitions/possiblySecretStringOrPossiblySecretStringTypeArrayUnique" - }, - "template": { - "$ref": "#/definitions/nonEmptyStringOrArrayOfNonEmptyStrings" - }, - "on_success": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - }, - "on_failure": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - }, - "on_start": { - "$ref": "#/definitions/notificationFrequency", - "default": "never" - }, - "on_cancel": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - }, - "on_error": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - } - } - }, - "flowdock": { - "type": "object", - "additionalProperties": false, - "properties": { - "disabled": { - "type": "boolean" - }, - "enabled": { - "type": "boolean" - }, - "api_token": { - "$ref": "#/definitions/nonEmptyString" - }, - "on_success": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - }, - "on_failure": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - }, - "on_start": { - "$ref": "#/definitions/notificationFrequency", - "default": "never" - }, - "on_cancel": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - }, - "on_error": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - } - } - }, - "hipchat": { - "type": "object", - "additionalProperties": false, - "properties": { - "disabled": { - "type": "boolean" - }, - "enabled": { - "type": "boolean" - }, - "notify": { - "type": "boolean" - }, - "on_pull_requests": { - "type": "boolean" - }, - "rooms": { - "$ref": "#/definitions/possiblySecretStringOrPossiblySecretStringTypeArrayUnique" - }, - "format": { - "enum": ["html", "text"] - }, - "template": { - "$ref": "#/definitions/nonEmptyStringOrArrayOfNonEmptyStrings" - }, - "on_success": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - }, - "on_failure": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - }, - "on_start": { - "$ref": "#/definitions/notificationFrequency", - "default": "never" - }, - "on_cancel": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - }, - "on_error": { - "$ref": "#/definitions/notificationFrequency", - "default": "always" - } - } - } - }, - "import": { - "anyOf": [ - { - "type": "object", - "additionalProperties": false, - "required": ["source"], - "properties": { - "source": { - "$ref": "#/definitions/nonEmptyString", - "description": "The source to import build config from" - }, - "mode": { - "type": "string", - "enum": [ - "merge", - "deep_merge", - "deep_merge_append", - "deep_merge_prepend" - ], - "description": "How to merge the imported config into the target config (defaults to deep_merge_append)" - }, - "if": { - "$ref": "#/definitions/nonEmptyString", - "description": "Specifies a condition for the import" - } - } - }, - { - "$ref": "#/definitions/nonEmptyString" - } - ] - } - }, - "id": "https://json.schemastore.org/travis.json", - "title": "JSON schema for Travis CI configuration files" -} +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "allOf": [ + { + "$ref": "#/definitions/job" + }, + { + "type": "object", + "properties": { + "notifications": { + "type": "object", + "properties": { + "webhooks": { + "oneOf": [ + { + "$ref": "#/definitions/possiblySecretStringOrPossiblySecretStringTypeArrayUnique" + }, + { + "type": "boolean" + }, + { + "$ref": "#/definitions/notificationObject/webhooks" + }, + { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "$ref": "#/definitions/notificationObject/webhooks" + } + } + ] + }, + "slack": { + "oneOf": [ + { + "$ref": "#/definitions/slackRoom" + }, + { + "type": "boolean" + }, + { + "$ref": "#/definitions/notificationObject/slack" + }, + { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "$ref": "#/definitions/notificationObject/slack" + } + } + ] + }, + "email": { + "oneOf": [ + { + "$ref": "#/definitions/possiblySecretStringOrPossiblySecretStringTypeArrayUnique" + }, + { + "type": "boolean" + }, + { + "$ref": "#/definitions/notificationObject/email" + }, + { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "$ref": "#/definitions/notificationObject/email" + } + } + ] + }, + "irc": { + "oneOf": [ + { + "$ref": "#/definitions/possiblySecretStringOrPossiblySecretStringTypeArrayUnique" + }, + { + "type": "boolean" + }, + { + "$ref": "#/definitions/notificationObject/irc" + }, + { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "$ref": "#/definitions/notificationObject/irc" + } + } + ] + }, + "pushover": { + "oneOf": [ + { + "$ref": "#/definitions/nonEmptyStringOrArrayOfNonEmptyStrings" + }, + { + "type": "boolean" + }, + { + "$ref": "#/definitions/notificationObject/pushover" + }, + { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "$ref": "#/definitions/notificationObject/pushover" + } + } + ] + }, + "campfire": { + "oneOf": [ + { + "$ref": "#/definitions/possiblySecretStringOrPossiblySecretStringTypeArrayUnique" + }, + { + "type": "boolean" + }, + { + "$ref": "#/definitions/notificationObject/campfire" + }, + { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "$ref": "#/definitions/notificationObject/campfire" + } + } + ] + }, + "flowdock": { + "oneOf": [ + { + "$ref": "#/definitions/possiblySecretString" + }, + { + "type": "boolean" + }, + { + "$ref": "#/definitions/notificationObject/flowdock" + }, + { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "$ref": "#/definitions/notificationObject/flowdock" + } + } + ] + }, + "hipchat": { + "oneOf": [ + { + "$ref": "#/definitions/possiblySecretStringOrPossiblySecretStringTypeArrayUnique" + }, + { + "type": "boolean" + }, + { + "$ref": "#/definitions/notificationObject/hipchat" + }, + { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "$ref": "#/definitions/notificationObject/hipchat" + } + } + ] + } + }, + "additionalProperties": false + }, + "matrix": { + "type": "object", + "properties": { + "exclude": { + "type": "array", + "items": { + "$ref": "#/definitions/job" + } + }, + "include": { + "type": "array", + "items": { + "$ref": "#/definitions/job" + } + }, + "allow_failures": { + "type": "array", + "items": { + "$ref": "#/definitions/job" + } + }, + "fast_finish": { + "type": "boolean", + "description": "If some rows in the build matrix are allowed to fail, the build won't be marked as finished until they have completed. To mark the build as finished as soon as possible, add fast_finish: true" + } + }, + "additionalProperties": false + }, + "jobs": { + "type": "object", + "additionalProperties": false, + "properties": { + "include": { + "type": "array", + "items": { + "allOf": [ + { + "$ref": "#/definitions/job" + }, + { + "type": "object", + "properties": { + "stage": { + "type": "string", + "description": "The name of the build stage", + "default": "test" + } + } + } + ] + } + }, + "exclude": { + "type": "array", + "items": { + "allOf": [ + { + "$ref": "#/definitions/job" + }, + { + "type": "object", + "properties": { + "stage": { + "type": "string", + "description": "The name of the build stage", + "default": "test" + } + } + } + ] + } + }, + "allow_failures": { + "type": "array", + "items": { + "$ref": "#/definitions/job" + } + }, + "fast_finish": { + "type": "boolean", + "description": "If some rows in the build matrix are allowed to fail, the build won't be marked as finished until they have completed. To mark the build as finished as soon as possible, add fast_finish: true" + } + } + }, + "stages": { + "type": "array", + "description": "Specifies the order of build stages", + "items": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + }, + "if": { + "description": "Specifies a condition for the stage", + "type": "string" + } + } + } + ] + } + }, + "version": { + "type": "string", + "description": "Build config specification version", + "pattern": "^(~>|>|>=|=|<=|<) (\\d+(?:\\.\\d+)?(?:\\.\\d+)?)$" + }, + "import": { + "description": "Import YAML config snippets that can be shared across repositories.", + "oneOf": [ + { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/import" + } + }, + { + "$ref": "#/definitions/import" + } + ] + } + } + } + ], + "definitions": { + "nonEmptyString": { + "type": "string", + "minLength": 1 + }, + "notRequiredNonEmptyString": { + "oneOf": [ + { + "$ref": "#/definitions/nonEmptyString" + }, + { + "type": "null" + } + ] + }, + "arrayOfNonEmptyStrings": { + "type": "array", + "items": { + "$ref": "#/definitions/nonEmptyString" + } + }, + "nonEmptyStringOrArrayOfNonEmptyStrings": { + "oneOf": [ + { + "$ref": "#/definitions/nonEmptyString" + }, + { + "$ref": "#/definitions/arrayOfNonEmptyStrings" + } + ] + }, + "notRequiredNonEmptyStringOrArrayOfNonEmptyStrings": { + "oneOf": [ + { + "$ref": "#/definitions/nonEmptyStringOrArrayOfNonEmptyStrings" + }, + { + "type": "null" + } + ] + }, + "stringArrayUnique": { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "$ref": "#/definitions/nonEmptyString" + } + }, + "stringOrStringArrayUnique": { + "oneOf": [ + { + "$ref": "#/definitions/nonEmptyString" + }, + { + "$ref": "#/definitions/stringArrayUnique" + } + ] + }, + "stringOrNumber": { + "oneOf": [ + { + "$ref": "#/definitions/nonEmptyString" + }, + { + "type": "number" + } + ] + }, + "stringOrNumberAndBothAreTypeArrayUnique": { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "$ref": "#/definitions/stringOrNumber" + } + }, + "stringOrNumberOrAcceptBothTypeAsArrayUnique": { + "oneOf": [ + { + "$ref": "#/definitions/stringOrNumber" + }, + { + "$ref": "#/definitions/stringOrNumberAndBothAreTypeArrayUnique" + } + ] + }, + "secretString": { + "type": "object", + "additionalProperties": false, + "properties": { + "secure": { + "$ref": "#/definitions/nonEmptyString" + } + } + }, + "possiblySecretString": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "secure": { + "type": "string" + } + } + } + ] + }, + "possiblySecretStringOrPossiblySecretStringTypeArrayUnique": { + "oneOf": [ + { + "$ref": "#/definitions/possiblySecretString" + }, + { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "$ref": "#/definitions/possiblySecretString" + } + } + ] + }, + "slackRoom": { + "description": "Your account name, token and optional channel", + "oneOf": [ + { + "type": "string", + "pattern": ".+:.+(#.+)?" + }, + { + "$ref": "#/definitions/secretString" + } + ] + }, + "notificationFrequency": { + "enum": ["always", "never", "change"] + }, + "step": { + "anyOf": [ + { + "type": "boolean" + }, + { + "enum": ["skip", "ignore"] + }, + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "service": { + "enum": [ + "cassandra", + "couchdb", + "docker", + "elasticsearch", + "mariadb", + "memcached", + "mongodb", + "mysql", + "neo4j", + "postgresql", + "rabbitmq", + "redis", + "redis-server", + "rethinkdb", + "riak", + "xvfb" + ] + }, + "cache": { + "enum": [ + "apt", + "bundler", + "cargo", + "ccache", + "cocoapods", + "packages", + "pip", + "yarn", + "npm" + ] + }, + "xcodeVersions": { + "enum": [ + "xcode6.4", + "xcode7.3", + "xcode8", + "xcode8.3", + "xcode9", + "xcode9.1", + "xcode9.2", + "xcode9.3", + "xcode9.4", + "xcode10", + "xcode10.1", + "xcode10.2", + "xcode10.3", + "xcode11", + "xcode11.1", + "xcode11.2", + "xcode11.3", + "xcode11.4", + "xcode11.4.1", + "xcode11.5", + "xcode11.6", + "xcode12u", + "xcode12", + "xcode12.2", + "xcode12.3", + "xcode12.4", + "xcode12.5", + "xcode13.1", + "xcode13.2", + "xcode13.3", + "xcode13.4", + "xcode14", + "xcode14.1", + "xcode14.2" + ] + }, + "envVars": { + "oneOf": [ + { + "$ref": "#/definitions/envVar" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/envVar" + } + } + ] + }, + "envVar": { + "oneOf": [ + { + "type": "string", + "pattern": "[^=]+=.*" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "secure": { + "type": "string", + "pattern": "[^=]+=.*" + } + } + } + ] + }, + "job": { + "type": "object", + "properties": { + "language": { + "enum": [ + "android", + "bash", + "c", + "c++", + "clojure", + "cpp", + "crystal", + "csharp", + "d", + "dart", + "dartlang", + "elixir", + "elm", + "erlang", + "generic", + "go", + "golang", + "groovy", + "haskell", + "haxe", + "java", + "javascript", + "julia", + "jvm", + "matlab", + "minimal", + "nix", + "node", + "node.js", + "node_js", + "nodejs", + "obj-c", + "obj_c", + "objective-c", + "objective_c", + "perl", + "perl6", + "php", + "python", + "r", + "ruby", + "rust", + "scala", + "sh", + "shell", + "smalltalk" + ] + }, + "matlab": { + "$ref": "#/definitions/stringOrStringArrayUnique" + }, + "elm": { + "$ref": "#/definitions/stringOrStringArrayUnique" + }, + "elm-test": { + "$ref": "#/definitions/nonEmptyString" + }, + "elm-format": { + "$ref": "#/definitions/nonEmptyString" + }, + "haxe": { + "type": "array", + "items": { + "type": "string" + } + }, + "scala": { + "type": "array", + "items": { + "type": "string" + } + }, + "sbt_args": { + "type": "string" + }, + "crystal": { + "type": "array", + "items": { + "type": "string" + } + }, + "neko": { + "type": "string" + }, + "hxml": { + "type": "array", + "items": { + "type": "string" + } + }, + "smalltalk": { + "type": "array", + "items": { + "type": "string" + } + }, + "perl": { + "type": "array", + "items": { + "type": "string" + } + }, + "perl6": { + "type": "array", + "items": { + "type": "string" + } + }, + "d": { + "type": "array", + "items": { + "type": "string" + } + }, + "dart": { + "type": "array", + "items": { + "type": "string" + } + }, + "dart_task": { + "type": "array", + "items": { + "type": "object", + "properties": { + "test": { + "type": "string" + }, + "install_dartium": { + "type": "boolean" + }, + "xvfb": { + "type": "boolean" + }, + "dartanalyzer": { + "type": "boolean" + }, + "dartfmt": { + "type": "boolean" + } + } + } + }, + "ghc": { + "type": "array", + "items": { + "type": "string" + } + }, + "lein": { + "type": "string" + }, + "android": { + "type": "object", + "properties": { + "components": { + "type": "array", + "items": { + "type": "string" + } + }, + "licenses": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "node_js": { + "$ref": "#/definitions/stringOrNumberOrAcceptBothTypeAsArrayUnique" + }, + "compiler": { + "oneOf": [ + { + "type": "array", + "items": { + "enum": ["clang", "gcc"] + } + }, + { + "enum": ["clang", "gcc"] + } + ] + }, + "php": { + "$ref": "#/definitions/stringOrNumberOrAcceptBothTypeAsArrayUnique" + }, + "go": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "jdk": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "solution": { + "type": "string", + "description": "When the optional solution key is present, Travis will run NuGet package restore and build the given solution." + }, + "mono": { + "oneOf": [ + { + "enum": ["none"] + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "xcode_project": { + "type": "string" + }, + "xcode_workspace": { + "type": "string" + }, + "xcode_scheme": { + "type": "string" + }, + "xcode_sdk": { + "type": "string" + }, + "podfile": { + "type": "string", + "description": "By default, Travis CI will assume that your Podfile is in the root of the repository. If this is not the case, you can specify where the Podfile is" + }, + "python": { + "$ref": "#/definitions/stringOrNumberOrAcceptBothTypeAsArrayUnique" + }, + "elixir": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "rust": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "erlang": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "julia": { + "$ref": "#/definitions/stringOrNumberOrAcceptBothTypeAsArrayUnique" + }, + "opt_release": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "rvm": { + "$ref": "#/definitions/stringOrNumberOrAcceptBothTypeAsArrayUnique" + }, + "gemfile": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "bundler_args": { + "type": "string" + }, + "r": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "pandoc_version": { + "type": "string" + }, + "brew_packages": { + "type": "array", + "description": "A list of packages to install via brew. This option is ignored on non-OS X builds.", + "items": { + "type": "string" + } + }, + "r_binary_packages": { + "type": "array", + "items": { + "type": "string" + } + }, + "r_packages": { + "type": "array", + "items": { + "type": "string" + } + }, + "bioc_packages": { + "type": "array", + "items": { + "type": "string" + } + }, + "r_github_packages": { + "type": "array", + "items": { + "type": "string" + } + }, + "apt_packages": { + "type": "array", + "items": { + "type": "string" + } + }, + "cran": { + "type": "string", + "description": "CRAN mirror to use for fetching packages" + }, + "repos": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Dictionary of repositories to pass to options(repos)" + }, + "arch": { + "description": "The CPU Architecture to run the job on", + "oneOf": [ + { + "enum": [ + "amd64", + "x86_64", + "arm64", + "ppc64le", + "s390x", + "arm64-graviton2" + ] + }, + { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "enum": [ + "amd64", + "arm64", + "ppc64le", + "s390x", + "arm64-graviton2" + ] + } + } + ] + }, + "os": { + "description": "The operating system to run the job on", + "oneOf": [ + { + "enum": ["osx", "linux", "linux-ppc64le", "windows"] + }, + { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "enum": ["osx", "linux", "linux-ppc64le", "windows"] + } + } + ] + }, + "osx_image": { + "oneOf": [ + { + "$ref": "#/definitions/xcodeVersions" + }, + { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "$ref": "#/definitions/xcodeVersions" + } + } + ], + "default": "xcode9.4" + }, + "dist": { + "description": "The Ubuntu distribution to use", + "enum": [ + "precise", + "trusty", + "xenial", + "bionic", + "focal", + "jammy", + "noble" + ] + }, + "sudo": { + "enum": [true, false, "", "required", "enabled"], + "description": "sudo is deprecated" + }, + "addons": { + "type": "object", + "properties": { + "apt": { + "type": "object", + "description": "To install packages not included in the default container-based-infrastructure you need to use the APT addon, as sudo apt-get is not available", + "properties": { + "update": { + "type": "boolean", + "description": "To update the list of available packages" + }, + "sources": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "properties": { + "sourceline": { + "type": "string", + "description": "Key-value pairs which will be added to /etc/apt/sources.list" + }, + "key_url": { + "type": "string", + "description": "When APT sources require GPG keys, you can specify this with key_url" + } + }, + "required": ["sourceline"], + "additionalProperties": false + }, + { + "type": "string", + "description": "Alias defined in source whitelist" + } + ] + } + }, + "packages": { + "type": "array", + "description": "To install packages from the package whitelist before your custom build steps", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "hosts": { + "description": "If your build requires setting up custom hostnames, you can specify a single host or a list of them. Travis CI will automatically setup the hostnames in /etc/hosts for both IPv4 and IPv6.", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] + }, + "ssh_known_hosts": { + "$ref": "#/definitions/stringOrStringArrayUnique", + "description": "Travis CI can add entries to ~/.ssh/known_hosts prior to cloning your git repository, which is necessary if there are git submodules from domains other than github.com, gist.github.com, or ssh.github.com." + }, + "artifacts": { + "oneOf": [ + { + "enum": [true] + }, + { + "type": "object", + "properties": { + "s3_region": { + "type": "string" + }, + "paths": { + "type": "array", + "items": { + "type": "string" + } + }, + "working_dir": { + "type": "string", + "description": "If you'd like to upload file from a specific directory, you can change your working directory " + }, + "debug": { + "type": "boolean", + "description": "If you'd like to see more detail about what the artifacts addon is doing" + } + } + } + ] + }, + "firefox": { + "description": "Firefox addon", + "anyOf": [ + { + "type": "string", + "enum": [ + "latest", + "latest-esr", + "latest-beta", + "latest-dev", + "latest-nightly", + "latest-unsigned" + ] + }, + { + "$ref": "#/definitions/nonEmptyString" + } + ] + }, + "chrome": { + "description": "Chrome addon", + "type": "string", + "enum": ["stable", "beta"] + }, + "rethinkdb": { + "description": "RethinkDB addon", + "type": "string" + }, + "postgresql": { + "description": "PostgreSQL addon", + "type": "string" + }, + "mariadb": { + "description": "MariaDB addon", + "type": "string" + }, + "sauce_connect": { + "description": "Sauce Connect addon", + "oneOf": [ + { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "access_key": { + "type": "string" + } + } + }, + { + "type": "boolean" + } + ] + }, + "sonarcloud": { + "description": "SonarCloud addon", + "type": "object", + "properties": { + "organization": { + "type": "string" + }, + "token": { + "$ref": "#/definitions/secretString" + } + } + }, + "coverity_scan": { + "description": "Coverity Scan addon", + "type": "object", + "properties": { + "project": { + "description": "GitHub project metadata", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "version": { + "type": "number" + }, + "description": { + "type": "string" + } + }, + "required": ["name"] + }, + "notification_email": { + "description": "Where email notification of build analysis results will be sent", + "type": "string" + }, + "build_command_prepend": { + "description": "Commands to prepare for build_command", + "type": "string" + }, + "build_command": { + "description": "The command that will be added as an argument to 'cov-build' to compile your project for analysis", + "type": "string" + }, + "branch_pattern": { + "description": "Pattern to match selecting branches that will run analysis. We recommend leaving this set to 'coverity_scan'", + "type": "string" + } + } + }, + "homebrew": { + "description": "Homebrew addon", + "type": "object", + "additionalProperties": false, + "properties": { + "taps": { + "$ref": "#/definitions/stringOrStringArrayUnique" + }, + "packages": { + "$ref": "#/definitions/stringOrStringArrayUnique" + }, + "casks": { + "$ref": "#/definitions/stringOrStringArrayUnique" + }, + "brewfile": { + "oneOf": [ + { + "$ref": "#/definitions/nonEmptyString" + }, + { + "type": "boolean", + "default": true + } + ] + }, + "update": { + "type": "boolean", + "default": true + } + } + }, + "srcclr": { + "description": "SourceClear addon", + "oneOf": [ + { + "type": "boolean", + "default": true + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "debug": { + "type": "boolean", + "default": true + } + } + } + ] + }, + "snaps": { + "description": "Snaps addon", + "oneOf": [ + { + "$ref": "#/definitions/nonEmptyString" + }, + { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "oneOf": [ + { + "$ref": "#/definitions/nonEmptyString" + }, + { + "type": "object", + "additionalProperties": false, + "required": ["name"], + "properties": { + "name": { + "$ref": "#/definitions/nonEmptyString" + }, + "channel": { + "$ref": "#/definitions/nonEmptyString" + }, + "classic": { + "type": "boolean", + "description": "'classic:' is deprecated, use 'confinement:'" + }, + "confinement": { + "enum": ["classic", "devmode"] + } + } + } + ] + } + } + ] + }, + "browserstack": { + "description": "BrowserStack addon", + "type": "object", + "properties": { + "username": { + "$ref": "#/definitions/nonEmptyString" + }, + "access_key": { + "$ref": "#/definitions/possiblySecretString" + }, + "app_path": { + "$ref": "#/definitions/nonEmptyString" + }, + "proxyHost": { + "$ref": "#/definitions/nonEmptyString" + }, + "proxyPort": { + "$ref": "#/definitions/nonEmptyString" + }, + "proxyUser": { + "$ref": "#/definitions/nonEmptyString" + }, + "proxyPass": { + "$ref": "#/definitions/nonEmptyString" + }, + "forcelocal": { + "type": "boolean" + }, + "only": { + "$ref": "#/definitions/nonEmptyString" + } + } + } + }, + "additionalProperties": false + }, + "cache": { + "oneOf": [ + { + "enum": [false] + }, + { + "$ref": "#/definitions/cache" + }, + { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/definitions/cache" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "directories": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + ] + } + }, + { + "type": "object", + "properties": { + "directories": { + "type": "array", + "items": { + "type": "string" + } + }, + "timeout": { + "type": "number", + "description": "Upload timeout in seconds", + "default": 1800 + }, + "apt": { + "type": "boolean" + }, + "bundler": { + "type": "boolean" + }, + "cocoapods": { + "type": "boolean" + }, + "pip": { + "type": "boolean" + }, + "yarn": { + "type": "boolean" + }, + "ccache": { + "type": "boolean" + }, + "packages": { + "type": "boolean" + }, + "cargo": { + "type": "boolean" + }, + "npm": { + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + }, + "services": { + "oneOf": [ + { + "$ref": "#/definitions/service" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/service" + } + } + ] + }, + "git": { + "type": "object", + "properties": { + "depth": { + "oneOf": [ + { + "type": "integer", + "description": "Set the git clone depth", + "default": 50 + }, + { + "enum": [false] + } + ] + }, + "quiet": { + "type": "boolean", + "description": "Travis CI clones repositories without the quiet flag (-q) by default. Enabling the quiet flag can be useful if you're trying to avoid log file size limits or even if you just don't need to include it." + }, + "submodules": { + "type": "boolean", + "description": "Control whether submodules should be cloned" + }, + "lfs_skip_smudge": { + "type": "boolean", + "description": "Skip fetching the git-lfs files during the initial git clone (equivalent to git lfs smudge --skip)," + }, + "clone": { + "type": "boolean", + "description": "In some work flows, like build stages, it might be beneficial to skip the automatic git clone step." + }, + "sparse_checkout": { + "$ref": "#/definitions/nonEmptyString", + "description": "Is a path to the existing file in the current repository with data you'd like to put into $GIT_DIR/info/sparse-checkout file of format described in Git documentation." + }, + "autocrlf": { + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "string", + "enum": ["input"] + } + ], + "description": "Specify handling of line endings when cloning repository" + } + }, + "additionalProperties": false + }, + "branches": { + "type": "object", + "description": "Specify which branches to build", + "properties": { + "except": { + "type": "array", + "items": { + "type": "string" + } + }, + "only": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "env": { + "oneOf": [ + { + "$ref": "#/definitions/envVars" + }, + { + "type": "object", + "properties": { + "global": { + "$ref": "#/definitions/envVars" + }, + "matrix": { + "$ref": "#/definitions/envVars" + }, + "jobs": { + "$ref": "#/definitions/envVars" + } + }, + "additionalProperties": false + } + ] + }, + "before_install": { + "$ref": "#/definitions/step" + }, + "install": { + "$ref": "#/definitions/step" + }, + "before_script": { + "$ref": "#/definitions/step" + }, + "script": { + "$ref": "#/definitions/step" + }, + "before_cache": { + "$ref": "#/definitions/step" + }, + "after_success": { + "$ref": "#/definitions/step" + }, + "after_failure": { + "$ref": "#/definitions/step" + }, + "before_deploy": { + "$ref": "#/definitions/step" + }, + "deploy": { + "oneOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/deployment" + } + }, + { + "$ref": "#/definitions/deployment" + } + ] + }, + "after_deploy": { + "$ref": "#/definitions/step" + }, + "after_script": { + "$ref": "#/definitions/step" + } + } + }, + "deployment": { + "allOf": [ + { + "type": "object", + "properties": { + "on": { + "type": "object", + "properties": { + "tags": { + "description": "Tell Travis CI to only deploy on tagged commits", + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "string" + } + ] + }, + "branch": { + "type": "string" + }, + "all_branches": { + "type": "boolean" + }, + "skip_cleanup": { + "type": "boolean", + "description": "After your tests ran and before the release, Travis CI will clean up any additional files and changes you made. Maybe that is not what you want, as you might generate some artifacts that are supposed to be released, too." + }, + "repo": { + "type": "string" + }, + "condition": { + "type": "string", + "description": "if [[ ]]; then ; fi" + } + } + } + } + }, + { + "oneOf": [ + { + "type": "object", + "properties": { + "provider": { + "enum": ["script"] + }, + "script": { + "type": "string" + } + }, + "required": ["provider", "script"] + }, + { + "type": "object", + "properties": { + "provider": { + "enum": ["npm"] + }, + "email": { + "$ref": "#/definitions/possiblySecretString" + }, + "api_key": { + "$ref": "#/definitions/possiblySecretString" + }, + "api_token": { + "$ref": "#/definitions/possiblySecretString" + }, + "tag": { + "type": "string" + } + }, + "oneOf": [ + { + "required": ["provider", "email", "api_key"] + }, + { + "required": ["provider", "email", "api_token"] + } + ] + }, + { + "type": "object", + "properties": { + "provider": { + "enum": ["surge"] + }, + "project": { + "type": "string" + }, + "domain": { + "type": "string" + } + }, + "required": ["provider"] + }, + { + "type": "object", + "properties": { + "provider": { + "enum": ["releases"] + }, + "api_key": { + "$ref": "#/definitions/possiblySecretString" + }, + "user": { + "$ref": "#/definitions/possiblySecretString" + }, + "password": { + "$ref": "#/definitions/possiblySecretString" + }, + "file": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "file_glob": { + "type": "boolean" + }, + "overwrite": { + "type": "boolean", + "description": "If you need to overwrite existing files" + } + }, + "required": ["provider"] + }, + { + "type": "object", + "description": "deploy to heroku, to see https://docs.travis-ci.com/user/deployment/heroku/", + "properties": { + "provider": { + "enum": ["heroku"] + }, + "api_key": { + "description": "heroku auth token", + "anyOf": [ + { + "$ref": "#/definitions/possiblySecretString" + }, + { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/possiblySecretString" + } + } + ] + }, + "app": { + "oneOf": [ + { + "type": "string", + "description": "Deploy master branch to heroku app" + }, + { + "type": "object", + "description": "Deploy the different branch to the different heroku app", + "additionalProperties": { + "type": "string" + } + } + ] + }, + "run": { + "description": "to run a command on Heroku after a successful deploy", + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "skip_cleanup": { + "type": "boolean", + "description": "Travis CI default will clean up any additional files and changes you made, you can by it to skip the clean up" + }, + "strategy": { + "enum": ["api", "git"], + "description": "Travis CI supports different mechanisms for deploying to Heroku: api is default" + } + }, + "required": ["provider", "api_key"] + }, + { + "type": "object", + "properties": { + "provider": { + "enum": ["s3"] + }, + "access_key_id": { + "$ref": "#/definitions/possiblySecretString" + }, + "secret_access_key": { + "$ref": "#/definitions/possiblySecretString" + }, + "bucket": { + "type": "string" + }, + "region": { + "type": "string" + }, + "skip_cleanup": { + "type": "boolean", + "default": false + }, + "acl": { + "enum": [ + "private", + "public_read", + "public_read_write", + "authenticated_read", + "bucket_owner_read", + "bucket_owner_full_control" + ] + }, + "local_dir": { + "type": "string" + }, + "upload-dir": { + "type": "string" + }, + "detect_encoding": { + "type": "boolean", + "default": false + }, + "default_text_charset": { + "type": "string" + }, + "cache_control": { + "type": "string" + }, + "expires": { + "type": "string" + }, + "endpoint": { + "type": "string" + } + }, + "required": [ + "provider", + "access_key_id", + "secret_access_key", + "bucket" + ] + }, + { + "type": "object", + "properties": { + "provider": { + "type": "string", + "not": { + "enum": [ + "script", + "npm", + "surge", + "releases", + "heroku", + "s3" + ] + } + } + }, + "required": ["provider"] + } + ] + } + ] + }, + "notificationObject": { + "webhooks": { + "type": "object", + "additionalProperties": false, + "properties": { + "disabled": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "urls": { + "oneOf": [ + { + "type": "string", + "format": "uri" + }, + { + "$ref": "#/definitions/secretString" + }, + { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "oneOf": [ + { + "type": "string", + "format": "uri" + }, + { + "$ref": "#/definitions/secretString" + } + ] + } + } + ] + }, + "on_success": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + }, + "on_failure": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + }, + "on_start": { + "$ref": "#/definitions/notificationFrequency", + "default": "never" + }, + "on_cancel": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + }, + "on_error": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + } + } + }, + "slack": { + "type": "object", + "additionalProperties": false, + "properties": { + "disabled": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "rooms": { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "$ref": "#/definitions/slackRoom" + } + }, + "on_pull_requests": { + "type": "boolean" + }, + "template": { + "$ref": "#/definitions/notRequiredNonEmptyStringOrArrayOfNonEmptyStrings" + }, + "on_success": { + "$ref": "#/definitions/notificationFrequency" + }, + "on_failure": { + "$ref": "#/definitions/notificationFrequency" + }, + "on_start": { + "$ref": "#/definitions/notificationFrequency", + "default": "never" + }, + "on_cancel": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + }, + "on_error": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + } + } + }, + "email": { + "type": "object", + "additionalProperties": false, + "properties": { + "disabled": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "recipients": { + "$ref": "#/definitions/possiblySecretStringOrPossiblySecretStringTypeArrayUnique" + }, + "on_success": { + "$ref": "#/definitions/notificationFrequency", + "default": "change" + }, + "on_failure": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + }, + "on_start": { + "$ref": "#/definitions/notificationFrequency", + "default": "never" + }, + "on_cancel": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + }, + "on_error": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + } + } + }, + "irc": { + "type": "object", + "additionalProperties": false, + "properties": { + "disabled": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "channels": { + "$ref": "#/definitions/possiblySecretStringOrPossiblySecretStringTypeArrayUnique" + }, + "channel_key": { + "$ref": "#/definitions/possiblySecretString" + }, + "nick": { + "$ref": "#/definitions/nonEmptyString" + }, + "password": { + "$ref": "#/definitions/possiblySecretString" + }, + "template": { + "$ref": "#/definitions/notRequiredNonEmptyStringOrArrayOfNonEmptyStrings" + }, + "on_success": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + }, + "on_failure": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + }, + "on_start": { + "$ref": "#/definitions/notificationFrequency", + "default": "never" + }, + "on_cancel": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + }, + "on_error": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + }, + "skip_join": { + "type": "boolean" + }, + "use_notice": { + "type": "boolean" + } + } + }, + "pushover": { + "type": "object", + "additionalProperties": false, + "properties": { + "disabled": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "api_key": { + "$ref": "#/definitions/possiblySecretString" + }, + "users": { + "$ref": "#/definitions/possiblySecretStringOrPossiblySecretStringTypeArrayUnique" + }, + "template": { + "$ref": "#/definitions/notRequiredNonEmptyStringOrArrayOfNonEmptyStrings" + }, + "on_success": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + }, + "on_failure": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + }, + "on_start": { + "$ref": "#/definitions/notificationFrequency", + "default": "never" + }, + "on_cancel": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + }, + "on_error": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + } + } + }, + "campfire": { + "type": "object", + "additionalProperties": false, + "properties": { + "disabled": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "rooms": { + "$ref": "#/definitions/possiblySecretStringOrPossiblySecretStringTypeArrayUnique" + }, + "template": { + "$ref": "#/definitions/nonEmptyStringOrArrayOfNonEmptyStrings" + }, + "on_success": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + }, + "on_failure": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + }, + "on_start": { + "$ref": "#/definitions/notificationFrequency", + "default": "never" + }, + "on_cancel": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + }, + "on_error": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + } + } + }, + "flowdock": { + "type": "object", + "additionalProperties": false, + "properties": { + "disabled": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "api_token": { + "$ref": "#/definitions/nonEmptyString" + }, + "on_success": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + }, + "on_failure": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + }, + "on_start": { + "$ref": "#/definitions/notificationFrequency", + "default": "never" + }, + "on_cancel": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + }, + "on_error": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + } + } + }, + "hipchat": { + "type": "object", + "additionalProperties": false, + "properties": { + "disabled": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "notify": { + "type": "boolean" + }, + "on_pull_requests": { + "type": "boolean" + }, + "rooms": { + "$ref": "#/definitions/possiblySecretStringOrPossiblySecretStringTypeArrayUnique" + }, + "format": { + "enum": ["html", "text"] + }, + "template": { + "$ref": "#/definitions/nonEmptyStringOrArrayOfNonEmptyStrings" + }, + "on_success": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + }, + "on_failure": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + }, + "on_start": { + "$ref": "#/definitions/notificationFrequency", + "default": "never" + }, + "on_cancel": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + }, + "on_error": { + "$ref": "#/definitions/notificationFrequency", + "default": "always" + } + } + } + }, + "import": { + "anyOf": [ + { + "type": "object", + "additionalProperties": false, + "required": ["source"], + "properties": { + "source": { + "$ref": "#/definitions/nonEmptyString", + "description": "The source to import build config from" + }, + "mode": { + "type": "string", + "enum": [ + "merge", + "deep_merge", + "deep_merge_append", + "deep_merge_prepend" + ], + "description": "How to merge the imported config into the target config (defaults to deep_merge_append)" + }, + "if": { + "$ref": "#/definitions/nonEmptyString", + "description": "Specifies a condition for the import" + } + } + }, + { + "$ref": "#/definitions/nonEmptyString" + } + ] + } + }, + "id": "https://json.schemastore.org/travis.json", + "title": "JSON schema for Travis CI configuration files" +} diff --git a/src/check_jsonschema/builtin_schemas/vendor/woodpecker-ci.json b/src/check_jsonschema/builtin_schemas/vendor/woodpecker-ci.json index 2c992e6dc..e1fd411f6 100644 --- a/src/check_jsonschema/builtin_schemas/vendor/woodpecker-ci.json +++ b/src/check_jsonschema/builtin_schemas/vendor/woodpecker-ci.json @@ -98,7 +98,7 @@ ] }, "clone_settings": { - "description": "Change the settings of your clone plugin. Read more: https://woodpecker-ci.org/plugins/Git%20Clone", + "description": "Change the settings of your clone plugin. Read more: https://woodpecker-ci.org/plugins/git-clone", "type": "object", "properties": { "depth": { diff --git a/src/check_jsonschema/cachedownloader.py b/src/check_jsonschema/cachedownloader.py index 41cf2aae3..86aad0e62 100644 --- a/src/check_jsonschema/cachedownloader.py +++ b/src/check_jsonschema/cachedownloader.py @@ -1,5 +1,6 @@ from __future__ import annotations +import calendar import contextlib import hashlib import io @@ -43,7 +44,7 @@ def _resolve_cache_dir(dirname: str) -> str | None: def _lastmod_from_response(response: requests.Response) -> float: try: - return time.mktime( + return calendar.timegm( time.strptime(response.headers["last-modified"], _LASTMOD_FMT) ) # OverflowError: time outside of platform-specific bounds diff --git a/src/check_jsonschema/cli/param_types.py b/src/check_jsonschema/cli/param_types.py index 41ae6846c..66bce92de 100644 --- a/src/check_jsonschema/cli/param_types.py +++ b/src/check_jsonschema/cli/param_types.py @@ -1,5 +1,6 @@ from __future__ import annotations +import functools import importlib import os import re @@ -10,6 +11,18 @@ import jsonschema from click._compat import open_stream +C = t.TypeVar("C", bound=t.Callable[..., t.Any]) + + +def _shim_click_8_2_get_metavar(func: C) -> C: + @functools.wraps(func) + def wrapper(*args: t.Any, **kwargs: t.Any) -> None: + if len(args) > 1 or "ctx" in kwargs: + return func(*args, **kwargs) + return func(*args, ctx=None, **kwargs) + + return wrapper # type: ignore[return-value] + class CommaDelimitedList(click.ParamType): name = "comma_delimited" @@ -24,7 +37,8 @@ def __init__( self.convert_values = convert_values self.choices = list(choices) if choices is not None else None - def get_metavar(self, param: click.Parameter) -> str: + @_shim_click_8_2_get_metavar + def get_metavar(self, param: click.Parameter, ctx: click.Context | None) -> str: if self.choices is not None: return "{" + ",".join(self.choices) + "}" return "TEXT,TEXT,..." diff --git a/src/check_jsonschema/formats/__init__.py b/src/check_jsonschema/formats/__init__.py index 2308c4313..55989c6a7 100644 --- a/src/check_jsonschema/formats/__init__.py +++ b/src/check_jsonschema/formats/__init__.py @@ -50,11 +50,16 @@ def __init__( def get_base_format_checker(schema_dialect: str | None) -> jsonschema.FormatChecker: + # mypy does not consider a class whose instances match a protocol to match + # `type[$PROTOCOL]` so this is considered a mismatch + default_validator_cls: type[jsonschema.Validator] = ( + jsonschema.Draft202012Validator # type:ignore[assignment] + ) # resolve the dialect, if given, to a validator class # default to the latest draft validator_class = jsonschema.validators.validator_for( {} if schema_dialect is None else {"$schema": schema_dialect}, - default=jsonschema.Draft202012Validator, + default=default_validator_cls, ) return validator_class.FORMAT_CHECKER diff --git a/src/check_jsonschema/formats/implementations/rfc3339.py b/src/check_jsonschema/formats/implementations/rfc3339.py index 03a073f7e..05ccf391c 100644 --- a/src/check_jsonschema/formats/implementations/rfc3339.py +++ b/src/check_jsonschema/formats/implementations/rfc3339.py @@ -57,7 +57,7 @@ def validate(date_str: object) -> bool: """Validate a string as a RFC3339 date-time.""" if not isinstance(date_str, str): - return False + return True if not RFC3339_REGEX.match(date_str): return False diff --git a/src/check_jsonschema/schema_loader/main.py b/src/check_jsonschema/schema_loader/main.py index e056389a9..a55756d21 100644 --- a/src/check_jsonschema/schema_loader/main.py +++ b/src/check_jsonschema/schema_loader/main.py @@ -187,7 +187,11 @@ def _get_validator( validator_cls = _extend_with_pattern_implementation(validator_cls, regex_impl) # now that we know it's safe to try to create the validator instance, do it - validator = validator_cls( + # + # TODO: remove type ignore + # mypy flags this because of an incorrect signature in typeshed + # see: https://github.com/python/typeshed/pull/14327 + validator = validator_cls( # type: ignore[call-arg] schema, registry=reference_registry, format_checker=format_checker, diff --git a/tests/acceptance/conftest.py b/tests/acceptance/conftest.py index e47b088a1..369eee467 100644 --- a/tests/acceptance/conftest.py +++ b/tests/acceptance/conftest.py @@ -1,7 +1,6 @@ import textwrap import pytest -from click.testing import CliRunner from check_jsonschema import main as cli_main @@ -16,11 +15,6 @@ def _render_result(result): """ -@pytest.fixture -def cli_runner(): - return CliRunner(mix_stderr=False) - - @pytest.fixture def run_line(cli_runner): def func(cli_args, *args, **kwargs): diff --git a/tests/conftest.py b/tests/conftest.py index b0022a8d3..e8fc84176 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,9 +1,20 @@ +import inspect import os import pathlib import sys import pytest import responses +from click.testing import CliRunner + + +@pytest.fixture +def cli_runner(): + # compatibility for click==8.2.0 vs click<=8.1 + sig = inspect.signature(CliRunner) + if "mix_stderr" in sig.parameters: + return CliRunner(mix_stderr=False) + return CliRunner() @pytest.fixture(autouse=True) diff --git a/tests/example-files/explicit-schema/positive/date-format/instance.json b/tests/example-files/explicit-schema/positive/date-format/instance.json new file mode 100644 index 000000000..3c2359f00 --- /dev/null +++ b/tests/example-files/explicit-schema/positive/date-format/instance.json @@ -0,0 +1 @@ +{"some_date": null} diff --git a/tests/example-files/explicit-schema/positive/date-format/schema.json b/tests/example-files/explicit-schema/positive/date-format/schema.json new file mode 100644 index 000000000..de437857f --- /dev/null +++ b/tests/example-files/explicit-schema/positive/date-format/schema.json @@ -0,0 +1,12 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "some_date": { + "type": ["string", "null"], + "format": "date-time" + } + }, + "required": ["some_date"], + "additionalProperties": false +} diff --git a/tests/unit/cli/conftest.py b/tests/unit/cli/conftest.py deleted file mode 100644 index 98a793137..000000000 --- a/tests/unit/cli/conftest.py +++ /dev/null @@ -1,7 +0,0 @@ -import pytest -from click.testing import CliRunner - - -@pytest.fixture -def runner() -> CliRunner: - return CliRunner(mix_stderr=False) diff --git a/tests/unit/cli/test_callbacks.py b/tests/unit/cli/test_callbacks.py index b2813144d..56120c13a 100644 --- a/tests/unit/cli/test_callbacks.py +++ b/tests/unit/cli/test_callbacks.py @@ -22,23 +22,23 @@ def mycli(bar, baz): print(baz) -def test_deprecation_warning_callback_on_missing_opts(runner): - result = runner.invoke(mycli, []) +def test_deprecation_warning_callback_on_missing_opts(cli_runner): + result = cli_runner.invoke(mycli, []) assert result.exit_code == 0 assert result.stdout == "False\n" -def test_deprecation_warning_callback_on_flag(runner): +def test_deprecation_warning_callback_on_flag(cli_runner): with pytest.warns( UserWarning, match="'--bar' is deprecated and will be removed in a future release", ): - result = runner.invoke(mycli, ["--bar"], catch_exceptions=False) + result = cli_runner.invoke(mycli, ["--bar"], catch_exceptions=False) assert result.exit_code == 0, result.stdout assert result.stdout == "True\n" -def test_deprecation_warning_callback_added_message(runner): +def test_deprecation_warning_callback_added_message(cli_runner): with pytest.warns( UserWarning, match=( @@ -46,6 +46,6 @@ def test_deprecation_warning_callback_added_message(runner): "Use --frob instead!" ), ): - result = runner.invoke(mycli, ["--baz", "ok"], catch_exceptions=False) + result = cli_runner.invoke(mycli, ["--baz", "ok"], catch_exceptions=False) assert result.exit_code == 0, result.stdout assert result.stdout == "False\nok\n" diff --git a/tests/unit/cli/test_parse.py b/tests/unit/cli/test_parse.py index 3b486f1b6..e7846220c 100644 --- a/tests/unit/cli/test_parse.py +++ b/tests/unit/cli/test_parse.py @@ -67,14 +67,16 @@ def test_parse_result_set_schema( assert args.schema_path is None -def test_requires_some_args(runner): - result = runner.invoke(cli_main, []) +def test_requires_some_args(cli_runner): + result = cli_runner.invoke(cli_main, []) assert result.exit_code == 2 -def test_schemafile_and_instancefile(runner, mock_parse_result, in_tmp_dir, tmp_path): +def test_schemafile_and_instancefile( + cli_runner, mock_parse_result, in_tmp_dir, tmp_path +): touch_files(tmp_path, "foo.json") - runner.invoke(cli_main, ["--schemafile", "schema.json", "foo.json"]) + cli_runner.invoke(cli_main, ["--schemafile", "schema.json", "foo.json"]) assert mock_parse_result.schema_mode == SchemaLoadingMode.filepath assert mock_parse_result.schema_path == "schema.json" assert isinstance(mock_parse_result.instancefiles, tuple) @@ -83,25 +85,27 @@ def test_schemafile_and_instancefile(runner, mock_parse_result, in_tmp_dir, tmp_ assert tuple(f.name for f in mock_parse_result.instancefiles) == ("foo.json",) -def test_requires_at_least_one_instancefile(runner): - result = runner.invoke(cli_main, ["--schemafile", "schema.json"]) +def test_requires_at_least_one_instancefile(cli_runner): + result = cli_runner.invoke(cli_main, ["--schemafile", "schema.json"]) assert result.exit_code == 2 -def test_requires_schemafile(runner, in_tmp_dir, tmp_path): +def test_requires_schemafile(cli_runner, in_tmp_dir, tmp_path): touch_files(tmp_path, "foo.json") - result = runner.invoke(cli_main, ["foo.json"]) + result = cli_runner.invoke(cli_main, ["foo.json"]) assert result.exit_code == 2 -def test_no_cache_defaults_false(runner, mock_parse_result): - runner.invoke(cli_main, ["--schemafile", "schema.json", "foo.json"]) +def test_no_cache_defaults_false(cli_runner, mock_parse_result): + cli_runner.invoke(cli_main, ["--schemafile", "schema.json", "foo.json"]) assert mock_parse_result.disable_cache is False -def test_no_cache_flag_is_true(runner, mock_parse_result, in_tmp_dir, tmp_path): +def test_no_cache_flag_is_true(cli_runner, mock_parse_result, in_tmp_dir, tmp_path): touch_files(tmp_path, "foo.json") - runner.invoke(cli_main, ["--schemafile", "schema.json", "foo.json", "--no-cache"]) + cli_runner.invoke( + cli_main, ["--schemafile", "schema.json", "foo.json", "--no-cache"] + ) assert mock_parse_result.disable_cache is True @@ -133,9 +137,9 @@ def test_no_cache_flag_is_true(runner, mock_parse_result, in_tmp_dir, tmp_path): ], ], ) -def test_mutex_schema_opts(runner, cmd_args, in_tmp_dir, tmp_path): +def test_mutex_schema_opts(cli_runner, cmd_args, in_tmp_dir, tmp_path): touch_files(tmp_path, "foo.json") - result = runner.invoke(cli_main, cmd_args + ["foo.json"]) + result = cli_runner.invoke(cli_main, cmd_args + ["foo.json"]) assert result.exit_code == 2 assert "are mutually exclusive" in result.stderr @@ -148,8 +152,8 @@ def test_mutex_schema_opts(runner, cmd_args, in_tmp_dir, tmp_path): ["-h"], ], ) -def test_supports_common_option(runner, cmd_args): - result = runner.invoke(cli_main, cmd_args) +def test_supports_common_option(cli_runner, cmd_args): + result = cli_runner.invoke(cli_main, cmd_args) assert result.exit_code == 0 @@ -157,7 +161,7 @@ def test_supports_common_option(runner, cmd_args): "setting,expect_value", [(None, None), ("1", False), ("0", False)] ) def test_no_color_env_var( - runner, monkeypatch, setting, expect_value, boxed_context, in_tmp_dir, tmp_path + cli_runner, monkeypatch, setting, expect_value, boxed_context, in_tmp_dir, tmp_path ): if setting is None: monkeypatch.delenv("NO_COLOR", raising=False) @@ -165,7 +169,7 @@ def test_no_color_env_var( monkeypatch.setenv("NO_COLOR", setting) touch_files(tmp_path, "foo.json") - runner.invoke(cli_main, ["--schemafile", "schema.json", "foo.json"]) + cli_runner.invoke(cli_main, ["--schemafile", "schema.json", "foo.json"]) assert boxed_context.ref.color == expect_value @@ -174,22 +178,22 @@ def test_no_color_env_var( [(None, None), ("auto", None), ("always", True), ("never", False)], ) def test_color_cli_option( - runner, setting, expected_value, boxed_context, in_tmp_dir, tmp_path + cli_runner, setting, expected_value, boxed_context, in_tmp_dir, tmp_path ): args = ["--schemafile", "schema.json", "foo.json"] if setting: args.extend(("--color", setting)) touch_files(tmp_path, "foo.json") - runner.invoke(cli_main, args) + cli_runner.invoke(cli_main, args) assert boxed_context.ref.color == expected_value def test_no_color_env_var_overrides_cli_option( - runner, monkeypatch, mock_cli_exec, boxed_context, in_tmp_dir, tmp_path + cli_runner, monkeypatch, mock_cli_exec, boxed_context, in_tmp_dir, tmp_path ): monkeypatch.setenv("NO_COLOR", "1") touch_files(tmp_path, "foo.json") - runner.invoke( + cli_runner.invoke( cli_main, ["--color=always", "--schemafile", "schema.json", "foo.json"] ) assert boxed_context.ref.color is False @@ -200,11 +204,11 @@ def test_no_color_env_var_overrides_cli_option( [("auto", 0), ("always", 0), ("never", 0), ("anything_else", 2)], ) def test_color_cli_option_is_choice( - runner, setting, expected_value, in_tmp_dir, tmp_path + cli_runner, setting, expected_value, in_tmp_dir, tmp_path ): touch_files(tmp_path, "foo.json") assert ( - runner.invoke( + cli_runner.invoke( cli_main, ["--color", setting, "--schemafile", "schema.json", "foo.json"], ).exit_code @@ -212,9 +216,11 @@ def test_color_cli_option_is_choice( ) -def test_formats_default_to_enabled(runner, mock_parse_result, in_tmp_dir, tmp_path): +def test_formats_default_to_enabled( + cli_runner, mock_parse_result, in_tmp_dir, tmp_path +): touch_files(tmp_path, "foo.json") - runner.invoke(cli_main, ["--schemafile", "schema.json", "foo.json"]) + cli_runner.invoke(cli_main, ["--schemafile", "schema.json", "foo.json"]) assert mock_parse_result.disable_all_formats is False assert mock_parse_result.disable_formats == () @@ -232,10 +238,10 @@ def test_formats_default_to_enabled(runner, mock_parse_result, in_tmp_dir, tmp_p ), ) def test_disable_selected_formats( - runner, mock_parse_result, addargs, in_tmp_dir, tmp_path + cli_runner, mock_parse_result, addargs, in_tmp_dir, tmp_path ): touch_files(tmp_path, "foo.json") - runner.invoke( + cli_runner.invoke( cli_main, [ "--schemafile", @@ -263,10 +269,12 @@ def test_disable_selected_formats( ["--disable-formats", "*,email"], ), ) -def test_disable_all_formats(runner, mock_parse_result, addargs, in_tmp_dir, tmp_path): +def test_disable_all_formats( + cli_runner, mock_parse_result, addargs, in_tmp_dir, tmp_path +): touch_files(tmp_path, "foo.json") # this should be an override, with or without other args - runner.invoke( + cli_runner.invoke( cli_main, [ "--schemafile", @@ -279,13 +287,13 @@ def test_disable_all_formats(runner, mock_parse_result, addargs, in_tmp_dir, tmp def test_can_specify_custom_validator_class( - runner, mock_parse_result, mock_module, in_tmp_dir, tmp_path + cli_runner, mock_parse_result, mock_module, in_tmp_dir, tmp_path ): mock_module("foo.py", "class MyValidator: pass") import foo touch_files(tmp_path, "foo.json") - result = runner.invoke( + result = cli_runner.invoke( cli_main, [ "--schemafile", @@ -303,7 +311,7 @@ def test_can_specify_custom_validator_class( "failmode", ("syntax", "import", "attr", "function", "non_callable") ) def test_custom_validator_class_fails( - runner, mock_parse_result, mock_module, failmode, in_tmp_dir, tmp_path + cli_runner, mock_parse_result, mock_module, failmode, in_tmp_dir, tmp_path ): mock_module( "foo.py", @@ -331,7 +339,7 @@ def validator_func(*args, **kwargs): raise NotImplementedError touch_files(tmp_path, "foo.json") - result = runner.invoke( + result = cli_runner.invoke( cli_main, ["--schemafile", "schema.json", "foo.json", "--validator-class", arg], ) diff --git a/tests/unit/formats/test_rfc3339.py b/tests/unit/formats/test_rfc3339.py index 87f61580e..84c096b5c 100644 --- a/tests/unit/formats/test_rfc3339.py +++ b/tests/unit/formats/test_rfc3339.py @@ -22,7 +22,6 @@ def test_simple_positive_cases(datestr): @pytest.mark.parametrize( "datestr", ( - object(), "2018-12-31T23:59:59", "2018-12-31T23:59:59+00:00Z", "2018-12-31 23:59:59", diff --git a/tests/unit/test_cachedownloader.py b/tests/unit/test_cachedownloader.py index 1a0949aed..175dbf83d 100644 --- a/tests/unit/test_cachedownloader.py +++ b/tests/unit/test_cachedownloader.py @@ -11,17 +11,19 @@ CacheDownloader, FailedDownloadError, _cache_hit, + _lastmod_from_response, url_to_cache_filename, ) DEFAULT_RESPONSE_URL = "https://example.com/schema1.json" +DEFAULT_LASTMOD = "Sun, 01 Jan 2000 00:00:01 GMT" def add_default_response(): responses.add( "GET", DEFAULT_RESPONSE_URL, - headers={"Last-Modified": "Sun, 01 Jan 2000 00:00:01 GMT"}, + headers={"Last-Modified": DEFAULT_LASTMOD}, json={}, match_querystring=None, ) @@ -274,10 +276,10 @@ def test_cachedownloader_handles_bad_lastmod_header( elif failure_mode == "time_overflow": add_default_response() - def fake_mktime(*args): + def fake_timegm(*args): raise OverflowError("uh-oh") - monkeypatch.setattr("time.mktime", fake_mktime) + monkeypatch.setattr("calendar.timegm", fake_timegm) else: raise NotImplementedError @@ -341,3 +343,37 @@ def dummy_validate_bytes(data): assert fp.read() == b"{}" # assert that the validator was not run assert validator_ran is False + + +def test_lastmod_from_header_uses_gmtime(request, monkeypatch, default_response): + """ + Regression test for https://github.com/python-jsonschema/check-jsonschema/pull/565 + + The time was converted in local time, when UTC/GMT was desired. + """ + + def final_tzset(): + time.tzset() + + request.addfinalizer(final_tzset) + + response = requests.get(DEFAULT_RESPONSE_URL, stream=True) + + with monkeypatch.context() as m: + m.setenv("TZ", "GMT0") + time.tzset() + gmt_parsed_time = _lastmod_from_response(response) + + with monkeypatch.context() as m: + m.setenv("TZ", "EST5") + time.tzset() + est_parsed_time = _lastmod_from_response(response) + + with monkeypatch.context() as m: + m.setenv("TZ", "UTC0") + time.tzset() + utc_parsed_time = _lastmod_from_response(response) + + # assert that they all match + assert gmt_parsed_time == utc_parsed_time + assert gmt_parsed_time == est_parsed_time diff --git a/tests/unit/test_lazy_file_handling.py b/tests/unit/test_lazy_file_handling.py index dd69eac60..030c975eb 100644 --- a/tests/unit/test_lazy_file_handling.py +++ b/tests/unit/test_lazy_file_handling.py @@ -2,21 +2,15 @@ import platform import pytest -from click.testing import CliRunner from check_jsonschema.cli.main_command import build_checker from check_jsonschema.cli.main_command import main as cli_main -@pytest.fixture -def runner() -> CliRunner: - return CliRunner(mix_stderr=False) - - @pytest.mark.skipif( platform.system() != "Linux", reason="test requires /proc/self/ mechanism" ) -def test_open_file_usage_never_exceeds_1000(runner, monkeypatch, tmp_path): +def test_open_file_usage_never_exceeds_1000(cli_runner, monkeypatch, tmp_path): schema_path = tmp_path / "schema.json" schema_path.write_text("{}") @@ -37,7 +31,7 @@ def fake_execute(argv): checker = build_checker(argv) monkeypatch.setattr("check_jsonschema.cli.main_command.execute", fake_execute) - res = runner.invoke(cli_main, args) + res = cli_runner.invoke(cli_main, args) assert res.exit_code == 0, res.stderr assert checker is not None