././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.919612 check_jsonschema-0.34.0/0000755000175100017510000000000015062662127014542 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/.pre-commit-hooks.yaml0000644000175100017510000002766315062662115020714 0ustar00runnerrunner- id: check-jsonschema name: Validate files with jsonschema description: 'Validate JSON or YAML files against a jsonschema on disk or fetched via HTTP(S)' entry: check-jsonschema language: python types_or: [json,yaml] # we need types_or support minimum_pre_commit_version: 2.9.0 - id: check-metaschema name: Validate JSON Schema files description: 'Validate JSON Schema files against their matching metaschema' entry: check-jsonschema --check-metaschema language: python types_or: [json,yaml] # we need types_or support minimum_pre_commit_version: 2.9.0 # --AUTOGEN_HOOKS_START-- # # this hook is autogenerated from a script # to modify this hook, update `src/check_jsonschema/catalog.py` # and run `make generate-hooks` or `tox run -e generate-hooks-config` - id: check-azure-pipelines name: Validate Azure Pipelines description: 'Validate Azure Pipelines config against the schema provided by Microsoft' entry: check-jsonschema --builtin-schema vendor.azure-pipelines --data-transform azure-pipelines --regex-variant nonunicode language: python files: ^(\.)?azure-pipelines\.(yml|yaml)$ types: [yaml] # this hook is autogenerated from a script # to modify this hook, update `src/check_jsonschema/catalog.py` # and run `make generate-hooks` or `tox run -e generate-hooks-config` - id: check-bamboo-spec name: Validate Bamboo Specs description: 'Validate Bamboo Specs against the schema provided by SchemaStore' entry: check-jsonschema --builtin-schema vendor.bamboo-spec language: python files: ^bamboo-specs/.*\.(yml|yaml)$ types: [yaml] # this hook is autogenerated from a script # to modify this hook, update `src/check_jsonschema/catalog.py` # and run `make generate-hooks` or `tox run -e generate-hooks-config` - id: check-bitbucket-pipelines name: Validate Bitbucket Pipelines description: 'Validate Bitbucket Pipelines against the schema provided by SchemaStore' entry: check-jsonschema --builtin-schema vendor.bitbucket-pipelines language: python files: bitbucket-pipelines\.(yml|yaml)$ types: [yaml] # this hook is autogenerated from a script # to modify this hook, update `src/check_jsonschema/catalog.py` # and run `make generate-hooks` or `tox run -e generate-hooks-config` - id: check-buildkite name: Validate Buildkite Pipelines description: 'Validate Buildkite Pipelines against the schema provided by Buildkite' entry: check-jsonschema --builtin-schema vendor.buildkite language: python files: > (?x)^( buildkite\.(yml|yaml|json)| buildkite\.(.+)\.(yml|yaml|json)| (.*/)?\.buildkite/pipeline\.(yml|yaml|json)| (.*/)?\.buildkite/pipeline\.(.+)\.(yml|yaml|json) )$ types_or: [json,yaml] # this hook is autogenerated from a script # to modify this hook, update `src/check_jsonschema/catalog.py` # and run `make generate-hooks` or `tox run -e generate-hooks-config` - id: check-circle-ci name: Validate CircleCI config description: 'Validate CircleCI config against the schema provided by SchemaStore' entry: check-jsonschema --builtin-schema vendor.circle-ci language: python files: ^\.circleci/config\.(yml|yaml)$ # this hook is autogenerated from a script # to modify this hook, update `src/check_jsonschema/catalog.py` # and run `make generate-hooks` or `tox run -e generate-hooks-config` - id: check-cloudbuild name: Validate Google Cloud Build config description: 'Validate Google Cloud Build config against the schema provided by SchemaStore' entry: check-jsonschema --builtin-schema vendor.cloudbuild language: python files: ^cloudbuild\.(yml|yaml|json)$ types_or: [json,yaml] # this hook is autogenerated from a script # to modify this hook, update `src/check_jsonschema/catalog.py` # and run `make generate-hooks` or `tox run -e generate-hooks-config` - id: check-codecov name: Validate Codecov config description: 'Validate Codecov config against the schema provided by SchemaStore' entry: check-jsonschema --builtin-schema vendor.codecov language: python files: > (?x)^( ^((\.github|dev)/)?\.?codecov\.ya?ml$ )$ types: [yaml] # this hook is autogenerated from a script # to modify this hook, update `src/check_jsonschema/catalog.py` # and run `make generate-hooks` or `tox run -e generate-hooks-config` - id: check-compose-spec name: Validate Docker Compose files description: 'Validate Docker Compose files against the schema provided by SchemaStore' entry: check-jsonschema --builtin-schema vendor.compose-spec language: python files: > (?x)^( ([^/]*/)*docker-compose(\.[\.a-zA-Z0-9_-]*)*\.(yml|yaml)| ([^/]*/)*compose(\.[\.a-zA-Z0-9_-]*)*\.(yml|yaml) )$ types: [yaml] # this hook is autogenerated from a script # to modify this hook, update `src/check_jsonschema/catalog.py` # and run `make generate-hooks` or `tox run -e generate-hooks-config` - id: check-dependabot name: Validate Dependabot Config (v2) description: 'Validate Dependabot Config (v2) against the schema provided by SchemaStore' entry: check-jsonschema --builtin-schema vendor.dependabot language: python files: ^\.github/dependabot\.(yml|yaml)$ types: [yaml] # this hook is autogenerated from a script # to modify this hook, update `src/check_jsonschema/catalog.py` # and run `make generate-hooks` or `tox run -e generate-hooks-config` - id: check-drone-ci name: Validate Drone-CI Config description: 'Validate Drone-CI Config against the schema provided by SchemaStore' entry: check-jsonschema --builtin-schema vendor.drone-ci language: python files: ^\.drone\.yml$ types: [yaml] # this hook is autogenerated from a script # to modify this hook, update `src/check_jsonschema/catalog.py` # and run `make generate-hooks` or `tox run -e generate-hooks-config` - id: check-github-actions name: Validate GitHub Actions description: 'Validate GitHub Actions against the schema provided by SchemaStore' entry: check-jsonschema --builtin-schema vendor.github-actions language: python files: > (?x)^( action\.(yml|yaml)| \.github/actions/(.+/)?action\.(yml|yaml) )$ types: [yaml] # this hook is autogenerated from a script # to modify this hook, update `src/check_jsonschema/catalog.py` # and run `make generate-hooks` or `tox run -e generate-hooks-config` - id: check-github-issue-config name: Validate GitHub issue config description: 'Validate GitHub issue config against the schema provided by SchemaStore' entry: check-jsonschema --builtin-schema vendor.github-issue-config language: python files: > (?x)^( ^\.github/ISSUE_TEMPLATE/config\.yml$ )$ types: [yaml] # this hook is autogenerated from a script # to modify this hook, update `src/check_jsonschema/catalog.py` # and run `make generate-hooks` or `tox run -e generate-hooks-config` - id: check-github-issue-forms name: Validate GitHub issue forms description: 'Validate GitHub issue forms against the schema provided by SchemaStore' entry: check-jsonschema --builtin-schema vendor.github-issue-forms language: python files: > (?x)^( ^\.github/ISSUE_TEMPLATE/(?!config\.ya?ml$).+$ )$ types: [yaml] # this hook is autogenerated from a script # to modify this hook, update `src/check_jsonschema/catalog.py` # and run `make generate-hooks` or `tox run -e generate-hooks-config` - id: check-github-workflows name: Validate GitHub Workflows description: 'Validate GitHub Workflows against the schema provided by SchemaStore' entry: check-jsonschema --builtin-schema vendor.github-workflows language: python files: ^\.github/workflows/[^/]+$ types: [yaml] # this hook is autogenerated from a script # to modify this hook, update `src/check_jsonschema/catalog.py` # and run `make generate-hooks` or `tox run -e generate-hooks-config` - id: check-gitlab-ci name: Validate GitLab CI config description: 'Validate GitLab CI config against the schema provided by SchemaStore' entry: check-jsonschema --builtin-schema vendor.gitlab-ci --data-transform gitlab-ci --regex-variant nonunicode language: python files: ^.*\.gitlab-ci\.yml$ types: [yaml] # this hook is autogenerated from a script # to modify this hook, update `src/check_jsonschema/catalog.py` # and run `make generate-hooks` or `tox run -e generate-hooks-config` - id: check-meltano name: Validate Meltano Config description: 'Validate Meltano config against the schema provided by Meltano' entry: check-jsonschema --builtin-schema vendor.meltano language: python files: > (?x)^( .*meltano\.yml| meltano-manifest\.json| meltano-manifest\..+\.json )$ types_or: [json,yaml] # this hook is autogenerated from a script # to modify this hook, update `src/check_jsonschema/catalog.py` # and run `make generate-hooks` or `tox run -e generate-hooks-config` - id: check-mergify name: Validate Mergify config description: 'Validate Mergify config against the schema provided by SchemaStore' entry: check-jsonschema --builtin-schema vendor.mergify language: python files: > (?x)^( \.mergify\.yml| \.mergify/config\.yml| \.github/mergify\.yml )$ types: [yaml] # this hook is autogenerated from a script # to modify this hook, update `src/check_jsonschema/catalog.py` # and run `make generate-hooks` or `tox run -e generate-hooks-config` - id: check-readthedocs name: Validate ReadTheDocs Config description: 'Validate ReadTheDocs config against the schema provided by ReadTheDocs' entry: check-jsonschema --builtin-schema vendor.readthedocs language: python files: ^\.readthedocs\.(yml|yaml)$ types: [yaml] # this hook is autogenerated from a script # to modify this hook, update `src/check_jsonschema/catalog.py` # and run `make generate-hooks` or `tox run -e generate-hooks-config` - id: check-renovate name: Validate Renovate Config description: 'Validate Renovate config against the schema provided by Renovate (does not support renovate config in package.json)' entry: check-jsonschema --builtin-schema vendor.renovate --regex-variant nonunicode language: python files: > (?x)^( renovate\.(json|json5)| \.(github|gitlab)/renovate\.(json|json5)| \.renovaterc| \.renovaterc\.(json|json5) )$ # this hook is autogenerated from a script # to modify this hook, update `src/check_jsonschema/catalog.py` # and run `make generate-hooks` or `tox run -e generate-hooks-config` - id: check-snapcraft name: Validate snapcraft files description: 'Validate snapcraft files against the schema provided by Canonical' entry: check-jsonschema --builtin-schema vendor.snapcraft language: python files: ^(.+/)?snapcraft\.yaml$ types: [yaml] # this hook is autogenerated from a script # to modify this hook, update `src/check_jsonschema/catalog.py` # and run `make generate-hooks` or `tox run -e generate-hooks-config` - id: check-taskfile name: Validate Taskfile Config description: 'Validate Taskfile config against the schema provided by Task' entry: check-jsonschema --builtin-schema vendor.taskfile language: python files: > (?x)^( Taskfile\.(yml|yaml)| taskfile\.(yml|yaml)| Taskfile\.dist\.(yml|yaml)| taskfile\.dist\.(yml|yaml) )$ types: [yaml] # this hook is autogenerated from a script # to modify this hook, update `src/check_jsonschema/catalog.py` # and run `make generate-hooks` or `tox run -e generate-hooks-config` - id: check-travis name: Validate Travis Config description: 'Validate Travis Config against the schema provided by SchemaStore' entry: check-jsonschema --builtin-schema vendor.travis language: python files: ^\.travis\.(yml|yaml)$ types: [yaml] # this hook is autogenerated from a script # to modify this hook, update `src/check_jsonschema/catalog.py` # and run `make generate-hooks` or `tox run -e generate-hooks-config` - id: check-woodpecker-ci name: Validate Woodpecker Config description: 'Validate Woodpecker Config against the schema provided by SchemaStore' entry: check-jsonschema --builtin-schema vendor.woodpecker-ci language: python files: > (?x)^( ^\.woodpecker\.(yml|yaml)$| ^\.woodpecker/.+\.(yml|yaml)$ )$ types: [yaml] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/LICENSE0000644000175100017510000000110715062662115015543 0ustar00runnerrunner Copyright 2021, Stephen Rosen Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/MANIFEST.in0000644000175100017510000000072415062662115016300 0ustar00runnerrunner## Core Package Requirements # data files in the distribution include src/check_jsonschema/builtin_schemas/vendor/* include src/check_jsonschema/builtin_schemas/custom/*.json ## Testing Requirements # include all test files and test data files recursive-include tests *.py *.json *.yaml *.yml *.json5 *.toml # the test runner include tox.ini # needed as a data file for the tests (several tests check integrity # against this file) include .pre-commit-hooks.yaml ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.919612 check_jsonschema-0.34.0/PKG-INFO0000644000175100017510000000475615062662127015653 0ustar00runnerrunnerMetadata-Version: 2.4 Name: check-jsonschema Version: 0.34.0 Summary: A jsonschema CLI and pre-commit hook Author-email: Stephen Rosen Project-URL: Homepage, https://github.com/python-jsonschema/check-jsonschema Classifier: Development Status :: 4 - Beta Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: Apache Software License Classifier: Programming Language :: Python :: 3 Requires-Python: >=3.9 Description-Content-Type: text/markdown License-File: LICENSE Requires-Dist: tomli>=2.0; python_version < "3.11" Requires-Dist: ruamel.yaml<0.19.0,>=0.18.10 Requires-Dist: jsonschema<5.0,>=4.18.0 Requires-Dist: regress>=2024.11.1 Requires-Dist: requests<3.0 Requires-Dist: click<9,>=8 Dynamic: license-file [![pypi version](https://img.shields.io/pypi/v/check-jsonschema.svg)](https://pypi.org/project/check-jsonschema/) [![supported pythons](https://img.shields.io/pypi/pyversions/check-jsonschema.svg)](https://pypi.org/project/check-jsonschema/) [![build](https://github.com/python-jsonschema/check-jsonschema/actions/workflows/build.yaml/badge.svg)](https://github.com/python-jsonschema/check-jsonschema/actions/workflows/build.yaml) [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/python-jsonschema/check-jsonschema/main.svg)](https://results.pre-commit.ci/latest/github/python-jsonschema/check-jsonschema/main) [![readthedocs documentation](https://readthedocs.org/projects/check-jsonschema/badge/?version=stable&style=flat)](https://check-jsonschema.readthedocs.io/en/stable) # check-jsonschema A JSON Schema CLI and [pre-commit](https://pre-commit.com/) hook built on [jsonschema](https://github.com/python-jsonschema/jsonschema/). The schema may be specified as a local or remote (HTTP or HTTPS) file. Remote files are automatically downloaded and cached if possible. ## Usage `check-jsonschema` can be installed and run as a CLI tool, or via pre-commit. ### Example pre-commit config The following configuration uses `check-jsonschema` to validate Github Workflow files. ```yaml - repo: https://github.com/python-jsonschema/check-jsonschema rev: 0.34.0 hooks: - id: check-github-workflows args: ["--verbose"] ``` ### Installing and Running as a CLI Tool Install with `pipx` or `brew`: pipx install check-jsonschema or brew install check-jsonschema Then run, as in check-jsonschema --schemafile schema.json instance.json ## Documentation Full documentation can be found at https://check-jsonschema.readthedocs.io/ ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/README.md0000644000175100017510000000336415062662115016024 0ustar00runnerrunner[![pypi version](https://img.shields.io/pypi/v/check-jsonschema.svg)](https://pypi.org/project/check-jsonschema/) [![supported pythons](https://img.shields.io/pypi/pyversions/check-jsonschema.svg)](https://pypi.org/project/check-jsonschema/) [![build](https://github.com/python-jsonschema/check-jsonschema/actions/workflows/build.yaml/badge.svg)](https://github.com/python-jsonschema/check-jsonschema/actions/workflows/build.yaml) [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/python-jsonschema/check-jsonschema/main.svg)](https://results.pre-commit.ci/latest/github/python-jsonschema/check-jsonschema/main) [![readthedocs documentation](https://readthedocs.org/projects/check-jsonschema/badge/?version=stable&style=flat)](https://check-jsonschema.readthedocs.io/en/stable) # check-jsonschema A JSON Schema CLI and [pre-commit](https://pre-commit.com/) hook built on [jsonschema](https://github.com/python-jsonschema/jsonschema/). The schema may be specified as a local or remote (HTTP or HTTPS) file. Remote files are automatically downloaded and cached if possible. ## Usage `check-jsonschema` can be installed and run as a CLI tool, or via pre-commit. ### Example pre-commit config The following configuration uses `check-jsonschema` to validate Github Workflow files. ```yaml - repo: https://github.com/python-jsonschema/check-jsonschema rev: 0.34.0 hooks: - id: check-github-workflows args: ["--verbose"] ``` ### Installing and Running as a CLI Tool Install with `pipx` or `brew`: pipx install check-jsonschema or brew install check-jsonschema Then run, as in check-jsonschema --schemafile schema.json instance.json ## Documentation Full documentation can be found at https://check-jsonschema.readthedocs.io/ ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/pyproject.toml0000644000175100017510000000323415062662115017455 0ustar00runnerrunner[build-system] requires = ["setuptools>=61.2"] build-backend = "setuptools.build_meta" [dependency-groups] dev = [ "pytest<9", 'click-type-test==1.1.0;python_version>="3.10"', "coverage<8", "identify>=2.6.9", "pytest-xdist<4", "responses==0.25.7", ] docs = [ "sphinx<9", "sphinx-issues<6", "furo==2025.7.19", ] [project] name = "check-jsonschema" version = "0.34.0" description = "A jsonschema CLI and pre-commit hook" authors = [ { name = "Stephen Rosen", email = "sirosen0@gmail.com" }, ] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3", ] requires-python = ">=3.9" dependencies = [ 'tomli>=2.0;python_version<"3.11"', "ruamel.yaml>=0.18.10,<0.19.0", "jsonschema>=4.18.0,<5.0", "regress>=2024.11.1", "requests<3.0", "click>=8,<9", ] [project.readme] file = "README.md" content-type = "text/markdown" [project.urls] Homepage = "https://github.com/python-jsonschema/check-jsonschema" [project.scripts] check-jsonschema = "check_jsonschema:main" [tool.setuptools] include-package-data = true [tool.setuptools.packages.find] where = ["src"] namespaces = false [tool.isort] profile = "black" [tool.mypy] # strict = true # TODO: enable disallow_untyped_defs = true ignore_missing_imports = true warn_unreachable = true warn_no_return = true [tool.pytest.ini_options] filterwarnings = [ "error", # dateutil has a Python 3.12 compatibility issue. 'ignore:datetime\.datetime\.utcfromtimestamp\(\) is deprecated:DeprecationWarning', ] addopts = [ "--color=yes", ] ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.919612 check_jsonschema-0.34.0/setup.cfg0000644000175100017510000000004615062662127016363 0ustar00runnerrunner[egg_info] tag_build = tag_date = 0 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/setup.py0000644000175100017510000000004615062662115016251 0ustar00runnerrunnerfrom setuptools import setup setup() ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.880612 check_jsonschema-0.34.0/src/0000755000175100017510000000000015062662127015331 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1758159958.8916118 check_jsonschema-0.34.0/src/check_jsonschema/0000755000175100017510000000000015062662127020620 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/__init__.py0000644000175100017510000000011715062662115022725 0ustar00runnerrunnerfrom __future__ import annotations from .cli import main __all__ = ("main",) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/__main__.py0000644000175100017510000000005215062662115022704 0ustar00runnerrunnerfrom check_jsonschema import main main() ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.892612 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/0000755000175100017510000000000015062662127023771 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/__init__.py0000644000175100017510000000237715062662115026110 0ustar00runnerrunnerfrom __future__ import annotations import importlib.resources import json import typing as t class NoSuchSchemaError(ValueError): pass def _get(package: str, resource: str, name: str) -> dict[str, t.Any]: try: return t.cast( "dict[str, t.Any]", json.loads( importlib.resources.files(package).joinpath(resource).read_bytes() ), ) except (FileNotFoundError, ModuleNotFoundError): raise NoSuchSchemaError(f"no builtin schema named {name} was found") def _get_vendored_schema(name: str) -> dict[str, t.Any]: return _get("check_jsonschema.builtin_schemas.vendor", f"{name}.json", name) def _get_custom_schema(name: str) -> dict[str, t.Any]: return _get("check_jsonschema.builtin_schemas.custom", f"{name}.json", name) def get_builtin_schema(name: str) -> dict[str, t.Any]: # first, look for an identifying prefix if name.startswith("vendor."): return _get_vendored_schema(name[7:]) elif name.startswith("custom."): return _get_custom_schema(name[7:]) # if there is no prefix, just try in order: first custom, then vendored try: return _get_custom_schema(name) except NoSuchSchemaError: return _get_vendored_schema(name) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.893612 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/custom/0000755000175100017510000000000015062662127025303 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/custom/__init__.py0000644000175100017510000000000015062662115027377 0ustar00runnerrunner././@PaxHeader0000000000000000000000000000021100000000000010207 xustar00115 path=check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/custom/github-workflows-require-timeout.json 22 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/custom/github-workflows-require-timeout0000644000175100017510000000411615062662115033700 0ustar00runnerrunner{ "$schema": "http://json-schema.org/draft-07/schema", "$comment": "A schema which requires that github workflow jobs define job timeouts", "definitions": { "expressionSyntax": { "type": "string", "$comment": "pattern definition taken from schemastore 'github-workflow.json'", "pattern": "^\\$\\{\\{(.|[\r\n])*\\}\\}$" } }, "properties": { "jobs": { "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobs", "type": "object", "patternProperties": { "^[_a-zA-Z][a-zA-Z0-9_-]*$": { "$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_id", "oneOf": [ { "type": "object", "properties": { "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", "default": 360, "oneOf": [ { "type": "number" }, { "$ref": "#/definitions/expressionSyntax" } ] } }, "required": [ "runs-on", "timeout-minutes" ], "additionalProperties": true }, { "$comment": "https://docs.github.com/en/actions/learn-github-actions/reusing-workflows#calling-a-reusable-workflow", "type": "object", "required": [ "uses" ], "additionalProperties": true } ] } } } }, "additionalProperties": true } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.899612 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/0000755000175100017510000000000015062662127025266 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/README.md0000644000175100017510000000224215062662115026542 0ustar00runnerrunner# Vendorized Schemas These are vendored versions of the schemas referred to by the hooks. For the exact list of schemas here, see the repo root for hook config. ## Licenses Most of the schemas in this directory are provided by SchemaStore. They are therefore licensed under the SchemaStore license, included in this directory. Additional licenses can be found in [`licenses`](licenses). ### Azure Pipelines The Azure pipelines schema is provided by Microsoft and is licensed under the license for azure-pipelines-vscode. ### ReadTheDocs The ReadTheDocs schema is provided by ReadTheDocs and licensed under the license for readthedocs.org ### Renovate The Renovate schema is provided by Renovate and licensed under the license for renovatebot ### GitLab The GitLab CI schema is provided by GitLab and licensed under the license for the public gitlab repo. In particular, it falls under the "MIT Expat" portion of the license for that repo. ### Buildkite The Buildkite schema is provided by Buildkite and licensed under the license for their 'pipeline-schema' repo. ### Taskfile The Taskfile schema is provided by Task and licensed under the license for their 'task' repo. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/__init__.py0000644000175100017510000000000015062662115027362 0ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/azure-pipelines.json0000644000175100017510000602425615062662115031311 0ustar00runnerrunner{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://github.com/Microsoft/azure-pipelines-vscode/blob/main/service-schema.json", "$comment": "v1.183.0", "title": "Pipeline schema", "description": "A pipeline definition", "oneOf": [ { "$ref": "#/definitions/pipeline" }, { "type": "string", "pattern": "^$" } ], "definitions": { "string": { "type": "string" }, "sequence": { "type": "array", "items": { "$ref": "#/definitions/any" } }, "mapping": { "type": "object", "additionalProperties": true }, "any": { "anyOf": [ { "type": "string" }, { "type": "array", "items": { "$ref": "#/definitions/any" } }, { "type": "object", "additionalProperties": true } ] }, "pipeline": { "anyOf": [ { "type": "object", "properties": { "stages": { "description": "Stages are groups of jobs that can run without human intervention", "$ref": "#/definitions/stages" }, "pool": { "description": "Pool where jobs in this pipeline will run unless otherwise specified", "$ref": "#/definitions/pool" }, "name": { "description": "Pipeline name", "$ref": "#/definitions/string_allowExpressions" }, "appendCommitMessageToRunName": { "description": "Append the commit message to the build number", "$ref": "#/definitions/boolean" }, "trigger": { "description": "Continuous integration triggers", "$ref": "#/definitions/trigger" }, "parameters": { "description": "Pipeline template parameters", "$ref": "#/definitions/pipelineTemplateParameters" }, "pr": { "description": "Pull request triggers", "$ref": "#/definitions/pr" }, "schedules": { "$ref": "#/definitions/schedules" }, "resources": { "description": "Containers and repositories used in the build", "$ref": "#/definitions/resources" }, "variables": { "description": "Variables for this pipeline", "$ref": "#/definitions/variables" }, "lockBehavior": { "description": "Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests", "$ref": "#/definitions/lockBehavior" } }, "additionalProperties": false, "required": [ "stages" ] }, { "type": "object", "properties": { "extends": { "description": "Extends a template", "$ref": "#/definitions/extends" }, "pool": { "description": "Pool where jobs in this pipeline will run unless otherwise specified", "$ref": "#/definitions/pool" }, "name": { "description": "Pipeline name", "$ref": "#/definitions/string_allowExpressions" }, "appendCommitMessageToRunName": { "description": "Append the commit message to the build number", "$ref": "#/definitions/boolean" }, "trigger": { "description": "Continuous integration triggers", "$ref": "#/definitions/trigger" }, "parameters": { "description": "Pipeline template parameters", "$ref": "#/definitions/pipelineTemplateParameters" }, "pr": { "description": "Pull request triggers", "$ref": "#/definitions/pr" }, "schedules": { "$ref": "#/definitions/schedules" }, "resources": { "description": "Containers and repositories used in the build", "$ref": "#/definitions/resources" }, "variables": { "description": "Variables for this pipeline", "$ref": "#/definitions/variables" }, "lockBehavior": { "description": "Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests", "$ref": "#/definitions/lockBehavior" } }, "additionalProperties": false, "required": [ "extends" ] }, { "type": "object", "properties": { "jobs": { "description": "Jobs represent units of work which can be assigned to a single agent or server", "$ref": "#/definitions/jobs" }, "pool": { "description": "Pool where jobs in this pipeline will run unless otherwise specified", "$ref": "#/definitions/pool" }, "name": { "description": "Pipeline name", "$ref": "#/definitions/string_allowExpressions" }, "appendCommitMessageToRunName": { "description": "Append the commit message to the build number", "$ref": "#/definitions/boolean" }, "trigger": { "description": "Continuous integration triggers", "$ref": "#/definitions/trigger" }, "parameters": { "description": "Pipeline template parameters", "$ref": "#/definitions/pipelineTemplateParameters" }, "pr": { "description": "Pull request triggers", "$ref": "#/definitions/pr" }, "schedules": { "$ref": "#/definitions/schedules" }, "resources": { "description": "Containers and repositories used in the build", "$ref": "#/definitions/resources" }, "variables": { "description": "Variables for this pipeline", "$ref": "#/definitions/variables" }, "lockBehavior": { "description": "Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests", "$ref": "#/definitions/lockBehavior" } }, "additionalProperties": false, "required": [ "jobs" ] }, { "type": "object", "properties": { "phases": { "description": "Phases which make up the pipeline", "deprecationMessage": "This option is deprecated, use `jobs` instead", "doNotSuggest": true, "$ref": "#/definitions/phases" }, "name": { "description": "Pipeline name", "$ref": "#/definitions/string_allowExpressions" }, "appendCommitMessageToRunName": { "description": "Append the commit message to the build number", "$ref": "#/definitions/boolean" }, "trigger": { "description": "Continuous integration triggers", "$ref": "#/definitions/trigger" }, "parameters": { "description": "Pipeline template parameters", "$ref": "#/definitions/pipelineTemplateParameters" }, "pr": { "description": "Pull request triggers", "$ref": "#/definitions/pr" }, "schedules": { "$ref": "#/definitions/schedules" }, "resources": { "description": "Containers and repositories used in the build", "$ref": "#/definitions/resources" }, "variables": { "description": "Variables for this pipeline", "$ref": "#/definitions/variables" }, "lockBehavior": { "description": "Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests", "$ref": "#/definitions/lockBehavior" } }, "additionalProperties": false, "required": [ "phases" ] }, { "type": "object", "properties": { "strategy": { "description": "Execution strategy for this job", "$ref": "#/definitions/jobStrategy" }, "continueOnError": { "description": "Continue running even on failure?", "$ref": "#/definitions/jobContinueOnError" }, "pool": { "description": "Pool where this job will run", "$ref": "#/definitions/pool" }, "container": { "description": "Container resource name", "$ref": "#/definitions/jobContainer" }, "services": { "$ref": "#/definitions/jobServices" }, "workspace": { "$ref": "#/definitions/jobWorkspace" }, "steps": { "description": "A list of steps to run in this job", "$ref": "#/definitions/steps" }, "name": { "description": "Pipeline name", "$ref": "#/definitions/string_allowExpressions" }, "appendCommitMessageToRunName": { "description": "Append the commit message to the build number", "$ref": "#/definitions/boolean" }, "trigger": { "description": "Continuous integration triggers", "$ref": "#/definitions/trigger" }, "parameters": { "description": "Pipeline template parameters", "$ref": "#/definitions/pipelineTemplateParameters" }, "pr": { "description": "Pull request triggers", "$ref": "#/definitions/pr" }, "schedules": { "$ref": "#/definitions/schedules" }, "resources": { "description": "Containers and repositories used in the build", "$ref": "#/definitions/resources" }, "variables": { "description": "Variables for this pipeline", "$ref": "#/definitions/variables" }, "lockBehavior": { "description": "Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests", "$ref": "#/definitions/lockBehavior" } }, "additionalProperties": false, "required": [ "steps" ] }, { "type": "object", "properties": { "continueOnError": { "description": "Continue running even on failure?", "$ref": "#/definitions/jobContinueOnError" }, "queue": { "description": "Queue where this phase will run", "deprecationMessage": "This option is deprecated, use pool instead", "doNotSuggest": true, "$ref": "#/definitions/phaseQueueTarget" }, "steps": { "description": "A list of steps to run in this phase", "$ref": "#/definitions/steps" }, "name": { "description": "Pipeline name", "$ref": "#/definitions/string_allowExpressions" }, "appendCommitMessageToRunName": { "description": "Append the commit message to the build number", "$ref": "#/definitions/boolean" }, "trigger": { "description": "Continuous integration triggers", "$ref": "#/definitions/trigger" }, "parameters": { "description": "Pipeline template parameters", "$ref": "#/definitions/pipelineTemplateParameters" }, "pr": { "description": "Pull request triggers", "$ref": "#/definitions/pr" }, "schedules": { "$ref": "#/definitions/schedules" }, "resources": { "description": "Containers and repositories used in the build", "$ref": "#/definitions/resources" }, "variables": { "description": "Variables for this pipeline", "$ref": "#/definitions/variables" }, "lockBehavior": { "description": "Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests", "$ref": "#/definitions/lockBehavior" } }, "additionalProperties": false, "deprecationMessage": "This option is deprecated, use `job` (inside `jobs`) instead", "required": [ "steps" ] }, { "type": "object", "properties": { "continueOnError": { "description": "Continue running even on failure?", "$ref": "#/definitions/jobContinueOnError" }, "server": { "description": "True if this is an agent-less phase (runs on server)", "deprecationMessage": "This option is deprecated, use pool:server instead", "doNotSuggest": true, "$ref": "#/definitions/phaseServerTarget" }, "steps": { "description": "A list of steps to run in this phase", "$ref": "#/definitions/steps" }, "name": { "description": "Pipeline name", "$ref": "#/definitions/string_allowExpressions" }, "appendCommitMessageToRunName": { "description": "Append the commit message to the build number", "$ref": "#/definitions/boolean" }, "trigger": { "description": "Continuous integration triggers", "$ref": "#/definitions/trigger" }, "parameters": { "description": "Pipeline template parameters", "$ref": "#/definitions/pipelineTemplateParameters" }, "pr": { "description": "Pull request triggers", "$ref": "#/definitions/pr" }, "schedules": { "$ref": "#/definitions/schedules" }, "resources": { "description": "Containers and repositories used in the build", "$ref": "#/definitions/resources" }, "variables": { "description": "Variables for this pipeline", "$ref": "#/definitions/variables" }, "lockBehavior": { "description": "Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests", "$ref": "#/definitions/lockBehavior" } }, "additionalProperties": false, "deprecationMessage": "This option is deprecated, use `job` (inside `jobs`) instead", "required": [ "steps" ] } ] }, "pipelineBase": { "type": "object", "properties": { "name": { "description": "Pipeline name", "$ref": "#/definitions/string_allowExpressions" }, "appendCommitMessageToRunName": { "description": "Append the commit message to the build number", "$ref": "#/definitions/boolean" }, "trigger": { "description": "Continuous integration triggers", "$ref": "#/definitions/trigger" }, "parameters": { "description": "Pipeline template parameters", "$ref": "#/definitions/pipelineTemplateParameters" }, "pr": { "description": "Pull request triggers", "$ref": "#/definitions/pr" }, "schedules": { "$ref": "#/definitions/schedules" }, "resources": { "description": "Containers and repositories used in the build", "$ref": "#/definitions/resources" }, "variables": { "description": "Variables for this pipeline", "$ref": "#/definitions/variables" }, "lockBehavior": { "description": "Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests", "$ref": "#/definitions/lockBehavior" } }, "additionalProperties": false }, "pipelineTrigger": { "type": "object", "properties": { "trigger": { "description": "Continuous integration triggers", "$ref": "#/definitions/trigger" }, "name": { "description": "Pipeline name", "$ref": "#/definitions/any_allowExpressions" }, "appendCommitMessageToRunName": { "description": "Append the commit message to the build number", "$ref": "#/definitions/any_allowExpressions" }, "parameters": { "description": "Pipeline template parameters", "$ref": "#/definitions/any_allowExpressions" }, "pr": { "description": "Pull request triggers", "$ref": "#/definitions/any_allowExpressions" }, "schedules": { "$ref": "#/definitions/any_allowExpressions" }, "resources": { "description": "Containers and repositories used in the build", "$ref": "#/definitions/any_allowExpressions" }, "variables": { "description": "Variables for the entire pipeline", "$ref": "#/definitions/any_allowExpressions" }, "stages": { "$ref": "#/definitions/any_allowExpressions" }, "jobs": { "description": "Jobs which make up the pipeline", "$ref": "#/definitions/any_allowExpressions" }, "extends": { "description": "Extends a template", "$ref": "#/definitions/any_allowExpressions" }, "phases": { "description": "Phases which make up the pipeline", "deprecationMessage": "This option is deprecated, use `jobs` instead", "doNotSuggest": true, "$ref": "#/definitions/any_allowExpressions" }, "strategy": { "description": "Execution strategy for the job", "$ref": "#/definitions/any_allowExpressions" }, "continueOnError": { "description": "Continue running even on failure?", "$ref": "#/definitions/any_allowExpressions" }, "pool": { "description": "Pool where this job will run", "$ref": "#/definitions/any_allowExpressions" }, "container": { "description": "Container resource name", "$ref": "#/definitions/any_allowExpressions" }, "services": { "$ref": "#/definitions/any_allowExpressions" }, "workspace": { "$ref": "#/definitions/any_allowExpressions" }, "steps": { "description": "A list of steps to run", "$ref": "#/definitions/any_allowExpressions" }, "queue": { "description": "Queue where this phase will run", "deprecationMessage": "This option is deprecated, use pool instead", "doNotSuggest": true, "$ref": "#/definitions/any_allowExpressions" }, "server": { "description": "True if this is an agent-less phase (runs on server)", "deprecationMessage": "This option is deprecated, use pool:server instead", "doNotSuggest": true, "$ref": "#/definitions/any_allowExpressions" }, "lockBehavior": { "description": "Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests", "$ref": "#/definitions/lockBehavior" } }, "additionalProperties": false }, "pipelineParameters": { "type": "object", "properties": { "parameters": { "description": "Pipeline template parameters", "$ref": "#/definitions/pipelineTemplateParameters" }, "name": { "description": "Pipeline name", "$ref": "#/definitions/any_allowExpressions" }, "appendCommitMessageToRunName": { "description": "Append the commit message to the build number", "$ref": "#/definitions/any_allowExpressions" }, "trigger": { "description": "Continuous integration triggers", "$ref": "#/definitions/any_allowExpressions" }, "pr": { "description": "Pull request triggers", "$ref": "#/definitions/any_allowExpressions" }, "schedules": { "$ref": "#/definitions/any_allowExpressions" }, "resources": { "description": "Containers and repositories used in the build", "$ref": "#/definitions/any_allowExpressions" }, "variables": { "description": "Variables for the entire pipeline", "$ref": "#/definitions/any_allowExpressions" }, "stages": { "$ref": "#/definitions/any_allowExpressions" }, "jobs": { "description": "Jobs which make up the pipeline", "$ref": "#/definitions/any_allowExpressions" }, "extends": { "description": "Extends a template", "$ref": "#/definitions/any_allowExpressions" }, "phases": { "description": "Phases which make up the pipeline", "deprecationMessage": "This option is deprecated, use `jobs` instead", "doNotSuggest": true, "$ref": "#/definitions/any_allowExpressions" }, "strategy": { "description": "Execution strategy for the job", "$ref": "#/definitions/any_allowExpressions" }, "continueOnError": { "description": "Continue running even on failure?", "$ref": "#/definitions/any_allowExpressions" }, "pool": { "description": "Pool where this job will run", "$ref": "#/definitions/any_allowExpressions" }, "container": { "description": "Container resource name", "$ref": "#/definitions/any_allowExpressions" }, "services": { "$ref": "#/definitions/any_allowExpressions" }, "workspace": { "$ref": "#/definitions/any_allowExpressions" }, "steps": { "description": "A list of steps to run", "$ref": "#/definitions/any_allowExpressions" }, "queue": { "description": "Queue where this phase will run", "deprecationMessage": "This option is deprecated, use pool instead", "doNotSuggest": true, "$ref": "#/definitions/any_allowExpressions" }, "server": { "description": "True if this is an agent-less phase (runs on server)", "deprecationMessage": "This option is deprecated, use pool:server instead", "doNotSuggest": true, "$ref": "#/definitions/any_allowExpressions" }, "lockBehavior": { "description": "Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests", "$ref": "#/definitions/lockBehavior" } }, "additionalProperties": false }, "pipelinePR": { "type": "object", "properties": { "pr": { "description": "Pull request triggers", "$ref": "#/definitions/pr" }, "name": { "description": "Pipeline name", "$ref": "#/definitions/any_allowExpressions" }, "appendCommitMessageToRunName": { "description": "Append the commit message to the build number", "$ref": "#/definitions/any_allowExpressions" }, "trigger": { "description": "Continuous integration triggers", "$ref": "#/definitions/any_allowExpressions" }, "parameters": { "description": "Pipeline template parameters", "$ref": "#/definitions/any_allowExpressions" }, "schedules": { "$ref": "#/definitions/any_allowExpressions" }, "resources": { "description": "Containers and repositories used in the build", "$ref": "#/definitions/any_allowExpressions" }, "variables": { "description": "Variables for the entire pipeline", "$ref": "#/definitions/any_allowExpressions" }, "stages": { "$ref": "#/definitions/any_allowExpressions" }, "jobs": { "description": "Jobs which make up the pipeline", "$ref": "#/definitions/any_allowExpressions" }, "extends": { "description": "Extends a template", "$ref": "#/definitions/any_allowExpressions" }, "phases": { "description": "Phases which make up the pipeline", "deprecationMessage": "This option is deprecated, use `jobs` instead", "doNotSuggest": true, "$ref": "#/definitions/any_allowExpressions" }, "strategy": { "description": "Execution strategy for the job", "$ref": "#/definitions/any_allowExpressions" }, "continueOnError": { "description": "Continue running even on failure?", "$ref": "#/definitions/any_allowExpressions" }, "pool": { "description": "Pool where this job will run", "$ref": "#/definitions/any_allowExpressions" }, "container": { "description": "Container resource name", "$ref": "#/definitions/any_allowExpressions" }, "services": { "$ref": "#/definitions/any_allowExpressions" }, "workspace": { "$ref": "#/definitions/any_allowExpressions" }, "steps": { "description": "A list of steps to run", "$ref": "#/definitions/any_allowExpressions" }, "queue": { "description": "Queue where this phase will run", "deprecationMessage": "This option is deprecated, use pool instead", "doNotSuggest": true, "$ref": "#/definitions/any_allowExpressions" }, "server": { "description": "True if this is an agent-less phase (runs on server)", "deprecationMessage": "This option is deprecated, use pool:server instead", "doNotSuggest": true, "$ref": "#/definitions/any_allowExpressions" }, "lockBehavior": { "description": "Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests", "$ref": "#/definitions/lockBehavior" } }, "additionalProperties": false }, "pipelineSchedules": { "type": "object", "properties": { "schedules": { "$ref": "#/definitions/schedules" }, "name": { "description": "Pipeline name", "$ref": "#/definitions/any_allowExpressions" }, "appendCommitMessageToRunName": { "description": "Append the commit message to the build number", "$ref": "#/definitions/any_allowExpressions" }, "trigger": { "description": "Continuous integration triggers", "$ref": "#/definitions/any_allowExpressions" }, "parameters": { "description": "Pipeline template parameters", "$ref": "#/definitions/any_allowExpressions" }, "pr": { "description": "Pull request triggers", "$ref": "#/definitions/any_allowExpressions" }, "resources": { "description": "Containers and repositories used in the build", "$ref": "#/definitions/any_allowExpressions" }, "variables": { "description": "Variables for the entire pipeline", "$ref": "#/definitions/any_allowExpressions" }, "stages": { "$ref": "#/definitions/any_allowExpressions" }, "jobs": { "description": "Jobs which make up the pipeline", "$ref": "#/definitions/any_allowExpressions" }, "extends": { "description": "Extends a template", "$ref": "#/definitions/any_allowExpressions" }, "phases": { "description": "Phases which make up the pipeline", "deprecationMessage": "This option is deprecated, use `jobs` instead", "doNotSuggest": true, "$ref": "#/definitions/any_allowExpressions" }, "strategy": { "description": "Execution strategy for the job", "$ref": "#/definitions/any_allowExpressions" }, "continueOnError": { "description": "Continue running even on failure?", "$ref": "#/definitions/any_allowExpressions" }, "pool": { "description": "Pool where this job will run", "$ref": "#/definitions/any_allowExpressions" }, "container": { "description": "Container resource name", "$ref": "#/definitions/any_allowExpressions" }, "services": { "$ref": "#/definitions/any_allowExpressions" }, "workspace": { "$ref": "#/definitions/any_allowExpressions" }, "steps": { "description": "A list of steps to run", "$ref": "#/definitions/any_allowExpressions" }, "queue": { "description": "Queue where this phase will run", "deprecationMessage": "This option is deprecated, use pool instead", "doNotSuggest": true, "$ref": "#/definitions/any_allowExpressions" }, "server": { "description": "True if this is an agent-less phase (runs on server)", "deprecationMessage": "This option is deprecated, use pool:server instead", "doNotSuggest": true, "$ref": "#/definitions/any_allowExpressions" }, "lockBehavior": { "description": "Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests", "$ref": "#/definitions/lockBehavior" } }, "additionalProperties": false }, "pipelineAnyBase": { "type": "object", "properties": { "name": { "description": "Pipeline name", "$ref": "#/definitions/any_allowExpressions" }, "appendCommitMessageToRunName": { "description": "Append the commit message to the build number", "$ref": "#/definitions/any_allowExpressions" }, "trigger": { "description": "Continuous integration triggers", "$ref": "#/definitions/any_allowExpressions" }, "parameters": { "description": "Pipeline template parameters", "$ref": "#/definitions/any_allowExpressions" }, "pr": { "description": "Pull request triggers", "$ref": "#/definitions/any_allowExpressions" }, "schedules": { "$ref": "#/definitions/any_allowExpressions" }, "resources": { "description": "Containers and repositories used in the build", "$ref": "#/definitions/any_allowExpressions" }, "variables": { "description": "Variables for the entire pipeline", "$ref": "#/definitions/any_allowExpressions" }, "stages": { "$ref": "#/definitions/any_allowExpressions" }, "jobs": { "description": "Jobs which make up the pipeline", "$ref": "#/definitions/any_allowExpressions" }, "extends": { "description": "Extends a template", "$ref": "#/definitions/any_allowExpressions" }, "phases": { "description": "Phases which make up the pipeline", "deprecationMessage": "This option is deprecated, use `jobs` instead", "doNotSuggest": true, "$ref": "#/definitions/any_allowExpressions" }, "strategy": { "description": "Execution strategy for the job", "$ref": "#/definitions/any_allowExpressions" }, "continueOnError": { "description": "Continue running even on failure?", "$ref": "#/definitions/any_allowExpressions" }, "pool": { "description": "Pool where this job will run", "$ref": "#/definitions/any_allowExpressions" }, "container": { "description": "Container resource name", "$ref": "#/definitions/any_allowExpressions" }, "services": { "$ref": "#/definitions/any_allowExpressions" }, "workspace": { "$ref": "#/definitions/any_allowExpressions" }, "steps": { "description": "A list of steps to run", "$ref": "#/definitions/any_allowExpressions" }, "queue": { "description": "Queue where this phase will run", "deprecationMessage": "This option is deprecated, use pool instead", "doNotSuggest": true, "$ref": "#/definitions/any_allowExpressions" }, "server": { "description": "True if this is an agent-less phase (runs on server)", "deprecationMessage": "This option is deprecated, use pool:server instead", "doNotSuggest": true, "$ref": "#/definitions/any_allowExpressions" }, "lockBehavior": { "description": "Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests", "$ref": "#/definitions/lockBehavior" } }, "additionalProperties": false }, "pr": { "anyOf": [ { "type": "string", "pattern": "^none$" }, { "type": "array", "items": { "$ref": "#/definitions/branchFilter" } }, { "type": "object", "properties": { "autoCancel": { "description": "Whether to cancel running PR builds when a new commit lands in the branch", "$ref": "#/definitions/boolean" }, "branches": { "$ref": "#/definitions/includeExcludeFilters" }, "paths": { "$ref": "#/definitions/includeExcludeFilters" }, "drafts": { "description": "Whether to start a run when a draft PR is created", "$ref": "#/definitions/boolean" } }, "additionalProperties": false } ] }, "trigger": { "anyOf": [ { "type": "string", "pattern": "^none$" }, { "type": "array", "items": { "$ref": "#/definitions/branchFilter" } }, { "type": "object", "properties": { "batch": { "description": "Whether to batch changes per branch", "$ref": "#/definitions/boolean" }, "branches": { "$ref": "#/definitions/includeExcludeFilters" }, "paths": { "$ref": "#/definitions/includeExcludeFilters" }, "tags": { "$ref": "#/definitions/includeExcludeFilters" } }, "additionalProperties": false } ] }, "includeExcludeFilters": { "type": "object", "properties": { "include": { "$ref": "#/definitions/branchFilterArray" }, "exclude": { "$ref": "#/definitions/branchFilterArray" } }, "additionalProperties": false }, "includeExcludeStringFilters": { "anyOf": [ { "type": "array", "items": { "$ref": "#/definitions/nonEmptyString" } }, { "type": "object", "properties": { "include": { "$ref": "#/definitions/sequenceOfNonEmptyString" }, "exclude": { "$ref": "#/definitions/sequenceOfNonEmptyString" } }, "additionalProperties": false } ] }, "branchFilterArray": { "type": "array", "items": { "$ref": "#/definitions/branchFilter" } }, "branchFilter": { "type": "string", "description": "branch name or prefix filter", "pattern": "^[^\\/~\\^\\: \\[\\]\\\\]+(\\/[^\\/~\\^\\: \\[\\]\\\\]+)*$" }, "templateParameters": { "anyOf": [ { "type": "array", "items": { "$ref": "#/definitions/templateParameter" } }, { "type": "object", "additionalProperties": true } ] }, "templateParameter": { "type": "object", "properties": { "name": { "$ref": "#/definitions/nonEmptyString" }, "displayName": { "description": "Human-readable name for the parameter", "$ref": "#/definitions/string" }, "type": { "$ref": "#/definitions/templateParameterType" }, "default": { "$ref": "#/definitions/any" }, "values": { "$ref": "#/definitions/sequenceOfNonEmptyString" } }, "additionalProperties": false, "firstProperty": [ "name" ] }, "templateParameterType": { "anyOf": [ { "type": "string", "pattern": "^boolean$" }, { "type": "string", "pattern": "^container$" }, { "type": "string", "pattern": "^containerList$" }, { "type": "string", "pattern": "^deployment$" }, { "type": "string", "pattern": "^deploymentList$" }, { "type": "string", "pattern": "^job$" }, { "type": "string", "pattern": "^jobList$" }, { "type": "string", "pattern": "^legacyObject$" }, { "type": "string", "pattern": "^number$" }, { "type": "string", "pattern": "^object$" }, { "type": "string", "pattern": "^stage$" }, { "type": "string", "pattern": "^stageList$" }, { "type": "string", "pattern": "^step$" }, { "type": "string", "pattern": "^stepList$" }, { "type": "string", "pattern": "^string$" } ] }, "pipelineTemplateParameters": { "type": "array", "items": { "$ref": "#/definitions/pipelineTemplateParameter" } }, "pipelineTemplateParameter": { "type": "object", "properties": { "name": { "$ref": "#/definitions/nonEmptyString" }, "displayName": { "description": "Human-readable name for the parameter", "$ref": "#/definitions/string" }, "type": { "$ref": "#/definitions/pipelineTemplateParameterType" }, "default": { "$ref": "#/definitions/any" }, "values": { "$ref": "#/definitions/sequenceOfNonEmptyString" } }, "additionalProperties": false, "firstProperty": [ "name" ] }, "pipelineTemplateParameterType": { "anyOf": [ { "type": "string", "pattern": "^boolean$" }, { "type": "string", "pattern": "^container$" }, { "type": "string", "pattern": "^containerList$" }, { "type": "string", "pattern": "^deployment$" }, { "type": "string", "pattern": "^deploymentList$" }, { "type": "string", "pattern": "^environment$" }, { "type": "string", "pattern": "^filePath$" }, { "type": "string", "pattern": "^job$" }, { "type": "string", "pattern": "^jobList$" }, { "type": "string", "pattern": "^number$" }, { "type": "string", "pattern": "^object$" }, { "type": "string", "pattern": "^pool$" }, { "type": "string", "pattern": "^secureFile$" }, { "type": "string", "pattern": "^serviceConnection$" }, { "type": "string", "pattern": "^stage$" }, { "type": "string", "pattern": "^stageList$" }, { "type": "string", "pattern": "^step$" }, { "type": "string", "pattern": "^stepList$" }, { "type": "string", "pattern": "^string$" } ] }, "schedules": { "type": "array", "items": { "$ref": "#/definitions/schedule" } }, "schedule": { "type": "object", "properties": { "cron": { "$ref": "#/definitions/nonEmptyString" }, "displayName": { "$ref": "#/definitions/string" }, "branches": { "$ref": "#/definitions/includeExcludeFilters" }, "batch": { "$ref": "#/definitions/boolean" }, "always": { "$ref": "#/definitions/boolean" } }, "additionalProperties": false, "firstProperty": [ "cron" ] }, "resources": { "anyOf": [ { "type": "object", "properties": { "builds": { "description": "List of external build resources", "$ref": "#/definitions/buildResources" }, "containers": { "description": "List of container images", "$ref": "#/definitions/containerResources" }, "pipelines": { "$ref": "#/definitions/pipelineResources" }, "repositories": { "description": "List of external repositories", "$ref": "#/definitions/repositoryResources" }, "webhooks": { "description": "List of webhooks", "$ref": "#/definitions/webhookResources" }, "packages": { "description": "List of external packages", "$ref": "#/definitions/packageResources" } }, "additionalProperties": false }, { "type": "array", "items": { "$ref": "#/definitions/legacyResource" } } ] }, "buildResources": { "type": "array", "items": { "$ref": "#/definitions/buildResource" } }, "buildResource": { "type": "object", "properties": { "build": { "description": "Alias or name of build artifact", "$ref": "#/definitions/referenceName" }, "type": { "description": "Name of the artifact type", "$ref": "#/definitions/nonEmptyString" }, "connection": { "description": "Name of the connection. This connection will be used for all the communication related to this artifact.", "$ref": "#/definitions/nonEmptyString" }, "source": { "description": "Name of the source definition/build/job", "$ref": "#/definitions/nonEmptyString" }, "version": { "$ref": "#/definitions/string_allowExpressions" }, "branch": { "$ref": "#/definitions/string_allowExpressions" }, "trigger": { "description": "When the artifact mentioned in this build resource completes a build, its allowed to trigger this pipeline.", "$ref": "#/definitions/buildResourceTrigger" } }, "additionalProperties": false, "firstProperty": [ "build" ], "required": [ "build", "type", "connection", "source" ] }, "buildResourceTrigger": { "anyOf": [ { "type": "string", "pattern": "^none$" }, { "type": "string", "pattern": "^true$" } ] }, "packageResources": { "type": "array", "items": { "$ref": "#/definitions/packageResource" } }, "packageResource": { "type": "object", "properties": { "package": { "description": "Alias of package artifact", "$ref": "#/definitions/referenceName" }, "type": { "description": "Type of the package. Ex - NuGet, NPM etc.", "$ref": "#/definitions/nonEmptyString" }, "connection": { "description": "Name of the connection. This connection will be used for all the communication related to this artifact.", "$ref": "#/definitions/nonEmptyString" }, "name": { "description": "Name of the package", "$ref": "#/definitions/nonEmptyString" }, "version": { "$ref": "#/definitions/string_allowExpressions" }, "tag": { "$ref": "#/definitions/string_allowExpressions" }, "trigger": { "description": "Trigger a new pipeline run when a new version of this package is available.", "$ref": "#/definitions/packageResourceTrigger" } }, "additionalProperties": false, "firstProperty": [ "package" ], "required": [ "package", "type", "connection", "name" ] }, "packageResourceTrigger": { "anyOf": [ { "type": "string", "pattern": "^none$" }, { "type": "string", "pattern": "^true$" } ] }, "containerResources": { "type": "array", "items": { "$ref": "#/definitions/containerResource" } }, "containerResource": { "type": "object", "properties": { "container": { "description": "ID for the container", "$ref": "#/definitions/referenceName" }, "type": { "$ref": "#/definitions/containerArtifactType" }, "trigger": { "$ref": "#/definitions/containerResourceTrigger" }, "endpoint": { "description": "ID of the service endpoint connecting to a private container registry", "$ref": "#/definitions/string_allowExpressions" }, "env": { "description": "Variables to map into the container's environment", "$ref": "#/definitions/mappingOfStringString" }, "image": { "description": "Container image tag", "$ref": "#/definitions/string", "examples": [ "ubuntu:16.04", "windows:1803" ] }, "mapDockerSocket": { "description": "Set this flag to false to force the agent not to setup the /var/run/docker.sock volume on container jobs", "$ref": "#/definitions/boolean" }, "options": { "description": "Options to pass into container host", "$ref": "#/definitions/string_allowExpressions" }, "ports": { "$ref": "#/definitions/sequenceOfString_allowExpressions" }, "volumes": { "$ref": "#/definitions/sequenceOfString_allowExpressions" }, "mountReadOnly": { "$ref": "#/definitions/readOnlyMounts" } }, "additionalProperties": true, "firstProperty": [ "container" ], "required": [ "container", "image" ] }, "containerArtifactType": { "anyOf": [ { "type": "string", "ignoreCase": "value", "pattern": "^ACR$" }, { "type": "string" } ] }, "containerResourceTrigger": { "anyOf": [ { "type": "string", "pattern": "^none$" }, { "type": "string", "pattern": "^true$" }, { "type": "object", "properties": { "enabled": { "$ref": "#/definitions/boolean" }, "tags": { "$ref": "#/definitions/includeExcludeStringFilters" } }, "additionalProperties": false } ] }, "pipelineResources": { "type": "array", "items": { "$ref": "#/definitions/pipelineResource" } }, "pipelineResource": { "type": "object", "properties": { "pipeline": { "description": "ID of the pipeline resource", "$ref": "#/definitions/referenceName" }, "project": { "$ref": "#/definitions/nonEmptyString" }, "source": { "$ref": "#/definitions/nonEmptyString" }, "version": { "$ref": "#/definitions/string_allowExpressions" }, "branch": { "$ref": "#/definitions/string_allowExpressions" }, "tags": { "$ref": "#/definitions/sequenceOfNonEmptyString" }, "trigger": { "$ref": "#/definitions/pipelineResourceTrigger" } }, "additionalProperties": false, "firstProperty": [ "pipeline" ], "required": [ "pipeline" ] }, "pipelineResourceTrigger": { "anyOf": [ { "type": "string", "pattern": "^none$" }, { "type": "string", "pattern": "^true$" }, { "type": "object", "properties": { "enabled": { "$ref": "#/definitions/boolean" }, "branches": { "$ref": "#/definitions/triggerBranchFilter" }, "stages": { "$ref": "#/definitions/sequenceOfNonEmptyString" }, "tags": { "$ref": "#/definitions/sequenceOfNonEmptyString" } }, "additionalProperties": false } ] }, "triggerBranchFilter": { "anyOf": [ { "type": "object", "properties": { "include": { "$ref": "#/definitions/branchFilterArray" }, "exclude": { "$ref": "#/definitions/branchFilterArray" } }, "additionalProperties": false }, { "type": "array", "items": { "$ref": "#/definitions/branchFilter" } } ] }, "repositoryResources": { "type": "array", "items": { "$ref": "#/definitions/repositoryResource" } }, "repositoryResource": { "type": "object", "properties": { "repository": { "description": "ID of the external repository", "$ref": "#/definitions/referenceName" }, "endpoint": { "description": "ID of the service endpoint connecting to this repository", "$ref": "#/definitions/nonEmptyString" }, "trigger": { "$ref": "#/definitions/trigger" }, "checkoutOptions": { "deprecationMessage": "This location is deprecated, `checkoutOptions` should be a peer of the `repository` keyword.", "doNotSuggest": true, "$ref": "#/definitions/repositoryCheckoutOptions" }, "ref": { "$ref": "#/definitions/string_allowExpressions" } }, "additionalProperties": true, "firstProperty": [ "repository" ], "required": [ "repository" ] }, "repositoryCheckoutOptions": { "type": "object", "properties": { "clean": { "description": "Scorch the repo before fetching?", "enum": [ "true", "false" ], "$ref": "#/definitions/string" }, "fetchDepth": { "description": "Depth of Git graph to fetch", "$ref": "#/definitions/string" }, "fetchTags": { "description": "Fetch tags?", "$ref": "#/definitions/string" }, "lfs": { "description": "Fetch and checkout Git LFS objects?", "$ref": "#/definitions/string" }, "submodules": { "description": "Fetch and checkout submodules?", "$ref": "#/definitions/string" }, "persistCredentials": { "description": "Keep credentials available for later use?", "$ref": "#/definitions/string" } }, "additionalProperties": false }, "legacyResource": { "type": "object", "properties": { "repo": { "$ref": "#/definitions/legacyRepoResourceAlias" }, "clean": { "description": "Scorch the repo before fetching?", "enum": [ "true", "false" ], "$ref": "#/definitions/string" }, "fetchDepth": { "description": "Depth of Git graph to fetch", "$ref": "#/definitions/string" }, "lfs": { "description": "Fetch and checkout Git LFS objects?", "$ref": "#/definitions/string" } }, "additionalProperties": false, "firstProperty": [ "repo" ] }, "legacyRepoResourceAlias": { "type": "string", "pattern": "^self$" }, "webhookResources": { "type": "array", "items": { "$ref": "#/definitions/webhookResource" } }, "webhookResource": { "type": "object", "properties": { "webhook": { "description": "Name of the webhook", "$ref": "#/definitions/referenceName" }, "connection": { "description": "Name of the connection. In case of offline webhook this will be the type of Incoming Webhook otherwise it will be the type of the webhook extension.", "$ref": "#/definitions/nonEmptyString" }, "type": { "description": "Name of the webhook extension. leave this empty if its offline webhook.", "$ref": "#/definitions/nonEmptyString" }, "filters": { "description": "List of trigger filters.", "$ref": "#/definitions/webhookFilters" } }, "additionalProperties": false, "firstProperty": [ "webhook" ], "required": [ "webhook", "connection" ] }, "webhookFilters": { "type": "array", "items": { "$ref": "#/definitions/webhookFilter" } }, "webhookFilter": { "type": "object", "properties": { "path": { "description": "json path to select data from event payload", "$ref": "#/definitions/nonEmptyString" }, "value": { "description": "Expected value for the filter to match", "$ref": "#/definitions/nonEmptyString" } }, "additionalProperties": false, "firstProperty": [ "path" ], "required": [ "path", "value" ] }, "variablesTemplate": { "type": "object", "properties": { "parameters": { "$ref": "#/definitions/templateParameters" }, "variables": { "$ref": "#/definitions/variables" } }, "additionalProperties": false }, "variables": { "anyOf": [ { "type": "object", "additionalProperties": true }, { "type": "array", "items": { "$ref": "#/definitions/variable" } } ] }, "variable": { "anyOf": [ { "type": "object", "properties": { "name": { "$ref": "#/definitions/nonEmptyString" }, "value": { "$ref": "#/definitions/string" }, "readonly": { "$ref": "#/definitions/boolean" } }, "additionalProperties": false, "firstProperty": [ "name" ] }, { "type": "object", "properties": { "group": { "$ref": "#/definitions/nonEmptyString" } }, "additionalProperties": false, "firstProperty": [ "group" ] }, { "type": "object", "properties": { "template": { "$ref": "#/definitions/nonEmptyString" }, "parameters": { "$ref": "#/definitions/mapping" } }, "additionalProperties": false, "firstProperty": [ "template" ] } ] }, "stagesTemplate": { "type": "object", "properties": { "parameters": { "$ref": "#/definitions/templateParameters" }, "stages": { "$ref": "#/definitions/stages" } }, "additionalProperties": false }, "stages": { "type": "array", "items": { "$ref": "#/definitions/stage" } }, "stage": { "anyOf": [ { "type": "object", "properties": { "stage": { "description": "ID of the stage", "$ref": "#/definitions/string" }, "displayName": { "description": "Human-readable name for the stage", "$ref": "#/definitions/string" }, "pool": { "description": "Pool where jobs in this stage will run unless otherwise specified", "$ref": "#/definitions/pool" }, "dependsOn": { "description": "Any stages which must complete before this one", "$ref": "#/definitions/jobDependsOn" }, "condition": { "description": "Evaluate this condition expression to determine whether to run this stage", "$ref": "#/definitions/string" }, "variables": { "description": "Stage-specific variables", "$ref": "#/definitions/variables" }, "jobs": { "description": "Jobs which make up the stage", "$ref": "#/definitions/jobs" }, "lockBehavior": { "description": "Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests", "$ref": "#/definitions/lockBehavior" }, "trigger": { "description": "Stage trigger manual or automatic (default)", "$ref": "#/definitions/stageTrigger" }, "isSkippable": { "description": "Setting false prevents the stage from being skipped. By default it's always true", "$ref": "#/definitions/boolean" }, "templateContext": { "$ref": "#/definitions/templateContext" } }, "additionalProperties": false, "firstProperty": [ "stage" ] }, { "type": "object", "properties": { "template": { "description": "Reference to a template for this stage", "$ref": "#/definitions/nonEmptyString" }, "parameters": { "description": "Parameters used in a stage template", "$ref": "#/definitions/mapping" } }, "additionalProperties": false, "firstProperty": [ "template" ] } ] }, "lockBehavior": { "anyOf": [ { "type": "string", "pattern": "^sequential$" }, { "type": "string", "pattern": "^runLatest$" } ] }, "stageTrigger": { "anyOf": [ { "type": "string", "pattern": "^manual$" }, { "type": "string", "pattern": "^automatic$" } ] }, "extendsParameters": { "type": "array", "items": { "$ref": "#/definitions/templateParameter" } }, "extendsTemplate": { "anyOf": [ { "type": "object", "properties": { "stages": { "$ref": "#/definitions/stages" }, "trigger": { "$ref": "#/definitions/trigger" }, "resources": { "$ref": "#/definitions/resources" }, "parameters": { "$ref": "#/definitions/extendsParameters" }, "variables": { "$ref": "#/definitions/variables" } }, "additionalProperties": false }, { "type": "object", "properties": { "jobs": { "$ref": "#/definitions/jobs" }, "trigger": { "$ref": "#/definitions/trigger" }, "resources": { "$ref": "#/definitions/resources" }, "parameters": { "$ref": "#/definitions/extendsParameters" }, "variables": { "$ref": "#/definitions/variables" } }, "additionalProperties": false }, { "type": "object", "properties": { "steps": { "$ref": "#/definitions/steps" }, "trigger": { "$ref": "#/definitions/trigger" }, "resources": { "$ref": "#/definitions/resources" }, "parameters": { "$ref": "#/definitions/extendsParameters" }, "variables": { "$ref": "#/definitions/variables" } }, "additionalProperties": false }, { "type": "object", "properties": { "trigger": { "$ref": "#/definitions/trigger" }, "resources": { "$ref": "#/definitions/resources" }, "parameters": { "$ref": "#/definitions/extendsParameters" }, "extends": { "$ref": "#/definitions/extends" } }, "additionalProperties": false } ] }, "extendsTemplateBase": { "type": "object", "properties": { "trigger": { "$ref": "#/definitions/trigger" }, "resources": { "$ref": "#/definitions/resources" }, "parameters": { "$ref": "#/definitions/extendsParameters" }, "variables": { "$ref": "#/definitions/variables" } }, "additionalProperties": false }, "parametersTemplate": { "anyOf": [ { "type": "object", "properties": { "parameters": { "description": "Step-specific parameters", "$ref": "#/definitions/templateParameters" }, "steps": { "description": "A list of steps to run", "$ref": "#/definitions/steps" } }, "additionalProperties": false, "required": [ "steps" ] }, { "type": "object", "properties": { "parameters": { "description": "Parameters used in a job template", "$ref": "#/definitions/templateParameters" }, "jobs": { "description": "Jobs which make up the pipeline", "$ref": "#/definitions/jobs" } }, "additionalProperties": false }, { "type": "object", "properties": { "parameters": { "$ref": "#/definitions/templateParameters" }, "stages": { "$ref": "#/definitions/stages" } }, "additionalProperties": false }, { "type": "object", "properties": { "resources": { "$ref": "#/definitions/resources" }, "parameters": { "$ref": "#/definitions/templateParameters" }, "extends": { "description": "Extends a template", "$ref": "#/definitions/extends" } }, "additionalProperties": false, "required": [ "extends" ] } ] }, "extends": { "type": "object", "properties": { "template": { "$ref": "#/definitions/nonEmptyString" }, "parameters": { "description": "Parameters used in the extend", "$ref": "#/definitions/mapping" } }, "additionalProperties": false }, "jobsTemplate": { "anyOf": [ { "type": "object", "properties": { "parameters": { "description": "Parameters used in a job template", "$ref": "#/definitions/templateParameters" }, "jobs": { "description": "Jobs which make up the pipeline", "$ref": "#/definitions/jobs" } }, "additionalProperties": false }, { "type": "object", "properties": { "parameters": { "description": "Parameters used in a phase template", "$ref": "#/definitions/templateParameters" }, "phases": { "description": "Phases which make up the pipeline", "deprecationMessage": "This option is deprecated, use `jobs` instead", "doNotSuggest": true, "$ref": "#/definitions/phases" } }, "additionalProperties": false } ] }, "jobs": { "type": "array", "items": { "$ref": "#/definitions/job" } }, "job": { "anyOf": [ { "type": "object", "properties": { "job": { "description": "ID of the job", "$ref": "#/definitions/referenceName" }, "displayName": { "description": "Human-readable name for the job", "$ref": "#/definitions/string" }, "dependsOn": { "description": "Any jobs which must complete before this one", "$ref": "#/definitions/jobDependsOn" }, "condition": { "description": "Evaluate this condition expression to determine whether to run this job", "$ref": "#/definitions/string" }, "continueOnError": { "description": "Continue running even on failure?", "$ref": "#/definitions/jobContinueOnError" }, "timeoutInMinutes": { "description": "Time to wait for this job to complete before the server kills it", "$ref": "#/definitions/nonEmptyString" }, "cancelTimeoutInMinutes": { "description": "Time to wait for the job to cancel before forcibly terminating it", "$ref": "#/definitions/nonEmptyString" }, "variables": { "description": "Job-specific variables", "$ref": "#/definitions/variables" }, "strategy": { "description": "Execution strategy for this job", "$ref": "#/definitions/jobStrategy" }, "pool": { "description": "Pool where this job will run", "$ref": "#/definitions/pool" }, "container": { "description": "Container resource name", "$ref": "#/definitions/jobContainer" }, "services": { "$ref": "#/definitions/jobServices" }, "workspace": { "$ref": "#/definitions/jobWorkspace" }, "uses": { "description": "Any resources required by this job that are not already referenced", "$ref": "#/definitions/explicitResources" }, "steps": { "description": "A list of steps to run", "$ref": "#/definitions/steps" }, "templateContext": { "$ref": "#/definitions/templateContext" } }, "additionalProperties": false, "firstProperty": [ "job" ] }, { "type": "object", "properties": { "deployment": { "$ref": "#/definitions/string" }, "displayName": { "description": "Human-readable name for the deployment", "$ref": "#/definitions/string" }, "dependsOn": { "description": "Any jobs which must complete before this one", "$ref": "#/definitions/jobDependsOn" }, "condition": { "description": "Evaluate this condition expression to determine whether to run this deployment", "$ref": "#/definitions/string" }, "continueOnError": { "description": "Continue running even on failure?", "$ref": "#/definitions/jobContinueOnError" }, "timeoutInMinutes": { "description": "Time to wait for this job to complete before the server kills it", "$ref": "#/definitions/nonEmptyString" }, "cancelTimeoutInMinutes": { "description": "Time to wait for the job to cancel before forcibly terminating it", "$ref": "#/definitions/nonEmptyString" }, "variables": { "description": "Deployment-specific variables", "$ref": "#/definitions/variables" }, "pool": { "description": "Pool where this job will run", "$ref": "#/definitions/pool" }, "environment": { "$ref": "#/definitions/deploymentEnvironment" }, "strategy": { "description": "Execution strategy for this deployment", "$ref": "#/definitions/deploymentStrategy" }, "workspace": { "description": "What to clean up before the job runs", "$ref": "#/definitions/jobWorkspace" }, "uses": { "description": "Any resources required by this job that are not already referenced", "$ref": "#/definitions/explicitResources" }, "container": { "description": "Container resource name", "$ref": "#/definitions/jobContainer" }, "services": { "description": "Container resources to run as a service container", "$ref": "#/definitions/jobServices" }, "templateContext": { "$ref": "#/definitions/templateContext" } }, "additionalProperties": false, "firstProperty": [ "deployment" ] }, { "type": "object", "properties": { "template": { "description": "Reference to a template for this deployment", "$ref": "#/definitions/nonEmptyString" }, "parameters": { "description": "Parameters used in a deployment template", "$ref": "#/definitions/mapping" } }, "additionalProperties": false, "firstProperty": [ "template" ] } ] }, "explicitResources": { "type": "object", "properties": { "repositories": { "description": "Repository references", "$ref": "#/definitions/sequenceOfNonEmptyString" }, "pools": { "description": "Pool references", "$ref": "#/definitions/sequenceOfNonEmptyString" } }, "additionalProperties": false }, "pool": { "description": "Pool details", "anyOf": [ { "type": "string" }, { "type": "object", "properties": { "name": { "description": "Name of a pool", "$ref": "#/definitions/nonEmptyString" }, "demands": { "description": "List of demands (for a private pool)", "$ref": "#/definitions/poolDemands" } }, "additionalProperties": true } ] }, "poolDemands": { "anyOf": [ { "type": "string" }, { "type": "array", "items": { "$ref": "#/definitions/nonEmptyString" } } ] }, "jobContainer": { "anyOf": [ { "type": "string" }, { "type": "object", "properties": { "alias": { "description": "The alias of the container resource", "$ref": "#/definitions/string" } }, "additionalProperties": false }, { "type": "object", "properties": { "endpoint": { "description": "ID of the service endpoint connecting to a private container registry", "$ref": "#/definitions/string_allowExpressions" }, "env": { "description": "Variables to map into the container's environment", "$ref": "#/definitions/mappingOfStringString" }, "image": { "description": "Container image tag", "$ref": "#/definitions/string", "examples": [ "ubuntu:16.04", "windows:1803" ] }, "mapDockerSocket": { "description": "Set this flag to false to force the agent not to setup the /var/run/docker.sock volume on container jobs", "$ref": "#/definitions/boolean" }, "options": { "description": "Options to pass into container host", "$ref": "#/definitions/string_allowExpressions" }, "ports": { "$ref": "#/definitions/sequenceOfString_allowExpressions" }, "volumes": { "$ref": "#/definitions/sequenceOfString_allowExpressions" }, "mountReadOnly": { "$ref": "#/definitions/readOnlyMounts" } }, "required": [ "image" ] } ] }, "containerBase": { "type": "object", "properties": { "endpoint": { "description": "ID of the service endpoint connecting to a private container registry", "$ref": "#/definitions/string_allowExpressions" }, "env": { "description": "Variables to map into the container's environment", "$ref": "#/definitions/mappingOfStringString" }, "image": { "description": "Container image tag", "$ref": "#/definitions/string", "examples": [ "ubuntu:16.04", "windows:1803" ] }, "mapDockerSocket": { "description": "Set this flag to false to force the agent not to setup the /var/run/docker.sock volume on container jobs", "$ref": "#/definitions/boolean" }, "options": { "description": "Options to pass into container host", "$ref": "#/definitions/string_allowExpressions" }, "ports": { "$ref": "#/definitions/sequenceOfString_allowExpressions" }, "volumes": { "$ref": "#/definitions/sequenceOfString_allowExpressions" }, "mountReadOnly": { "$ref": "#/definitions/readOnlyMounts" } }, "additionalProperties": false, "required": [ "image" ] }, "readOnlyMounts": { "type": "object", "properties": { "work": { "description": "Mount the work directory as readonly", "$ref": "#/definitions/boolean" }, "externals": { "description": "Mount the externals directory as readonly", "$ref": "#/definitions/boolean" }, "tools": { "description": "Mount the tools directory as readonly", "$ref": "#/definitions/boolean" }, "tasks": { "description": "Mount the tasks directory as readonly", "$ref": "#/definitions/boolean" } }, "additionalProperties": false }, "jobServices": { "type": "object", "additionalProperties": true }, "jobWorkspace": { "type": "object", "properties": { "clean": { "description": "Which parts of the workspace should be scorched before fetching", "enum": [ "outputs", "resources", "all" ], "$ref": "#/definitions/string" } }, "additionalProperties": false }, "jobStrategy": { "anyOf": [ { "type": "object", "properties": { "matrix": { "$ref": "#/definitions/jobMatrix" }, "maxParallel": { "description": "Maximum number of jobs running in parallel", "$ref": "#/definitions/nonEmptyString" } }, "additionalProperties": false }, { "type": "object", "properties": { "parallel": { "description": "Run the job this many times", "$ref": "#/definitions/nonEmptyString" } }, "additionalProperties": false } ] }, "jobMatrix": { "anyOf": [ { "type": "object", "additionalProperties": true, "minProperties": 1, "patternProperties": { "^[A-Za-z0-9_]+$": { "$ref": "#/definitions/matrixProperties" } } }, { "type": "string" } ] }, "matrixProperties": { "type": "object", "description": "Variable-value pair to pass in this matrix instance", "additionalProperties": true }, "deploymentEnvironment": { "description": "Environment details", "anyOf": [ { "type": "string" }, { "type": "object", "properties": { "name": { "description": "Name of environment", "$ref": "#/definitions/nonEmptyString" }, "resourceName": { "description": "Name of resource", "$ref": "#/definitions/nonEmptyString" }, "resourceId": { "description": "Id of resource", "$ref": "#/definitions/nonEmptyString" }, "resourceType": { "description": "Type of environment resource", "$ref": "#/definitions/nonEmptyString" }, "tags": { "description": "List of tag filters", "$ref": "#/definitions/nonEmptyString" } }, "additionalProperties": false } ] }, "deploymentStrategy": { "anyOf": [ { "type": "object", "properties": { "runOnce": { "description": "RunOnce Deployment strategy", "$ref": "#/definitions/runOnceDeploymentStrategy" } }, "additionalProperties": false }, { "type": "object", "properties": { "rolling": { "description": "Rolling Deployment strategy", "$ref": "#/definitions/rollingDeploymentStrategy" } }, "additionalProperties": false }, { "type": "object", "properties": { "canary": { "description": "Canary Deployment strategy", "$ref": "#/definitions/canaryDeploymentStrategy" } }, "additionalProperties": false } ] }, "preDeployHook": { "type": "object", "properties": { "steps": { "description": "A list of steps to run", "$ref": "#/definitions/steps" }, "pool": { "description": "Pool where pre deploy steps will run", "$ref": "#/definitions/pool" } }, "additionalProperties": false }, "deployHook": { "type": "object", "properties": { "steps": { "description": "A list of steps to run", "$ref": "#/definitions/steps" }, "pool": { "description": "Pool where deploy steps will run", "$ref": "#/definitions/pool" } }, "additionalProperties": false }, "routeTrafficHook": { "type": "object", "properties": { "steps": { "description": "A list of steps to run", "$ref": "#/definitions/steps" }, "pool": { "description": "Pool where route traffic steps will run", "$ref": "#/definitions/pool" } }, "additionalProperties": false }, "postRouteTrafficHook": { "type": "object", "properties": { "steps": { "description": "A list of steps to run", "$ref": "#/definitions/steps" }, "pool": { "description": "Pool where post route traffic steps will run", "$ref": "#/definitions/pool" } }, "additionalProperties": false }, "onSuccessOrFailureHook": { "type": "object", "properties": { "failure": { "description": "Runs on failure of any step", "$ref": "#/definitions/onFailureHook" }, "success": { "description": "Runs on success of all of the steps", "$ref": "#/definitions/onSuccessHook" } }, "additionalProperties": false }, "onFailureHook": { "type": "object", "properties": { "steps": { "description": "A list of steps to run", "$ref": "#/definitions/steps" }, "pool": { "description": "Pool where post on failure steps will run", "$ref": "#/definitions/pool" } }, "additionalProperties": false }, "onSuccessHook": { "type": "object", "properties": { "steps": { "description": "A list of steps to run", "$ref": "#/definitions/steps" }, "pool": { "description": "Pool where on success steps will run", "$ref": "#/definitions/pool" } }, "additionalProperties": false }, "runOnceDeploymentStrategy": { "type": "object", "properties": { "preDeploy": { "description": "Pre deploy hook for runOnce deployment strategy", "$ref": "#/definitions/preDeployHook" }, "deploy": { "description": "Deploy hook for runOnce deployment strategy", "$ref": "#/definitions/deployHook" }, "routeTraffic": { "description": "Route traffic hook for runOnce deployment strategy", "$ref": "#/definitions/routeTrafficHook" }, "postRouteTraffic": { "description": "Post route traffic hook for runOnce deployment strategy", "$ref": "#/definitions/postRouteTrafficHook" }, "on": { "description": "On success or failure hook for runOnce deployment strategy", "$ref": "#/definitions/onSuccessOrFailureHook" } }, "additionalProperties": false }, "rollingDeploymentStrategy": { "type": "object", "properties": { "maxParallel": { "description": "Maximum number of jobs running in parallel", "$ref": "#/definitions/nonEmptyString" }, "preDeploy": { "description": "Pre deploy hook for rolling deployment strategy", "$ref": "#/definitions/preDeployHook" }, "deploy": { "description": "Deploy hook for rolling deployment strategy", "$ref": "#/definitions/deployHook" }, "routeTraffic": { "description": "Route traffic hook for rolling deployment strategy", "$ref": "#/definitions/routeTrafficHook" }, "postRouteTraffic": { "description": "Post route traffic hook for rolling deployment strategy", "$ref": "#/definitions/postRouteTrafficHook" }, "on": { "description": "On success or failure hook for rolling deployment strategy", "$ref": "#/definitions/onSuccessOrFailureHook" } }, "additionalProperties": false }, "canaryDeploymentStrategy": { "type": "object", "properties": { "increments": { "description": "Maximum batch size for deployment", "$ref": "#/definitions/canaryDeploymentIncrements" }, "preDeploy": { "description": "Pre deploy hook for canary deployment strategy", "$ref": "#/definitions/preDeployHook" }, "deploy": { "description": "Deploy hook for canary deployment strategy", "$ref": "#/definitions/deployHook" }, "routeTraffic": { "description": "Route traffic hook for canary deployment strategy", "$ref": "#/definitions/routeTrafficHook" }, "postRouteTraffic": { "description": "Post route traffic hook for canary deployment strategy", "$ref": "#/definitions/postRouteTrafficHook" }, "on": { "description": "On success or failure hook for canary deployment strategy", "$ref": "#/definitions/onSuccessOrFailureHook" } }, "additionalProperties": false }, "canaryDeploymentIncrements": { "type": "array", "items": { "$ref": "#/definitions/nonEmptyString" } }, "phases": { "type": "array", "deprecationMessage": "This option is deprecated, use `jobs` instead", "items": { "$ref": "#/definitions/phase" } }, "phase": { "deprecationMessage": "This option is deprecated, use `job` (inside `jobs`) instead", "anyOf": [ { "type": "object", "properties": { "phase": { "description": "ID of the phase", "$ref": "#/definitions/referenceName" }, "dependsOn": { "description": "Any phases which must complete before this one", "$ref": "#/definitions/jobDependsOn" }, "displayName": { "description": "Human-readable name of the phase", "$ref": "#/definitions/string" }, "condition": { "description": "Evaluate this condition expression to determine whether to run this phase", "$ref": "#/definitions/string" }, "continueOnError": { "description": "Continue running even on failure?", "$ref": "#/definitions/jobContinueOnError" }, "queue": { "description": "Queue where this phase will run", "deprecationMessage": "This option is deprecated, use pool instead", "doNotSuggest": true, "$ref": "#/definitions/phaseQueueTarget" }, "variables": { "description": "Phase-specific variables", "$ref": "#/definitions/variables" }, "steps": { "description": "A list of steps to run in this phase", "$ref": "#/definitions/steps" } }, "additionalProperties": false, "firstProperty": [ "phase" ] }, { "type": "object", "properties": { "phase": { "description": "ID of the phase", "$ref": "#/definitions/referenceName" }, "dependsOn": { "description": "Any phases which must complete before this one", "$ref": "#/definitions/jobDependsOn" }, "displayName": { "description": "Human-readable name of the phase", "$ref": "#/definitions/string" }, "condition": { "description": "Evaluate this condition expression to determine whether to run this phase", "$ref": "#/definitions/string" }, "continueOnError": { "description": "Continue running even on failure?", "$ref": "#/definitions/jobContinueOnError" }, "server": { "description": "True if this is an agent-less phase (runs on server)", "deprecationMessage": "This option is deprecated, use pool:server instead", "doNotSuggest": true, "$ref": "#/definitions/phaseServerTarget" }, "variables": { "description": "Phase-specific variables", "$ref": "#/definitions/variables" }, "steps": { "description": "A list of steps to run in this phase", "$ref": "#/definitions/steps" } }, "additionalProperties": false, "firstProperty": [ "phase" ] }, { "type": "object", "properties": { "template": { "description": "Reference to a template for this phase", "$ref": "#/definitions/nonEmptyString" }, "parameters": { "description": "Parameters used in a phase template", "$ref": "#/definitions/mapping" } }, "additionalProperties": false, "firstProperty": [ "template" ] } ] }, "phaseQueueTarget": { "description": "Queue details", "deprecationMessage": "This option is deprecated, use `pool` under `jobs` instead", "anyOf": [ { "type": "string" }, { "type": "object", "properties": { "cancelTimeoutInMinutes": { "description": "Time to wait for the phase to cancel before forcibly terminating it", "$ref": "#/definitions/nonEmptyString" }, "container": { "description": "Container resource name", "$ref": "#/definitions/nonEmptyString" }, "demands": { "description": "List of demands (for a private queue)", "$ref": "#/definitions/phaseTargetDemands" }, "matrix": { "$ref": "#/definitions/phaseTargetMatrix" }, "name": { "description": "Name of a queue", "$ref": "#/definitions/string" }, "parallel": { "description": "Maximum number of parallel agent executions", "$ref": "#/definitions/nonEmptyString" }, "timeoutInMinutes": { "description": "Time to wait before cancelling the phase", "$ref": "#/definitions/nonEmptyString" }, "workspace": { "$ref": "#/definitions/phaseTargetWorkspace" } }, "additionalProperties": false } ] }, "phaseServerTarget": { "anyOf": [ { "type": "string" }, { "type": "object", "properties": { "cancelTimeoutInMinutes": { "description": "Time to wait for the job to cancel before forcibly terminating it", "$ref": "#/definitions/nonEmptyString" }, "matrix": { "$ref": "#/definitions/phaseTargetMatrix" }, "parallel": { "description": "Maximum number of parallel agent executions", "$ref": "#/definitions/nonEmptyString" }, "timeoutInMinutes": { "description": "Time to wait before cancelling the job", "$ref": "#/definitions/nonEmptyString" } }, "additionalProperties": false } ] }, "phaseTargetDemands": { "anyOf": [ { "type": "string" }, { "type": "array", "items": { "$ref": "#/definitions/nonEmptyString" } } ] }, "phaseTargetWorkspace": { "type": "object", "properties": { "clean": { "description": "Scorch the repo before fetching?", "enum": [ "outputs", "resources", "all" ], "$ref": "#/definitions/string" } }, "additionalProperties": false }, "phaseTargetMatrix": { "description": "List of permutations of variable values to run", "anyOf": [ { "type": "object", "additionalProperties": true }, { "type": "string" } ], "minProperties": 1, "patternProperties": { "^[A-Za-z0-9_]+$": { "$ref": "#/definitions/matrixProperties" } } }, "stepsTemplate": { "type": "object", "properties": { "parameters": { "description": "Step-specific parameters", "$ref": "#/definitions/templateParameters" }, "steps": { "description": "A list of steps to run", "$ref": "#/definitions/steps" } }, "additionalProperties": false }, "steps": { "type": "array", "items": { "$ref": "#/definitions/step" } }, "step": { "anyOf": [ { "type": "object", "$ref": "#/definitions/task" }, { "type": "object", "properties": { "script": { "description": "An inline script", "$ref": "#/definitions/string" }, "failOnStderr": { "description": "Fail the task if output is sent to Stderr?", "$ref": "#/definitions/string" }, "workingDirectory": { "description": "Start the script with this working directory", "$ref": "#/definitions/string" }, "condition": { "description": "Evaluate this condition expression to determine whether to run this task", "$ref": "#/definitions/string" }, "continueOnError": { "description": "Continue running even on failure?", "$ref": "#/definitions/boolean" }, "displayName": { "description": "Human-readable name for the task", "$ref": "#/definitions/string" }, "target": { "description": "Environment in which to run this task", "$ref": "#/definitions/stepTarget" }, "enabled": { "description": "Run this task when the job runs?", "$ref": "#/definitions/boolean" }, "env": { "description": "Variables to map into the process's environment", "$ref": "#/definitions/mappingOfStringString" }, "name": { "description": "ID of the step", "$ref": "#/definitions/referenceName" }, "timeoutInMinutes": { "description": "Time to wait for this task to complete before the server kills it", "$ref": "#/definitions/nonEmptyString" }, "retryCountOnTaskFailure": { "description": "Number of retries if the task fails", "$ref": "#/definitions/string" } }, "additionalProperties": false, "firstProperty": [ "script" ], "required": [ "script" ] }, { "type": "object", "properties": { "powershell": { "description": "Inline PowerShell or reference to a PowerShell file", "$ref": "#/definitions/string" }, "errorActionPreference": { "$ref": "#/definitions/string" }, "failOnStderr": { "description": "Fail the task if output is sent to Stderr?", "$ref": "#/definitions/string" }, "ignoreLASTEXITCODE": { "description": "Check the final exit code of the script to determine whether the step succeeded?", "$ref": "#/definitions/string" }, "workingDirectory": { "description": "Start the script with this working directory", "$ref": "#/definitions/string" }, "condition": { "description": "Evaluate this condition expression to determine whether to run this task", "$ref": "#/definitions/string" }, "continueOnError": { "description": "Continue running even on failure?", "$ref": "#/definitions/boolean" }, "displayName": { "description": "Human-readable name for the task", "$ref": "#/definitions/string" }, "target": { "description": "Environment in which to run this task", "$ref": "#/definitions/stepTarget" }, "enabled": { "description": "Run this task when the job runs?", "$ref": "#/definitions/boolean" }, "env": { "description": "Variables to map into the process's environment", "$ref": "#/definitions/mappingOfStringString" }, "name": { "description": "ID of the step", "$ref": "#/definitions/referenceName" }, "timeoutInMinutes": { "description": "Time to wait for this task to complete before the server kills it", "$ref": "#/definitions/nonEmptyString" }, "retryCountOnTaskFailure": { "description": "Number of retries if the task fails", "$ref": "#/definitions/string" } }, "additionalProperties": false, "firstProperty": [ "powershell" ], "required": [ "powershell" ] }, { "type": "object", "properties": { "pwsh": { "description": "Inline PowerShell or reference to a PowerShell file", "$ref": "#/definitions/string" }, "errorActionPreference": { "$ref": "#/definitions/string" }, "failOnStderr": { "description": "Fail the task if output is sent to Stderr?", "$ref": "#/definitions/string" }, "ignoreLASTEXITCODE": { "description": "Check the final exit code of the script to determine whether the step succeeded?", "$ref": "#/definitions/string" }, "workingDirectory": { "description": "Start the script with this working directory", "$ref": "#/definitions/string" }, "condition": { "description": "Evaluate this condition expression to determine whether to run this task", "$ref": "#/definitions/string" }, "continueOnError": { "description": "Continue running even on failure?", "$ref": "#/definitions/boolean" }, "displayName": { "description": "Human-readable name for the task", "$ref": "#/definitions/string" }, "target": { "description": "Environment in which to run this task", "$ref": "#/definitions/stepTarget" }, "enabled": { "description": "Run this task when the job runs?", "$ref": "#/definitions/boolean" }, "env": { "description": "Variables to map into the process's environment", "$ref": "#/definitions/mappingOfStringString" }, "name": { "description": "ID of the step", "$ref": "#/definitions/referenceName" }, "timeoutInMinutes": { "description": "Time to wait for this task to complete before the server kills it", "$ref": "#/definitions/nonEmptyString" }, "retryCountOnTaskFailure": { "description": "Number of retries if the task fails", "$ref": "#/definitions/string" } }, "additionalProperties": false, "firstProperty": [ "pwsh" ], "required": [ "pwsh" ] }, { "type": "object", "properties": { "bash": { "description": "An inline script", "$ref": "#/definitions/string" }, "failOnStderr": { "description": "Fail the task if output is sent to Stderr?", "$ref": "#/definitions/string" }, "workingDirectory": { "description": "Start the script with this working directory", "$ref": "#/definitions/string" }, "condition": { "description": "Evaluate this condition expression to determine whether to run this task", "$ref": "#/definitions/string" }, "continueOnError": { "description": "Continue running even on failure?", "$ref": "#/definitions/boolean" }, "displayName": { "description": "Human-readable name for the task", "$ref": "#/definitions/string" }, "target": { "description": "Environment in which to run this task", "$ref": "#/definitions/stepTarget" }, "enabled": { "description": "Run this task when the job runs?", "$ref": "#/definitions/boolean" }, "env": { "description": "Variables to map into the process's environment", "$ref": "#/definitions/mappingOfStringString" }, "name": { "description": "ID of the step", "$ref": "#/definitions/referenceName" }, "timeoutInMinutes": { "description": "Time to wait for this task to complete before the server kills it", "$ref": "#/definitions/nonEmptyString" }, "retryCountOnTaskFailure": { "description": "Number of retries if the task fails", "$ref": "#/definitions/string" } }, "additionalProperties": false, "firstProperty": [ "bash" ], "required": [ "bash" ] }, { "type": "object", "properties": { "checkout": { "description": "Alias of the repository resource to check out or 'none'", "$ref": "#/definitions/string" }, "clean": { "description": "Scorch the repo before fetching?", "enum": [ "true", "false" ], "$ref": "#/definitions/string" }, "fetchDepth": { "description": "Depth of Git graph to fetch", "$ref": "#/definitions/string" }, "fetchFilter": { "description": "Filter Git history", "$ref": "#/definitions/string" }, "fetchTags": { "description": "Fetch tags?", "$ref": "#/definitions/string" }, "lfs": { "description": "Fetch Git-LFS objects?", "$ref": "#/definitions/string" }, "persistCredentials": { "description": "Keep credentials available for later use?", "$ref": "#/definitions/string" }, "submodules": { "description": "Check out Git submodules?", "$ref": "#/definitions/string" }, "path": { "description": "Path of the repository to check out", "$ref": "#/definitions/string" }, "workspaceRepo": { "description": "Make the repository root directory the default working directory?", "enum": [ "true", "false" ], "$ref": "#/definitions/string" }, "condition": { "description": "Evaluate this condition expression to determine whether to run this task", "$ref": "#/definitions/string" }, "continueOnError": { "description": "Continue running even on failure?", "$ref": "#/definitions/boolean" }, "displayName": { "description": "Human-readable name for the task", "$ref": "#/definitions/string" }, "target": { "description": "Environment in which to run this task", "$ref": "#/definitions/stepTarget" }, "enabled": { "description": "Run this task when the job runs?", "$ref": "#/definitions/boolean" }, "env": { "description": "Variables to map into the process's environment", "$ref": "#/definitions/mappingOfStringString" }, "name": { "description": "ID of the step", "$ref": "#/definitions/referenceName" }, "timeoutInMinutes": { "description": "Time to wait for this task to complete before the server kills it", "$ref": "#/definitions/nonEmptyString" }, "retryCountOnTaskFailure": { "description": "Number of retries if the task fails", "$ref": "#/definitions/string" } }, "additionalProperties": false, "firstProperty": [ "checkout" ] }, { "type": "object", "properties": { "download": { "description": "Reference to the pipeline", "$ref": "#/definitions/nonEmptyString" }, "artifact": { "description": "Name of the artifact to download", "$ref": "#/definitions/nonEmptyString" }, "patterns": { "description": "Pattern to download files from artifact", "$ref": "#/definitions/nonEmptyString" }, "condition": { "description": "Evaluate this condition expression to determine whether to run this task", "$ref": "#/definitions/string" }, "continueOnError": { "description": "Continue running even on failure?", "$ref": "#/definitions/boolean" }, "displayName": { "description": "Human-readable name for the task", "$ref": "#/definitions/string" }, "target": { "description": "Environment in which to run this task", "$ref": "#/definitions/stepTarget" }, "enabled": { "description": "Run this task when the job runs?", "$ref": "#/definitions/boolean" }, "env": { "description": "Variables to map into the process's environment", "$ref": "#/definitions/mappingOfStringString" }, "name": { "description": "ID of the step", "$ref": "#/definitions/referenceName" }, "timeoutInMinutes": { "description": "Time to wait for this task to complete before the server kills it", "$ref": "#/definitions/nonEmptyString" }, "retryCountOnTaskFailure": { "description": "Number of retries if the task fails", "$ref": "#/definitions/string" } }, "additionalProperties": false, "firstProperty": [ "download" ], "required": [ "download" ] }, { "type": "object", "properties": { "downloadBuild": { "description": "ID for the build resource", "$ref": "#/definitions/nonEmptyString" }, "artifact": { "description": "Name of the artifact to download", "$ref": "#/definitions/string" }, "path": { "description": "Path to download the artifact into", "$ref": "#/definitions/string" }, "patterns": { "description": "Downloads the files which matches the patterns", "$ref": "#/definitions/string" }, "inputs": { "description": "Inputs for the task", "$ref": "#/definitions/mappingOfStringString" }, "condition": { "description": "Evaluate this condition expression to determine whether to run this task", "$ref": "#/definitions/string" }, "continueOnError": { "description": "Continue running even on failure?", "$ref": "#/definitions/boolean" }, "displayName": { "description": "Human-readable name for the task", "$ref": "#/definitions/string" }, "target": { "description": "Environment in which to run this task", "$ref": "#/definitions/stepTarget" }, "enabled": { "description": "Run this task when the job runs?", "$ref": "#/definitions/boolean" }, "env": { "description": "Variables to map into the process's environment", "$ref": "#/definitions/mappingOfStringString" }, "name": { "description": "ID of the step", "$ref": "#/definitions/referenceName" }, "timeoutInMinutes": { "description": "Time to wait for this task to complete before the server kills it", "$ref": "#/definitions/nonEmptyString" }, "retryCountOnTaskFailure": { "description": "Number of retries if the task fails", "$ref": "#/definitions/string" } }, "additionalProperties": false, "firstProperty": [ "downloadBuild" ] }, { "type": "object", "properties": { "getPackage": { "description": "ID for the package resource", "$ref": "#/definitions/nonEmptyString" }, "path": { "description": "Path to download the package into", "$ref": "#/definitions/string" }, "condition": { "description": "Evaluate this condition expression to determine whether to run this task", "$ref": "#/definitions/string" }, "continueOnError": { "description": "Continue running even on failure?", "$ref": "#/definitions/boolean" }, "displayName": { "description": "Human-readable name for the task", "$ref": "#/definitions/string" }, "target": { "description": "Environment in which to run this task", "$ref": "#/definitions/stepTarget" }, "enabled": { "description": "Run this task when the job runs?", "$ref": "#/definitions/boolean" }, "env": { "description": "Variables to map into the process's environment", "$ref": "#/definitions/mappingOfStringString" }, "name": { "description": "ID of the step", "$ref": "#/definitions/referenceName" }, "timeoutInMinutes": { "description": "Time to wait for this task to complete before the server kills it", "$ref": "#/definitions/nonEmptyString" }, "retryCountOnTaskFailure": { "description": "Number of retries if the task fails", "$ref": "#/definitions/string" } }, "additionalProperties": false, "firstProperty": [ "getPackage" ] }, { "type": "object", "properties": { "upload": { "deprecationMessage": "This option is deprecated, use `publish` instead", "doNotSuggest": true, "$ref": "#/definitions/string" }, "artifact": { "$ref": "#/definitions/string" }, "condition": { "description": "Evaluate this condition expression to determine whether to run this task", "$ref": "#/definitions/string" }, "continueOnError": { "description": "Continue running even on failure?", "$ref": "#/definitions/boolean" }, "displayName": { "description": "Human-readable name for the task", "$ref": "#/definitions/string" }, "target": { "description": "Environment in which to run this task", "$ref": "#/definitions/stepTarget" }, "enabled": { "description": "Run this task when the job runs?", "$ref": "#/definitions/boolean" }, "env": { "description": "Variables to map into the process's environment", "$ref": "#/definitions/mappingOfStringString" }, "name": { "description": "ID of the step", "$ref": "#/definitions/referenceName" }, "timeoutInMinutes": { "description": "Time to wait for this task to complete before the server kills it", "$ref": "#/definitions/nonEmptyString" }, "retryCountOnTaskFailure": { "description": "Number of retries if the task fails", "$ref": "#/definitions/string" } }, "additionalProperties": false, "firstProperty": [ "upload" ] }, { "type": "object", "properties": { "publish": { "$ref": "#/definitions/string" }, "artifact": { "$ref": "#/definitions/string" }, "condition": { "description": "Evaluate this condition expression to determine whether to run this task", "$ref": "#/definitions/string" }, "continueOnError": { "description": "Continue running even on failure?", "$ref": "#/definitions/boolean" }, "displayName": { "description": "Human-readable name for the task", "$ref": "#/definitions/string" }, "target": { "description": "Environment in which to run this task", "$ref": "#/definitions/stepTarget" }, "enabled": { "description": "Run this task when the job runs?", "$ref": "#/definitions/boolean" }, "env": { "description": "Variables to map into the process's environment", "$ref": "#/definitions/mappingOfStringString" }, "name": { "description": "ID of the step", "$ref": "#/definitions/referenceName" }, "timeoutInMinutes": { "description": "Time to wait for this task to complete before the server kills it", "$ref": "#/definitions/nonEmptyString" }, "retryCountOnTaskFailure": { "description": "Number of retries if the task fails", "$ref": "#/definitions/string" } }, "additionalProperties": false, "firstProperty": [ "publish" ] }, { "type": "object", "properties": { "template": { "description": "Reference to a template for this step", "$ref": "#/definitions/nonEmptyString" }, "parameters": { "description": "Parameters used in a step template", "$ref": "#/definitions/mapping" } }, "additionalProperties": false, "firstProperty": [ "template" ] }, { "type": "object", "properties": { "reviewApp": { "$ref": "#/definitions/string" }, "condition": { "description": "Evaluate this condition expression to determine whether to run this task", "$ref": "#/definitions/string" }, "continueOnError": { "description": "Continue running even on failure?", "$ref": "#/definitions/boolean" }, "displayName": { "description": "Human-readable name for the task", "$ref": "#/definitions/string" }, "target": { "description": "Environment in which to run this task", "$ref": "#/definitions/stepTarget" }, "enabled": { "description": "Run this task when the job runs?", "$ref": "#/definitions/boolean" }, "env": { "description": "Variables to map into the process's environment", "$ref": "#/definitions/mappingOfStringString" }, "name": { "description": "ID of the step", "$ref": "#/definitions/referenceName" }, "timeoutInMinutes": { "description": "Time to wait for this task to complete before the server kills it", "$ref": "#/definitions/nonEmptyString" }, "retryCountOnTaskFailure": { "description": "Number of retries if the task fails", "$ref": "#/definitions/string" } }, "additionalProperties": false, "firstProperty": [ "reviewApp" ] } ] }, "stepTarget": { "description": "Step target", "anyOf": [ { "type": "string" }, { "type": "object", "properties": { "container": { "description": "Container to target (or 'host' for host machine)", "$ref": "#/definitions/nonEmptyString" }, "commands": { "description": "Set of allowed logging commands ('any' or 'restricted')", "enum": [ "any", "restricted" ], "$ref": "#/definitions/string" }, "settableVariables": { "description": "Restrictions on which variables that can be set", "$ref": "#/definitions/variableRestrictions" } }, "additionalProperties": false } ] }, "variableRestrictions": { "anyOf": [ { "type": "string", "ignoreCase": "value", "pattern": "^none$" }, { "type": "array", "items": { "$ref": "#/definitions/nonEmptyString" } } ] }, "jobDecoratorSteps": { "type": "object", "properties": { "steps": { "description": "A list of steps to run in this job", "$ref": "#/definitions/tasks" } }, "additionalProperties": false }, "tasks": { "type": "array", "items": { "$ref": "#/definitions/task" } }, "taskBase": { "type": "object", "properties": { "condition": { "description": "Evaluate this condition expression to determine whether to run this task", "$ref": "#/definitions/string" }, "continueOnError": { "description": "Continue running even on failure?", "$ref": "#/definitions/boolean" }, "displayName": { "description": "Human-readable name for the task", "$ref": "#/definitions/string" }, "target": { "description": "Environment in which to run this task", "$ref": "#/definitions/stepTarget" }, "enabled": { "description": "Run this task when the job runs?", "$ref": "#/definitions/boolean" }, "env": { "description": "Variables to map into the process's environment", "$ref": "#/definitions/mappingOfStringString" }, "name": { "description": "ID of the step", "$ref": "#/definitions/referenceName" }, "timeoutInMinutes": { "description": "Time to wait for this task to complete before the server kills it", "$ref": "#/definitions/nonEmptyString" }, "retryCountOnTaskFailure": { "description": "Number of retries if the task fails", "$ref": "#/definitions/string" } }, "additionalProperties": false }, "jobContinueOnError": { "type": "string" }, "jobDependsOn": { "anyOf": [ { "type": "string" }, { "type": "array", "items": { "$ref": "#/definitions/string" } } ] }, "referenceName": { "type": "string", "pattern": "^[-_A-Za-z0-9]*$" }, "templateContext": { "type": "object", "additionalProperties": true }, "boolean": { "anyOf": [ { "type": "string", "ignoreCase": "value", "pattern": "^true$" }, { "type": "string", "ignoreCase": "value", "pattern": "^y$" }, { "type": "string", "ignoreCase": "value", "pattern": "^yes$" }, { "type": "string", "ignoreCase": "value", "pattern": "^on$" }, { "type": "string", "ignoreCase": "value", "pattern": "^false$" }, { "type": "string", "ignoreCase": "value", "pattern": "^n$" }, { "type": "string", "ignoreCase": "value", "pattern": "^no$" }, { "type": "string", "ignoreCase": "value", "pattern": "^off$" } ] }, "string_allowExpressions": { "type": "string" }, "nonEmptyString": { "type": "string" }, "sequenceOfNonEmptyString": { "type": "array", "items": { "$ref": "#/definitions/nonEmptyString" } }, "sequenceOfString_allowExpressions": { "type": "array", "items": { "$ref": "#/definitions/string_allowExpressions" } }, "mappingOfStringString": { "type": "object", "additionalProperties": true }, "any_allowExpressions": { "anyOf": [ { "type": "string" }, { "type": "array", "items": { "$ref": "#/definitions/any" } }, { "type": "object", "additionalProperties": true } ] }, "task": { "type": "object", "properties": { "task": { "anyOf": [ { "description": "Run a PowerShell script on Linux, macOS, or Windows", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "PowerShell@2" ] }, { "description": "Run a PowerShell script", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "PowerShell@1" ] }, { "description": "Run a PowerShell script within an Azure environment", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzurePowerShell@5" ] }, { "description": "Run a PowerShell script within an Azure environment", "deprecationMessage": "AzurePowerShell is deprecated - Run a PowerShell script within an Azure environment", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "AzurePowerShell@2" ] }, { "description": "Run a PowerShell script within an Azure environment", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzurePowerShell@4" ] }, { "description": "Run a PowerShell script within an Azure environment", "deprecationMessage": "AzurePowerShell is deprecated - Run a PowerShell script within an Azure environment", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "AzurePowerShell@3" ] }, { "description": "Run a PowerShell script within an Azure environment", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzurePowerShell@1" ] }, { "description": "Run scripts and make changes to a MySQL Database", "deprecationMessage": "MysqlDeploymentOnMachineGroup is deprecated - Run scripts and make changes to a MySQL Database", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "MysqlDeploymentOnMachineGroup@1" ] }, { "description": "Authentication task for the pip client used for installing Python distributions", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "PipAuthenticate@1" ] }, { "description": "Authentication task for the pip client used for installing Python distributions", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "PipAuthenticate@0" ] }, { "description": "Build, test, and deploy with Apache Maven", "deprecationMessage": "Maven is deprecated - Build, test, and deploy with Apache Maven", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "Maven@2" ] }, { "description": "Build, test, and deploy with Apache Maven", "deprecationMessage": "Maven is deprecated - Build, test, and deploy with Apache Maven", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "Maven@3" ] }, { "description": "Build, test, and deploy with Apache Maven", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "Maven@4" ] }, { "description": "Build with Apache Maven", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "Maven@1" ] }, { "description": "Build, test, package, or publish a dotnet application, or run a custom dotnet command", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "DotNetCoreCLI@2" ] }, { "description": "Build, test and publish using dotnet core command-line.", "deprecationMessage": "DotNetCoreCLI is deprecated - Build, test and publish using dotnet core command-line.", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "DotNetCoreCLI@0" ] }, { "description": "Build, test and publish using dotnet core command-line.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "DotNetCoreCLI@1" ] }, { "description": "This task is deprecated. Use 'NuGet' instead.", "deprecationMessage": "XamarinComponentRestore is deprecated - This task is deprecated. Use 'NuGet' instead.", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "XamarinComponentRestore@0" ] }, { "description": "Deploy to Azure App Service a web, mobile, or API app using Docker, Java, .NET, .NET Core, Node.js, PHP, Python, or Ruby", "deprecationMessage": "AzureRmWebAppDeployment is deprecated - Deploy to Azure App Service a web, mobile, or API app using Docker, Java, .NET, .NET Core, Node.js, PHP, Python, or Ruby", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "AzureRmWebAppDeployment@3" ] }, { "description": "Update Azure App Service using Web Deploy / Kudu REST APIs", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureRmWebAppDeployment@2" ] }, { "description": "Deploy to Azure App Service a web, mobile, or API app using Docker, Java, .NET, .NET Core, Node.js, PHP, Python, or Ruby", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureRmWebAppDeployment@4" ] }, { "description": "Execute PowerShell scripts on remote machines using PSSession and Invoke-Command for remoting", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "PowerShellOnTargetMachines@3" ] }, { "description": "Execute PowerShell scripts on remote machine(s)", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "PowerShellOnTargetMachines@1" ] }, { "description": "Execute PowerShell scripts on remote machine(s)", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "PowerShellOnTargetMachines@2" ] }, { "description": "Publish any of the code coverage results from a build", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "PublishCodeCoverageResults@2" ] }, { "description": "Publish Cobertura or JaCoCo code coverage results from a build", "deprecationMessage": "PublishCodeCoverageResults is deprecated - Publish Cobertura or JaCoCo code coverage results from a build", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "PublishCodeCoverageResults@1" ] }, { "description": "Deprecated: This task and it’s companion task (Visual Studio Test Agent Deployment) are deprecated. Use the 'Visual Studio Test' task instead. The VSTest task can run unit as well as functional tests. Run tests on one or more agents using the multi-agent job setting. Use the 'Visual Studio Test Platform' task to run tests without needing Visual Studio on the agent. VSTest task also brings new capabilities such as automatically rerunning failed tests.", "deprecationMessage": "RunVisualStudioTestsusingTestAgent is deprecated - Deprecated: This task and it’s companion task (Visual Studio Test Agent Deployment) are deprecated. Use the 'Visual Studio Test' task instead. The VSTest task can run unit as well as functional tests. Run tests on one or more agents using the multi-agent job setting. Use the 'Visual Studio Test Platform' task to run tests without needing Visual Studio on the agent. VSTest task also brings new capabilities such as automatically rerunning failed tests.", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "RunVisualStudioTestsusingTestAgent@1" ] }, { "description": "Pause deployment and wait for manual intervention", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "ManualIntervention@8" ] }, { "description": "Install an Apple provisioning profile required to build on a macOS agent machine", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "InstallAppleProvisioningProfile@1" ] }, { "description": "Install an Apple provisioning profile required to build on a macOS agent", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "InstallAppleProvisioningProfile@0" ] }, { "description": "[DEPRECATED] Finish the analysis and upload the results to SonarQube", "deprecationMessage": "SonarQubePostTest is deprecated - [DEPRECATED] Finish the analysis and upload the results to SonarQube", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "SonarQubePostTest@1" ] }, { "description": "Create and upload an sdist or wheel to a PyPI-compatible index using Twine", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "PyPIPublisher@0" ] }, { "description": "Run scripts with Knife commands on your Chef workstation", "deprecationMessage": "ChefKnife is deprecated - Run scripts with Knife commands on your Chef workstation", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "ChefKnife@1" ] }, { "description": "Find in cache or download a specific version of Go and add it to the PATH", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "GoTool@0" ] }, { "description": "Generate an .ipa file from Xcode build output using xcrun (Xcode 7 or below)", "deprecationMessage": "XcodePackageiOS is deprecated - Generate an .ipa file from Xcode build output using xcrun (Xcode 7 or below)", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "XcodePackageiOS@0" ] }, { "description": "Get, build, or test a Go application, or run a custom Go command", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "Go@0" ] }, { "description": "Publish Pipeline Metadata to Evidence store", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "PublishPipelineMetadata@0" ] }, { "description": "Build, tag, push, or run Docker images, or run a Docker command", "deprecationMessage": "Docker is deprecated - Build, tag, push, or run Docker images, or run a Docker command", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "Docker@0" ] }, { "description": "Build or push Docker images, login or logout, start or stop containers, or run a Docker command", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "Docker@2" ] }, { "description": "Build, tag, push, or run Docker images, or run a Docker command", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "Docker@1" ] }, { "description": "Queue a job on a Jenkins server", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "JenkinsQueueJob@2" ] }, { "description": "Queue a job on a Jenkins server", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "JenkinsQueueJob@1" ] }, { "description": "Upload files using FTP", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "FtpUpload@2" ] }, { "description": "Upload files using FTP", "deprecationMessage": "FtpUpload is deprecated - Upload files using FTP", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "FtpUpload@1" ] }, { "description": "Copy files to remote Windows machines", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "WindowsMachineFileCopy@1" ] }, { "description": "Copy files to remote Windows machines", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "WindowsMachineFileCopy@2" ] }, { "description": "[Deprecated] Use Gradle", "deprecationMessage": "AndroidBuild is deprecated - [Deprecated] Use Gradle", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "AndroidBuild@1" ] }, { "description": "Authenticate for uploading Python distributions using twine. Add '-r FeedName/EndpointName --config-file $(PYPIRC_PATH)' to your twine upload command. For feeds present in this organization, use the feed name as the repository (-r). Otherwise, use the endpoint name defined in the service connection.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "TwineAuthenticate@0" ] }, { "description": "Authenticate for uploading Python distributions using twine. Add '-r FeedName/EndpointName --config-file $(PYPIRC_PATH)' to your twine upload command. For feeds present in this organization, use the feed name as the repository (-r). Otherwise, use the endpoint name defined in the service connection.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "TwineAuthenticate@1" ] }, { "description": "Deploy a website or web application using Web Deploy", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "IISWebAppDeploymentOnMachineGroup@0" ] }, { "description": "Run a Python file or inline script", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "PythonScript@0" ] }, { "description": "Install Helm and Kubernetes on an agent machine", "deprecationMessage": "HelmInstaller is deprecated - Install Helm and Kubernetes on an agent machine", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "HelmInstaller@0" ] }, { "description": "Install Helm on an agent machine", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "HelmInstaller@1" ] }, { "description": "Install specific Node.js version to run node tasks", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "NodeTaskRunnerInstaller@0" ] }, { "description": "[Deprecated] Upgrade to free version of Xamarin: https://store.xamarin.com", "deprecationMessage": "XamarinLicense is deprecated - [Deprecated] Upgrade to free version of Xamarin: https://store.xamarin.com", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "XamarinLicense@1" ] }, { "description": "This version of the task is deprecated, use NuGetAuthenticateV1 instead. Configure NuGet tools to authenticate with Azure Artifacts and other NuGet repositories. Requires NuGet >= 4.8.5385, dotnet >= 2.1.400, or MSBuild >= 15.8.166.59604.", "deprecationMessage": "NuGetAuthenticate is deprecated - This version of the task is deprecated, use NuGetAuthenticateV1 instead. Configure NuGet tools to authenticate with Azure Artifacts and other NuGet repositories. Requires NuGet >= 4.8.5385, dotnet >= 2.1.400, or MSBuild >= 15.8.166.59604.", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "NuGetAuthenticate@0" ] }, { "description": "Configure NuGet tools to authenticate with Azure Artifacts and other NuGet repositories. Requires NuGet >= 4.8.5385, dotnet >= 6, or MSBuild >= 15.8.166.59604", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "NuGetAuthenticate@1" ] }, { "description": "Restore your nuget packages using dotnet CLI", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "DownloadGitHubNugetPackage@1" ] }, { "description": "Provides credentials for Azure Artifacts feeds and external maven repositories", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "MavenAuthenticate@0" ] }, { "description": "Download key-values to task variables from Azure App Configuration", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureAppConfigurationExport@10" ] }, { "description": "Use this task under deploy phase provider to create a resource dynamically", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "ReviewApp@0" ] }, { "description": "Acquire a specific version of Java from a user-supplied Azure blob or the tool cache and sets JAVA_HOME", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "JavaToolInstaller@0" ] }, { "description": "Acquire a specific version of Java from a user-supplied Azure blob or the tool cache and sets JAVA_HOME", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "JavaToolInstaller@1" ] }, { "description": "Deploy to Chef environments by editing environment attributes", "deprecationMessage": "Chef is deprecated - Deploy to Chef environments by editing environment attributes", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "Chef@1" ] }, { "description": "Update a function app with .NET, Python, JavaScript, PowerShell, Java based web applications", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureFunctionApp@1" ] }, { "description": "Update a function app with .NET, Python, JavaScript, PowerShell, Java based web applications", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureFunctionApp@2" ] }, { "description": "Don't use this task if you're also using the npm task. Provides npm credentials to an .npmrc file in your repository for the scope of the build. This enables npm task runners like gulp and Grunt to authenticate with private registries.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "npmAuthenticate@0" ] }, { "description": "Build with MSBuild", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "MSBuild@1" ] }, { "description": "Build a machine image using Packer, which may be used for Azure Virtual machine scale set deployment", "deprecationMessage": "PackerBuild is deprecated - Build a machine image using Packer, which may be used for Azure Virtual machine scale set deployment", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "PackerBuild@0" ] }, { "description": "Build a machine image using Packer, which may be used for Azure Virtual machine scale set deployment", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "PackerBuild@1" ] }, { "description": "Deprecated: use the “NuGet” task instead. It works with the new Tool Installer framework so you can easily use new versions of NuGet without waiting for a task update, provides better support for authenticated feeds outside this organization/collection, and uses NuGet 4 by default.", "deprecationMessage": "NuGetPackager is deprecated - Deprecated: use the “NuGet” task instead. It works with the new Tool Installer framework so you can easily use new versions of NuGet without waiting for a task update, provides better support for authenticated feeds outside this organization/collection, and uses NuGet 4 by default.", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "NuGetPackager@0" ] }, { "description": "Create a snapshot in an Azure App Configuration instance", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureAppConfigurationSnapshot@1" ] }, { "description": "Install a specified version of Duffle for installing and managing CNAB bundles", "deprecationMessage": "DuffleInstaller is deprecated - Install a specified version of Duffle for installing and managing CNAB bundles", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "DuffleInstaller@0" ] }, { "description": "Automatically updates the versions of a packaged Service Fabric application.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "ServiceFabricUpdateAppVersions@1" ] }, { "description": "Automatically update portions of application and service manifests in a packaged Azure Service Fabric application", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "ServiceFabricUpdateManifests@2" ] }, { "description": "Observe the configured Azure Monitor rules for active alerts", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureMonitor@1" ] }, { "description": "Observe the configured classic Azure Monitor rules for active alerts", "deprecationMessage": "AzureMonitor is deprecated - Observe the configured classic Azure Monitor rules for active alerts", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "AzureMonitor@0" ] }, { "description": "Azure Pipepine Task for setting up Notation CLI, sign and verify with Notation", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "Notation@0" ] }, { "description": "Connect or disconnect an Azure virtual machine's network interface to a Load Balancer's back end address pool", "deprecationMessage": "AzureNLBManagement is deprecated - Connect or disconnect an Azure virtual machine's network interface to a Load Balancer's back end address pool", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "AzureNLBManagement@1" ] }, { "description": "Run an Apache JMeter load test in the cloud", "deprecationMessage": "ApacheJMeterLoadTest is deprecated - Run an Apache JMeter load test in the cloud", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "ApacheJMeterLoadTest@1" ] }, { "description": "Build, push or run multi-container Docker applications. Task can be used with Docker or Azure Container registry.", "deprecationMessage": "DockerCompose is deprecated - Build, push or run multi-container Docker applications. Task can be used with Docker or Azure Container registry.", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "DockerCompose@0" ] }, { "description": "Build, push or run multi-container Docker applications. Task can be used with Docker or Azure Container registry.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "DockerCompose@1" ] }, { "description": "Configure alerts on available metrics for an Azure resource (Deprecated)", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureMonitorAlerts@0" ] }, { "description": "[Deprecated] Test mobile apps with Xamarin Test Cloud using Xamarin.UITest. Instead, use the 'App Center test' task.", "deprecationMessage": "XamarinTestCloud is deprecated - [Deprecated] Test mobile apps with Xamarin Test Cloud using Xamarin.UITest. Instead, use the 'App Center test' task.", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "XamarinTestCloud@1" ] }, { "description": "Deploy an Azure Service Fabric application to a cluster", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "ServiceFabricDeploy@1" ] }, { "description": "Build, test, or archive an Xcode workspace on macOS. Optionally package an app.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "Xcode@5" ] }, { "description": "Build an Xcode workspace on macOS", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "Xcode@3" ] }, { "description": "Build, test, or archive an Xcode workspace on macOS. Optionally package an app.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "Xcode@4" ] }, { "description": "Build an Xcode workspace on Mac OS", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "Xcode@2" ] }, { "description": "Deprecated: use the “NuGet” task instead. It works with the new Tool Installer framework so you can easily use new versions of NuGet without waiting for a task update, provides better support for authenticated feeds outside this organization/collection, and uses NuGet 4 by default.", "deprecationMessage": "NuGetPublisher is deprecated - Deprecated: use the “NuGet” task instead. It works with the new Tool Installer framework so you can easily use new versions of NuGet without waiting for a task update, provides better support for authenticated feeds outside this organization/collection, and uses NuGet 4 by default.", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "NuGetPublisher@0" ] }, { "description": "Execute a work item query and check the number of items returned", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "queryWorkItems@0" ] }, { "description": "Deploy containers to Azure App Service", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureWebAppContainer@1" ] }, { "description": "Deploy a SQL Server database using DACPAC or SQL scripts", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "SqlDacpacDeploymentOnMachineGroup@0" ] }, { "description": "Cache files between runs", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "CacheBeta@1" ] }, { "description": "Cache files between runs", "deprecationMessage": "CacheBeta is deprecated - Cache files between runs", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "CacheBeta@0" ] }, { "description": "Cache files between runs", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "Cache@2" ] }, { "description": "Build with the CMake cross-platform build system", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "CMake@1" ] }, { "description": "Test mobile app packages with Visual Studio Mobile Center.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "VSMobileCenterTest@0" ] }, { "description": "Test app packages with Visual Studio App Center", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AppCenterTest@1" ] }, { "description": "Download a secure file to the agent machine", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "DownloadSecureFile@1" ] }, { "description": "An Azure DevOps Task to build and deploy Azure Container Apps.", "deprecationMessage": "AzureContainerApps is deprecated - An Azure DevOps Task to build and deploy Azure Container Apps.", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "AzureContainerApps@0" ] }, { "description": "An Azure DevOps Task to build and deploy Azure Container Apps.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureContainerApps@1" ] }, { "description": "Use the specified version of Ruby from the tool cache, optionally adding it to the PATH", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "UseRubyVersion@0" ] }, { "description": "Run the Grunt JavaScript task runner", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "Grunt@0" ] }, { "description": "Deploy an Azure SQL Database using DACPAC or run scripts using SQLCMD", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "SqlAzureDacpacDeployment@1" ] }, { "description": "Uses container-structure-test (https://github.com/GoogleContainerTools/container-structure-test) to validate the structure of an image based on four categories of tests - command tests, file existence tests, file content tests and metadata tests", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "ContainerStructureTest@0" ] }, { "description": "Deploy using MSDeploy, then create/update websites and app pools", "deprecationMessage": "IISWebAppDeployment is deprecated - Deploy using MSDeploy, then create/update websites and app pools", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "IISWebAppDeployment@1" ] }, { "description": "Run a load test in the cloud with Azure Pipelines", "deprecationMessage": "CloudLoadTest is deprecated - Run a load test in the cloud with Azure Pipelines", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "CloudLoadTest@1" ] }, { "description": "Install Kubectl on agent machine", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "KubectlInstaller@0" ] }, { "description": "Run a command line script using Bash on Linux and macOS and cmd.exe on Windows", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "CmdLine@2" ] }, { "description": "Run a command line with arguments", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "CmdLine@1" ] }, { "description": "Deprecated: use the “NuGet” task instead. It works with the new Tool Installer framework so you can easily use new versions of NuGet without waiting for a task update, provides better support for authenticated feeds outside this organization/collection, and uses NuGet 4 by default.", "deprecationMessage": "NuGet is deprecated - Deprecated: use the “NuGet” task instead. It works with the new Tool Installer framework so you can easily use new versions of NuGet without waiting for a task update, provides better support for authenticated feeds outside this organization/collection, and uses NuGet 4 by default.", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "NuGet@0" ] }, { "description": "Container Build Task", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "ContainerBuild@0" ] }, { "description": "Installs or restores missing NuGet packages. Use NuGetAuthenticate@0 task for latest capabilities.", "deprecationMessage": "NuGetInstaller is deprecated - Installs or restores missing NuGet packages. Use NuGetAuthenticate@0 task for latest capabilities.", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "NuGetInstaller@0" ] }, { "description": "Restores NuGet packages in preparation for a Visual Studio Build step.", "deprecationMessage": "NuGetRestore is deprecated - Restores NuGet packages in preparation for a Visual Studio Build step.", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "NuGetRestore@1" ] }, { "description": "Restore, pack, or push NuGet packages, or run a NuGet command. Supports NuGet.org and authenticated feeds like Azure Artifacts and MyGet. Uses NuGet.exe and works with .NET Framework apps. For .NET Core and .NET Standard apps, use the .NET Core task.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "NuGetCommand@2" ] }, { "description": "Delay further execution of a workflow by a fixed time", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "Delay@1" ] }, { "description": "Build an iOS app with Xamarin on macOS", "deprecationMessage": "XamariniOS is deprecated - Build an iOS app with Xamarin on macOS", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "XamariniOS@2" ] }, { "description": "Build an iOS app with Xamarin on macOS", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "XamariniOS@1" ] }, { "description": "Publish test results to Azure Pipelines", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "PublishTestResults@2" ] }, { "description": "Publish test results to Azure Pipelines", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "PublishTestResults@1" ] }, { "description": "Copy files to Azure Blob Storage or virtual machines", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureFileCopy@5" ] }, { "description": "Copy files to Azure Blob Storage or virtual machines", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureFileCopy@6" ] }, { "description": "Copy files to Azure Blob Storage or virtual machines", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureFileCopy@4" ] }, { "description": "Copy files to Azure Blob Storage or virtual machines", "deprecationMessage": "AzureFileCopy is deprecated - Copy files to Azure Blob Storage or virtual machines", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "AzureFileCopy@2" ] }, { "description": "Copy files to Azure Blob Storage or virtual machines", "deprecationMessage": "AzureFileCopy is deprecated - Copy files to Azure Blob Storage or virtual machines", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "AzureFileCopy@3" ] }, { "description": "Copy files to Azure Blob Storage or virtual machines", "deprecationMessage": "AzureFileCopy is deprecated - Copy files to Azure Blob Storage or virtual machines", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "AzureFileCopy@1" ] }, { "description": "Index your source code and publish symbols to a file share or Azure Artifacts symbol server", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "PublishSymbols@2" ] }, { "description": "Index your source code and publish symbols to a file share", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "PublishSymbols@1" ] }, { "description": "Copy files or build artifacts to a remote machine over SSH", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "CopyFilesOverSSH@0" ] }, { "description": "Build using a Gradle wrapper script", "deprecationMessage": "Gradle is deprecated - Build using a Gradle wrapper script", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "Gradle@2" ] }, { "description": "Build using a Gradle wrapper script", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "Gradle@3" ] }, { "description": "Build using a Gradle wrapper script", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "Gradle@1" ] }, { "description": "Distribute app builds to testers and users via Visual Studio App Center", "deprecationMessage": "AppCenterDistribute is deprecated - Distribute app builds to testers and users via Visual Studio App Center", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "AppCenterDistribute@1" ] }, { "description": "Distribute app builds to testers and users via Visual Studio App Center", "deprecationMessage": "AppCenterDistribute is deprecated - Distribute app builds to testers and users via Visual Studio App Center", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "AppCenterDistribute@2" ] }, { "description": "Distribute app builds to testers and users via Visual Studio App Center", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AppCenterDistribute@3" ] }, { "description": "Distribute app builds to testers and users via App Center", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AppCenterDistribute@0" ] }, { "description": "Acquires a specific version of NuGet from the internet or the tools cache and adds it to the PATH. Use this task to change the version of NuGet used in the NuGet tasks.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "NuGetToolInstaller@0" ] }, { "description": "Acquires a specific version of NuGet from the internet or the tools cache and adds it to the PATH. Use this task to change the version of NuGet used in the NuGet tasks.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "NuGetToolInstaller@1" ] }, { "description": "Download artifacts produced by a Jenkins job", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "JenkinsDownloadArtifacts@1" ] }, { "description": "Download artifacts produced by a Jenkins job", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "JenkinsDownloadArtifacts@2" ] }, { "description": "Update a function app with a Docker container", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureFunctionAppContainer@1" ] }, { "description": "Decrypt a file using OpenSSL", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "DecryptFile@1" ] }, { "description": "Deploy, configure, update a Kubernetes cluster in Azure Container Service by running helm commands", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "HelmDeploy@1" ] }, { "description": "Deploy, configure, update a Kubernetes cluster in Azure Container Service by running helm commands", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "HelmDeploy@0" ] }, { "description": "Install an Apple certificate required to build on a macOS agent machine", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "InstallAppleCertificate@2" ] }, { "description": "Install an Apple certificate required to build on a macOS agent", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "InstallAppleCertificate@1" ] }, { "description": "Install an Apple certificate required to build on a macOS agent", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "InstallAppleCertificate@0" ] }, { "description": "Invoke an Azure Function", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureFunction@1" ] }, { "description": "Invoke Azure function as a part of your process.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureFunction@0" ] }, { "description": "Install Open Policy Agent on agent machine", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "OpenPolicyAgentInstaller@0" ] }, { "description": "Downloads a GitHub Release from a repository", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "DownloadGitHubRelease@0" ] }, { "description": "Run shell commands or a script on a remote machine using SSH", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "SSH@0" ] }, { "description": "Publish a local directory or file as a named artifact for the current pipeline", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "PublishPipelineArtifact@0" ] }, { "description": "Publish (upload) a file or directory as a named artifact for the current run", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "PublishPipelineArtifact@1" ] }, { "description": "[DEPRECATED] Fetch the Quality Profile from SonarQube to configure the analysis", "deprecationMessage": "SonarQubePreBuild is deprecated - [DEPRECATED] Fetch the Quality Profile from SonarQube to configure the analysis", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "SonarQubePreBuild@1" ] }, { "description": "Download artifacts from a file share, like \\\\share\\drop", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "DownloadFileshareArtifacts@1" ] }, { "description": "Deploy, configure, update a Kubernetes cluster in Azure Container Service by running kubectl commands", "deprecationMessage": "Kubernetes is deprecated - Deploy, configure, update a Kubernetes cluster in Azure Container Service by running kubectl commands", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "Kubernetes@0" ] }, { "description": "Deploy, configure, update a Kubernetes cluster in Azure Container Service by running kubectl commands", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "Kubernetes@1" ] }, { "description": "Build and deploy an Azure IoT Edge image", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureIoTEdge@2" ] }, { "description": "Deploy a Docker Compose application to an Azure Service Fabric cluster", "deprecationMessage": "ServiceFabricComposeDeploy is deprecated - Deploy a Docker Compose application to an Azure Service Fabric cluster", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "ServiceFabricComposeDeploy@0" ] }, { "description": "Sign and align Android APK files", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AndroidSigning@1" ] }, { "description": "Sign and align Android APK files", "deprecationMessage": "AndroidSigning is deprecated - Sign and align Android APK files", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "AndroidSigning@2" ] }, { "description": "Sign and align Android APK files", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AndroidSigning@3" ] }, { "description": "Downloads an artifact associated with a pipeline", "deprecationMessage": "DownloadPipelineArtifact is deprecated - Downloads an artifact associated with a pipeline", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "DownloadPipelineArtifact@0" ] }, { "description": "Download build and pipeline artifacts", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "DownloadPipelineArtifact@2" ] }, { "description": "Download a named artifact from a pipeline to a local path", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "DownloadPipelineArtifact@1" ] }, { "description": "Use the specified version of Python from the tool cache, optionally adding it to the PATH", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "UsePythonVersion@0" ] }, { "description": "Run a PowerShell script in the context of an Azure Service Fabric cluster connection", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "ServiceFabricPowerShell@1" ] }, { "description": "Run unit and functional tests (Selenium, Appium, Coded UI test, etc.) using the Visual Studio Test (VsTest) runner. Test frameworks that have a Visual Studio test adapter such as MsTest, xUnit, NUnit, Chutzpah (for JavaScript tests using QUnit, Mocha and Jasmine), etc. can be run. Tests can be distributed on multiple agents using this task (version 2 and later).", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "VSTest@2" ] }, { "description": "Run unit and functional tests (Selenium, Appium, Coded UI test, etc.) using the Visual Studio Test (VsTest) runner. Test frameworks that have a Visual Studio test adapter such as MsTest, xUnit, NUnit, Chutzpah (for JavaScript tests using QUnit, Mocha and Jasmine), etc. can be run. Tests can be distributed on multiple agents using this task (version 2 and later).", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "VSTest@3" ] }, { "description": "Run tests with Visual Studio test runner", "deprecationMessage": "VSTest is deprecated - Run tests with Visual Studio test runner", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "VSTest@1" ] }, { "description": "Pause a pipeline run to wait for manual interaction. Works only with YAML pipelines.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "ManualValidation@1" ] }, { "description": "Pause a pipeline run to wait for manual interaction. Works only with YAML pipelines.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "ManualValidation@0" ] }, { "description": "Build with Apache Ant", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "Ant@1" ] }, { "description": "Deprecated: Instead, use the 'Visual Studio Test' task to run unit and functional tests", "deprecationMessage": "DeployVisualStudioTestAgent is deprecated - Deprecated: Instead, use the 'Visual Studio Test' task to run unit and functional tests", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "DeployVisualStudioTestAgent@2" ] }, { "description": "Deploy and configure Test Agent to run tests on a set of machines", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "DeployVisualStudioTestAgent@1" ] }, { "description": "Create and activate a Conda environment", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "CondaEnvironment@0" ] }, { "description": "This task is deprecated. Use `conda` directly in script to work with Anaconda environments.", "deprecationMessage": "CondaEnvironment is deprecated - This task is deprecated. Use `conda` directly in script to work with Anaconda environments.", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "CondaEnvironment@1" ] }, { "description": "Run a Windows command or batch script and optionally allow it to change the environment", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "BatchScript@1" ] }, { "description": "Install npm packages from GitHub.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "DownloadGithubNpmPackage@1" ] }, { "description": "Build with MSBuild and set the Visual Studio version property", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "VSBuild@1" ] }, { "description": "Download Azure Key Vault secrets", "deprecationMessage": "AzureKeyVault is deprecated - Download Azure Key Vault secrets", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "AzureKeyVault@1" ] }, { "description": "Download Azure Key Vault secrets", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureKeyVault@2" ] }, { "description": "Acquires a specific version of the .NET Core SDK from the internet or the local cache and adds it to the PATH. Use this task to change the version of .NET Core used in subsequent tasks. Additionally provides proxy support.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "UseDotNet@2" ] }, { "description": "Acquire a specific version of the .NET Core SDK from the internet or local cache and add it to the PATH", "deprecationMessage": "DotNetCoreInstaller is deprecated - Acquire a specific version of the .NET Core SDK from the internet or local cache and add it to the PATH", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "DotNetCoreInstaller@0" ] }, { "description": "Acquire a specific version of the .NET Core SDK from the internet or local cache and add it to the PATH", "deprecationMessage": "DotNetCoreInstaller is deprecated - Acquire a specific version of the .NET Core SDK from the internet or local cache and add it to the PATH", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "DotNetCoreInstaller@1" ] }, { "description": "Push key-values to an Azure App Configuration instance", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureAppConfigurationImport@10" ] }, { "description": "Start, stop, restart, slot swap, slot delete, install site extensions or enable continuous monitoring for an Azure App Service", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureAppServiceManage@0" ] }, { "description": "Helps to install kubelogin", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "KubeloginInstaller@0" ] }, { "description": "Install Azure Func Core Tools", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "FuncToolsInstaller@0" ] }, { "description": "Replace tokens with variable values in XML or JSON configuration files", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "FileTransform@2" ] }, { "description": "Replace tokens with variable values in XML or JSON configuration files", "deprecationMessage": "FileTransform is deprecated - Replace tokens with variable values in XML or JSON configuration files", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "FileTransform@1" ] }, { "description": "Extract a variety of archive and compression files such as .7z, .rar, .tar.gz, and .zip", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "ExtractFiles@1" ] }, { "description": "Build an Android app with Xamarin", "deprecationMessage": "XamarinAndroid is deprecated - Build an Android app with Xamarin", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "XamarinAndroid@1" ] }, { "description": "[DEPRECATED] Use the Copy Files task and the Publish Build Artifacts task instead", "deprecationMessage": "CopyPublishBuildArtifacts is deprecated - [DEPRECATED] Use the Copy Files task and the Publish Build Artifacts task instead", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "CopyPublishBuildArtifacts@1" ] }, { "description": "Download a package from a package management feed in Azure Artifacts", "deprecationMessage": "DownloadPackage is deprecated - Download a package from a package management feed in Azure Artifacts", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "DownloadPackage@0" ] }, { "description": "Download a package from a package management feed in Azure Artifacts", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "DownloadPackage@1" ] }, { "description": "Deploy an Azure Resource Manager (ARM) template to a resource group and manage virtual machines", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureResourceGroupDeployment@2" ] }, { "description": "Deploy, start, stop, delete Azure Resource Groups", "deprecationMessage": "AzureResourceGroupDeployment is deprecated - Deploy, start, stop, delete Azure Resource Groups", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "AzureResourceGroupDeployment@1" ] }, { "description": "Deploy an Azure Resource Manager (ARM) template to all the deployment scopes", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureResourceManagerTemplateDeployment@3" ] }, { "description": "Invoke REST API as a part of your process.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "InvokeRESTAPI@0" ] }, { "description": "Invoke a REST API as a part of your pipeline.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "InvokeRESTAPI@1" ] }, { "description": "Compress files into .7z, .tar.gz, or .zip", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "ArchiveFiles@2" ] }, { "description": "Archive files using compression formats such as .7z, .rar, .tar.gz, and .zip.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "ArchiveFiles@1" ] }, { "description": "Write a comment to your Github entity i.e. issue or a Pull Request (PR)", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "GitHubComment@0" ] }, { "description": "Copy files from a source folder to a target folder using patterns matching file paths (not folder paths)", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "CopyFiles@2" ] }, { "description": "Copy files from source folder to target folder using minimatch patterns (The minimatch patterns will only match file paths, not folder paths)", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "CopyFiles@1" ] }, { "description": "Run your scripts and make changes to your Azure Database for MySQL", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureMysqlDeployment@1" ] }, { "description": "Install and publish npm packages, or run an npm command. Supports npmjs.com and authenticated registries like Azure Artifacts.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "Npm@1" ] }, { "description": "Run an npm command. Use NpmAuthenticate@0 task for latest capabilities.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "Npm@0" ] }, { "description": "[PREVIEW] Build and deploy an Azure Static Web App", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureStaticWebApp@0" ] }, { "description": "Set up a Node.js environment and add it to the PATH, additionally providing proxy support", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "UseNode@1" ] }, { "description": "Finds or downloads and caches the specified version spec of Node.js and adds it to the PATH", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "NodeTool@0" ] }, { "description": "Deploy a SQL Server database using DACPAC", "deprecationMessage": "SqlServerDacpacDeployment is deprecated - Deploy a SQL Server database using DACPAC", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "SqlServerDacpacDeployment@1" ] }, { "description": "Acquire the test platform from nuget.org or the tool cache. Satisfies the ‘vstest’ demand and can be used for running tests and collecting diagnostic data using the Visual Studio Test task.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "VisualStudioTestPlatformInstaller@1" ] }, { "description": "Sends a message to Azure Service Bus using a service connection (no agent is required)", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "PublishToAzureServiceBus@1" ] }, { "description": "Sends a message to Azure Service Bus using an Azure Resource Manager service connection (no agent is required)", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "PublishToAzureServiceBus@2" ] }, { "description": "Sends a message to azure service bus using a service connection (no agent required).", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "PublishToAzureServiceBus@0" ] }, { "description": "Use Kubernetes manifest files to deploy to clusters or even bake the manifest files to be used for deployments using Helm charts", "deprecationMessage": "KubernetesManifest is deprecated - Use Kubernetes manifest files to deploy to clusters or even bake the manifest files to be used for deployments using Helm charts", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "KubernetesManifest@0" ] }, { "description": "Use Kubernetes manifest files to deploy to clusters or even bake the manifest files to be used for deployments using Helm charts", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "KubernetesManifest@1" ] }, { "description": "Download files that were saved as artifacts of a completed build", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "DownloadBuildArtifacts@0" ] }, { "description": "Download files that were saved as artifacts of a completed build", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "DownloadBuildArtifacts@1" ] }, { "description": "Install CocoaPods dependencies for Swift and Objective-C Cocoa projects", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "CocoaPods@0" ] }, { "description": "Deploy applications to Azure Spring Apps and manage deployments.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureSpringCloud@0" ] }, { "description": "Deploy an Azure Web App for Linux or Windows", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureWebApp@1" ] }, { "description": "Run Azure CLI commands against an Azure subscription in a Shell script when running on Linux agent or Batch script when running on Windows agent.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureCLI@1" ] }, { "description": "Run a Shell or Batch script with Azure CLI commands against an azure subscription", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureCLI@0" ] }, { "description": "Run Azure CLI commands against an Azure subscription in a PowerShell Core/Shell script when running on Linux agent or PowerShell/PowerShell Core/Batch script when running on Windows agent.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureCLI@2" ] }, { "description": "Create, edit, or delete a GitHub release", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "GitHubRelease@1" ] }, { "description": "Create, edit, or delete a GitHub release", "deprecationMessage": "GitHubRelease is deprecated - Create, edit, or delete a GitHub release", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "GitHubRelease@0" ] }, { "description": "Use cURL to upload files with FTP, FTPS, SFTP, HTTP, and more.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "cURLUploader@1" ] }, { "description": "Use cURL's supported protocols to upload files", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "cURLUploader@2" ] }, { "description": "Update/Add App settings an Azure Web App for Linux or Windows", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureAppServiceSettings@1" ] }, { "description": "Download or publish Universal Packages", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "UniversalPackages@0" ] }, { "description": "Security and compliance assessment for Azure Policy", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzurePolicyCheckGate@0" ] }, { "description": "Deploy Azure function to Kubernetes cluster.", "deprecationMessage": "AzureFunctionOnKubernetes is deprecated - Deploy Azure function to Kubernetes cluster.", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "AzureFunctionOnKubernetes@0" ] }, { "description": "Deploy Azure function to Kubernetes cluster.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureFunctionOnKubernetes@1" ] }, { "description": "Run a shell script using Bash", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "ShellScript@2" ] }, { "description": "Run a Bash script on macOS, Linux, or Windows", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "Bash@3" ] }, { "description": "Publish build artifacts to Azure Pipelines or a Windows file share", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "PublishBuildArtifacts@1" ] }, { "description": "Install an SSH key prior to a build or deployment", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "InstallSSHKey@0" ] }, { "description": "Deploy a virtual machine scale set image", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureVmssDeployment@0" ] }, { "description": "Deploy a virtual machine scale set image", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "AzureVmssDeployment@1" ] }, { "description": "Create or update Azure App Service using Azure PowerShell", "deprecationMessage": "AzureWebPowerShellDeployment is deprecated - Create or update Azure App Service using Azure PowerShell", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "AzureWebPowerShellDeployment@1" ] }, { "description": "Authentication task for the conda client", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "CondaAuthenticate@0" ] }, { "description": "Deploy an Azure Cloud Service", "deprecationMessage": "AzureCloudPowerShellDeployment is deprecated - Deploy an Azure Cloud Service", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "AzureCloudPowerShellDeployment@2" ] }, { "description": "Deploy an Azure Cloud Service", "deprecationMessage": "AzureCloudPowerShellDeployment is deprecated - Deploy an Azure Cloud Service", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "AzureCloudPowerShellDeployment@1" ] }, { "description": "Authentication task for the cargo client used for installing Cargo crates distribution", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "CargoAuthenticate@0" ] }, { "description": "Delete folders, or files matching a pattern", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "DeleteFiles@1" ] }, { "description": "Run the gulp Node.js streaming task-based build system", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "gulp@0" ] }, { "description": "Run the gulp Node.js streaming task-based build system", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "gulp@1" ] }, { "description": "Run a quick web performance test in the cloud with Azure Pipelines", "deprecationMessage": "QuickPerfTest is deprecated - Run a quick web performance test in the cloud with Azure Pipelines", "doNotSuggest": true, "ignoreCase": "value", "enum": [ "QuickPerfTest@1" ] }, { "description": "Create or update websites, web apps, virtual directories, or application pools", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "IISWebAppManagementOnMachineGroup@0" ] }, { "description": "Install Docker CLI on agent machine.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ "DockerInstaller@0" ] } ] }, "displayName": { "type": "string", "description": "Human-readable name for the task" }, "name": { "type": "string", "description": "ID of the task instance", "pattern": "^[_A-Za-z0-9]*$" }, "condition": { "type": "string", "description": "Evaluate this condition expression to determine whether to run this task" }, "continueOnError": { "type": "boolean", "description": "Continue running the parent job even on failure?" }, "enabled": { "type": "string", "description": "Run this task when the job runs?" }, "retryCountOnTaskFailure": { "type": "integer", "description": "Number of retries if the task fails" }, "timeoutInMinutes": { "type": "integer", "description": "Time to wait for this task to complete before the server kills it" }, "inputs": { "type": "object", "description": "Task-specific inputs" }, "env": { "type": "object", "description": "Variables to map into the process's environment" } }, "additionalProperties": false, "firstProperty": [ "task" ], "anyOf": [ { "properties": { "task": { "description": "PowerShell\n\nRun a PowerShell script on Linux, macOS, or Windows", "ignoreCase": "value", "pattern": "^PowerShell@2$" }, "inputs": { "description": "PowerShell inputs", "properties": { "targetType": { "description": "Type", "ignoreCase": "all", "enum": [ "filePath", "inline" ] }, "filePath": { "type": "string", "description": "Script Path", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "script": { "type": "string", "description": "Script", "ignoreCase": "key" }, "errorActionPreference": { "description": "ErrorActionPreference", "ignoreCase": "all", "enum": [ "default", "stop", "continue", "silentlyContinue" ] }, "warningPreference": { "description": "WarningPreference", "ignoreCase": "all", "enum": [ "default", "stop", "continue", "silentlyContinue" ] }, "informationPreference": { "description": "InformationPreference", "ignoreCase": "all", "enum": [ "default", "stop", "continue", "silentlyContinue" ] }, "verbosePreference": { "description": "VerbosePreference", "ignoreCase": "all", "enum": [ "default", "stop", "continue", "silentlyContinue" ] }, "debugPreference": { "description": "DebugPreference", "ignoreCase": "all", "enum": [ "default", "stop", "continue", "silentlyContinue" ] }, "progressPreference": { "description": "ProgressPreference", "ignoreCase": "all", "enum": [ "default", "stop", "continue", "silentlyContinue" ] }, "failOnStderr": { "type": "boolean", "description": "Fail on Standard Error", "ignoreCase": "key" }, "showWarnings": { "type": "boolean", "description": "Show warnings as Azure DevOps warnings", "ignoreCase": "key" }, "ignoreLASTEXITCODE": { "type": "boolean", "description": "Ignore $LASTEXITCODE", "ignoreCase": "key" }, "pwsh": { "type": "boolean", "description": "Use PowerShell Core", "ignoreCase": "key" }, "workingDirectory": { "type": "string", "description": "Working Directory", "ignoreCase": "key" }, "runScriptInSeparateScope": { "type": "boolean", "description": "Run script in the separate scope", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "PowerShell\n\nRun a PowerShell script", "ignoreCase": "value", "pattern": "^PowerShell@1$" }, "inputs": { "description": "PowerShell inputs", "properties": { "scriptType": { "description": "Type", "ignoreCase": "all", "enum": [ "inlineScript", "filePath" ] }, "scriptName": { "type": "string", "description": "Script Path", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "workingFolder": { "type": "string", "description": "Working folder", "ignoreCase": "key" }, "inlineScript": { "type": "string", "description": "Inline Script", "ignoreCase": "key" }, "failOnStandardError": { "type": "boolean", "description": "Fail on Standard Error", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Azure PowerShell\n\nRun a PowerShell script within an Azure environment", "ignoreCase": "value", "pattern": "^AzurePowerShell@5$" }, "inputs": { "description": "Azure PowerShell inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure Subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceNameARM" ] }, "ScriptType": { "description": "Script Type", "ignoreCase": "all", "enum": [ "FilePath", "InlineScript" ] }, "ScriptPath": { "type": "string", "description": "Script Path", "ignoreCase": "key" }, "Inline": { "type": "string", "description": "Inline Script", "ignoreCase": "key" }, "ScriptArguments": { "type": "string", "description": "Script Arguments", "ignoreCase": "key" }, "errorActionPreference": { "description": "ErrorActionPreference", "ignoreCase": "all", "enum": [ "stop", "continue", "silentlyContinue" ] }, "FailOnStandardError": { "type": "boolean", "description": "Fail on Standard Error", "ignoreCase": "key" }, "azurePowerShellVersion": { "description": "Azure PowerShell Version", "ignoreCase": "all", "enum": [ "LatestVersion", "OtherVersion" ], "aliases": [ "TargetAzurePs" ] }, "preferredAzurePowerShellVersion": { "type": "string", "description": "Preferred Azure PowerShell Version", "ignoreCase": "key", "aliases": [ "CustomTargetAzurePs" ] }, "pwsh": { "type": "boolean", "description": "Use PowerShell Core", "ignoreCase": "key" }, "validateScriptSignature": { "type": "boolean", "description": "Validate script signature", "ignoreCase": "key" }, "workingDirectory": { "type": "string", "description": "Working Directory", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscription" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure PowerShell\n\nRun a PowerShell script within an Azure environment", "ignoreCase": "value", "pattern": "^AzurePowerShell@2$" }, "inputs": { "description": "Azure PowerShell inputs", "properties": { "azureConnectionType": { "description": "Azure Connection Type", "ignoreCase": "all", "enum": [ "ConnectedServiceName", "ConnectedServiceNameARM" ], "aliases": [ "ConnectedServiceNameSelector" ] }, "azureClassicSubscription": { "type": "string", "description": "Azure Classic Subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "azureSubscription": { "type": "string", "description": "Azure Subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceNameARM" ] }, "ScriptType": { "description": "Script Type", "ignoreCase": "all", "enum": [ "FilePath", "InlineScript" ] }, "ScriptPath": { "type": "string", "description": "Script Path", "ignoreCase": "key" }, "Inline": { "type": "string", "description": "Inline Script", "ignoreCase": "key" }, "ScriptArguments": { "type": "string", "description": "Script Arguments", "ignoreCase": "key" }, "azurePowerShellVersion": { "description": "Azure PowerShell Version", "ignoreCase": "all", "enum": [ "LatestVersion", "OtherVersion" ], "aliases": [ "TargetAzurePs" ] }, "preferredAzurePowerShellVersion": { "type": "string", "description": "Preferred Azure PowerShell Version", "ignoreCase": "key", "aliases": [ "CustomTargetAzurePs" ] } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "AzurePowerShell is deprecated - Run a PowerShell script within an Azure environment", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Azure PowerShell\n\nRun a PowerShell script within an Azure environment", "ignoreCase": "value", "pattern": "^AzurePowerShell@4$" }, "inputs": { "description": "Azure PowerShell inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure Subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceNameARM" ] }, "ScriptType": { "description": "Script Type", "ignoreCase": "all", "enum": [ "FilePath", "InlineScript" ] }, "ScriptPath": { "type": "string", "description": "Script Path", "ignoreCase": "key" }, "Inline": { "type": "string", "description": "Inline Script", "ignoreCase": "key" }, "ScriptArguments": { "type": "string", "description": "Script Arguments", "ignoreCase": "key" }, "errorActionPreference": { "description": "ErrorActionPreference", "ignoreCase": "all", "enum": [ "stop", "continue", "silentlyContinue" ] }, "FailOnStandardError": { "type": "boolean", "description": "Fail on Standard Error", "ignoreCase": "key" }, "RestrictContextToCurrentTask": { "type": "boolean", "description": "Restrict scope of context to current task", "ignoreCase": "key" }, "azurePowerShellVersion": { "description": "Azure PowerShell Version", "ignoreCase": "all", "enum": [ "LatestVersion", "OtherVersion" ], "aliases": [ "TargetAzurePs" ] }, "preferredAzurePowerShellVersion": { "type": "string", "description": "Preferred Azure PowerShell Version", "ignoreCase": "key", "aliases": [ "CustomTargetAzurePs" ] }, "pwsh": { "type": "boolean", "description": "Use PowerShell Core", "ignoreCase": "key" }, "validateScriptSignature": { "type": "boolean", "description": "Validate script signature", "ignoreCase": "key" }, "workingDirectory": { "type": "string", "description": "Working Directory", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscription" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure PowerShell\n\nRun a PowerShell script within an Azure environment", "ignoreCase": "value", "pattern": "^AzurePowerShell@3$" }, "inputs": { "description": "Azure PowerShell inputs", "properties": { "azureConnectionType": { "description": "Azure Connection Type", "ignoreCase": "all", "enum": [ "ConnectedServiceName", "ConnectedServiceNameARM" ], "aliases": [ "ConnectedServiceNameSelector" ] }, "azureClassicSubscription": { "type": "string", "description": "Azure Classic Subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "azureSubscription": { "type": "string", "description": "Azure Subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceNameARM" ] }, "ScriptType": { "description": "Script Type", "ignoreCase": "all", "enum": [ "FilePath", "InlineScript" ] }, "ScriptPath": { "type": "string", "description": "Script Path", "ignoreCase": "key" }, "Inline": { "type": "string", "description": "Inline Script", "ignoreCase": "key" }, "ScriptArguments": { "type": "string", "description": "Script Arguments", "ignoreCase": "key" }, "errorActionPreference": { "description": "ErrorActionPreference", "ignoreCase": "all", "enum": [ "stop", "continue", "silentlyContinue" ] }, "FailOnStandardError": { "type": "boolean", "description": "Fail on Standard Error", "ignoreCase": "key" }, "azurePowerShellVersion": { "description": "Azure PowerShell Version", "ignoreCase": "all", "enum": [ "LatestVersion", "OtherVersion" ], "aliases": [ "TargetAzurePs" ] }, "preferredAzurePowerShellVersion": { "type": "string", "description": "Preferred Azure PowerShell Version", "ignoreCase": "key", "aliases": [ "CustomTargetAzurePs" ] }, "validateScriptSignature": { "type": "boolean", "description": "Validate script signature", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "AzurePowerShell is deprecated - Run a PowerShell script within an Azure environment", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Azure PowerShell\n\nRun a PowerShell script within an Azure environment", "ignoreCase": "value", "pattern": "^AzurePowerShell@1$" }, "inputs": { "description": "Azure PowerShell inputs", "properties": { "ConnectedServiceNameSelector": { "description": "Azure Connection Type", "ignoreCase": "all", "enum": [ "ConnectedServiceName", "ConnectedServiceNameARM" ] }, "ConnectedServiceName": { "type": "string", "description": "Azure Classic Subscription", "ignoreCase": "key" }, "ConnectedServiceNameARM": { "type": "string", "description": "Azure Subscription", "ignoreCase": "key" }, "ScriptType": { "description": "Script Type", "ignoreCase": "all", "enum": [ "FilePath", "InlineScript" ] }, "ScriptPath": { "type": "string", "description": "Script Path", "ignoreCase": "key" }, "Inline": { "type": "string", "description": "Inline Script", "ignoreCase": "key" }, "ScriptArguments": { "type": "string", "description": "Script Arguments", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "MySQL database deploy\n\nRun scripts and make changes to a MySQL Database", "ignoreCase": "value", "pattern": "^MysqlDeploymentOnMachineGroup@1$" }, "inputs": { "description": "MySQL database deploy inputs", "properties": { "TaskNameSelector": { "description": "Deploy MySql Using", "ignoreCase": "all", "enum": [ "SqlTaskFile", "InlineSqlTask" ] }, "SqlFile": { "type": "string", "description": "MySQL Script", "ignoreCase": "key" }, "SqlInline": { "type": "string", "description": "Inline MySQL Script", "ignoreCase": "key" }, "ServerName": { "type": "string", "description": "Host Name", "ignoreCase": "key" }, "DatabaseName": { "type": "string", "description": "Database Name", "ignoreCase": "key" }, "SqlUsername": { "type": "string", "description": "MySQL User Name", "ignoreCase": "key" }, "SqlPassword": { "type": "string", "description": "Password", "ignoreCase": "key" }, "SqlAdditionalArguments": { "type": "string", "description": "Additional Arguments", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "SqlUsername", "SqlPassword" ] } }, "deprecationMessage": "MysqlDeploymentOnMachineGroup is deprecated - Run scripts and make changes to a MySQL Database", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Python pip authenticate\n\nAuthentication task for the pip client used for installing Python distributions", "ignoreCase": "value", "pattern": "^PipAuthenticate@1$" }, "inputs": { "description": "Python pip authenticate inputs", "properties": { "azureDevOpsServiceConnection": { "type": "string", "description": "'Azure DevOps' Service Connection", "ignoreCase": "key", "aliases": [ "workloadIdentityServiceConnection" ] }, "feedUrl": { "type": "string", "description": "Azure Artifacts Feeds url.", "ignoreCase": "key" }, "artifactFeeds": { "type": "string", "description": "My feeds (select below)", "ignoreCase": "key", "aliases": [ "artifactFeeds" ] }, "pythonDownloadServiceConnections": { "type": "string", "description": "Feeds from external organizations", "ignoreCase": "key", "aliases": [ "pythonDownloadServiceConnections" ] }, "onlyAddExtraIndex": { "type": "boolean", "description": "Don't set primary index URL", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Python pip authenticate\n\nAuthentication task for the pip client used for installing Python distributions", "ignoreCase": "value", "pattern": "^PipAuthenticate@0$" }, "inputs": { "description": "Python pip authenticate inputs", "properties": { "artifactFeeds": { "type": "string", "description": "My feeds (select below)", "ignoreCase": "key", "aliases": [ "feedList" ] }, "externalFeeds": { "type": "string", "description": "Feeds from external organizations", "ignoreCase": "key", "aliases": [ "externalSources" ] } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Maven\n\nBuild, test, and deploy with Apache Maven", "ignoreCase": "value", "pattern": "^Maven@2$" }, "inputs": { "description": "Maven inputs", "properties": { "mavenPomFile": { "type": "string", "description": "Maven POM file", "ignoreCase": "key", "aliases": [ "mavenPOMFile" ] }, "goals": { "type": "string", "description": "Goal(s)", "ignoreCase": "key" }, "options": { "type": "string", "description": "Options", "ignoreCase": "key" }, "publishJUnitResults": { "type": "boolean", "description": "Publish to Azure Pipelines", "ignoreCase": "key" }, "testResultsFiles": { "type": "string", "description": "Test results files", "ignoreCase": "key" }, "testRunTitle": { "type": "string", "description": "Test run title", "ignoreCase": "key" }, "allowBrokenSymlinks": { "type": "boolean", "description": "Allow broken symbolic links", "ignoreCase": "key", "aliases": [ "allowBrokenSymbolicLinks" ] }, "codeCoverageToolOption": { "description": "Code coverage tool", "ignoreCase": "all", "enum": [ "None", "Cobertura", "JaCoCo" ], "aliases": [ "codeCoverageTool" ] }, "codeCoverageClassFilter": { "type": "string", "description": "Class inclusion/exclusion filters", "ignoreCase": "key", "aliases": [ "classFilter" ] }, "codeCoverageClassFilesDirectories": { "type": "string", "description": "Class files directories", "ignoreCase": "key", "aliases": [ "classFilesDirectories" ] }, "codeCoverageSourceDirectories": { "type": "string", "description": "Source files directories", "ignoreCase": "key", "aliases": [ "srcDirectories" ] }, "codeCoverageFailIfEmpty": { "type": "boolean", "description": "Fail when code coverage results are missing", "ignoreCase": "key", "aliases": [ "failIfCoverageEmpty" ] }, "codeCoverageRestoreOriginalPomXml": { "type": "boolean", "description": "Restore original pom.xml after task execution", "ignoreCase": "key", "aliases": [ "restoreOriginalPomXml" ] }, "javaHomeOption": { "description": "Set JAVA_HOME by", "ignoreCase": "all", "enum": [ "JDKVersion", "Path" ], "aliases": [ "javaHomeSelection" ] }, "jdkVersionOption": { "description": "JDK version", "ignoreCase": "all", "enum": [ "default", "1.17", "1.11", "1.10", "1.9", "1.8", "1.7", "1.6" ], "aliases": [ "jdkVersion" ] }, "jdkDirectory": { "type": "string", "description": "JDK path", "ignoreCase": "key", "aliases": [ "jdkUserInputPath" ] }, "jdkArchitectureOption": { "description": "JDK architecture", "ignoreCase": "all", "enum": [ "x86", "x64" ], "aliases": [ "jdkArchitecture" ] }, "mavenVersionOption": { "description": "Maven version", "ignoreCase": "all", "enum": [ "Default", "Path" ], "aliases": [ "mavenVersionSelection" ] }, "mavenDirectory": { "type": "string", "description": "Maven path", "ignoreCase": "key", "aliases": [ "mavenPath" ] }, "mavenSetM2Home": { "type": "boolean", "description": "Set M2_HOME variable", "ignoreCase": "key" }, "mavenOptions": { "type": "string", "description": "Set MAVEN_OPTS to", "ignoreCase": "key", "aliases": [ "mavenOpts" ] }, "mavenAuthenticateFeed": { "type": "boolean", "description": "Authenticate with Artifacts feeds", "ignoreCase": "key", "aliases": [ "mavenFeedAuthenticate" ] }, "sonarQubeRunAnalysis": { "type": "boolean", "description": "Run SonarQube or SonarCloud analysis", "ignoreCase": "key", "aliases": [ "sqAnalysisEnabled" ] }, "isJacocoCoverageReportXML": { "type": "boolean", "description": "Use XML Jacoco reports for SonarQube analysis", "ignoreCase": "key" }, "sqMavenPluginVersionChoice": { "description": "SonarQube scanner for Maven version", "ignoreCase": "all", "enum": [ "latest", "pom" ] }, "checkStyleRunAnalysis": { "type": "boolean", "description": "Run Checkstyle", "ignoreCase": "key", "aliases": [ "checkstyleAnalysisEnabled" ] }, "pmdRunAnalysis": { "type": "boolean", "description": "Run PMD", "ignoreCase": "key", "aliases": [ "pmdAnalysisEnabled" ] }, "findBugsRunAnalysis": { "type": "boolean", "description": "Run FindBugs", "ignoreCase": "key", "aliases": [ "findbugsAnalysisEnabled" ] } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "Maven is deprecated - Build, test, and deploy with Apache Maven", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Maven\n\nBuild, test, and deploy with Apache Maven", "ignoreCase": "value", "pattern": "^Maven@3$" }, "inputs": { "description": "Maven inputs", "properties": { "mavenPomFile": { "type": "string", "description": "Maven POM file", "ignoreCase": "key", "aliases": [ "mavenPOMFile" ] }, "goals": { "type": "string", "description": "Goal(s)", "ignoreCase": "key" }, "options": { "type": "string", "description": "Options", "ignoreCase": "key" }, "publishJUnitResults": { "type": "boolean", "description": "Publish to Azure Pipelines", "ignoreCase": "key" }, "testResultsFiles": { "type": "string", "description": "Test results files", "ignoreCase": "key" }, "testRunTitle": { "type": "string", "description": "Test run title", "ignoreCase": "key" }, "allowBrokenSymlinks": { "type": "boolean", "description": "Allow broken symbolic links", "ignoreCase": "key", "aliases": [ "allowBrokenSymbolicLinks" ] }, "codeCoverageToolOption": { "description": "Code coverage tool", "ignoreCase": "all", "enum": [ "None", "Cobertura", "JaCoCo" ], "aliases": [ "codeCoverageTool" ] }, "codeCoverageClassFilter": { "type": "string", "description": "Class inclusion/exclusion filters", "ignoreCase": "key", "aliases": [ "classFilter" ] }, "codeCoverageClassFilesDirectories": { "type": "string", "description": "Class files directories", "ignoreCase": "key", "aliases": [ "classFilesDirectories" ] }, "codeCoverageSourceDirectories": { "type": "string", "description": "Source files directories", "ignoreCase": "key", "aliases": [ "srcDirectories" ] }, "codeCoverageFailIfEmpty": { "type": "boolean", "description": "Fail when code coverage results are missing", "ignoreCase": "key", "aliases": [ "failIfCoverageEmpty" ] }, "codeCoverageRestoreOriginalPomXml": { "type": "boolean", "description": "Restore original pom.xml after task execution", "ignoreCase": "key", "aliases": [ "restoreOriginalPomXml" ] }, "javaHomeOption": { "description": "Set JAVA_HOME by", "ignoreCase": "all", "enum": [ "JDKVersion", "Path" ], "aliases": [ "javaHomeSelection" ] }, "jdkVersionOption": { "description": "JDK version", "ignoreCase": "all", "enum": [ "default", "1.17", "1.11", "1.10", "1.9", "1.8", "1.7", "1.6" ], "aliases": [ "jdkVersion" ] }, "jdkDirectory": { "type": "string", "description": "JDK path", "ignoreCase": "key", "aliases": [ "jdkUserInputPath" ] }, "jdkArchitectureOption": { "description": "JDK architecture", "ignoreCase": "all", "enum": [ "x86", "x64" ], "aliases": [ "jdkArchitecture" ] }, "mavenVersionOption": { "description": "Maven version", "ignoreCase": "all", "enum": [ "Default", "Path" ], "aliases": [ "mavenVersionSelection" ] }, "mavenDirectory": { "type": "string", "description": "Maven path", "ignoreCase": "key", "aliases": [ "mavenPath" ] }, "mavenSetM2Home": { "type": "boolean", "description": "Set M2_HOME variable", "ignoreCase": "key" }, "mavenOptions": { "type": "string", "description": "Set MAVEN_OPTS to", "ignoreCase": "key", "aliases": [ "mavenOpts" ] }, "mavenAuthenticateFeed": { "type": "boolean", "description": "Authenticate with Artifacts feeds", "ignoreCase": "key", "aliases": [ "mavenFeedAuthenticate" ] }, "effectivePomSkip": { "type": "boolean", "description": "Skip generating effective POM while authenticating with Artifacts feeds", "ignoreCase": "key", "aliases": [ "skipEffectivePom" ] }, "sonarQubeRunAnalysis": { "type": "boolean", "description": "Run SonarQube or SonarCloud analysis", "ignoreCase": "key", "aliases": [ "sqAnalysisEnabled" ] }, "isJacocoCoverageReportXML": { "type": "boolean", "description": "Use XML Jacoco reports for SonarQube analysis", "ignoreCase": "key" }, "sqMavenPluginVersionChoice": { "description": "SonarQube scanner for Maven version", "ignoreCase": "all", "enum": [ "latest", "pom" ] }, "checkStyleRunAnalysis": { "type": "boolean", "description": "Run Checkstyle", "ignoreCase": "key", "aliases": [ "checkstyleAnalysisEnabled" ] }, "pmdRunAnalysis": { "type": "boolean", "description": "Run PMD", "ignoreCase": "key", "aliases": [ "pmdAnalysisEnabled" ] }, "findBugsRunAnalysis": { "type": "boolean", "description": "Run FindBugs", "ignoreCase": "key", "aliases": [ "findbugsAnalysisEnabled" ] }, "spotBugsRunAnalysis": { "type": "boolean", "description": "Run SpotBugs analysis", "ignoreCase": "key", "aliases": [ "spotBugsAnalysisEnabled" ] }, "spotBugsVersion": { "type": "string", "description": "Version number", "ignoreCase": "key", "aliases": [ "spotBugsMavenPluginVersion" ] }, "spotBugsGoal": { "description": "The goal for the spotbugs plugin", "ignoreCase": "all", "enum": [ "spotbugs", "check" ] }, "failWhenBugsFound": { "type": "boolean", "description": "Fail when bugs are found with spotbugs:check", "ignoreCase": "key", "aliases": [ "spotBugsFailWhenBugsFound", "sbFailWhenBugsFound" ] } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "Maven is deprecated - Build, test, and deploy with Apache Maven", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Maven\n\nBuild, test, and deploy with Apache Maven", "ignoreCase": "value", "pattern": "^Maven@4$" }, "inputs": { "description": "Maven inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure Resource Manager connection", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "mavenPomFile": { "type": "string", "description": "Maven POM file", "ignoreCase": "key", "aliases": [ "mavenPOMFile" ] }, "goals": { "type": "string", "description": "Goal(s)", "ignoreCase": "key" }, "options": { "type": "string", "description": "Options", "ignoreCase": "key" }, "publishJUnitResults": { "type": "boolean", "description": "Publish to Azure Pipelines", "ignoreCase": "key" }, "testResultsFiles": { "type": "string", "description": "Test results files", "ignoreCase": "key" }, "testRunTitle": { "type": "string", "description": "Test run title", "ignoreCase": "key" }, "allowBrokenSymlinks": { "type": "boolean", "description": "Allow broken symbolic links", "ignoreCase": "key", "aliases": [ "allowBrokenSymbolicLinks" ] }, "codeCoverageToolOption": { "description": "Code coverage tool", "ignoreCase": "all", "enum": [ "None", "Cobertura", "JaCoCo" ], "aliases": [ "codeCoverageTool" ] }, "codeCoverageClassFilter": { "type": "string", "description": "Class inclusion/exclusion filters", "ignoreCase": "key", "aliases": [ "classFilter" ] }, "codeCoverageClassFilesDirectories": { "type": "string", "description": "Class files directories", "ignoreCase": "key", "aliases": [ "classFilesDirectories" ] }, "codeCoverageSourceDirectories": { "type": "string", "description": "Source files directories", "ignoreCase": "key", "aliases": [ "srcDirectories" ] }, "codeCoverageFailIfEmpty": { "type": "boolean", "description": "Fail when code coverage results are missing", "ignoreCase": "key", "aliases": [ "failIfCoverageEmpty" ] }, "codeCoverageRestoreOriginalPomXml": { "type": "boolean", "description": "Restore original pom.xml after task execution", "ignoreCase": "key", "aliases": [ "restoreOriginalPomXml" ] }, "javaHomeOption": { "description": "Set JAVA_HOME by", "ignoreCase": "all", "enum": [ "JDKVersion", "Path" ], "aliases": [ "javaHomeSelection" ] }, "jdkVersionOption": { "description": "JDK version", "ignoreCase": "all", "enum": [ "default", "1.17", "1.11", "1.10", "1.9", "1.8", "1.7", "1.6" ], "aliases": [ "jdkVersion" ] }, "jdkDirectory": { "type": "string", "description": "JDK path", "ignoreCase": "key", "aliases": [ "jdkUserInputPath" ] }, "jdkArchitectureOption": { "description": "JDK architecture", "ignoreCase": "all", "enum": [ "x86", "x64" ], "aliases": [ "jdkArchitecture" ] }, "mavenVersionOption": { "description": "Maven version", "ignoreCase": "all", "enum": [ "Default", "Path" ], "aliases": [ "mavenVersionSelection" ] }, "mavenDirectory": { "type": "string", "description": "Maven path", "ignoreCase": "key", "aliases": [ "mavenPath" ] }, "mavenSetM2Home": { "type": "boolean", "description": "Set M2_HOME variable", "ignoreCase": "key" }, "mavenOptions": { "type": "string", "description": "Set MAVEN_OPTS to", "ignoreCase": "key", "aliases": [ "mavenOpts" ] }, "mavenAuthenticateFeed": { "type": "boolean", "description": "Authenticate with Artifacts feeds", "ignoreCase": "key", "aliases": [ "mavenFeedAuthenticate" ] }, "effectivePomSkip": { "type": "boolean", "description": "Skip generating effective POM while authenticating with Artifacts feeds", "ignoreCase": "key", "aliases": [ "skipEffectivePom" ] }, "sonarQubeRunAnalysis": { "type": "boolean", "description": "Run SonarQube or SonarCloud analysis", "ignoreCase": "key", "aliases": [ "sqAnalysisEnabled" ] }, "isJacocoCoverageReportXML": { "type": "boolean", "description": "Use XML Jacoco reports for SonarQube analysis", "ignoreCase": "key" }, "sqMavenPluginVersionChoice": { "description": "SonarQube scanner for Maven version", "ignoreCase": "all", "enum": [ "latest", "pom" ] }, "checkStyleRunAnalysis": { "type": "boolean", "description": "Run Checkstyle", "ignoreCase": "key", "aliases": [ "checkstyleAnalysisEnabled" ] }, "pmdRunAnalysis": { "type": "boolean", "description": "Run PMD", "ignoreCase": "key", "aliases": [ "pmdAnalysisEnabled" ] }, "findBugsRunAnalysis": { "type": "boolean", "description": "Run FindBugs", "ignoreCase": "key", "aliases": [ "findbugsAnalysisEnabled" ] }, "spotBugsRunAnalysis": { "type": "boolean", "description": "Run SpotBugs analysis", "ignoreCase": "key", "aliases": [ "spotBugsAnalysisEnabled" ] }, "spotBugsVersion": { "type": "string", "description": "Version number", "ignoreCase": "key", "aliases": [ "spotBugsMavenPluginVersion" ] }, "spotBugsGoal": { "description": "The goal for the spotbugs plugin", "ignoreCase": "all", "enum": [ "spotbugs", "check" ] }, "failWhenBugsFound": { "type": "boolean", "description": "Fail when bugs are found with spotbugs:check", "ignoreCase": "key", "aliases": [ "spotBugsFailWhenBugsFound", "sbFailWhenBugsFound" ] } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Maven\n\nBuild with Apache Maven", "ignoreCase": "value", "pattern": "^Maven@1$" }, "inputs": { "description": "Maven inputs", "properties": { "mavenPomFile": { "type": "string", "description": "Maven POM file", "ignoreCase": "key", "aliases": [ "mavenPOMFile" ] }, "goals": { "type": "string", "description": "Goal(s)", "ignoreCase": "key" }, "options": { "type": "string", "description": "Options", "ignoreCase": "key" }, "publishJUnitResults": { "type": "boolean", "description": "Publish to TFS/Team Services", "ignoreCase": "key" }, "testResultsFiles": { "type": "string", "description": "Test Results Files", "ignoreCase": "key" }, "testRunTitle": { "type": "string", "description": "Test Run Title", "ignoreCase": "key" }, "codeCoverageToolOption": { "description": "Code Coverage Tool", "ignoreCase": "all", "enum": [ "None", "Cobertura", "JaCoCo" ], "aliases": [ "codeCoverageTool" ] }, "codeCoverageClassFilter": { "type": "string", "description": "Class Inclusion/Exclusion Filters", "ignoreCase": "key", "aliases": [ "classFilter" ] }, "codeCoverageClassFilesDirectories": { "type": "string", "description": "Class Files Directories", "ignoreCase": "key", "aliases": [ "classFilesDirectories" ] }, "codeCoverageSourceDirectories": { "type": "string", "description": "Source Files Directories", "ignoreCase": "key", "aliases": [ "srcDirectories" ] }, "codeCoverageFailIfEmpty": { "type": "boolean", "description": "Fail When Code Coverage Results Are Missing", "ignoreCase": "key", "aliases": [ "failIfCoverageEmpty" ] }, "javaHomeOption": { "description": "Set JAVA_HOME by", "ignoreCase": "all", "enum": [ "JDKVersion", "Path" ], "aliases": [ "javaHomeSelection" ] }, "jdkVersionOption": { "description": "JDK Version", "ignoreCase": "all", "enum": [ "default", "1.9", "1.8", "1.7", "1.6" ], "aliases": [ "jdkVersion" ] }, "jdkDirectory": { "type": "string", "description": "JDK Path", "ignoreCase": "key", "aliases": [ "jdkUserInputPath" ] }, "jdkArchitectureOption": { "description": "JDK Architecture", "ignoreCase": "all", "enum": [ "x86", "x64" ], "aliases": [ "jdkArchitecture" ] }, "mavenVersionOption": { "description": "Maven Version", "ignoreCase": "all", "enum": [ "Default", "Path" ], "aliases": [ "mavenVersionSelection" ] }, "mavenDirectory": { "type": "string", "description": "Maven Path", "ignoreCase": "key", "aliases": [ "mavenPath" ] }, "mavenSetM2Home": { "type": "boolean", "description": "Set M2_HOME variable", "ignoreCase": "key" }, "mavenOptions": { "type": "string", "description": "Set MAVEN_OPTS to", "ignoreCase": "key", "aliases": [ "mavenOpts" ] }, "mavenAuthenticateFeed": { "type": "boolean", "description": "Authenticate built-in Maven feeds", "ignoreCase": "key", "aliases": [ "mavenFeedAuthenticate" ] }, "sonarQubeRunAnalysis": { "type": "boolean", "description": "Run SonarQube Analysis", "ignoreCase": "key", "aliases": [ "sqAnalysisEnabled" ] }, "sonarQubeServiceEndpoint": { "type": "string", "description": "SonarQube Endpoint", "ignoreCase": "key", "aliases": [ "sqConnectedServiceName" ] }, "sonarQubeProjectName": { "type": "string", "description": "SonarQube Project Name", "ignoreCase": "key", "aliases": [ "sqProjectName" ] }, "sonarQubeProjectKey": { "type": "string", "description": "SonarQube Project Key", "ignoreCase": "key", "aliases": [ "sqProjectKey" ] }, "sonarQubeProjectVersion": { "type": "string", "description": "SonarQube Project Version", "ignoreCase": "key", "aliases": [ "sqProjectVersion" ] }, "sonarQubeSpecifyDB": { "type": "boolean", "description": "The SonarQube server version is lower than 5.2", "ignoreCase": "key", "aliases": [ "sqDbDetailsRequired" ] }, "sonarQubeDBUrl": { "type": "string", "description": "Db Connection String", "ignoreCase": "key", "aliases": [ "sqDbUrl" ] }, "sonarQubeDBUsername": { "type": "string", "description": "Db Username", "ignoreCase": "key", "aliases": [ "sqDbUsername" ] }, "sonarQubeDBPassword": { "type": "string", "description": "Db User Password", "ignoreCase": "key", "aliases": [ "sqDbPassword" ] }, "sonarQubeIncludeFullReport": { "type": "boolean", "description": "Include full analysis report in the build summary (SQ 5.3+)", "ignoreCase": "key", "aliases": [ "sqAnalysisIncludeFullReport" ] }, "sonarQubeFailWhenQualityGateFails": { "type": "boolean", "description": "Fail the build on quality gate failure (SQ 5.3+)", "ignoreCase": "key", "aliases": [ "sqAnalysisBreakBuildIfQualityGateFailed" ] }, "checkStyleRunAnalysis": { "type": "boolean", "description": "Run Checkstyle", "ignoreCase": "key", "aliases": [ "checkstyleAnalysisEnabled" ] }, "pmdRunAnalysis": { "type": "boolean", "description": "Run PMD", "ignoreCase": "key", "aliases": [ "pmdAnalysisEnabled" ] }, "findBugsRunAnalysis": { "type": "boolean", "description": "Run FindBugs", "ignoreCase": "key", "aliases": [ "findbugsAnalysisEnabled" ] } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": ".NET Core\n\nBuild, test, package, or publish a dotnet application, or run a custom dotnet command", "ignoreCase": "value", "pattern": "^DotNetCoreCLI@2$" }, "inputs": { "description": ".NET Core inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure Resource Manager connection", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "command": { "description": "Command", "ignoreCase": "all", "enum": [ "build", "push", "pack", "publish", "restore", "run", "test", "custom" ] }, "publishWebProjects": { "type": "boolean", "description": "Publish web projects", "ignoreCase": "key" }, "projects": { "type": "string", "description": "Path to project(s) or solution(s)", "ignoreCase": "key" }, "custom": { "type": "string", "description": "Custom command", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "restoreArguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "publishTestResults": { "type": "boolean", "description": "Publish test results and code coverage", "ignoreCase": "key" }, "testRunTitle": { "type": "string", "description": "Test run title", "ignoreCase": "key" }, "zipAfterPublish": { "type": "boolean", "description": "Zip published projects", "ignoreCase": "key" }, "modifyOutputPath": { "type": "boolean", "description": "Add project's folder name to publish path", "ignoreCase": "key" }, "feedsToUse": { "description": "Feeds to use", "ignoreCase": "all", "enum": [ "select", "config" ], "aliases": [ "selectOrConfig" ] }, "vstsFeed": { "type": "string", "description": "Use packages from this Azure Artifacts feed. Select from the dropdown or enter [project name/]feed name.", "ignoreCase": "key", "aliases": [ "feedRestore" ] }, "includeNuGetOrg": { "type": "boolean", "description": "Use packages from NuGet.org", "ignoreCase": "key" }, "nugetConfigPath": { "type": "string", "description": "Path to NuGet.config", "ignoreCase": "key" }, "externalFeedCredentials": { "type": "string", "description": "Credentials for feeds outside this organization/collection", "ignoreCase": "key", "aliases": [ "externalEndpoints" ] }, "noCache": { "type": "boolean", "description": "Disable local cache", "ignoreCase": "key" }, "restoreDirectory": { "type": "string", "description": "Destination directory", "ignoreCase": "key", "aliases": [ "packagesDirectory" ] }, "verbosityRestore": { "description": "Verbosity", "ignoreCase": "all", "enum": [ "-", "Quiet", "Minimal", "Normal", "Detailed", "Diagnostic" ] }, "packagesToPush": { "type": "string", "description": "Path to NuGet package(s) to publish", "ignoreCase": "key", "aliases": [ "searchPatternPush" ] }, "nuGetFeedType": { "description": "Target feed location", "ignoreCase": "all", "enum": [ "internal", "external" ] }, "publishVstsFeed": { "type": "string", "description": "Target feed", "ignoreCase": "key", "aliases": [ "feedPublish" ] }, "publishPackageMetadata": { "type": "boolean", "description": "Publish pipeline metadata", "ignoreCase": "key" }, "publishFeedCredentials": { "type": "string", "description": "NuGet server", "ignoreCase": "key", "aliases": [ "externalEndpoint" ] }, "packagesToPack": { "type": "string", "description": "Path to csproj or nuspec file(s) to pack", "ignoreCase": "key", "aliases": [ "searchPatternPack" ] }, "configuration": { "type": "string", "description": "Configuration to Package", "ignoreCase": "key", "aliases": [ "configurationToPack" ] }, "packDirectory": { "type": "string", "description": "Package Folder", "ignoreCase": "key", "aliases": [ "outputDir" ] }, "nobuild": { "type": "boolean", "description": "Do not build", "ignoreCase": "key" }, "includesymbols": { "type": "boolean", "description": "Include Symbols", "ignoreCase": "key" }, "includesource": { "type": "boolean", "description": "Include Source", "ignoreCase": "key" }, "versioningScheme": { "description": "Automatic package versioning", "ignoreCase": "all", "enum": [ "off", "byPrereleaseNumber", "byEnvVar", "byBuildNumber" ] }, "versionEnvVar": { "type": "string", "description": "Environment variable", "ignoreCase": "key" }, "majorVersion": { "type": "string", "description": "Major", "ignoreCase": "key", "aliases": [ "requestedMajorVersion" ] }, "minorVersion": { "type": "string", "description": "Minor", "ignoreCase": "key", "aliases": [ "requestedMinorVersion" ] }, "patchVersion": { "type": "string", "description": "Patch", "ignoreCase": "key", "aliases": [ "requestedPatchVersion" ] }, "buildProperties": { "type": "string", "description": "Additional build properties", "ignoreCase": "key" }, "verbosityPack": { "description": "Verbosity", "ignoreCase": "all", "enum": [ "-", "Quiet", "Minimal", "Normal", "Detailed", "Diagnostic" ] }, "workingDirectory": { "type": "string", "description": "Working directory", "ignoreCase": "key" }, "requestTimeout": { "type": "integer", "description": "Set timeout for package download request", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": ".NET Core (PREVIEW)\n\nBuild, test and publish using dotnet core command-line.", "ignoreCase": "value", "pattern": "^DotNetCoreCLI@0$" }, "inputs": { "description": ".NET Core (PREVIEW) inputs", "properties": { "command": { "description": "Command", "ignoreCase": "all", "enum": [ "build", "publish", "restore", "test", "run" ] }, "publishWebProjects": { "type": "boolean", "description": "Publish Web Projects", "ignoreCase": "key" }, "projects": { "type": "string", "description": "Project(s)", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "zipAfterPublish": { "type": "boolean", "description": "Zip Published Projects", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "DotNetCoreCLI is deprecated - Build, test and publish using dotnet core command-line.", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": ".NET Core\n\nBuild, test and publish using dotnet core command-line.", "ignoreCase": "value", "pattern": "^DotNetCoreCLI@1$" }, "inputs": { "description": ".NET Core inputs", "properties": { "command": { "description": "Command", "ignoreCase": "all", "enum": [ "build", "publish", "restore", "test", "run" ] }, "publishWebProjects": { "type": "boolean", "description": "Publish Web Projects", "ignoreCase": "key" }, "projects": { "type": "string", "description": "Project(s)", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "zipAfterPublish": { "type": "boolean", "description": "Zip Published Projects", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Xamarin Component Restore\n\nThis task is deprecated. Use 'NuGet' instead.", "ignoreCase": "value", "pattern": "^XamarinComponentRestore@0$" }, "inputs": { "description": "Xamarin Component Restore inputs", "properties": { "solutionFile": { "type": "string", "description": "Path to solution", "ignoreCase": "key", "aliases": [ "solution" ] }, "email": { "type": "string", "description": "Email", "ignoreCase": "key" }, "password": { "type": "string", "description": "Password", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "email", "password" ] } }, "deprecationMessage": "XamarinComponentRestore is deprecated - This task is deprecated. Use 'NuGet' instead.", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure App Service deploy\n\nDeploy to Azure App Service a web, mobile, or API app using Docker, Java, .NET, .NET Core, Node.js, PHP, Python, or Ruby", "ignoreCase": "value", "pattern": "^AzureRmWebAppDeployment@3$" }, "inputs": { "description": "Azure App Service deploy inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "appType": { "description": "App type", "ignoreCase": "all", "enum": [ "app", "applinux", "functionapp", "api", "mobileapp" ], "aliases": [ "WebAppKind" ] }, "WebAppName": { "type": "string", "description": "App Service name", "ignoreCase": "key" }, "DeployToSlotFlag": { "type": "boolean", "description": "Deploy to slot", "ignoreCase": "key" }, "ResourceGroupName": { "type": "string", "description": "Resource group", "ignoreCase": "key" }, "SlotName": { "type": "string", "description": "Slot", "ignoreCase": "key" }, "ImageSource": { "description": "Image Source", "ignoreCase": "all", "enum": [ "Registry", "Builtin" ] }, "AzureContainerRegistry": { "type": "string", "description": "Registry", "ignoreCase": "key" }, "AzureContainerRegistryLoginServer": { "type": "string", "description": "Registry Login Server Name", "ignoreCase": "key" }, "AzureContainerRegistryImage": { "type": "string", "description": "Image", "ignoreCase": "key" }, "AzureContainerRegistryTag": { "type": "string", "description": "Tag", "ignoreCase": "key" }, "DockerRepositoryAccess": { "description": "Repository Access", "ignoreCase": "all", "enum": [ "private", "public" ] }, "dockerRegistryConnection": { "type": "string", "description": "Registry Connection", "ignoreCase": "key", "aliases": [ "RegistryConnectedServiceName" ] }, "PrivateRegistryImage": { "type": "string", "description": "Image", "ignoreCase": "key" }, "PrivateRegistryTag": { "type": "string", "description": "Tag", "ignoreCase": "key" }, "DockerNamespace": { "type": "string", "description": "Registry or Namespace", "ignoreCase": "key" }, "DockerRepository": { "type": "string", "description": "Image", "ignoreCase": "key" }, "DockerImageTag": { "type": "string", "description": "Tag", "ignoreCase": "key" }, "VirtualApplication": { "type": "string", "description": "Virtual application", "ignoreCase": "key" }, "Package": { "type": "string", "description": "Package or folder", "ignoreCase": "key" }, "packageForLinux": { "type": "string", "description": "Package or folder", "ignoreCase": "key", "aliases": [ "BuiltinLinuxPackage" ] }, "RuntimeStack": { "type": "string", "description": "Runtime Stack", "ignoreCase": "key" }, "StartupCommand": { "type": "string", "description": "Startup command ", "ignoreCase": "key" }, "WebAppUri": { "type": "string", "description": "App Service URL", "ignoreCase": "key" }, "ScriptType": { "description": "Deployment script type", "ignoreCase": "all", "enum": [ "", "Inline Script", "File Path" ] }, "InlineScript": { "type": "string", "description": "Inline Script", "ignoreCase": "key" }, "ScriptPath": { "type": "string", "description": "Deployment script path", "ignoreCase": "key" }, "GenerateWebConfig": { "type": "boolean", "description": "Generate Web.config", "ignoreCase": "key" }, "WebConfigParameters": { "type": "string", "description": "Web.config parameters", "ignoreCase": "key" }, "AppSettings": { "type": "string", "description": "App settings", "ignoreCase": "key" }, "ConfigurationSettings": { "type": "string", "description": "Configuration settings", "ignoreCase": "key" }, "TakeAppOfflineFlag": { "type": "boolean", "description": "Take App Offline", "ignoreCase": "key" }, "UseWebDeploy": { "type": "boolean", "description": "Publish using Web Deploy", "ignoreCase": "key" }, "SetParametersFile": { "type": "string", "description": "SetParameters file", "ignoreCase": "key" }, "RemoveAdditionalFilesFlag": { "type": "boolean", "description": "Remove additional files at destination", "ignoreCase": "key" }, "ExcludeFilesFromAppDataFlag": { "type": "boolean", "description": "Exclude files from the App_Data folder", "ignoreCase": "key" }, "AdditionalArguments": { "type": "string", "description": "Additional arguments", "ignoreCase": "key" }, "RenameFilesFlag": { "type": "boolean", "description": "Rename locked files", "ignoreCase": "key" }, "enableXmlTransform": { "type": "boolean", "description": "XML transformation", "ignoreCase": "key", "aliases": [ "XmlTransformation" ] }, "enableXmlVariableSubstitution": { "type": "boolean", "description": "XML variable substitution", "ignoreCase": "key", "aliases": [ "XmlVariableSubstitution" ] }, "JSONFiles": { "type": "string", "description": "JSON variable substitution", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscription", "WebAppName" ] } }, "deprecationMessage": "AzureRmWebAppDeployment is deprecated - Deploy to Azure App Service a web, mobile, or API app using Docker, Java, .NET, .NET Core, Node.js, PHP, Python, or Ruby", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure App Service Deploy\n\nUpdate Azure App Service using Web Deploy / Kudu REST APIs", "ignoreCase": "value", "pattern": "^AzureRmWebAppDeployment@2$" }, "inputs": { "description": "Azure App Service Deploy inputs", "properties": { "ConnectedServiceName": { "type": "string", "description": "Azure Subscription", "ignoreCase": "key" }, "WebAppName": { "type": "string", "description": "App Service name", "ignoreCase": "key" }, "DeployToSlotFlag": { "type": "boolean", "description": "Deploy to slot", "ignoreCase": "key" }, "ResourceGroupName": { "type": "string", "description": "Resource group", "ignoreCase": "key" }, "SlotName": { "type": "string", "description": "Slot", "ignoreCase": "key" }, "VirtualApplication": { "type": "string", "description": "Virtual Application", "ignoreCase": "key" }, "Package": { "type": "string", "description": "Package or Folder", "ignoreCase": "key" }, "WebAppUri": { "type": "string", "description": "App Service URL", "ignoreCase": "key" }, "UseWebDeploy": { "type": "boolean", "description": "Publish using Web Deploy", "ignoreCase": "key" }, "SetParametersFile": { "type": "string", "description": "SetParameters File", "ignoreCase": "key" }, "RemoveAdditionalFilesFlag": { "type": "boolean", "description": "Remove Additional Files at Destination", "ignoreCase": "key" }, "ExcludeFilesFromAppDataFlag": { "type": "boolean", "description": "Exclude Files from the App_Data Folder", "ignoreCase": "key" }, "AdditionalArguments": { "type": "string", "description": "Additional Arguments", "ignoreCase": "key" }, "TakeAppOfflineFlag": { "type": "boolean", "description": "Take App Offline", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "ConnectedServiceName", "WebAppName" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure App Service deploy\n\nDeploy to Azure App Service a web, mobile, or API app using Docker, Java, .NET, .NET Core, Node.js, PHP, Python, or Ruby", "ignoreCase": "value", "pattern": "^AzureRmWebAppDeployment@4$" }, "inputs": { "description": "Azure App Service deploy inputs", "properties": { "ConnectionType": { "description": "Connection type", "ignoreCase": "all", "enum": [ "AzureRM", "PublishProfile" ] }, "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "PublishProfilePath": { "type": "string", "description": "Publish profile path", "ignoreCase": "key" }, "PublishProfilePassword": { "type": "string", "description": "Publish profile password", "ignoreCase": "key" }, "appType": { "description": "App Service type", "ignoreCase": "all", "enum": [ "webApp", "webAppLinux", "webAppContainer", "webAppHyperVContainer", "functionApp", "functionAppLinux", "functionAppContainer", "apiApp", "mobileApp" ], "aliases": [ "WebAppKind" ] }, "WebAppName": { "type": "string", "description": "App Service name", "ignoreCase": "key" }, "deployToSlotOrASE": { "type": "boolean", "description": "Deploy to Slot or App Service Environment", "ignoreCase": "key", "aliases": [ "DeployToSlotOrASEFlag" ] }, "ResourceGroupName": { "type": "string", "description": "Resource group", "ignoreCase": "key" }, "SlotName": { "type": "string", "description": "Slot", "ignoreCase": "key" }, "DockerNamespace": { "type": "string", "description": "Registry or Namespace", "ignoreCase": "key" }, "DockerRepository": { "type": "string", "description": "Image", "ignoreCase": "key" }, "DockerImageTag": { "type": "string", "description": "Tag", "ignoreCase": "key" }, "VirtualApplication": { "type": "string", "description": "Virtual application", "ignoreCase": "key" }, "packageForLinux": { "type": "string", "description": "Package or folder", "ignoreCase": "key", "aliases": [ "Package" ] }, "RuntimeStack": { "type": "string", "description": "Runtime Stack", "ignoreCase": "key" }, "RuntimeStackFunction": { "description": "Runtime Stack", "ignoreCase": "all", "enum": [ "DOTNET|2.2", "DOTNET|3.1", "JAVA|8", "JAVA|11", "NODE|8", "NODE|10", "NODE|12", "NODE|14", "PYTHON|3.6", "PYTHON|3.7", "PYTHON|3.8" ] }, "StartupCommand": { "type": "string", "description": "Startup command ", "ignoreCase": "key" }, "ScriptType": { "description": "Deployment script type", "ignoreCase": "all", "enum": [ "", "Inline Script", "File Path" ] }, "InlineScript": { "type": "string", "description": "Inline Script", "ignoreCase": "key" }, "ScriptPath": { "type": "string", "description": "Deployment script path", "ignoreCase": "key" }, "WebConfigParameters": { "type": "string", "description": "Generate web.config parameters for Python, Node.js, Go and Java apps", "ignoreCase": "key" }, "AppSettings": { "type": "string", "description": "App settings", "ignoreCase": "key" }, "ConfigurationSettings": { "type": "string", "description": "Configuration settings", "ignoreCase": "key" }, "enableCustomDeployment": { "type": "boolean", "description": "Select deployment method", "ignoreCase": "key", "aliases": [ "UseWebDeploy" ] }, "DeploymentType": { "description": "Deployment method", "ignoreCase": "all", "enum": [ "webDeploy", "zipDeploy", "runFromZip" ] }, "TakeAppOfflineFlag": { "type": "boolean", "description": "Take App Offline", "ignoreCase": "key" }, "SetParametersFile": { "type": "string", "description": "SetParameters file", "ignoreCase": "key" }, "RemoveAdditionalFilesFlag": { "type": "boolean", "description": "Remove additional files at destination", "ignoreCase": "key" }, "ExcludeFilesFromAppDataFlag": { "type": "boolean", "description": "Exclude files from the App_Data folder", "ignoreCase": "key" }, "AdditionalArguments": { "type": "string", "description": "Additional arguments", "ignoreCase": "key" }, "RenameFilesFlag": { "type": "boolean", "description": "Rename locked files", "ignoreCase": "key" }, "enableXmlTransform": { "type": "boolean", "description": "XML transformation", "ignoreCase": "key", "aliases": [ "XmlTransformation" ] }, "enableXmlVariableSubstitution": { "type": "boolean", "description": "XML variable substitution", "ignoreCase": "key", "aliases": [ "XmlVariableSubstitution" ] }, "JSONFiles": { "type": "string", "description": "JSON variable substitution", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "PowerShell on target machines\n\nExecute PowerShell scripts on remote machines using PSSession and Invoke-Command for remoting", "ignoreCase": "value", "pattern": "^PowerShellOnTargetMachines@3$" }, "inputs": { "description": "PowerShell on target machines inputs", "properties": { "Machines": { "type": "string", "description": "Machines", "ignoreCase": "key" }, "UserName": { "type": "string", "description": "Username", "ignoreCase": "key" }, "UserPassword": { "type": "string", "description": "Password", "ignoreCase": "key" }, "ScriptType": { "description": "Script Type", "ignoreCase": "all", "enum": [ "FilePath", "Inline" ] }, "ScriptPath": { "type": "string", "description": "Script File Path", "ignoreCase": "key" }, "InlineScript": { "type": "string", "description": "Script", "ignoreCase": "key" }, "ScriptArguments": { "type": "string", "description": "Script Arguments", "ignoreCase": "key" }, "InitializationScript": { "type": "string", "description": "Initialization script", "ignoreCase": "key" }, "SessionVariables": { "type": "string", "description": "Session Variables", "ignoreCase": "key" }, "CommunicationProtocol": { "description": "Protocol", "ignoreCase": "all", "enum": [ "Http", "Https" ] }, "AuthenticationMechanism": { "description": "Authentication", "ignoreCase": "all", "enum": [ "Default", "Credssp" ] }, "NewPsSessionOptionArguments": { "type": "string", "description": "Session Option parameters", "ignoreCase": "key" }, "ErrorActionPreference": { "description": "ErrorActionPreference", "ignoreCase": "all", "enum": [ "stop", "continue", "silentlyContinue" ] }, "failOnStderr": { "type": "boolean", "description": "Fail on Standard Error", "ignoreCase": "key" }, "ignoreLASTEXITCODE": { "type": "boolean", "description": "Ignore $LASTEXITCODE", "ignoreCase": "key" }, "WorkingDirectory": { "type": "string", "description": "Working Directory", "ignoreCase": "key" }, "RunPowershellInParallel": { "type": "boolean", "description": "Run PowerShell in Parallel", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "Machines" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "PowerShell on Target Machines\n\nExecute PowerShell scripts on remote machine(s)", "ignoreCase": "value", "pattern": "^PowerShellOnTargetMachines@1$" }, "inputs": { "description": "PowerShell on Target Machines inputs", "properties": { "EnvironmentName": { "type": "string", "description": "Machines", "ignoreCase": "key" }, "AdminUserName": { "type": "string", "description": "Admin Login", "ignoreCase": "key" }, "AdminPassword": { "type": "string", "description": "Password", "ignoreCase": "key" }, "Protocol": { "description": "Protocol", "ignoreCase": "all", "enum": [ "Http", "Https" ] }, "TestCertificate": { "type": "boolean", "description": "Test Certificate", "ignoreCase": "key" }, "ScriptPath": { "type": "string", "description": "PowerShell Script", "ignoreCase": "key" }, "ScriptArguments": { "type": "string", "description": "Script Arguments", "ignoreCase": "key" }, "InitializationScriptPath": { "type": "string", "description": "Initialization Script", "ignoreCase": "key" }, "SessionVariables": { "type": "string", "description": "Session Variables", "ignoreCase": "key" }, "RunPowershellInParallel": { "type": "boolean", "description": "Run PowerShell in Parallel", "ignoreCase": "key" }, "ResourceFilteringMethod": { "description": "Select Machines By", "ignoreCase": "all", "enum": [ "machineNames", "tags" ] }, "MachineNames": { "type": "string", "description": "Filter Criteria", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "EnvironmentName", "ScriptPath" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "PowerShell on Target Machines\n\nExecute PowerShell scripts on remote machine(s)", "ignoreCase": "value", "pattern": "^PowerShellOnTargetMachines@2$" }, "inputs": { "description": "PowerShell on Target Machines inputs", "properties": { "EnvironmentName": { "type": "string", "description": "Machines", "ignoreCase": "key" }, "AdminUserName": { "type": "string", "description": "Admin Login", "ignoreCase": "key" }, "AdminPassword": { "type": "string", "description": "Password", "ignoreCase": "key" }, "Protocol": { "description": "Protocol", "ignoreCase": "all", "enum": [ "Http", "Https" ] }, "TestCertificate": { "type": "boolean", "description": "Test Certificate", "ignoreCase": "key" }, "ScriptPath": { "type": "string", "description": "PowerShell Script", "ignoreCase": "key" }, "ScriptArguments": { "type": "string", "description": "Script Arguments", "ignoreCase": "key" }, "InitializationScriptPath": { "type": "string", "description": "Initialization Script", "ignoreCase": "key" }, "SessionVariables": { "type": "string", "description": "Session Variables", "ignoreCase": "key" }, "RunPowershellInParallel": { "type": "boolean", "description": "Run PowerShell in Parallel", "ignoreCase": "key" }, "ResourceFilteringMethod": { "description": "Select Machines By", "ignoreCase": "all", "enum": [ "machineNames", "tags" ] }, "MachineNames": { "type": "string", "description": "Filter Criteria", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "EnvironmentName", "ScriptPath" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Publish code coverage results v2\n\nPublish any of the code coverage results from a build", "ignoreCase": "value", "pattern": "^PublishCodeCoverageResults@2$" }, "inputs": { "description": "Publish code coverage results v2 inputs", "properties": { "summaryFileLocation": { "type": "string", "description": "Path to summary files", "ignoreCase": "key" }, "pathToSources": { "type": "string", "description": "Path to Source files", "ignoreCase": "key" }, "failIfCoverageEmpty": { "type": "boolean", "description": "Fail if code coverage results are missing", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "summaryFileLocation" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Publish code coverage\n\nPublish Cobertura or JaCoCo code coverage results from a build", "ignoreCase": "value", "pattern": "^PublishCodeCoverageResults@1$" }, "inputs": { "description": "Publish code coverage inputs", "properties": { "codeCoverageTool": { "description": "Code coverage tool", "ignoreCase": "all", "enum": [ "Cobertura", "JaCoCo" ] }, "summaryFileLocation": { "type": "string", "description": "Summary file", "ignoreCase": "key" }, "pathToSources": { "type": "string", "description": "Path to Source files", "ignoreCase": "key" }, "reportDirectory": { "type": "string", "description": "Report directory", "ignoreCase": "key" }, "additionalCodeCoverageFiles": { "type": "string", "description": "Additional files", "ignoreCase": "key" }, "failIfCoverageEmpty": { "type": "boolean", "description": "Fail when code coverage results are missing", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "summaryFileLocation" ] } }, "deprecationMessage": "PublishCodeCoverageResults is deprecated - Publish Cobertura or JaCoCo code coverage results from a build", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Run functional tests\n\nDeprecated: This task and it’s companion task (Visual Studio Test Agent Deployment) are deprecated. Use the 'Visual Studio Test' task instead. The VSTest task can run unit as well as functional tests. Run tests on one or more agents using the multi-agent job setting. Use the 'Visual Studio Test Platform' task to run tests without needing Visual Studio on the agent. VSTest task also brings new capabilities such as automatically rerunning failed tests.", "ignoreCase": "value", "pattern": "^RunVisualStudioTestsusingTestAgent@1$" }, "inputs": { "description": "Run functional tests inputs", "properties": { "testMachineGroup": { "type": "string", "description": "Machines", "ignoreCase": "key" }, "dropLocation": { "type": "string", "description": "Test Drop Location", "ignoreCase": "key" }, "testSelection": { "description": "Test Selection", "ignoreCase": "all", "enum": [ "testAssembly", "testPlan" ] }, "testPlan": { "type": "string", "description": "Test Plan", "ignoreCase": "key" }, "testSuite": { "type": "string", "description": "Test Suite", "ignoreCase": "key" }, "testConfiguration": { "type": "string", "description": "Test Configuration", "ignoreCase": "key" }, "sourcefilters": { "type": "string", "description": "Test Assembly", "ignoreCase": "key" }, "testFilterCriteria": { "type": "string", "description": "Test Filter criteria", "ignoreCase": "key" }, "runSettingsFile": { "type": "string", "description": "Run Settings File", "ignoreCase": "key" }, "overrideRunParams": { "type": "string", "description": "Override Test Run Parameters", "ignoreCase": "key" }, "codeCoverageEnabled": { "type": "boolean", "description": "Code Coverage Enabled", "ignoreCase": "key" }, "customSlicingEnabled": { "type": "boolean", "description": "Distribute tests by number of machines", "ignoreCase": "key" }, "testRunTitle": { "type": "string", "description": "Test Run Title", "ignoreCase": "key" }, "platform": { "type": "string", "description": "Platform", "ignoreCase": "key" }, "configuration": { "type": "string", "description": "Configuration", "ignoreCase": "key" }, "testConfigurations": { "type": "string", "description": "Test Configurations", "ignoreCase": "key" }, "autMachineGroup": { "type": "string", "description": "Application Under Test Machines", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "testMachineGroup", "dropLocation" ] } }, "deprecationMessage": "RunVisualStudioTestsusingTestAgent is deprecated - Deprecated: This task and it’s companion task (Visual Studio Test Agent Deployment) are deprecated. Use the 'Visual Studio Test' task instead. The VSTest task can run unit as well as functional tests. Run tests on one or more agents using the multi-agent job setting. Use the 'Visual Studio Test Platform' task to run tests without needing Visual Studio on the agent. VSTest task also brings new capabilities such as automatically rerunning failed tests.", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Manual intervention\n\nPause deployment and wait for manual intervention", "ignoreCase": "value", "pattern": "^ManualIntervention@8$" }, "inputs": { "description": "Manual intervention inputs", "properties": { "instructions": { "type": "string", "description": "Instructions", "ignoreCase": "key" }, "emailRecipients": { "type": "string", "description": "Notify users", "ignoreCase": "key" }, "onTimeout": { "description": "On timeout", "ignoreCase": "all", "enum": [ "reject", "resume" ] } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Install Apple provisioning profile\n\nInstall an Apple provisioning profile required to build on a macOS agent machine", "ignoreCase": "value", "pattern": "^InstallAppleProvisioningProfile@1$" }, "inputs": { "description": "Install Apple provisioning profile inputs", "properties": { "provisioningProfileLocation": { "description": "Provisioning profile location", "ignoreCase": "all", "enum": [ "secureFiles", "sourceRepository" ] }, "provProfileSecureFile": { "type": "string", "description": "Provisioning profile", "ignoreCase": "key" }, "provProfileSourceRepository": { "type": "string", "description": "Provisioning profile", "ignoreCase": "key" }, "removeProfile": { "type": "boolean", "description": "Remove profile after build", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Install Apple Provisioning Profile\n\nInstall an Apple provisioning profile required to build on a macOS agent", "ignoreCase": "value", "pattern": "^InstallAppleProvisioningProfile@0$" }, "inputs": { "description": "Install Apple Provisioning Profile inputs", "properties": { "provProfileSecureFile": { "type": "string", "description": "Provisioning Profile", "ignoreCase": "key" }, "removeProfile": { "type": "boolean", "description": "Remove Profile After Build", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "provProfileSecureFile" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "SonarQube for MSBuild - End Analysis\n\n[DEPRECATED] Finish the analysis and upload the results to SonarQube", "ignoreCase": "value", "pattern": "^SonarQubePostTest@1$" }, "inputs": { "description": "SonarQube for MSBuild - End Analysis inputs", "properties": {}, "additionalProperties": false, "required": [] } }, "deprecationMessage": "SonarQubePostTest is deprecated - [DEPRECATED] Finish the analysis and upload the results to SonarQube", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "PyPI publisher\n\nCreate and upload an sdist or wheel to a PyPI-compatible index using Twine", "ignoreCase": "value", "pattern": "^PyPIPublisher@0$" }, "inputs": { "description": "PyPI publisher inputs", "properties": { "pypiConnection": { "type": "string", "description": "PyPI service connection", "ignoreCase": "key", "aliases": [ "serviceEndpoint" ] }, "packageDirectory": { "type": "string", "description": "Python package directory", "ignoreCase": "key", "aliases": [ "wd" ] }, "alsoPublishWheel": { "type": "boolean", "description": "Also publish a wheel", "ignoreCase": "key", "aliases": [ "wheel" ] } }, "additionalProperties": false, "required": [ "pypiConnection", "packageDirectory" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Chef Knife\n\nRun scripts with Knife commands on your Chef workstation", "ignoreCase": "value", "pattern": "^ChefKnife@1$" }, "inputs": { "description": "Chef Knife inputs", "properties": { "ConnectedServiceName": { "type": "string", "description": "Chef Subscription", "ignoreCase": "key" }, "ScriptPath": { "type": "string", "description": "Script Path", "ignoreCase": "key" }, "ScriptArguments": { "type": "string", "description": "Script Arguments", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "ConnectedServiceName", "ScriptPath" ] } }, "deprecationMessage": "ChefKnife is deprecated - Run scripts with Knife commands on your Chef workstation", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Go tool installer\n\nFind in cache or download a specific version of Go and add it to the PATH", "ignoreCase": "value", "pattern": "^GoTool@0$" }, "inputs": { "description": "Go tool installer inputs", "properties": { "version": { "type": "string", "description": "Version", "ignoreCase": "key" }, "goPath": { "type": "string", "description": "GOPATH", "ignoreCase": "key" }, "goBin": { "type": "string", "description": "GOBIN", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Xcode Package iOS\n\nGenerate an .ipa file from Xcode build output using xcrun (Xcode 7 or below)", "ignoreCase": "value", "pattern": "^XcodePackageiOS@0$" }, "inputs": { "description": "Xcode Package iOS inputs", "properties": { "appName": { "type": "string", "description": "Name of .app", "ignoreCase": "key" }, "ipaName": { "type": "string", "description": "Name of .ipa", "ignoreCase": "key" }, "provisioningProfile": { "type": "string", "description": "Provisioning Profile Name", "ignoreCase": "key" }, "sdk": { "type": "string", "description": "SDK", "ignoreCase": "key" }, "appPath": { "type": "string", "description": "Path to .app", "ignoreCase": "key" }, "ipaPath": { "type": "string", "description": "Path to place .ipa", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "provisioningProfile" ] } }, "deprecationMessage": "XcodePackageiOS is deprecated - Generate an .ipa file from Xcode build output using xcrun (Xcode 7 or below)", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Go\n\nGet, build, or test a Go application, or run a custom Go command", "ignoreCase": "value", "pattern": "^Go@0$" }, "inputs": { "description": "Go inputs", "properties": { "command": { "description": "Command", "ignoreCase": "all", "enum": [ "get", "build", "test", "custom" ] }, "customCommand": { "type": "string", "description": "Custom command", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "workingDirectory": { "type": "string", "description": "Working directory", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Publish Pipeline Metadata\n\nPublish Pipeline Metadata to Evidence store", "ignoreCase": "value", "pattern": "^PublishPipelineMetadata@0$" }, "inputs": { "description": "Publish Pipeline Metadata inputs", "properties": {}, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Docker\n\nBuild, tag, push, or run Docker images, or run a Docker command", "ignoreCase": "value", "pattern": "^Docker@0$" }, "inputs": { "description": "Docker inputs", "properties": { "containerregistrytype": { "description": "Container Registry Type", "ignoreCase": "all", "enum": [ "Azure Container Registry", "Container Registry" ] }, "dockerRegistryConnection": { "type": "string", "description": "Docker Registry Service Connection", "ignoreCase": "key", "aliases": [ "dockerRegistryEndpoint" ] }, "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "azureSubscriptionEndpoint" ] }, "azureContainerRegistry": { "type": "string", "description": "Azure Container Registry", "ignoreCase": "key" }, "action": { "description": "Action", "ignoreCase": "all", "enum": [ "Build an image", "Tag images", "Push an image", "Push images", "Run an image", "Run a Docker command" ] }, "dockerFile": { "type": "string", "description": "Docker File", "ignoreCase": "key" }, "addBaseImageData": { "type": "boolean", "description": "Add base image metadata to image(s)", "ignoreCase": "key" }, "buildArguments": { "type": "string", "description": "Build Arguments", "ignoreCase": "key" }, "defaultContext": { "type": "boolean", "description": "Use Default Build Context", "ignoreCase": "key" }, "context": { "type": "string", "description": "Build Context", "ignoreCase": "key" }, "imageName": { "type": "string", "description": "Image Name", "ignoreCase": "key" }, "imageNamesPath": { "type": "string", "description": "Image Names Path", "ignoreCase": "key" }, "qualifyImageName": { "type": "boolean", "description": "Qualify Image Name", "ignoreCase": "key" }, "additionalImageTags": { "type": "string", "description": "Additional Image Tags", "ignoreCase": "key" }, "includeSourceTags": { "type": "boolean", "description": "Include Source Tags", "ignoreCase": "key" }, "includeLatestTag": { "type": "boolean", "description": "Include Latest Tag", "ignoreCase": "key" }, "imageDigestFile": { "type": "string", "description": "Image Digest File", "ignoreCase": "key" }, "containerName": { "type": "string", "description": "Container Name", "ignoreCase": "key" }, "ports": { "type": "string", "description": "Ports", "ignoreCase": "key" }, "volumes": { "type": "string", "description": "Volumes", "ignoreCase": "key" }, "envVars": { "type": "string", "description": "Environment Variables", "ignoreCase": "key" }, "workDir": { "type": "string", "description": "Working Directory", "ignoreCase": "key" }, "entrypoint": { "type": "string", "description": "Entry Point Override", "ignoreCase": "key" }, "containerCommand": { "type": "string", "description": "Command", "ignoreCase": "key" }, "detached": { "type": "boolean", "description": "Run In Background", "ignoreCase": "key" }, "restartPolicy": { "description": "Restart Policy", "ignoreCase": "all", "enum": [ "no", "onFailure", "always", "unlessStopped" ] }, "restartMaxRetries": { "type": "string", "description": "Maximum Restart Retries", "ignoreCase": "key" }, "customCommand": { "type": "string", "description": "Command", "ignoreCase": "key" }, "dockerHostEndpoint": { "type": "string", "description": "Docker Host Service Connection", "ignoreCase": "key" }, "enforceDockerNamingConvention": { "type": "boolean", "description": "Force image name to follow Docker naming convention", "ignoreCase": "key" }, "workingDirectory": { "type": "string", "description": "Working Directory", "ignoreCase": "key", "aliases": [ "cwd" ] }, "memory": { "type": "string", "description": "Memory limit", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "Docker is deprecated - Build, tag, push, or run Docker images, or run a Docker command", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Docker\n\nBuild or push Docker images, login or logout, start or stop containers, or run a Docker command", "ignoreCase": "value", "pattern": "^Docker@2$" }, "inputs": { "description": "Docker inputs", "properties": { "containerRegistry": { "type": "string", "description": "Container registry", "ignoreCase": "key" }, "repository": { "type": "string", "description": "Container repository", "ignoreCase": "key" }, "command": { "description": "Command", "ignoreCase": "all", "enum": [ "buildAndPush", "build", "push", "login", "logout", "start", "stop" ] }, "Dockerfile": { "type": "string", "description": "Dockerfile", "ignoreCase": "key" }, "buildContext": { "type": "string", "description": "Build context", "ignoreCase": "key" }, "tags": { "type": "string", "description": "Tags", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "addPipelineData": { "type": "boolean", "description": "Add Pipeline metadata to image(s)", "ignoreCase": "key" }, "addBaseImageData": { "type": "boolean", "description": "Add base image metadata to image(s)", "ignoreCase": "key" }, "container": { "type": "string", "description": "Container", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Docker\n\nBuild, tag, push, or run Docker images, or run a Docker command", "ignoreCase": "value", "pattern": "^Docker@1$" }, "inputs": { "description": "Docker inputs", "properties": { "containerregistrytype": { "description": "Container registry type", "ignoreCase": "all", "enum": [ "Azure Container Registry", "Container Registry" ] }, "addBaseImageData": { "type": "boolean", "description": "Add base image metadata to image(s)", "ignoreCase": "key" }, "dockerRegistryEndpoint": { "type": "string", "description": "Docker registry service connection", "ignoreCase": "key" }, "azureSubscriptionEndpoint": { "type": "string", "description": "Azure subscription", "ignoreCase": "key" }, "azureContainerRegistry": { "type": "string", "description": "Azure container registry", "ignoreCase": "key" }, "command": { "description": "Command", "ignoreCase": "all", "enum": [ "Build an image", "Tag image", "Push an image", "Run an image", "login", "logout" ] }, "dockerFile": { "type": "string", "description": "Dockerfile", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "pushMultipleImages": { "type": "boolean", "description": "Push multiple images", "ignoreCase": "key" }, "tagMultipleImages": { "type": "boolean", "description": "Tag multiple images", "ignoreCase": "key" }, "imageName": { "type": "string", "description": "Image name", "ignoreCase": "key" }, "imageNamesPath": { "type": "string", "description": "Image names path", "ignoreCase": "key" }, "qualifyImageName": { "type": "boolean", "description": "Qualify image name", "ignoreCase": "key" }, "qualifySourceImageName": { "type": "boolean", "description": "Qualify source image name", "ignoreCase": "key" }, "includeSourceTags": { "type": "boolean", "description": "Include source tags", "ignoreCase": "key" }, "includeLatestTag": { "type": "boolean", "description": "Include latest tag", "ignoreCase": "key" }, "addDefaultLabels": { "type": "boolean", "description": "Add default labels", "ignoreCase": "key" }, "useDefaultContext": { "type": "boolean", "description": "Use default build context", "ignoreCase": "key" }, "buildContext": { "type": "string", "description": "Build context", "ignoreCase": "key" }, "imageDigestFile": { "type": "string", "description": "Image digest file", "ignoreCase": "key" }, "containerName": { "type": "string", "description": "Container name", "ignoreCase": "key" }, "ports": { "type": "string", "description": "Ports", "ignoreCase": "key" }, "volumes": { "type": "string", "description": "Volumes", "ignoreCase": "key" }, "envVars": { "type": "string", "description": "Environment variables", "ignoreCase": "key" }, "workingDirectory": { "type": "string", "description": "Working directory", "ignoreCase": "key" }, "entrypointOverride": { "type": "string", "description": "Entry point override", "ignoreCase": "key" }, "containerCommand": { "type": "string", "description": "Container command", "ignoreCase": "key" }, "runInBackground": { "type": "boolean", "description": "Run in background", "ignoreCase": "key" }, "restartPolicy": { "description": "Restart policy", "ignoreCase": "all", "enum": [ "no", "onFailure", "always", "unlessStopped" ] }, "maxRestartRetries": { "type": "string", "description": "Maximum restart retries", "ignoreCase": "key" }, "dockerHostEndpoint": { "type": "string", "description": "Docker host service connection", "ignoreCase": "key" }, "enforceDockerNamingConvention": { "type": "boolean", "description": "Force image name to follow Docker naming convention", "ignoreCase": "key" }, "memoryLimit": { "type": "string", "description": "Memory limit", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Jenkins queue job\n\nQueue a job on a Jenkins server", "ignoreCase": "value", "pattern": "^JenkinsQueueJob@2$" }, "inputs": { "description": "Jenkins queue job inputs", "properties": { "serverEndpoint": { "type": "string", "description": "Jenkins service connection", "ignoreCase": "key" }, "jobName": { "type": "string", "description": "Job name", "ignoreCase": "key" }, "isMultibranchJob": { "type": "boolean", "description": "Job is of multibranch pipeline type", "ignoreCase": "key" }, "multibranchPipelineBranch": { "type": "string", "description": "Multibranch pipeline branch", "ignoreCase": "key" }, "captureConsole": { "type": "boolean", "description": "Capture console output and wait for completion", "ignoreCase": "key" }, "capturePipeline": { "type": "boolean", "description": "Capture pipeline output and wait for pipeline completion", "ignoreCase": "key" }, "isParameterizedJob": { "type": "boolean", "description": "Parameterized job", "ignoreCase": "key", "aliases": [ "parameterizedJob" ] }, "jobParameters": { "type": "string", "description": "Job parameters", "ignoreCase": "key" }, "failOnUnstableResult": { "type": "boolean", "description": "Fail on unstable result", "ignoreCase": "key" }, "retryCount": { "type": "string", "description": "Number of retries for failed connection", "ignoreCase": "key" }, "delayBetweenRetries": { "type": "string", "description": "Time between retries", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "serverEndpoint", "jobName" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Jenkins Queue Job\n\nQueue a job on a Jenkins server", "ignoreCase": "value", "pattern": "^JenkinsQueueJob@1$" }, "inputs": { "description": "Jenkins Queue Job inputs", "properties": { "serverEndpoint": { "type": "string", "description": "Jenkins service endpoint", "ignoreCase": "key" }, "jobName": { "type": "string", "description": "Job name", "ignoreCase": "key" }, "isMultibranchJob": { "type": "boolean", "description": "Job is of Multibranch Pipeline type", "ignoreCase": "key" }, "multibranchPipelineBranch": { "type": "string", "description": "Multibranch Pipeline Branch", "ignoreCase": "key" }, "captureConsole": { "type": "boolean", "description": "Capture console output and wait for completion", "ignoreCase": "key" }, "capturePipeline": { "type": "boolean", "description": "Capture pipeline output and wait for pipeline completion", "ignoreCase": "key" }, "parameterizedJob": { "type": "boolean", "description": "Parameterized job", "ignoreCase": "key" }, "jobParameters": { "type": "string", "description": "Job parameters", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "serverEndpoint", "jobName" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "FTP upload\n\nUpload files using FTP", "ignoreCase": "value", "pattern": "^FtpUpload@2$" }, "inputs": { "description": "FTP upload inputs", "properties": { "credentialsOption": { "description": "Authentication Method", "ignoreCase": "all", "enum": [ "serviceEndpoint", "inputs" ], "aliases": [ "credsType" ] }, "serverEndpoint": { "type": "string", "description": "FTP Service Connection", "ignoreCase": "key" }, "serverUrl": { "type": "string", "description": "Server URL", "ignoreCase": "key" }, "username": { "type": "string", "description": "Username", "ignoreCase": "key" }, "password": { "type": "string", "description": "Password", "ignoreCase": "key" }, "implicitFTPS": { "type": "boolean", "description": "Use implicit FTPS", "ignoreCase": "key" }, "rootDirectory": { "type": "string", "description": "Root folder", "ignoreCase": "key", "aliases": [ "rootFolder" ] }, "filePatterns": { "type": "string", "description": "File patterns", "ignoreCase": "key" }, "remoteDirectory": { "type": "string", "description": "Remote directory", "ignoreCase": "key", "aliases": [ "remotePath" ] }, "enableUtf8": { "type": "boolean", "description": "Enable UTF8 support", "ignoreCase": "key" }, "clean": { "type": "boolean", "description": "Delete remote directory", "ignoreCase": "key" }, "cleanContents": { "type": "boolean", "description": "Clear remote directory contents", "ignoreCase": "key" }, "preservePaths": { "type": "boolean", "description": "Preserve file paths", "ignoreCase": "key" }, "trustSSL": { "type": "boolean", "description": "Trust server certificate", "ignoreCase": "key" }, "customCmds": { "type": "string", "description": "FTP Commands", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "rootDirectory" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "FTP upload\n\nUpload files using FTP", "ignoreCase": "value", "pattern": "^FtpUpload@1$" }, "inputs": { "description": "FTP upload inputs", "properties": { "credentialsOption": { "description": "Authentication Method", "ignoreCase": "all", "enum": [ "serviceEndpoint", "inputs" ], "aliases": [ "credsType" ] }, "serverEndpoint": { "type": "string", "description": "FTP Service Connection", "ignoreCase": "key" }, "serverUrl": { "type": "string", "description": "Server URL", "ignoreCase": "key" }, "username": { "type": "string", "description": "Username", "ignoreCase": "key" }, "password": { "type": "string", "description": "Password", "ignoreCase": "key" }, "rootDirectory": { "type": "string", "description": "Root folder", "ignoreCase": "key", "aliases": [ "rootFolder" ] }, "filePatterns": { "type": "string", "description": "File patterns", "ignoreCase": "key" }, "remoteDirectory": { "type": "string", "description": "Remote directory", "ignoreCase": "key", "aliases": [ "remotePath" ] }, "clean": { "type": "boolean", "description": "Delete remote directory", "ignoreCase": "key" }, "cleanContents": { "type": "boolean", "description": "Clear remote directory contents", "ignoreCase": "key" }, "overwrite": { "type": "boolean", "description": "Overwrite", "ignoreCase": "key" }, "preservePaths": { "type": "boolean", "description": "Preserve file paths", "ignoreCase": "key" }, "trustSSL": { "type": "boolean", "description": "Trust server certificate", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "rootDirectory" ] } }, "deprecationMessage": "FtpUpload is deprecated - Upload files using FTP", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Windows machine file copy\n\nCopy files to remote Windows machines", "ignoreCase": "value", "pattern": "^WindowsMachineFileCopy@1$" }, "inputs": { "description": "Windows machine file copy inputs", "properties": { "SourcePath": { "type": "string", "description": "Source", "ignoreCase": "key" }, "EnvironmentName": { "type": "string", "description": "Machines", "ignoreCase": "key" }, "AdminUserName": { "type": "string", "description": "Admin Login", "ignoreCase": "key" }, "AdminPassword": { "type": "string", "description": "Password", "ignoreCase": "key" }, "TargetPath": { "type": "string", "description": "Destination Folder", "ignoreCase": "key" }, "CleanTargetBeforeCopy": { "type": "boolean", "description": "Clean Target", "ignoreCase": "key" }, "CopyFilesInParallel": { "type": "boolean", "description": "Copy Files in Parallel", "ignoreCase": "key" }, "AdditionalArguments": { "type": "string", "description": "Additional Arguments", "ignoreCase": "key" }, "ResourceFilteringMethod": { "description": "Select Machines By", "ignoreCase": "all", "enum": [ "machineNames", "tags" ] }, "MachineNames": { "type": "string", "description": "Filter Criteria", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "SourcePath", "TargetPath" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Windows machine file copy\n\nCopy files to remote Windows machines", "ignoreCase": "value", "pattern": "^WindowsMachineFileCopy@2$" }, "inputs": { "description": "Windows machine file copy inputs", "properties": { "SourcePath": { "type": "string", "description": "Source", "ignoreCase": "key" }, "MachineNames": { "type": "string", "description": "Machines", "ignoreCase": "key" }, "AdminUserName": { "type": "string", "description": "Admin Login", "ignoreCase": "key" }, "AdminPassword": { "type": "string", "description": "Password", "ignoreCase": "key" }, "TargetPath": { "type": "string", "description": "Destination Folder", "ignoreCase": "key" }, "CleanTargetBeforeCopy": { "type": "boolean", "description": "Clean Target", "ignoreCase": "key" }, "CopyFilesInParallel": { "type": "boolean", "description": "Copy Files in Parallel", "ignoreCase": "key" }, "AdditionalArguments": { "type": "string", "description": "Additional Arguments", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "SourcePath", "MachineNames", "AdminUserName", "AdminPassword", "TargetPath" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Android Build\n\n[Deprecated] Use Gradle", "ignoreCase": "value", "pattern": "^AndroidBuild@1$" }, "inputs": { "description": "Android Build inputs", "properties": { "gradleWrapper": { "type": "string", "description": "Location of Gradle Wrapper", "ignoreCase": "key" }, "gradleProj": { "type": "string", "description": "Project Directory", "ignoreCase": "key" }, "gradleArguments": { "type": "string", "description": "Gradle Arguments", "ignoreCase": "key" }, "avdName": { "type": "string", "description": "Name", "ignoreCase": "key" }, "createAvd": { "type": "boolean", "description": "Create AVD", "ignoreCase": "key" }, "emulatorTarget": { "type": "string", "description": "AVD Target SDK", "ignoreCase": "key" }, "emulatorDevice": { "type": "string", "description": "AVD Device", "ignoreCase": "key" }, "avdAbi": { "type": "string", "description": "AVD ABI", "ignoreCase": "key" }, "avdForce": { "type": "boolean", "description": "Overwrite Existing AVD", "ignoreCase": "key" }, "avdOptionalArgs": { "type": "string", "description": "Create AVD Optional Arguments", "ignoreCase": "key" }, "startEmulator": { "type": "boolean", "description": "Start and Stop Android Emulator", "ignoreCase": "key" }, "emulatorTimeout": { "type": "string", "description": "Timeout in Seconds", "ignoreCase": "key" }, "emulatorHeadless": { "type": "boolean", "description": "Headless Display", "ignoreCase": "key" }, "emulatorOptionalArgs": { "type": "string", "description": "Emulator Optional Arguments", "ignoreCase": "key" }, "deleteAvd": { "type": "boolean", "description": "Delete AVD", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "AndroidBuild is deprecated - [Deprecated] Use Gradle", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Python twine upload authenticate\n\nAuthenticate for uploading Python distributions using twine. Add '-r FeedName/EndpointName --config-file $(PYPIRC_PATH)' to your twine upload command. For feeds present in this organization, use the feed name as the repository (-r). Otherwise, use the endpoint name defined in the service connection.", "ignoreCase": "value", "pattern": "^TwineAuthenticate@0$" }, "inputs": { "description": "Python twine upload authenticate inputs", "properties": { "artifactFeeds": { "type": "string", "description": "My feeds (select below)", "ignoreCase": "key", "aliases": [ "feedList" ] }, "externalFeeds": { "type": "string", "description": "Feeds from external organizations", "ignoreCase": "key", "aliases": [ "externalSources" ] }, "publishPackageMetadata": { "type": "boolean", "description": "Publish pipeline metadata", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Python twine upload authenticate\n\nAuthenticate for uploading Python distributions using twine. Add '-r FeedName/EndpointName --config-file $(PYPIRC_PATH)' to your twine upload command. For feeds present in this organization, use the feed name as the repository (-r). Otherwise, use the endpoint name defined in the service connection.", "ignoreCase": "value", "pattern": "^TwineAuthenticate@1$" }, "inputs": { "description": "Python twine upload authenticate inputs", "properties": { "azureDevOpsServiceConnection": { "type": "string", "description": "'Azure DevOps' Service Connection", "ignoreCase": "key", "aliases": [ "workloadIdentityServiceConnection" ] }, "feedUrl": { "type": "string", "description": "Azure Artifacts Feed url.", "ignoreCase": "key" }, "artifactFeed": { "type": "string", "description": "My feed name (select below)", "ignoreCase": "key", "aliases": [ "artifactFeed" ] }, "pythonUploadServiceConnection": { "type": "string", "description": "Feed from external organizations", "ignoreCase": "key", "aliases": [ "pythonUploadServiceConnection" ] } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "IIS web app deploy\n\nDeploy a website or web application using Web Deploy", "ignoreCase": "value", "pattern": "^IISWebAppDeploymentOnMachineGroup@0$" }, "inputs": { "description": "IIS web app deploy inputs", "properties": { "WebSiteName": { "type": "string", "description": "Website Name", "ignoreCase": "key" }, "VirtualApplication": { "type": "string", "description": "Virtual Application", "ignoreCase": "key" }, "Package": { "type": "string", "description": "Package or Folder", "ignoreCase": "key" }, "SetParametersFile": { "type": "string", "description": "SetParameters File", "ignoreCase": "key" }, "RemoveAdditionalFilesFlag": { "type": "boolean", "description": "Remove Additional Files at Destination", "ignoreCase": "key" }, "ExcludeFilesFromAppDataFlag": { "type": "boolean", "description": "Exclude Files from the App_Data Folder", "ignoreCase": "key" }, "TakeAppOfflineFlag": { "type": "boolean", "description": "Take App Offline", "ignoreCase": "key" }, "AdditionalArguments": { "type": "string", "description": "Additional Arguments", "ignoreCase": "key" }, "XmlTransformation": { "type": "boolean", "description": "XML transformation", "ignoreCase": "key" }, "XmlVariableSubstitution": { "type": "boolean", "description": "XML variable substitution", "ignoreCase": "key" }, "JSONFiles": { "type": "string", "description": "JSON variable substitution", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "WebSiteName" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Python script\n\nRun a Python file or inline script", "ignoreCase": "value", "pattern": "^PythonScript@0$" }, "inputs": { "description": "Python script inputs", "properties": { "scriptSource": { "description": "Script source", "ignoreCase": "all", "enum": [ "filePath", "inline" ] }, "scriptPath": { "type": "string", "description": "Script path", "ignoreCase": "key" }, "script": { "type": "string", "description": "Script", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "pythonInterpreter": { "type": "string", "description": "Python interpreter", "ignoreCase": "key" }, "workingDirectory": { "type": "string", "description": "Working directory", "ignoreCase": "key" }, "failOnStderr": { "type": "boolean", "description": "Fail on standard error", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Helm tool installer\n\nInstall Helm and Kubernetes on an agent machine", "ignoreCase": "value", "pattern": "^HelmInstaller@0$" }, "inputs": { "description": "Helm tool installer inputs", "properties": { "helmVersion": { "type": "string", "description": "Helm Version Spec", "ignoreCase": "key" }, "checkLatestHelmVersion": { "type": "boolean", "description": "Check for latest version of Helm", "ignoreCase": "key" }, "installKubectl": { "type": "boolean", "description": "Install Kubectl", "ignoreCase": "key", "aliases": [ "installKubeCtl" ] }, "kubectlVersion": { "type": "string", "description": "Kubectl Version Spec", "ignoreCase": "key" }, "checkLatestKubectl": { "type": "boolean", "description": "Check for latest version of kubectl", "ignoreCase": "key", "aliases": [ "checkLatestKubeCtl" ] } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "HelmInstaller is deprecated - Install Helm and Kubernetes on an agent machine", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Helm tool installer\n\nInstall Helm on an agent machine", "ignoreCase": "value", "pattern": "^HelmInstaller@1$" }, "inputs": { "description": "Helm tool installer inputs", "properties": { "helmVersionToInstall": { "type": "string", "description": "Helm Version Spec", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Node.js tasks runner installer\n\nInstall specific Node.js version to run node tasks", "ignoreCase": "value", "pattern": "^NodeTaskRunnerInstaller@0$" }, "inputs": { "description": "Node.js tasks runner installer inputs", "properties": { "nodeVersion": { "description": "Version of runner to install", "ignoreCase": "all", "enum": [ "6", "10", "16" ], "aliases": [ "runnerVersion", "installVersion" ] } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Xamarin License\n\n[Deprecated] Upgrade to free version of Xamarin: https://store.xamarin.com", "ignoreCase": "value", "pattern": "^XamarinLicense@1$" }, "inputs": { "description": "Xamarin License inputs", "properties": { "action": { "description": "Action", "ignoreCase": "all", "enum": [ "Activate", "Deactivate" ] }, "email": { "type": "string", "description": "Email", "ignoreCase": "key" }, "password": { "type": "string", "description": "Password", "ignoreCase": "key" }, "product": { "description": "Xamarin Product", "ignoreCase": "all", "enum": [ "MA", "MT", "MM" ] }, "timeout": { "type": "string", "description": "Timeout in Seconds", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "email", "password" ] } }, "deprecationMessage": "XamarinLicense is deprecated - [Deprecated] Upgrade to free version of Xamarin: https://store.xamarin.com", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "NuGet authenticate\n\nThis version of the task is deprecated, use NuGetAuthenticateV1 instead. Configure NuGet tools to authenticate with Azure Artifacts and other NuGet repositories. Requires NuGet >= 4.8.5385, dotnet >= 2.1.400, or MSBuild >= 15.8.166.59604.", "ignoreCase": "value", "pattern": "^NuGetAuthenticate@0$" }, "inputs": { "description": "NuGet authenticate inputs", "properties": { "nuGetServiceConnections": { "type": "string", "description": "Service connection credentials for feeds outside this organization", "ignoreCase": "key" }, "forceReinstallCredentialProvider": { "type": "boolean", "description": "Reinstall the credential provider even if already installed", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "NuGetAuthenticate is deprecated - This version of the task is deprecated, use NuGetAuthenticateV1 instead. Configure NuGet tools to authenticate with Azure Artifacts and other NuGet repositories. Requires NuGet >= 4.8.5385, dotnet >= 2.1.400, or MSBuild >= 15.8.166.59604.", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "NuGet authenticate\n\nConfigure NuGet tools to authenticate with Azure Artifacts and other NuGet repositories. Requires NuGet >= 4.8.5385, dotnet >= 6, or MSBuild >= 15.8.166.59604", "ignoreCase": "value", "pattern": "^NuGetAuthenticate@1$" }, "inputs": { "description": "NuGet authenticate inputs", "properties": { "azureDevOpsServiceConnection": { "type": "string", "description": "'Azure DevOps' Service Connection", "ignoreCase": "key", "aliases": [ "workloadIdentityServiceConnection" ] }, "feedUrl": { "type": "string", "description": "Azure Artifacts URL", "ignoreCase": "key" }, "forceReinstallCredentialProvider": { "type": "boolean", "description": "Reinstall the credential provider even if already installed", "ignoreCase": "key" }, "nuGetServiceConnections": { "type": "string", "description": "Service connection credentials for feeds outside this organization", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Download GitHub Nuget Packages\n\nRestore your nuget packages using dotnet CLI", "ignoreCase": "value", "pattern": "^DownloadGitHubNugetPackage@1$" }, "inputs": { "description": "Download GitHub Nuget Packages inputs", "properties": { "packageName": { "type": "string", "description": "Package Name", "ignoreCase": "key" }, "version": { "type": "string", "description": "Package Version", "ignoreCase": "key" }, "externalFeedCredentials": { "type": "string", "description": "Credentials for feed from GitHub", "ignoreCase": "key", "aliases": [ "externalEndpoints" ] }, "restoreDirectory": { "type": "string", "description": "Destination directory", "ignoreCase": "key", "aliases": [ "packagesDirectory" ] } }, "additionalProperties": false, "required": [ "packageName", "version" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Maven Authenticate\n\nProvides credentials for Azure Artifacts feeds and external maven repositories", "ignoreCase": "value", "pattern": "^MavenAuthenticate@0$" }, "inputs": { "description": "Maven Authenticate inputs", "properties": { "workloadIdentityServiceConnection": { "type": "string", "description": "'Entra Workload ID-backed Azure DevOps user' Service Connection", "ignoreCase": "key" }, "artifactsFeeds": { "type": "string", "description": "Feeds", "ignoreCase": "key" }, "mavenServiceConnections": { "type": "string", "description": "Credentials for repositories outside this organization/collection", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Azure App Configuration Export\n\nDownload key-values to task variables from Azure App Configuration", "ignoreCase": "value", "pattern": "^AzureAppConfigurationExport@10$" }, "inputs": { "description": "Azure App Configuration Export inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "AppConfigurationEndpoint": { "type": "string", "description": "App Configuration Endpoint", "ignoreCase": "key" }, "SelectionMode": { "description": "Selection Mode", "ignoreCase": "all", "enum": [ "Default", "Snapshot" ] }, "KeyFilter": { "type": "string", "description": "Key Filter", "ignoreCase": "key" }, "Label": { "type": "string", "description": "Label", "ignoreCase": "key" }, "SnapshotName": { "type": "string", "description": "Snapshot name", "ignoreCase": "key" }, "TrimKeyPrefix": { "type": "string", "description": "Trim Key Prefix", "ignoreCase": "key" }, "SuppressWarningForOverriddenKeys": { "type": "boolean", "description": "Suppress warning for overridden keys", "ignoreCase": "key" }, "TreatKeyVaultErrorsAsWarning": { "type": "boolean", "description": "Treat key vault resolution errors as warnings", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscription", "AppConfigurationEndpoint" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Review App\n\nUse this task under deploy phase provider to create a resource dynamically", "ignoreCase": "value", "pattern": "^ReviewApp@0$" }, "inputs": { "description": "Review App inputs", "properties": { "resourceName": { "type": "string", "description": "Resource name", "ignoreCase": "key" }, "baseEnvironmentName": { "type": "string", "description": "Environment name", "ignoreCase": "key" }, "reviewResourceName": { "type": "string", "description": "Review Resource Name", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "resourceName" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Java tool installer\n\nAcquire a specific version of Java from a user-supplied Azure blob or the tool cache and sets JAVA_HOME", "ignoreCase": "value", "pattern": "^JavaToolInstaller@0$" }, "inputs": { "description": "Java tool installer inputs", "properties": { "versionSpec": { "type": "string", "description": "JDK version", "ignoreCase": "key" }, "jdkArchitectureOption": { "description": "JDK architecture", "ignoreCase": "all", "enum": [ "x64", "x86" ] }, "jdkSourceOption": { "description": "JDK source", "ignoreCase": "all", "enum": [ "AzureStorage", "LocalDirectory", "PreInstalled" ] }, "jdkFile": { "type": "string", "description": "JDK file", "ignoreCase": "key" }, "azureResourceManagerEndpoint": { "type": "string", "description": "Azure subscription", "ignoreCase": "key" }, "azureStorageAccountName": { "type": "string", "description": "Storage account name", "ignoreCase": "key" }, "azureContainerName": { "type": "string", "description": "Container name", "ignoreCase": "key" }, "azureCommonVirtualFile": { "type": "string", "description": "Common virtual path", "ignoreCase": "key" }, "jdkDestinationDirectory": { "type": "string", "description": "Destination directory", "ignoreCase": "key" }, "azureResourceGroupName": { "type": "string", "description": "Resource Group name", "ignoreCase": "key" }, "cleanDestinationDirectory": { "type": "boolean", "description": "Clean destination directory", "ignoreCase": "key" }, "createExtractDirectory": { "type": "boolean", "description": "Create directory for extracting", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "jdkArchitectureOption", "jdkSourceOption" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Java tool installer\n\nAcquire a specific version of Java from a user-supplied Azure blob or the tool cache and sets JAVA_HOME", "ignoreCase": "value", "pattern": "^JavaToolInstaller@1$" }, "inputs": { "description": "Java tool installer inputs", "properties": { "versionSpec": { "type": "string", "description": "JDK version", "ignoreCase": "key" }, "jdkArchitectureOption": { "description": "JDK architecture", "ignoreCase": "all", "enum": [ "x64", "x86" ] }, "jdkSourceOption": { "description": "JDK source", "ignoreCase": "all", "enum": [ "AzureStorage", "LocalDirectory", "PreInstalled" ] }, "jdkFile": { "type": "string", "description": "JDK file", "ignoreCase": "key" }, "azureResourceManagerEndpoint": { "type": "string", "description": "Azure subscription", "ignoreCase": "key" }, "azureStorageAccountName": { "type": "string", "description": "Storage account name", "ignoreCase": "key" }, "azureContainerName": { "type": "string", "description": "Container name", "ignoreCase": "key" }, "azureCommonVirtualFile": { "type": "string", "description": "Common virtual path", "ignoreCase": "key" }, "jdkDestinationDirectory": { "type": "string", "description": "Destination directory", "ignoreCase": "key" }, "azureResourceGroupName": { "type": "string", "description": "Resource Group name", "ignoreCase": "key" }, "cleanDestinationDirectory": { "type": "boolean", "description": "Clean destination directory", "ignoreCase": "key" }, "createExtractDirectory": { "type": "boolean", "description": "Create directory for extracting", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "jdkArchitectureOption", "jdkSourceOption" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Chef\n\nDeploy to Chef environments by editing environment attributes", "ignoreCase": "value", "pattern": "^Chef@1$" }, "inputs": { "description": "Chef inputs", "properties": { "connectedServiceName": { "type": "string", "description": "Chef Service Connection", "ignoreCase": "key" }, "Environment": { "type": "string", "description": "Environment", "ignoreCase": "key" }, "Attributes": { "type": "string", "description": "Environment Attributes", "ignoreCase": "key" }, "chefWaitTime": { "type": "string", "description": "Wait Time", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "connectedServiceName", "Environment", "Attributes" ] } }, "deprecationMessage": "Chef is deprecated - Deploy to Chef environments by editing environment attributes", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure Functions\n\nUpdate a function app with .NET, Python, JavaScript, PowerShell, Java based web applications", "ignoreCase": "value", "pattern": "^AzureFunctionApp@1$" }, "inputs": { "description": "Azure Functions inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key" }, "appType": { "description": "App type", "ignoreCase": "all", "enum": [ "functionApp", "functionAppLinux" ] }, "appName": { "type": "string", "description": "Azure Functions App name", "ignoreCase": "key" }, "deployToSlotOrASE": { "type": "boolean", "description": "Deploy to Slot or App Service Environment", "ignoreCase": "key" }, "resourceGroupName": { "type": "string", "description": "Resource group", "ignoreCase": "key" }, "slotName": { "type": "string", "description": "Slot", "ignoreCase": "key" }, "package": { "type": "string", "description": "Package or folder", "ignoreCase": "key" }, "runtimeStack": { "description": "Runtime stack", "ignoreCase": "all", "enum": [ "DOTNET|6.0", "DOTNET-ISOLATED|6.0", "DOTNET-ISOLATED|7.0", "DOTNET-ISOLATED|8.0", "JAVA|8", "JAVA|11", "JAVA|17", "JAVA|21", "NODE|14", "NODE|16", "NODE|18", "NODE|20", "PYTHON|3.8", "PYTHON|3.9", "PYTHON|3.10", "PYTHON|3.11" ] }, "startUpCommand": { "type": "string", "description": "Startup command ", "ignoreCase": "key" }, "customWebConfig": { "type": "string", "description": "Generate web.config parameters for Python, Node.js, Go and Java apps", "ignoreCase": "key" }, "appSettings": { "type": "string", "description": "App settings", "ignoreCase": "key" }, "configurationStrings": { "type": "string", "description": "Configuration settings", "ignoreCase": "key" }, "deploymentMethod": { "description": "Deployment method", "ignoreCase": "all", "enum": [ "auto", "zipDeploy", "runFromPackage" ] } }, "additionalProperties": false, "required": [ "azureSubscription", "appType", "appName" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure Functions Deploy\n\nUpdate a function app with .NET, Python, JavaScript, PowerShell, Java based web applications", "ignoreCase": "value", "pattern": "^AzureFunctionApp@2$" }, "inputs": { "description": "Azure Functions Deploy inputs", "properties": { "connectedServiceNameARM": { "type": "string", "description": "Azure Resource Manager connection", "ignoreCase": "key", "aliases": [ "azureSubscription" ] }, "appType": { "description": "App type", "ignoreCase": "all", "enum": [ "functionApp", "functionAppLinux" ] }, "isFlexConsumption": { "type": "boolean", "description": "Is Function App on Flex Consumption Plan", "ignoreCase": "key" }, "appName": { "type": "string", "description": "Azure Functions App name", "ignoreCase": "key" }, "deployToSlotOrASE": { "type": "boolean", "description": "Deploy to Slot or App Service Environment", "ignoreCase": "key" }, "resourceGroupName": { "type": "string", "description": "Resource group", "ignoreCase": "key" }, "slotName": { "type": "string", "description": "Slot", "ignoreCase": "key" }, "package": { "type": "string", "description": "Package or folder", "ignoreCase": "key" }, "runtimeStack": { "description": "Runtime stack", "ignoreCase": "all", "enum": [ "DOTNET|6.0", "DOTNET-ISOLATED|6.0", "DOTNET-ISOLATED|7.0", "DOTNET-ISOLATED|8.0", "JAVA|8", "JAVA|11", "JAVA|17", "JAVA|21", "NODE|14", "NODE|16", "NODE|18", "NODE|20", "PYTHON|3.8", "PYTHON|3.9", "PYTHON|3.10", "PYTHON|3.11" ] }, "appSettings": { "type": "string", "description": "App settings", "ignoreCase": "key" }, "deploymentMethod": { "description": "Deployment method", "ignoreCase": "all", "enum": [ "auto", "zipDeploy", "runFromPackage" ] } }, "additionalProperties": false, "required": [ "connectedServiceNameARM", "appType", "appName" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "npm authenticate (for task runners)\n\nDon't use this task if you're also using the npm task. Provides npm credentials to an .npmrc file in your repository for the scope of the build. This enables npm task runners like gulp and Grunt to authenticate with private registries.", "ignoreCase": "value", "pattern": "^npmAuthenticate@0$" }, "inputs": { "description": "npm authenticate (for task runners) inputs", "properties": { "azureDevOpsServiceConnection": { "type": "string", "description": "'Azure DevOps' Service Connection", "ignoreCase": "key", "aliases": [ "workloadIdentityServiceConnection" ] }, "feedUrl": { "type": "string", "description": "Azure Artifacts URL", "ignoreCase": "key" }, "workingFile": { "type": "string", "description": ".npmrc file to authenticate", "ignoreCase": "key" }, "customEndpoint": { "type": "string", "description": "Credentials for registries outside this organization/collection", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "workingFile" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "MSBuild\n\nBuild with MSBuild", "ignoreCase": "value", "pattern": "^MSBuild@1$" }, "inputs": { "description": "MSBuild inputs", "properties": { "solution": { "type": "string", "description": "Project", "ignoreCase": "key" }, "msbuildLocationMethod": { "description": "MSBuild", "ignoreCase": "all", "enum": [ "version", "location" ] }, "msbuildVersion": { "description": "MSBuild Version", "ignoreCase": "all", "enum": [ "latest", "17.0", "16.0", "15.0", "14.0", "12.0", "4.0" ] }, "msbuildArchitecture": { "description": "MSBuild Architecture", "ignoreCase": "all", "enum": [ "x86", "x64" ] }, "msbuildLocation": { "type": "string", "description": "Path to MSBuild", "ignoreCase": "key" }, "platform": { "type": "string", "description": "Platform", "ignoreCase": "key" }, "configuration": { "type": "string", "description": "Configuration", "ignoreCase": "key" }, "msbuildArguments": { "type": "string", "description": "MSBuild Arguments", "ignoreCase": "key" }, "clean": { "type": "boolean", "description": "Clean", "ignoreCase": "key" }, "maximumCpuCount": { "type": "boolean", "description": "Build in Parallel", "ignoreCase": "key" }, "restoreNugetPackages": { "type": "boolean", "description": "Restore NuGet Packages", "ignoreCase": "key" }, "logProjectEvents": { "type": "boolean", "description": "Record Project Details", "ignoreCase": "key" }, "createLogFile": { "type": "boolean", "description": "Create Log File", "ignoreCase": "key" }, "logFileVerbosity": { "description": "Log File Verbosity", "ignoreCase": "all", "enum": [ "quiet", "minimal", "normal", "detailed", "diagnostic" ] } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Build machine image\n\nBuild a machine image using Packer, which may be used for Azure Virtual machine scale set deployment", "ignoreCase": "value", "pattern": "^PackerBuild@0$" }, "inputs": { "description": "Build machine image inputs", "properties": { "templateType": { "description": "Packer template", "ignoreCase": "all", "enum": [ "builtin", "custom" ] }, "customTemplateLocation": { "type": "string", "description": "Packer template location", "ignoreCase": "key" }, "customTemplateParameters": { "type": "string", "description": "Template parameters", "ignoreCase": "key" }, "ConnectedServiceName": { "type": "string", "description": "Azure subscription", "ignoreCase": "key" }, "location": { "type": "string", "description": "Storage location", "ignoreCase": "key" }, "storageAccountName": { "type": "string", "description": "Storage account", "ignoreCase": "key" }, "azureResourceGroup": { "type": "string", "description": "Resource group", "ignoreCase": "key" }, "baseImageSource": { "description": "Base image source", "ignoreCase": "all", "enum": [ "default", "customVhd" ] }, "baseImage": { "description": "Base image", "ignoreCase": "all", "enum": [ "MicrosoftWindowsServer:WindowsServer:2012-R2-Datacenter:windows", "MicrosoftWindowsServer:WindowsServer:2016-Datacenter:windows", "MicrosoftWindowsServer:WindowsServer:2012-Datacenter:windows", "MicrosoftWindowsServer:WindowsServer:2008-R2-SP1:windows", "Canonical:UbuntuServer:14.04.4-LTS:linux", "Canonical:UbuntuServer:16.04-LTS:linux", "RedHat:RHEL:7.2:linux", "RedHat:RHEL:6.8:linux", "OpenLogic:CentOS:7.2:linux", "OpenLogic:CentOS:6.8:linux", "credativ:Debian:8:linux", "credativ:Debian:7:linux", "SUSE:openSUSE-Leap:42.2:linux", "SUSE:SLES:12-SP2:linux", "SUSE:SLES:11-SP4:linux" ] }, "customImageUrl": { "type": "string", "description": "Base image URL", "ignoreCase": "key" }, "customImageOSType": { "description": "Base image OS", "ignoreCase": "all", "enum": [ "windows", "linux" ] }, "packagePath": { "type": "string", "description": "Deployment Package", "ignoreCase": "key" }, "deployScriptPath": { "type": "string", "description": "Deployment script", "ignoreCase": "key" }, "deployScriptArguments": { "type": "string", "description": "Deployment script arguments", "ignoreCase": "key" }, "additionalBuilderParameters": { "type": "string", "description": "Additional Builder parameters", "ignoreCase": "key" }, "skipTempFileCleanupDuringVMDeprovision": { "type": "boolean", "description": "Skip temporary file cleanup during deprovision", "ignoreCase": "key" }, "imageUri": { "type": "string", "description": "Image URL", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "ConnectedServiceName", "location", "storageAccountName", "azureResourceGroup", "packagePath", "deployScriptPath" ] } }, "deprecationMessage": "PackerBuild is deprecated - Build a machine image using Packer, which may be used for Azure Virtual machine scale set deployment", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Build machine image\n\nBuild a machine image using Packer, which may be used for Azure Virtual machine scale set deployment", "ignoreCase": "value", "pattern": "^PackerBuild@1$" }, "inputs": { "description": "Build machine image inputs", "properties": { "templateType": { "description": "Packer template", "ignoreCase": "all", "enum": [ "builtin", "custom" ] }, "customTemplateLocation": { "type": "string", "description": "Packer template location", "ignoreCase": "key" }, "customTemplateParameters": { "type": "string", "description": "Template parameters", "ignoreCase": "key" }, "ConnectedServiceName": { "type": "string", "description": "Azure subscription", "ignoreCase": "key" }, "isManagedImage": { "type": "boolean", "description": "Managed VM disk image", "ignoreCase": "key" }, "managedImageName": { "type": "string", "description": "Managed VM Disk Image Name ", "ignoreCase": "key" }, "location": { "type": "string", "description": "Storage location", "ignoreCase": "key" }, "storageAccountName": { "type": "string", "description": "Storage account", "ignoreCase": "key" }, "azureResourceGroup": { "type": "string", "description": "Resource group", "ignoreCase": "key" }, "baseImageSource": { "description": "Base image source", "ignoreCase": "all", "enum": [ "default", "customVhd" ] }, "baseImage": { "description": "Base image", "ignoreCase": "all", "enum": [ "MicrosoftWindowsServer:WindowsServer:2012-R2-Datacenter:windows", "MicrosoftWindowsServer:WindowsServer:2016-Datacenter:windows", "MicrosoftWindowsServer:WindowsServer:2012-Datacenter:windows", "MicrosoftWindowsServer:WindowsServer:2008-R2-SP1:windows", "Canonical:UbuntuServer:14.04.4-LTS:linux", "Canonical:UbuntuServer:16.04-LTS:linux", "Canonical:UbuntuServer:18.04-LTS:linux", "RedHat:RHEL:7.2:linux", "RedHat:RHEL:6.8:linux", "OpenLogic:CentOS:7.2:linux", "OpenLogic:CentOS:6.8:linux", "credativ:Debian:8:linux", "credativ:Debian:7:linux", "SUSE:openSUSE-Leap:42.2:linux", "SUSE:SLES:12-SP2:linux", "SUSE:SLES:11-SP4:linux" ] }, "customImageUrl": { "type": "string", "description": "Base image URL", "ignoreCase": "key" }, "customImageOSType": { "description": "Base image OS", "ignoreCase": "all", "enum": [ "windows", "linux" ] }, "packagePath": { "type": "string", "description": "Deployment Package", "ignoreCase": "key" }, "deployScriptPath": { "type": "string", "description": "Deployment script", "ignoreCase": "key" }, "deployScriptArguments": { "type": "string", "description": "Deployment script arguments", "ignoreCase": "key" }, "additionalBuilderParameters": { "type": "string", "description": "Additional Builder parameters", "ignoreCase": "key" }, "skipTempFileCleanupDuringVMDeprovision": { "type": "boolean", "description": "Skip temporary file cleanup during deprovision", "ignoreCase": "key" }, "packerVersion": { "type": "string", "description": "Packer Version", "ignoreCase": "key" }, "imageUri": { "type": "string", "description": "Image URL or Name", "ignoreCase": "key" }, "imageId": { "type": "string", "description": "Azure Resource Id", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "ConnectedServiceName", "location", "storageAccountName", "azureResourceGroup", "packagePath", "deployScriptPath" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "NuGet packager\n\nDeprecated: use the “NuGet” task instead. It works with the new Tool Installer framework so you can easily use new versions of NuGet without waiting for a task update, provides better support for authenticated feeds outside this organization/collection, and uses NuGet 4 by default.", "ignoreCase": "value", "pattern": "^NuGetPackager@0$" }, "inputs": { "description": "NuGet packager inputs", "properties": { "searchPattern": { "type": "string", "description": "Path to csproj or nuspec file(s) to pack", "ignoreCase": "key" }, "outputdir": { "type": "string", "description": "Package Folder", "ignoreCase": "key" }, "includeReferencedProjects": { "type": "boolean", "description": "Include referenced projects", "ignoreCase": "key" }, "versionByBuild": { "description": "Automatic package versioning", "ignoreCase": "all", "enum": [ "false", "byPrereleaseNumber", "byEnvVar", "true" ] }, "versionEnvVar": { "type": "string", "description": "Environment variable", "ignoreCase": "key" }, "requestedMajorVersion": { "type": "string", "description": "Major", "ignoreCase": "key" }, "requestedMinorVersion": { "type": "string", "description": "Minor", "ignoreCase": "key" }, "requestedPatchVersion": { "type": "string", "description": "Patch", "ignoreCase": "key" }, "configurationToPack": { "type": "string", "description": "Configuration to Package", "ignoreCase": "key" }, "buildProperties": { "type": "string", "description": "Additional build properties", "ignoreCase": "key" }, "nuGetAdditionalArgs": { "type": "string", "description": "NuGet Arguments", "ignoreCase": "key" }, "nuGetPath": { "type": "string", "description": "Path to NuGet.exe", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "NuGetPackager is deprecated - Deprecated: use the “NuGet” task instead. It works with the new Tool Installer framework so you can easily use new versions of NuGet without waiting for a task update, provides better support for authenticated feeds outside this organization/collection, and uses NuGet 4 by default.", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Azure App Configuration Snapshot\n\nCreate a snapshot in an Azure App Configuration instance", "ignoreCase": "value", "pattern": "^AzureAppConfigurationSnapshot@1$" }, "inputs": { "description": "Azure App Configuration Snapshot inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "AppConfigurationEndpoint": { "type": "string", "description": "App Configuration Endpoint", "ignoreCase": "key" }, "SnapshotName": { "type": "string", "description": "Snapshot Name", "ignoreCase": "key" }, "CompositionType": { "description": "Composition Type", "ignoreCase": "all", "enum": [ "key", "key_label" ] }, "Filters": { "type": "string", "description": "Filters for key-values", "ignoreCase": "key" }, "RetentionPeriod": { "type": "integer", "description": "Days to retain archived snapshot", "ignoreCase": "key" }, "Tags": { "type": "string", "description": "Tags", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscription", "AppConfigurationEndpoint", "SnapshotName", "Filters" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Duffle tool installer\n\nInstall a specified version of Duffle for installing and managing CNAB bundles", "ignoreCase": "value", "pattern": "^DuffleInstaller@0$" }, "inputs": { "description": "Duffle tool installer inputs", "properties": { "version": { "type": "string", "description": "Version", "ignoreCase": "key" }, "checkLatestVersion": { "type": "boolean", "description": "Check for latest version", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "DuffleInstaller is deprecated - Install a specified version of Duffle for installing and managing CNAB bundles", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Update Service Fabric App Versions\n\nAutomatically updates the versions of a packaged Service Fabric application.", "ignoreCase": "value", "pattern": "^ServiceFabricUpdateAppVersions@1$" }, "inputs": { "description": "Update Service Fabric App Versions inputs", "properties": { "applicationPackagePath": { "type": "string", "description": "Application Package", "ignoreCase": "key" }, "versionSuffix": { "type": "string", "description": "Version Value", "ignoreCase": "key" }, "versionBehavior": { "description": "Version Behavior", "ignoreCase": "all", "enum": [ "Append", "Replace" ] }, "updateOnlyChanged": { "type": "boolean", "description": "Update only if changed", "ignoreCase": "key" }, "pkgArtifactName": { "type": "string", "description": "Package Artifact Name", "ignoreCase": "key" }, "logAllChanges": { "type": "boolean", "description": "Log all changes", "ignoreCase": "key" }, "compareType": { "description": "Compare against", "ignoreCase": "all", "enum": [ "LastSuccessful", "Specific" ] }, "buildNumber": { "type": "string", "description": "Build Number", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "applicationPackagePath" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Update Service Fabric manifests\n\nAutomatically update portions of application and service manifests in a packaged Azure Service Fabric application", "ignoreCase": "value", "pattern": "^ServiceFabricUpdateManifests@2$" }, "inputs": { "description": "Update Service Fabric manifests inputs", "properties": { "updateType": { "description": "Update Type", "ignoreCase": "all", "enum": [ "Manifest versions", "Docker image settings" ] }, "applicationPackagePath": { "type": "string", "description": "Application Package", "ignoreCase": "key" }, "versionSuffix": { "type": "string", "description": "Version Value", "ignoreCase": "key" }, "versionBehavior": { "description": "Version Behavior", "ignoreCase": "all", "enum": [ "Append", "Replace" ] }, "updateOnlyChanged": { "type": "boolean", "description": "Update only if changed", "ignoreCase": "key" }, "pkgArtifactName": { "type": "string", "description": "Package Artifact Name", "ignoreCase": "key" }, "logAllChanges": { "type": "boolean", "description": "Log all changes", "ignoreCase": "key" }, "compareType": { "description": "Compare against", "ignoreCase": "all", "enum": [ "LastSuccessful", "Specific" ] }, "buildNumber": { "type": "string", "description": "Build Number", "ignoreCase": "key" }, "overwriteExistingPkgArtifact": { "type": "boolean", "description": "Overwrite Existing Package Artifact", "ignoreCase": "key" }, "imageNamesPath": { "type": "string", "description": "Image Names Path", "ignoreCase": "key" }, "imageDigestsPath": { "type": "string", "description": "Image Digests Path", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "applicationPackagePath" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Query Azure Monitor alerts\n\nObserve the configured Azure Monitor rules for active alerts", "ignoreCase": "value", "pattern": "^AzureMonitor@1$" }, "inputs": { "description": "Query Azure Monitor alerts inputs", "properties": { "connectedServiceNameARM": { "type": "string", "description": "Azure subscription", "ignoreCase": "key" }, "ResourceGroupName": { "type": "string", "description": "Resource group", "ignoreCase": "key" }, "filterType": { "description": "Filter type", "ignoreCase": "all", "enum": [ "resource", "alertrule", "none" ] }, "resource": { "type": "string", "description": "Resource", "ignoreCase": "key" }, "alertRule": { "type": "string", "description": "Alert rule", "ignoreCase": "key" }, "severity": { "description": "Severity", "ignoreCase": "all", "enum": [ "Sev0", "Sev1", "Sev2", "Sev3", "Sev4" ] }, "timeRange": { "description": "Time range", "ignoreCase": "all", "enum": [ "1h", "1d", "7d", "30d" ] }, "alertState": { "description": "Alert state", "ignoreCase": "all", "enum": [ "New", "Acknowledged", "Closed" ] }, "monitorCondition": { "description": "Monitor condition", "ignoreCase": "all", "enum": [ "Fired ", "Resolved" ] } }, "additionalProperties": false, "required": [ "connectedServiceNameARM", "ResourceGroupName" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Query Classic Azure Monitor alerts\n\nObserve the configured classic Azure Monitor rules for active alerts", "ignoreCase": "value", "pattern": "^AzureMonitor@0$" }, "inputs": { "description": "Query Classic Azure Monitor alerts inputs", "properties": { "connectedServiceNameARM": { "type": "string", "description": "Azure subscription", "ignoreCase": "key" }, "ResourceGroupName": { "type": "string", "description": "Resource group", "ignoreCase": "key" }, "ResourceType": { "description": "Resource type", "ignoreCase": "all", "enum": [ "Microsoft.Insights/components", "Microsoft.Web/sites", "Microsoft.Storage/storageAccounts", "Microsoft.Compute/virtualMachines" ] }, "resourceName": { "type": "string", "description": "Resource name", "ignoreCase": "key" }, "alertRules": { "type": "string", "description": "Alert rules", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "connectedServiceNameARM", "ResourceGroupName", "resourceName", "alertRules" ] } }, "deprecationMessage": "AzureMonitor is deprecated - Observe the configured classic Azure Monitor rules for active alerts", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Notation\n\nAzure Pipepine Task for setting up Notation CLI, sign and verify with Notation", "ignoreCase": "value", "pattern": "^Notation@0$" }, "inputs": { "description": "Notation inputs", "properties": { "command": { "description": "Command to run", "ignoreCase": "all", "enum": [ "install", "sign", "verify" ] }, "isCustomVersion": { "type": "boolean", "description": "Custom Version", "ignoreCase": "key" }, "version": { "type": "string", "description": "Version", "ignoreCase": "key" }, "url": { "type": "string", "description": "Download URL", "ignoreCase": "key" }, "checksum": { "type": "string", "description": "Checksum", "ignoreCase": "key" }, "artifactRefs": { "type": "string", "description": "Artifact references", "ignoreCase": "key" }, "signatureFormat": { "description": "Signature Format", "ignoreCase": "all", "enum": [ "cose", "jws" ] }, "allowReferrersAPI": { "type": "boolean", "description": "[Experimental] Allow Referrers API", "ignoreCase": "key" }, "plugin": { "description": "Plugin", "ignoreCase": "all", "enum": [ "azureKeyVault" ] }, "akvPluginVersion": { "type": "string", "description": "Plugin Version", "ignoreCase": "key" }, "azurekvServiceConection": { "type": "string", "description": "Azure Key Vault service connection", "ignoreCase": "key" }, "keyid": { "type": "string", "description": "Key ID", "ignoreCase": "key" }, "caCertBundle": { "type": "string", "description": "Certificate Bundle File Path", "ignoreCase": "key" }, "selfSigned": { "type": "boolean", "description": "Self-signed Certificate", "ignoreCase": "key" }, "timestampURL": { "type": "string", "description": "Timestamp URL", "ignoreCase": "key" }, "timestampRootCert": { "type": "string", "description": "Timestamp Root Certificate", "ignoreCase": "key" }, "trustPolicy": { "type": "string", "description": "Trust Policy File Path", "ignoreCase": "key" }, "trustStore": { "type": "string", "description": "Trust Store Folder Path", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Azure Network Load Balancer\n\nConnect or disconnect an Azure virtual machine's network interface to a Load Balancer's back end address pool", "ignoreCase": "value", "pattern": "^AzureNLBManagement@1$" }, "inputs": { "description": "Azure Network Load Balancer inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure Subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "ResourceGroupName": { "type": "string", "description": "Resource Group", "ignoreCase": "key" }, "LoadBalancer": { "type": "string", "description": "Load Balancer Name", "ignoreCase": "key" }, "Action": { "description": "Action", "ignoreCase": "all", "enum": [ "Disconnect", "Connect" ] } }, "additionalProperties": false, "required": [ "azureSubscription", "ResourceGroupName", "LoadBalancer", "Action" ] } }, "deprecationMessage": "AzureNLBManagement is deprecated - Connect or disconnect an Azure virtual machine's network interface to a Load Balancer's back end address pool", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Cloud-based Apache JMeter load test\n\nRun an Apache JMeter load test in the cloud", "ignoreCase": "value", "pattern": "^ApacheJMeterLoadTest@1$" }, "inputs": { "description": "Cloud-based Apache JMeter load test inputs", "properties": { "connectedServiceName": { "type": "string", "description": "Azure Pipelines Connection", "ignoreCase": "key" }, "TestDrop": { "type": "string", "description": "Apache JMeter test files folder", "ignoreCase": "key" }, "LoadTest": { "type": "string", "description": "Apache JMeter file", "ignoreCase": "key" }, "agentCount": { "description": "Agent Count", "ignoreCase": "all", "enum": [ "1", "2", "3", "4", "5" ] }, "runDuration": { "description": "Run Duration (sec)", "ignoreCase": "all", "enum": [ "60", "120", "180", "240", "300" ] }, "geoLocation": { "description": "Load Location", "ignoreCase": "all", "enum": [ "Default", "Australia East", "Australia Southeast", "Brazil South", "Central India", "Central US", "East Asia", "East US 2", "East US", "Japan East", "Japan West", "North Central US", "North Europe", "South Central US", "South India", "Southeast Asia", "West Europe", "West US" ] }, "machineType": { "description": "Run load test using", "ignoreCase": "all", "enum": [ "0", "2" ] } }, "additionalProperties": false, "required": [ "TestDrop" ] } }, "deprecationMessage": "ApacheJMeterLoadTest is deprecated - Run an Apache JMeter load test in the cloud", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Docker Compose\n\nBuild, push or run multi-container Docker applications. Task can be used with Docker or Azure Container registry.", "ignoreCase": "value", "pattern": "^DockerCompose@0$" }, "inputs": { "description": "Docker Compose inputs", "properties": { "containerregistrytype": { "description": "Container Registry Type", "ignoreCase": "all", "enum": [ "Azure Container Registry", "Container Registry" ] }, "dockerRegistryEndpoint": { "type": "string", "description": "Docker Registry Service Connection", "ignoreCase": "key" }, "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "azureSubscriptionEndpoint" ] }, "azureContainerRegistry": { "type": "string", "description": "Azure Container Registry", "ignoreCase": "key" }, "dockerComposeFile": { "type": "string", "description": "Docker Compose File", "ignoreCase": "key" }, "additionalDockerComposeFiles": { "type": "string", "description": "Additional Docker Compose Files", "ignoreCase": "key" }, "dockerComposeFileArgs": { "type": "string", "description": "Environment Variables", "ignoreCase": "key" }, "projectName": { "type": "string", "description": "Project Name", "ignoreCase": "key" }, "qualifyImageNames": { "type": "boolean", "description": "Qualify Image Names", "ignoreCase": "key" }, "action": { "description": "Action", "ignoreCase": "all", "enum": [ "Build services", "Push services", "Run services", "Run a specific service", "Lock services", "Write service image digests", "Combine configuration", "Run a Docker Compose command" ] }, "additionalImageTags": { "type": "string", "description": "Additional Image Tags", "ignoreCase": "key" }, "includeSourceTags": { "type": "boolean", "description": "Include Source Tags", "ignoreCase": "key" }, "includeLatestTag": { "type": "boolean", "description": "Include Latest Tag", "ignoreCase": "key" }, "buildImages": { "type": "boolean", "description": "Build Images", "ignoreCase": "key" }, "serviceName": { "type": "string", "description": "Service Name", "ignoreCase": "key" }, "containerName": { "type": "string", "description": "Container Name", "ignoreCase": "key" }, "ports": { "type": "string", "description": "Ports", "ignoreCase": "key" }, "workingDirectory": { "type": "string", "description": "Working Directory", "ignoreCase": "key", "aliases": [ "workDir" ] }, "entrypoint": { "type": "string", "description": "Entry Point Override", "ignoreCase": "key" }, "containerCommand": { "type": "string", "description": "Command", "ignoreCase": "key" }, "detached": { "type": "boolean", "description": "Run in Background", "ignoreCase": "key" }, "abortOnContainerExit": { "type": "boolean", "description": "Abort on Container Exit", "ignoreCase": "key" }, "imageDigestComposeFile": { "type": "string", "description": "Image Digest Compose File", "ignoreCase": "key" }, "removeBuildOptions": { "type": "boolean", "description": "Remove Build Options", "ignoreCase": "key" }, "baseResolveDirectory": { "type": "string", "description": "Base Resolve Directory", "ignoreCase": "key" }, "outputDockerComposeFile": { "type": "string", "description": "Output Docker Compose File", "ignoreCase": "key" }, "dockerComposeCommand": { "type": "string", "description": "Command", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "dockerHostEndpoint": { "type": "string", "description": "Docker Host Service Connection", "ignoreCase": "key" }, "nopIfNoDockerComposeFile": { "type": "boolean", "description": "No-op if no Docker Compose File", "ignoreCase": "key" }, "requireAdditionalDockerComposeFiles": { "type": "boolean", "description": "Require Additional Docker Compose Files", "ignoreCase": "key" }, "currentWorkingDirectory": { "type": "string", "description": "Working Directory", "ignoreCase": "key", "aliases": [ "cwd" ] }, "dockerComposePath": { "type": "string", "description": "Docker Compose executable Path", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "DockerCompose is deprecated - Build, push or run multi-container Docker applications. Task can be used with Docker or Azure Container registry.", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Docker Compose\n\nBuild, push or run multi-container Docker applications. Task can be used with Docker or Azure Container registry.", "ignoreCase": "value", "pattern": "^DockerCompose@1$" }, "inputs": { "description": "Docker Compose inputs", "properties": { "containerregistrytype": { "description": "Container Registry Type", "ignoreCase": "all", "enum": [ "Azure Container Registry", "Container Registry" ] }, "dockerRegistryEndpoint": { "type": "string", "description": "Docker Registry Service Connection", "ignoreCase": "key" }, "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "azureSubscriptionEndpoint" ] }, "azureContainerRegistry": { "type": "string", "description": "Azure Container Registry", "ignoreCase": "key" }, "dockerComposeFile": { "type": "string", "description": "Docker Compose File", "ignoreCase": "key" }, "additionalDockerComposeFiles": { "type": "string", "description": "Additional Docker Compose Files", "ignoreCase": "key" }, "dockerComposeFileArgs": { "type": "string", "description": "Environment Variables", "ignoreCase": "key" }, "projectName": { "type": "string", "description": "Project Name", "ignoreCase": "key" }, "qualifyImageNames": { "type": "boolean", "description": "Qualify Image Names", "ignoreCase": "key" }, "action": { "description": "Action", "ignoreCase": "all", "enum": [ "Build services", "Push services", "Run services", "Run a specific service", "Lock services", "Write service image digests", "Combine configuration", "Run a Docker Compose command" ] }, "additionalImageTags": { "type": "string", "description": "Additional Image Tags", "ignoreCase": "key" }, "includeSourceTags": { "type": "boolean", "description": "Include Source Tags", "ignoreCase": "key" }, "includeLatestTag": { "type": "boolean", "description": "Include Latest Tag", "ignoreCase": "key" }, "buildImages": { "type": "boolean", "description": "Build Images", "ignoreCase": "key" }, "serviceName": { "type": "string", "description": "Service Name", "ignoreCase": "key" }, "containerName": { "type": "string", "description": "Container Name", "ignoreCase": "key" }, "ports": { "type": "string", "description": "Ports", "ignoreCase": "key" }, "workingDirectory": { "type": "string", "description": "Working Directory", "ignoreCase": "key", "aliases": [ "workDir" ] }, "entrypoint": { "type": "string", "description": "Entry Point Override", "ignoreCase": "key" }, "containerCommand": { "type": "string", "description": "Command", "ignoreCase": "key" }, "detached": { "type": "boolean", "description": "Run in Background", "ignoreCase": "key" }, "abortOnContainerExit": { "type": "boolean", "description": "Abort on Container Exit", "ignoreCase": "key" }, "imageDigestComposeFile": { "type": "string", "description": "Image Digest Compose File", "ignoreCase": "key" }, "removeBuildOptions": { "type": "boolean", "description": "Remove Build Options", "ignoreCase": "key" }, "baseResolveDirectory": { "type": "string", "description": "Base Resolve Directory", "ignoreCase": "key" }, "outputDockerComposeFile": { "type": "string", "description": "Output Docker Compose File", "ignoreCase": "key" }, "dockerComposeCommand": { "type": "string", "description": "Command", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "dockerHostEndpoint": { "type": "string", "description": "Docker Host Service Connection", "ignoreCase": "key" }, "nopIfNoDockerComposeFile": { "type": "boolean", "description": "No-op if no Docker Compose File", "ignoreCase": "key" }, "requireAdditionalDockerComposeFiles": { "type": "boolean", "description": "Require Additional Docker Compose Files", "ignoreCase": "key" }, "currentWorkingDirectory": { "type": "string", "description": "Working Directory", "ignoreCase": "key", "aliases": [ "cwd" ] }, "dockerComposePath": { "type": "string", "description": "Docker Compose executable Path", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Azure Monitor alerts (Deprecated)\n\nConfigure alerts on available metrics for an Azure resource (Deprecated)", "ignoreCase": "value", "pattern": "^AzureMonitorAlerts@0$" }, "inputs": { "description": "Azure Monitor alerts (Deprecated) inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure Subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "ResourceGroupName": { "type": "string", "description": "Resource Group", "ignoreCase": "key" }, "ResourceType": { "description": "Resource Type", "ignoreCase": "all", "enum": [ "Microsoft.Insights/components", "Microsoft.Web/sites", "Microsoft.Storage/storageAccounts", "Microsoft.Compute/virtualMachines" ] }, "ResourceName": { "type": "string", "description": "Resource name", "ignoreCase": "key" }, "AlertRules": { "type": "string", "description": "Alert rules", "ignoreCase": "key" }, "NotifyServiceOwners": { "type": "boolean", "description": "Subscription owners, contributors and readers", "ignoreCase": "key" }, "NotifyEmails": { "type": "string", "description": "Additional administrator emails", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscription", "ResourceGroupName", "ResourceName", "AlertRules" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Xamarin Test Cloud\n\n[Deprecated] Test mobile apps with Xamarin Test Cloud using Xamarin.UITest. Instead, use the 'App Center test' task.", "ignoreCase": "value", "pattern": "^XamarinTestCloud@1$" }, "inputs": { "description": "Xamarin Test Cloud inputs", "properties": { "appFile": { "type": "string", "description": "App file", "ignoreCase": "key", "aliases": [ "app" ] }, "dsymFile": { "type": "string", "description": "dSYM file (iOS only)", "ignoreCase": "key", "aliases": [ "dsym" ] }, "teamApiKey": { "type": "string", "description": "Team API key", "ignoreCase": "key" }, "email": { "type": "string", "description": "User email", "ignoreCase": "key", "aliases": [ "user" ] }, "devices": { "type": "string", "description": "Devices", "ignoreCase": "key" }, "series": { "type": "string", "description": "Series", "ignoreCase": "key" }, "testAssemblyDirectory": { "type": "string", "description": "Test assembly directory", "ignoreCase": "key", "aliases": [ "testDir" ] }, "parallelizationOption": { "description": "Parallelization", "ignoreCase": "all", "enum": [ "none", "--fixture-chunk", "--test-chunk" ], "aliases": [ "parallelization" ] }, "localeOption": { "description": "System language", "ignoreCase": "all", "enum": [ "da_DK", "nl_NL", "en_GB", "en_US", "fr_FR", "de_DE", "ja_JP", "ru_RU", "es_MX", "es_ES", "user" ], "aliases": [ "locale" ] }, "userDefinedLocale": { "type": "string", "description": "Other locale", "ignoreCase": "key" }, "testCloudFile": { "type": "string", "description": "test-cloud.exe location", "ignoreCase": "key", "aliases": [ "testCloudLocation" ] }, "optionalArgs": { "type": "string", "description": "Optional arguments", "ignoreCase": "key" }, "publishNUnitResults": { "type": "boolean", "description": "Publish results to Azure Pipelines", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "appFile", "teamApiKey", "email", "devices", "testAssemblyDirectory" ] } }, "deprecationMessage": "XamarinTestCloud is deprecated - [Deprecated] Test mobile apps with Xamarin Test Cloud using Xamarin.UITest. Instead, use the 'App Center test' task.", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Service Fabric application deployment\n\nDeploy an Azure Service Fabric application to a cluster", "ignoreCase": "value", "pattern": "^ServiceFabricDeploy@1$" }, "inputs": { "description": "Service Fabric application deployment inputs", "properties": { "applicationPackagePath": { "type": "string", "description": "Application Package", "ignoreCase": "key" }, "serviceConnectionName": { "type": "string", "description": "Cluster Service Connection", "ignoreCase": "key" }, "publishProfilePath": { "type": "string", "description": "Publish Profile", "ignoreCase": "key" }, "applicationParameterPath": { "type": "string", "description": "Application Parameters", "ignoreCase": "key" }, "overrideApplicationParameter": { "type": "boolean", "description": "Override Application Parameters", "ignoreCase": "key" }, "compressPackage": { "type": "boolean", "description": "Compress Package", "ignoreCase": "key" }, "copyPackageTimeoutSec": { "type": "string", "description": "CopyPackageTimeoutSec", "ignoreCase": "key" }, "registerPackageTimeoutSec": { "type": "string", "description": "RegisterPackageTimeoutSec", "ignoreCase": "key" }, "overwriteBehavior": { "description": "Overwrite Behavior", "ignoreCase": "all", "enum": [ "Always", "Never", "SameAppTypeAndVersion" ] }, "skipUpgradeSameTypeAndVersion": { "type": "boolean", "description": "Skip upgrade for same Type and Version", "ignoreCase": "key" }, "skipPackageValidation": { "type": "boolean", "description": "Skip package validation", "ignoreCase": "key" }, "useDiffPackage": { "type": "boolean", "description": "Use Diff Package", "ignoreCase": "key" }, "overridePublishProfileSettings": { "type": "boolean", "description": "Override All Publish Profile Upgrade Settings", "ignoreCase": "key" }, "isUpgrade": { "type": "boolean", "description": "Upgrade the Application", "ignoreCase": "key" }, "unregisterUnusedVersions": { "type": "boolean", "description": "Unregister Unused Versions", "ignoreCase": "key" }, "upgradeMode": { "description": "Upgrade Mode", "ignoreCase": "all", "enum": [ "Monitored", "UnmonitoredAuto", "UnmonitoredManual" ] }, "FailureAction": { "description": "FailureAction", "ignoreCase": "all", "enum": [ "Rollback", "Manual" ] }, "UpgradeReplicaSetCheckTimeoutSec": { "type": "string", "description": "UpgradeReplicaSetCheckTimeoutSec", "ignoreCase": "key" }, "TimeoutSec": { "type": "string", "description": "TimeoutSec", "ignoreCase": "key" }, "ForceRestart": { "type": "boolean", "description": "ForceRestart", "ignoreCase": "key" }, "HealthCheckRetryTimeoutSec": { "type": "string", "description": "HealthCheckRetryTimeoutSec", "ignoreCase": "key" }, "HealthCheckWaitDurationSec": { "type": "string", "description": "HealthCheckWaitDurationSec", "ignoreCase": "key" }, "HealthCheckStableDurationSec": { "type": "string", "description": "HealthCheckStableDurationSec", "ignoreCase": "key" }, "UpgradeDomainTimeoutSec": { "type": "string", "description": "UpgradeDomainTimeoutSec", "ignoreCase": "key" }, "ConsiderWarningAsError": { "type": "boolean", "description": "ConsiderWarningAsError", "ignoreCase": "key" }, "DefaultServiceTypeHealthPolicy": { "type": "string", "description": "DefaultServiceTypeHealthPolicy", "ignoreCase": "key" }, "MaxPercentUnhealthyDeployedApplications": { "type": "string", "description": "MaxPercentUnhealthyDeployedApplications", "ignoreCase": "key" }, "UpgradeTimeoutSec": { "type": "string", "description": "UpgradeTimeoutSec", "ignoreCase": "key" }, "ServiceTypeHealthPolicyMap": { "type": "string", "description": "ServiceTypeHealthPolicyMap", "ignoreCase": "key" }, "configureDockerSettings": { "type": "boolean", "description": "Configure Docker settings", "ignoreCase": "key" }, "registryCredentials": { "description": "Registry Credentials Source", "ignoreCase": "all", "enum": [ "AzureResourceManagerEndpoint", "ContainerRegistryEndpoint", "UsernamePassword" ] }, "dockerRegistryConnection": { "type": "string", "description": "Docker Registry Service Connection", "ignoreCase": "key", "aliases": [ "dockerRegistryEndpoint" ] }, "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "azureSubscriptionEndpoint" ] }, "registryUserName": { "type": "string", "description": "Registry User Name", "ignoreCase": "key" }, "registryPassword": { "type": "string", "description": "Registry Password", "ignoreCase": "key" }, "passwordEncrypted": { "type": "boolean", "description": "Password Encrypted", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "applicationPackagePath", "serviceConnectionName" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Xcode\n\nBuild, test, or archive an Xcode workspace on macOS. Optionally package an app.", "ignoreCase": "value", "pattern": "^Xcode@5$" }, "inputs": { "description": "Xcode inputs", "properties": { "actions": { "type": "string", "description": "Actions", "ignoreCase": "key" }, "configuration": { "type": "string", "description": "Configuration", "ignoreCase": "key" }, "sdk": { "type": "string", "description": "SDK", "ignoreCase": "key" }, "xcWorkspacePath": { "type": "string", "description": "Workspace or project path", "ignoreCase": "key" }, "scheme": { "type": "string", "description": "Scheme", "ignoreCase": "key" }, "xcodeVersion": { "description": "Xcode version", "ignoreCase": "all", "enum": [ "8", "9", "10", "11", "12", "13", "default", "specifyPath" ] }, "xcodeDeveloperDir": { "type": "string", "description": "Xcode developer path", "ignoreCase": "key" }, "packageApp": { "type": "boolean", "description": "Create app package", "ignoreCase": "key" }, "archivePath": { "type": "string", "description": "Archive path", "ignoreCase": "key" }, "exportPath": { "type": "string", "description": "Export path", "ignoreCase": "key" }, "exportOptions": { "description": "Export options", "ignoreCase": "all", "enum": [ "auto", "plist", "specify" ] }, "exportMethod": { "type": "string", "description": "Export method", "ignoreCase": "key" }, "exportTeamId": { "type": "string", "description": "Team ID", "ignoreCase": "key" }, "exportOptionsPlist": { "type": "string", "description": "Export options plist", "ignoreCase": "key" }, "exportArgs": { "type": "string", "description": "Export arguments", "ignoreCase": "key" }, "signingOption": { "description": "Signing style", "ignoreCase": "all", "enum": [ "nosign", "default", "manual", "auto" ] }, "signingIdentity": { "type": "string", "description": "Signing identity", "ignoreCase": "key" }, "provisioningProfileUuid": { "type": "string", "description": "Provisioning profile UUID", "ignoreCase": "key" }, "provisioningProfileName": { "type": "string", "description": "Provisioning profile name", "ignoreCase": "key" }, "teamId": { "type": "string", "description": "Team ID", "ignoreCase": "key" }, "destinationPlatformOption": { "description": "Destination platform", "ignoreCase": "all", "enum": [ "default", "iOS", "tvOS", "macOS", "custom" ] }, "destinationPlatform": { "type": "string", "description": "Custom destination platform", "ignoreCase": "key" }, "destinationTypeOption": { "description": "Destination type", "ignoreCase": "all", "enum": [ "simulators", "devices" ] }, "destinationSimulators": { "type": "string", "description": "Simulator", "ignoreCase": "key" }, "destinationDevices": { "type": "string", "description": "Device", "ignoreCase": "key" }, "args": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "workingDirectory": { "type": "string", "description": "Working directory", "ignoreCase": "key", "aliases": [ "cwd" ] }, "useXcpretty": { "type": "boolean", "description": "Use xcpretty", "ignoreCase": "key" }, "xcprettyArgs": { "type": "string", "description": "Xcpretty arguments", "ignoreCase": "key" }, "publishJUnitResults": { "type": "boolean", "description": "Publish test results to Azure Pipelines", "ignoreCase": "key" }, "testRunTitle": { "type": "string", "description": "Test run title", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Xcode Build\n\nBuild an Xcode workspace on macOS", "ignoreCase": "value", "pattern": "^Xcode@3$" }, "inputs": { "description": "Xcode Build inputs", "properties": { "actions": { "type": "string", "description": "Actions", "ignoreCase": "key" }, "configuration": { "type": "string", "description": "Configuration", "ignoreCase": "key" }, "sdk": { "type": "string", "description": "SDK", "ignoreCase": "key" }, "xcWorkspacePath": { "type": "string", "description": "Workspace/Project Path", "ignoreCase": "key" }, "scheme": { "type": "string", "description": "Scheme", "ignoreCase": "key" }, "packageApp": { "type": "boolean", "description": "Create App Package", "ignoreCase": "key" }, "archivePath": { "type": "string", "description": "Archive Path", "ignoreCase": "key" }, "exportPath": { "type": "string", "description": "Export Path", "ignoreCase": "key" }, "exportOptions": { "description": "Export Options", "ignoreCase": "all", "enum": [ "auto", "plist", "specify" ] }, "exportMethod": { "type": "string", "description": "Export Method", "ignoreCase": "key" }, "exportTeamId": { "type": "string", "description": "Team ID", "ignoreCase": "key" }, "exportOptionsPlist": { "type": "string", "description": "Export Options Plist", "ignoreCase": "key" }, "exportArgs": { "type": "string", "description": "Export Arguments", "ignoreCase": "key" }, "xcode8AutomaticSigning": { "type": "boolean", "description": "Automatic Signing", "ignoreCase": "key" }, "teamId": { "type": "string", "description": "Team ID", "ignoreCase": "key" }, "signMethod": { "description": "Override Using", "ignoreCase": "all", "enum": [ "file", "id" ] }, "iosSigningIdentity": { "type": "string", "description": "Signing Identity", "ignoreCase": "key" }, "unlockDefaultKeychain": { "type": "boolean", "description": "Unlock Default Keychain", "ignoreCase": "key" }, "defaultKeychainPassword": { "type": "string", "description": "Default Keychain Password", "ignoreCase": "key" }, "provProfileUuid": { "type": "string", "description": "Provisioning Profile UUID", "ignoreCase": "key" }, "p12": { "type": "string", "description": "P12 Certificate File", "ignoreCase": "key" }, "p12pwd": { "type": "string", "description": "P12 Password", "ignoreCase": "key" }, "provProfile": { "type": "string", "description": "Provisioning Profile File", "ignoreCase": "key" }, "removeProfile": { "type": "boolean", "description": "Remove Profile After Build", "ignoreCase": "key" }, "args": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "cwd": { "type": "string", "description": "Working Directory", "ignoreCase": "key" }, "outputPattern": { "type": "string", "description": "Output Directory", "ignoreCase": "key" }, "xcodeDeveloperDir": { "type": "string", "description": "Xcode Developer Path", "ignoreCase": "key" }, "useXcpretty": { "type": "boolean", "description": "Use xcpretty", "ignoreCase": "key" }, "publishJUnitResults": { "type": "boolean", "description": "Publish to VSTS/TFS", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Xcode\n\nBuild, test, or archive an Xcode workspace on macOS. Optionally package an app.", "ignoreCase": "value", "pattern": "^Xcode@4$" }, "inputs": { "description": "Xcode inputs", "properties": { "actions": { "type": "string", "description": "Actions", "ignoreCase": "key" }, "configuration": { "type": "string", "description": "Configuration", "ignoreCase": "key" }, "sdk": { "type": "string", "description": "SDK", "ignoreCase": "key" }, "xcWorkspacePath": { "type": "string", "description": "Workspace or project path", "ignoreCase": "key" }, "scheme": { "type": "string", "description": "Scheme", "ignoreCase": "key" }, "xcodeVersion": { "description": "Xcode version", "ignoreCase": "all", "enum": [ "8", "9", "default", "specifyPath" ] }, "xcodeDeveloperDir": { "type": "string", "description": "Xcode developer path", "ignoreCase": "key" }, "packageApp": { "type": "boolean", "description": "Create app package", "ignoreCase": "key" }, "archivePath": { "type": "string", "description": "Archive path", "ignoreCase": "key" }, "exportPath": { "type": "string", "description": "Export path", "ignoreCase": "key" }, "exportOptions": { "description": "Export options", "ignoreCase": "all", "enum": [ "auto", "plist", "specify" ] }, "exportMethod": { "type": "string", "description": "Export method", "ignoreCase": "key" }, "exportTeamId": { "type": "string", "description": "Team ID", "ignoreCase": "key" }, "exportOptionsPlist": { "type": "string", "description": "Export options plist", "ignoreCase": "key" }, "exportArgs": { "type": "string", "description": "Export arguments", "ignoreCase": "key" }, "signingOption": { "description": "Signing style", "ignoreCase": "all", "enum": [ "nosign", "default", "manual", "auto" ] }, "signingIdentity": { "type": "string", "description": "Signing identity", "ignoreCase": "key" }, "provisioningProfileUuid": { "type": "string", "description": "Provisioning profile UUID", "ignoreCase": "key" }, "teamId": { "type": "string", "description": "Team ID", "ignoreCase": "key" }, "destinationPlatformOption": { "description": "Destination platform", "ignoreCase": "all", "enum": [ "default", "iOS", "tvOS", "macOS", "custom" ] }, "destinationPlatform": { "type": "string", "description": "Custom destination platform", "ignoreCase": "key" }, "destinationTypeOption": { "description": "Destination type", "ignoreCase": "all", "enum": [ "simulators", "devices" ] }, "destinationSimulators": { "type": "string", "description": "Simulator", "ignoreCase": "key" }, "destinationDevices": { "type": "string", "description": "Device", "ignoreCase": "key" }, "args": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "workingDirectory": { "type": "string", "description": "Working directory", "ignoreCase": "key", "aliases": [ "cwd" ] }, "outputPattern": { "type": "string", "description": "Output directory", "ignoreCase": "key" }, "useXcpretty": { "type": "boolean", "description": "Use xcpretty", "ignoreCase": "key" }, "publishJUnitResults": { "type": "boolean", "description": "Publish test results to VSTS/TFS", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Xcode Build\n\nBuild an Xcode workspace on Mac OS", "ignoreCase": "value", "pattern": "^Xcode@2$" }, "inputs": { "description": "Xcode Build inputs", "properties": { "actions": { "type": "string", "description": "Actions", "ignoreCase": "key" }, "configuration": { "type": "string", "description": "Configuration", "ignoreCase": "key" }, "sdk": { "type": "string", "description": "SDK", "ignoreCase": "key" }, "xcWorkspacePath": { "type": "string", "description": "Workspace/Project Path", "ignoreCase": "key" }, "scheme": { "type": "string", "description": "Scheme", "ignoreCase": "key" }, "packageApp": { "type": "boolean", "description": "Create App Package", "ignoreCase": "key" }, "packageTool": { "description": "Create Package (IPA) using", "ignoreCase": "all", "enum": [ "xcrun", "xcodebuild" ] }, "archivePath": { "type": "string", "description": "Archive Path", "ignoreCase": "key" }, "exportPath": { "type": "string", "description": "Export Path", "ignoreCase": "key" }, "exportOptions": { "description": "Export Options", "ignoreCase": "all", "enum": [ "auto", "plist", "specify" ] }, "exportMethod": { "type": "string", "description": "Export Method", "ignoreCase": "key" }, "exportTeamId": { "type": "string", "description": "Team ID", "ignoreCase": "key" }, "exportOptionsPlist": { "type": "string", "description": "Export Options Plist", "ignoreCase": "key" }, "xcode8AutomaticSigning": { "type": "boolean", "description": "Automatic Signing", "ignoreCase": "key" }, "teamId": { "type": "string", "description": "Team ID", "ignoreCase": "key" }, "signMethod": { "description": "Override Using", "ignoreCase": "all", "enum": [ "file", "id" ] }, "iosSigningIdentity": { "type": "string", "description": "Signing Identity", "ignoreCase": "key" }, "unlockDefaultKeychain": { "type": "boolean", "description": "Unlock Default Keychain", "ignoreCase": "key" }, "defaultKeychainPassword": { "type": "string", "description": "Default Keychain Password", "ignoreCase": "key" }, "provProfileUuid": { "type": "string", "description": "Provisioning Profile UUID", "ignoreCase": "key" }, "p12": { "type": "string", "description": "P12 Certificate File", "ignoreCase": "key" }, "p12pwd": { "type": "string", "description": "P12 Password", "ignoreCase": "key" }, "provProfile": { "type": "string", "description": "Provisioning Profile File", "ignoreCase": "key" }, "removeProfile": { "type": "boolean", "description": "Remove Profile After Build", "ignoreCase": "key" }, "args": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "cwd": { "type": "string", "description": "Working Directory", "ignoreCase": "key" }, "outputPattern": { "type": "string", "description": "Output Directory", "ignoreCase": "key" }, "xcodeDeveloperDir": { "type": "string", "description": "Xcode Developer Path", "ignoreCase": "key" }, "useXcpretty": { "type": "boolean", "description": "Use xcpretty", "ignoreCase": "key" }, "publishJUnitResults": { "type": "boolean", "description": "Publish to VSTS/TFS", "ignoreCase": "key" }, "useXctool": { "type": "boolean", "description": "Use xctool", "ignoreCase": "key" }, "xctoolReporter": { "type": "string", "description": "xctool Test Reporter Format", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "NuGet publisher\n\nDeprecated: use the “NuGet” task instead. It works with the new Tool Installer framework so you can easily use new versions of NuGet without waiting for a task update, provides better support for authenticated feeds outside this organization/collection, and uses NuGet 4 by default.", "ignoreCase": "value", "pattern": "^NuGetPublisher@0$" }, "inputs": { "description": "NuGet publisher inputs", "properties": { "searchPattern": { "type": "string", "description": "Path/Pattern to nupkg", "ignoreCase": "key" }, "nuGetFeedType": { "description": "Feed type", "ignoreCase": "all", "enum": [ "external", "internal" ] }, "connectedServiceName": { "type": "string", "description": "NuGet Service Connection", "ignoreCase": "key" }, "feedName": { "type": "string", "description": "Internal Feed URL", "ignoreCase": "key" }, "nuGetAdditionalArgs": { "type": "string", "description": "NuGet Arguments", "ignoreCase": "key" }, "verbosity": { "description": "Verbosity", "ignoreCase": "all", "enum": [ "-", "Quiet", "Normal", "Detailed" ] }, "nuGetVersion": { "description": "NuGet Version", "ignoreCase": "all", "enum": [ "3.3.0", "3.5.0.1829", "4.0.0.2283", "custom" ] }, "nuGetPath": { "type": "string", "description": "Path to NuGet.exe", "ignoreCase": "key" }, "continueOnEmptyNupkgMatch": { "type": "boolean", "description": "Continue if no packages match the \"Path/Pattern to nupkg\"", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "NuGetPublisher is deprecated - Deprecated: use the “NuGet” task instead. It works with the new Tool Installer framework so you can easily use new versions of NuGet without waiting for a task update, provides better support for authenticated feeds outside this organization/collection, and uses NuGet 4 by default.", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Query work items\n\nExecute a work item query and check the number of items returned", "ignoreCase": "value", "pattern": "^queryWorkItems@0$" }, "inputs": { "description": "Query work items inputs", "properties": { "queryId": { "type": "string", "description": "Query", "ignoreCase": "key" }, "maxThreshold": { "type": "string", "description": "Upper threshold", "ignoreCase": "key" }, "minThreshold": { "type": "string", "description": "Lower threshold", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "queryId" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure Web App for Containers\n\nDeploy containers to Azure App Service", "ignoreCase": "value", "pattern": "^AzureWebAppContainer@1$" }, "inputs": { "description": "Azure Web App for Containers inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key" }, "appName": { "type": "string", "description": "App name", "ignoreCase": "key" }, "deployToSlotOrASE": { "type": "boolean", "description": "Deploy to Slot or App Service Environment", "ignoreCase": "key" }, "resourceGroupName": { "type": "string", "description": "Resource group", "ignoreCase": "key" }, "slotName": { "type": "string", "description": "Slot", "ignoreCase": "key" }, "containers": { "type": "string", "description": "Image name", "ignoreCase": "key", "aliases": [ "imageName" ] }, "multicontainerConfigFile": { "type": "string", "description": "Configuration File", "ignoreCase": "key" }, "containerCommand": { "type": "string", "description": "Startup command ", "ignoreCase": "key" }, "appSettings": { "type": "string", "description": "App settings", "ignoreCase": "key" }, "configurationStrings": { "type": "string", "description": "Configuration settings", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscription", "appName" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "SQL Server database deploy\n\nDeploy a SQL Server database using DACPAC or SQL scripts", "ignoreCase": "value", "pattern": "^SqlDacpacDeploymentOnMachineGroup@0$" }, "inputs": { "description": "SQL Server database deploy inputs", "properties": { "TaskType": { "description": "Deploy SQL Using", "ignoreCase": "all", "enum": [ "dacpac", "sqlQuery", "sqlInline" ] }, "DacpacFile": { "type": "string", "description": "DACPAC File", "ignoreCase": "key" }, "SqlFile": { "type": "string", "description": "Sql File", "ignoreCase": "key" }, "ExecuteInTransaction": { "type": "boolean", "description": "Execute within a transaction", "ignoreCase": "key" }, "ExclusiveLock": { "type": "boolean", "description": "Acquire an exclusive app lock while executing script(s)", "ignoreCase": "key" }, "AppLockName": { "type": "string", "description": "App lock name", "ignoreCase": "key" }, "InlineSql": { "type": "string", "description": "Inline Sql", "ignoreCase": "key" }, "TargetMethod": { "description": "Specify SQL Using", "ignoreCase": "all", "enum": [ "server", "connectionString", "publishProfile" ] }, "ServerName": { "type": "string", "description": "Server Name", "ignoreCase": "key" }, "DatabaseName": { "type": "string", "description": "Database Name", "ignoreCase": "key" }, "AuthScheme": { "description": "Authentication", "ignoreCase": "all", "enum": [ "windowsAuthentication", "sqlServerAuthentication" ] }, "SqlUsername": { "type": "string", "description": "SQL User name", "ignoreCase": "key" }, "SqlPassword": { "type": "string", "description": "SQL Password", "ignoreCase": "key" }, "ConnectionString": { "type": "string", "description": "Connection String", "ignoreCase": "key" }, "PublishProfile": { "type": "string", "description": "Publish Profile", "ignoreCase": "key" }, "AdditionalArguments": { "type": "string", "description": "Additional Arguments", "ignoreCase": "key" }, "AdditionalArgumentsSql": { "type": "string", "description": "Additional Arguments", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Cache (Beta)\n\nCache files between runs", "ignoreCase": "value", "pattern": "^CacheBeta@1$" }, "inputs": { "description": "Cache (Beta) inputs", "properties": { "key": { "type": "string", "description": "Key", "ignoreCase": "key" }, "path": { "type": "string", "description": "Path", "ignoreCase": "key" }, "cacheHitVar": { "type": "string", "description": "Cache hit variable", "ignoreCase": "key" }, "restoreKeys": { "type": "string", "description": "Additional restore key prefixes", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "key", "path" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Cache (Beta)\n\nCache files between runs", "ignoreCase": "value", "pattern": "^CacheBeta@0$" }, "inputs": { "description": "Cache (Beta) inputs", "properties": { "key": { "type": "string", "description": "Key", "ignoreCase": "key" }, "path": { "type": "string", "description": "Path", "ignoreCase": "key" }, "cacheHitVar": { "type": "string", "description": "Cache hit variable", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "key", "path" ] } }, "deprecationMessage": "CacheBeta is deprecated - Cache files between runs", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Cache\n\nCache files between runs", "ignoreCase": "value", "pattern": "^Cache@2$" }, "inputs": { "description": "Cache inputs", "properties": { "key": { "type": "string", "description": "Key", "ignoreCase": "key" }, "path": { "type": "string", "description": "Path", "ignoreCase": "key" }, "cacheHitVar": { "type": "string", "description": "Cache hit variable", "ignoreCase": "key" }, "restoreKeys": { "type": "string", "description": "Additional restore key prefixes", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "key", "path" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "CMake\n\nBuild with the CMake cross-platform build system", "ignoreCase": "value", "pattern": "^CMake@1$" }, "inputs": { "description": "CMake inputs", "properties": { "workingDirectory": { "type": "string", "description": "Working Directory", "ignoreCase": "key", "aliases": [ "cwd" ] }, "cmakeArgs": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "runInsideShell": { "type": "boolean", "description": "Run cmake command inside shell", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Mobile Center Test\n\nTest mobile app packages with Visual Studio Mobile Center.", "ignoreCase": "value", "pattern": "^VSMobileCenterTest@0$" }, "inputs": { "description": "Mobile Center Test inputs", "properties": { "app": { "type": "string", "description": "Binary Application File Path", "ignoreCase": "key" }, "artifactsDir": { "type": "string", "description": "Artifacts Directory", "ignoreCase": "key" }, "enablePrepare": { "type": "boolean", "description": "Prepare Tests", "ignoreCase": "key" }, "framework": { "description": "Test Framework", "ignoreCase": "all", "enum": [ "appium", "espresso", "calabash", "uitest", "xcuitest" ] }, "appiumBuildDir": { "type": "string", "description": "Build Directory", "ignoreCase": "key" }, "espressoBuildDir": { "type": "string", "description": "Build Directory", "ignoreCase": "key" }, "espressoTestApkPath": { "type": "string", "description": "Test APK Path", "ignoreCase": "key" }, "calabashProjectDir": { "type": "string", "description": "Project Directory", "ignoreCase": "key" }, "calabashConfigFile": { "type": "string", "description": "Cucumber Config File", "ignoreCase": "key" }, "calabashProfile": { "type": "string", "description": "Profile to run", "ignoreCase": "key" }, "calabashSkipConfigCheck": { "type": "boolean", "description": "Skip Configuration Check", "ignoreCase": "key" }, "uitestBuildDir": { "type": "string", "description": "Build Directory", "ignoreCase": "key" }, "uitestStoreFile": { "type": "string", "description": "Store File", "ignoreCase": "key" }, "uitestStorePass": { "type": "string", "description": "Store Password", "ignoreCase": "key" }, "uitestKeyAlias": { "type": "string", "description": "Key Alias", "ignoreCase": "key" }, "uitestKeyPass": { "type": "string", "description": "Key Password", "ignoreCase": "key" }, "uitestToolsDir": { "type": "string", "description": "Test Tools Directory", "ignoreCase": "key" }, "signInfo": { "type": "string", "description": "Signing Information", "ignoreCase": "key" }, "xcuitestBuildDir": { "type": "string", "description": "Build Directory", "ignoreCase": "key" }, "xcuitestTestIpaPath": { "type": "string", "description": "Test IPA Path", "ignoreCase": "key" }, "prepareOpts": { "type": "string", "description": "Additional Options", "ignoreCase": "key" }, "enableRun": { "type": "boolean", "description": "Run Tests", "ignoreCase": "key" }, "credsType": { "description": "Authentication Method", "ignoreCase": "all", "enum": [ "serviceEndpoint", "inputs" ] }, "serverEndpoint": { "type": "string", "description": "Mobile Center Connection", "ignoreCase": "key" }, "username": { "type": "string", "description": "Mobile Center Username", "ignoreCase": "key" }, "password": { "type": "string", "description": "Mobile Center Password", "ignoreCase": "key" }, "appSlug": { "type": "string", "description": "App Slug", "ignoreCase": "key" }, "devices": { "type": "string", "description": "Devices", "ignoreCase": "key" }, "series": { "type": "string", "description": "Test Series", "ignoreCase": "key" }, "dsymDir": { "type": "string", "description": "dSYM Directory", "ignoreCase": "key" }, "locale": { "description": "System Language", "ignoreCase": "all", "enum": [ "da_DK", "nl_NL", "en_GB", "en_US", "fr_FR", "de_DE", "ja_JP", "ru_RU", "es_MX", "es_ES", "user" ] }, "userDefinedLocale": { "type": "string", "description": "Other Locale", "ignoreCase": "key" }, "loginOpts": { "type": "string", "description": "Addtional Options for Login", "ignoreCase": "key" }, "runOpts": { "type": "string", "description": "Additional Options for Run", "ignoreCase": "key" }, "async": { "type": "boolean", "description": "Do not wait for test result", "ignoreCase": "key" }, "cliLocationOverride": { "type": "string", "description": "mobile-center CLI Location", "ignoreCase": "key" }, "debug": { "type": "boolean", "description": "Enable Debug Output", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "app" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "App Center test\n\nTest app packages with Visual Studio App Center", "ignoreCase": "value", "pattern": "^AppCenterTest@1$" }, "inputs": { "description": "App Center test inputs", "properties": { "appFile": { "type": "string", "description": "Binary application file path", "ignoreCase": "key", "aliases": [ "app" ] }, "artifactsDirectory": { "type": "string", "description": "Artifacts directory", "ignoreCase": "key", "aliases": [ "artifactsDir" ] }, "prepareTests": { "type": "boolean", "description": "Prepare tests", "ignoreCase": "key", "aliases": [ "enablePrepare" ] }, "frameworkOption": { "description": "Test framework", "ignoreCase": "all", "enum": [ "appium", "espresso", "calabash", "uitest", "xcuitest" ], "aliases": [ "framework" ] }, "appiumBuildDirectory": { "type": "string", "description": "Build directory", "ignoreCase": "key", "aliases": [ "appiumBuildDir" ] }, "espressoBuildDirectory": { "type": "string", "description": "Build directory", "ignoreCase": "key", "aliases": [ "espressoBuildDir" ] }, "espressoTestApkFile": { "type": "string", "description": "Test APK path", "ignoreCase": "key", "aliases": [ "espressoTestApkPath" ] }, "calabashProjectDirectory": { "type": "string", "description": "Project directory", "ignoreCase": "key", "aliases": [ "calabashProjectDir" ] }, "calabashConfigFile": { "type": "string", "description": "Cucumber config file", "ignoreCase": "key" }, "calabashProfile": { "type": "string", "description": "Profile to run", "ignoreCase": "key" }, "calabashSkipConfigCheck": { "type": "boolean", "description": "Skip Configuration Check", "ignoreCase": "key" }, "uiTestBuildDirectory": { "type": "string", "description": "Build directory", "ignoreCase": "key", "aliases": [ "uitestBuildDir" ] }, "uitestStorePath": { "type": "string", "description": "Store file", "ignoreCase": "key" }, "uiTestStorePassword": { "type": "string", "description": "Store password", "ignoreCase": "key", "aliases": [ "uitestStorePass" ] }, "uitestKeyAlias": { "type": "string", "description": "Key alias", "ignoreCase": "key" }, "uiTestKeyPassword": { "type": "string", "description": "Key password", "ignoreCase": "key", "aliases": [ "uitestKeyPass" ] }, "uiTestToolsDirectory": { "type": "string", "description": "Test tools directory", "ignoreCase": "key", "aliases": [ "uitestToolsDir" ] }, "signInfo": { "type": "string", "description": "Signing information", "ignoreCase": "key" }, "xcUITestBuildDirectory": { "type": "string", "description": "Build directory", "ignoreCase": "key", "aliases": [ "xcuitestBuildDir" ] }, "xcUITestIpaFile": { "type": "string", "description": "Test IPA path", "ignoreCase": "key", "aliases": [ "xcuitestTestIpaPath" ] }, "prepareOptions": { "type": "string", "description": "Additional options", "ignoreCase": "key", "aliases": [ "prepareOpts" ] }, "runTests": { "type": "boolean", "description": "Run tests", "ignoreCase": "key", "aliases": [ "enableRun" ] }, "credentialsOption": { "description": "Authentication method", "ignoreCase": "all", "enum": [ "serviceEndpoint", "inputs" ], "aliases": [ "credsType" ] }, "serverEndpoint": { "type": "string", "description": "App Center service connection", "ignoreCase": "key" }, "username": { "type": "string", "description": "App Center username", "ignoreCase": "key" }, "password": { "type": "string", "description": "App Center password", "ignoreCase": "key" }, "appSlug": { "type": "string", "description": "App slug", "ignoreCase": "key" }, "devices": { "type": "string", "description": "Devices", "ignoreCase": "key" }, "series": { "type": "string", "description": "Test series", "ignoreCase": "key" }, "dsymDirectory": { "type": "string", "description": "dSYM directory", "ignoreCase": "key", "aliases": [ "dsymDir" ] }, "localeOption": { "description": "System language", "ignoreCase": "all", "enum": [ "da_DK", "nl_NL", "en_GB", "en_US", "fr_FR", "de_DE", "ja_JP", "ru_RU", "es_MX", "es_ES", "user" ], "aliases": [ "locale" ] }, "userDefinedLocale": { "type": "string", "description": "Other locale", "ignoreCase": "key" }, "loginOptions": { "type": "string", "description": "Additional options for login", "ignoreCase": "key", "aliases": [ "loginOpts" ] }, "runOptions": { "type": "string", "description": "Additional options for run", "ignoreCase": "key", "aliases": [ "runOpts" ] }, "skipWaitingForResults": { "type": "boolean", "description": "Do not wait for test result", "ignoreCase": "key", "aliases": [ "async" ] }, "cliFile": { "type": "string", "description": "App Center CLI location", "ignoreCase": "key", "aliases": [ "cliLocationOverride" ] }, "showDebugOutput": { "type": "boolean", "description": "Enable debug output", "ignoreCase": "key", "aliases": [ "debug" ] } }, "additionalProperties": false, "required": [ "appFile" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Download secure file\n\nDownload a secure file to the agent machine", "ignoreCase": "value", "pattern": "^DownloadSecureFile@1$" }, "inputs": { "description": "Download secure file inputs", "properties": { "secureFile": { "type": "string", "description": "Secure File", "ignoreCase": "key" }, "retryCount": { "type": "string", "description": "Retry Count", "ignoreCase": "key" }, "socketTimeout": { "type": "string", "description": "Socket Timeout", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "secureFile" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure Container Apps Deploy\n\nAn Azure DevOps Task to build and deploy Azure Container Apps.", "ignoreCase": "value", "pattern": "^AzureContainerApps@0$" }, "inputs": { "description": "Azure Container Apps Deploy inputs", "properties": { "workingDirectory": { "type": "string", "description": "Working Directory", "ignoreCase": "key", "aliases": [ "cwd" ] }, "appSourcePath": { "type": "string", "description": "Application source path", "ignoreCase": "key" }, "azureSubscription": { "type": "string", "description": "Azure Resource Manager connection", "ignoreCase": "key", "aliases": [ "connectedServiceNameARM" ] }, "acrName": { "type": "string", "description": "Azure Container Registry name", "ignoreCase": "key" }, "acrUsername": { "type": "string", "description": "Azure Container Registry username", "ignoreCase": "key" }, "acrPassword": { "type": "string", "description": "Azure Container Registry password", "ignoreCase": "key" }, "dockerfilePath": { "type": "string", "description": "Dockerfile path", "ignoreCase": "key" }, "imageToBuild": { "type": "string", "description": "Docker image to build", "ignoreCase": "key" }, "imageToDeploy": { "type": "string", "description": "Docker image to deploy", "ignoreCase": "key" }, "containerAppName": { "type": "string", "description": "Azure Container App name", "ignoreCase": "key" }, "resourceGroup": { "type": "string", "description": "Azure resource group name", "ignoreCase": "key" }, "containerAppEnvironment": { "type": "string", "description": "Azure Container App environment", "ignoreCase": "key" }, "runtimeStack": { "type": "string", "description": "Application runtime stack", "ignoreCase": "key" }, "targetPort": { "type": "string", "description": "Application target port", "ignoreCase": "key" }, "location": { "type": "string", "description": "Location of the Container App", "ignoreCase": "key" }, "environmentVariables": { "type": "string", "description": "Environment variables", "ignoreCase": "key" }, "ingress": { "type": "string", "description": "Ingress setting", "ignoreCase": "key" }, "yamlConfigPath": { "type": "string", "description": "YAML configuration file path", "ignoreCase": "key" }, "disableTelemetry": { "type": "boolean", "description": "Disable telemetry", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscription" ] } }, "deprecationMessage": "AzureContainerApps is deprecated - An Azure DevOps Task to build and deploy Azure Container Apps.", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure Container Apps Deploy\n\nAn Azure DevOps Task to build and deploy Azure Container Apps.", "ignoreCase": "value", "pattern": "^AzureContainerApps@1$" }, "inputs": { "description": "Azure Container Apps Deploy inputs", "properties": { "workingDirectory": { "type": "string", "description": "Working Directory", "ignoreCase": "key", "aliases": [ "cwd" ] }, "appSourcePath": { "type": "string", "description": "Application source path", "ignoreCase": "key" }, "azureSubscription": { "type": "string", "description": "Azure Resource Manager connection", "ignoreCase": "key", "aliases": [ "connectedServiceNameARM" ] }, "acrName": { "type": "string", "description": "Azure Container Registry name", "ignoreCase": "key" }, "acrUsername": { "type": "string", "description": "Azure Container Registry username", "ignoreCase": "key" }, "acrPassword": { "type": "string", "description": "Azure Container Registry password", "ignoreCase": "key" }, "dockerfilePath": { "type": "string", "description": "Dockerfile path", "ignoreCase": "key" }, "imageToBuild": { "type": "string", "description": "Docker image to build", "ignoreCase": "key" }, "imageToDeploy": { "type": "string", "description": "Docker image to deploy", "ignoreCase": "key" }, "containerAppName": { "type": "string", "description": "Azure Container App name", "ignoreCase": "key" }, "resourceGroup": { "type": "string", "description": "Azure resource group name", "ignoreCase": "key" }, "containerAppEnvironment": { "type": "string", "description": "Azure Container App environment", "ignoreCase": "key" }, "runtimeStack": { "type": "string", "description": "Application runtime stack", "ignoreCase": "key" }, "targetPort": { "type": "string", "description": "Application target port", "ignoreCase": "key" }, "location": { "type": "string", "description": "Location of the Container App", "ignoreCase": "key" }, "environmentVariables": { "type": "string", "description": "Environment variables", "ignoreCase": "key" }, "ingress": { "type": "string", "description": "Ingress setting", "ignoreCase": "key" }, "yamlConfigPath": { "type": "string", "description": "YAML configuration file path", "ignoreCase": "key" }, "disableTelemetry": { "type": "boolean", "description": "Disable telemetry", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscription" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Use Ruby version\n\nUse the specified version of Ruby from the tool cache, optionally adding it to the PATH", "ignoreCase": "value", "pattern": "^UseRubyVersion@0$" }, "inputs": { "description": "Use Ruby version inputs", "properties": { "versionSpec": { "type": "string", "description": "Version spec", "ignoreCase": "key" }, "addToPath": { "type": "boolean", "description": "Add to PATH", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Grunt\n\nRun the Grunt JavaScript task runner", "ignoreCase": "value", "pattern": "^Grunt@0$" }, "inputs": { "description": "Grunt inputs", "properties": { "gruntFile": { "type": "string", "description": "Grunt File Path", "ignoreCase": "key" }, "targets": { "type": "string", "description": "Grunt Task(s)", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "workingDirectory": { "type": "string", "description": "Working Directory", "ignoreCase": "key", "aliases": [ "cwd" ] }, "gruntCli": { "type": "string", "description": "grunt-cli location", "ignoreCase": "key" }, "publishJUnitResults": { "type": "boolean", "description": "Publish to Azure Pipelines", "ignoreCase": "key" }, "testResultsFiles": { "type": "string", "description": "Test Results Files", "ignoreCase": "key" }, "testRunTitle": { "type": "string", "description": "Test Run Title", "ignoreCase": "key" }, "enableCodeCoverage": { "type": "boolean", "description": "Enable Code Coverage", "ignoreCase": "key" }, "testFramework": { "description": "Test Framework", "ignoreCase": "all", "enum": [ "Mocha", "Jasmine" ] }, "srcFiles": { "type": "string", "description": "Source Files", "ignoreCase": "key" }, "testFiles": { "type": "string", "description": "Test Script Files", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Azure SQL Database deployment\n\nDeploy an Azure SQL Database using DACPAC or run scripts using SQLCMD", "ignoreCase": "value", "pattern": "^SqlAzureDacpacDeployment@1$" }, "inputs": { "description": "Azure SQL Database deployment inputs", "properties": { "azureConnectionType": { "description": "Azure Service Connection Type", "ignoreCase": "all", "enum": [ "ConnectedServiceName", "ConnectedServiceNameARM" ], "aliases": [ "ConnectedServiceNameSelector" ] }, "azureClassicSubscription": { "type": "string", "description": "Azure Classic Subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "azureSubscription": { "type": "string", "description": "Azure Subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceNameARM" ] }, "AuthenticationType": { "description": "Authentication Type", "ignoreCase": "all", "enum": [ "server", "aadAuthenticationPassword", "aadAuthenticationIntegrated", "connectionString", "servicePrincipal" ] }, "ServerName": { "type": "string", "description": "Azure SQL Server", "ignoreCase": "key" }, "DatabaseName": { "type": "string", "description": "Database", "ignoreCase": "key" }, "SqlUsername": { "type": "string", "description": "Login", "ignoreCase": "key" }, "SqlPassword": { "type": "string", "description": "Password", "ignoreCase": "key" }, "aadSqlUsername": { "type": "string", "description": "Login", "ignoreCase": "key" }, "aadSqlPassword": { "type": "string", "description": "Password", "ignoreCase": "key" }, "ConnectionString": { "type": "string", "description": "Connection String", "ignoreCase": "key" }, "deployType": { "description": "Deploy type", "ignoreCase": "all", "enum": [ "DacpacTask", "SqlTask", "InlineSqlTask" ], "aliases": [ "TaskNameSelector" ] }, "DeploymentAction": { "description": "Action", "ignoreCase": "all", "enum": [ "Publish", "Extract", "Export", "Import", "Script", "DriftReport", "DeployReport" ] }, "DacpacFile": { "type": "string", "description": "DACPAC File", "ignoreCase": "key" }, "BacpacFile": { "type": "string", "description": "BACPAC File", "ignoreCase": "key" }, "SqlFile": { "type": "string", "description": "SQL Script", "ignoreCase": "key" }, "SqlInline": { "type": "string", "description": "Inline SQL Script", "ignoreCase": "key" }, "PublishProfile": { "type": "string", "description": "Publish Profile", "ignoreCase": "key" }, "AdditionalArguments": { "type": "string", "description": "Additional SqlPackage.exe Arguments", "ignoreCase": "key" }, "SqlAdditionalArguments": { "type": "string", "description": "Additional Invoke-Sqlcmd Arguments", "ignoreCase": "key" }, "InlineAdditionalArguments": { "type": "string", "description": "Additional Invoke-Sqlcmd Arguments", "ignoreCase": "key" }, "IpDetectionMethod": { "description": "Specify Firewall Rules Using", "ignoreCase": "all", "enum": [ "AutoDetect", "IPAddressRange" ] }, "StartIpAddress": { "type": "string", "description": "Start IP Address", "ignoreCase": "key" }, "EndIpAddress": { "type": "string", "description": "End IP Address", "ignoreCase": "key" }, "DeleteFirewallRule": { "type": "boolean", "description": "Delete Rule After Task Ends", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Container Structure Test\n\nUses container-structure-test (https://github.com/GoogleContainerTools/container-structure-test) to validate the structure of an image based on four categories of tests - command tests, file existence tests, file content tests and metadata tests", "ignoreCase": "value", "pattern": "^ContainerStructureTest@0$" }, "inputs": { "description": "Container Structure Test inputs", "properties": { "dockerRegistryServiceConnection": { "type": "string", "description": "Docker registry service connection", "ignoreCase": "key" }, "repository": { "type": "string", "description": "Container repository", "ignoreCase": "key" }, "tag": { "type": "string", "description": "Tag", "ignoreCase": "key" }, "configFile": { "type": "string", "description": "Config file path", "ignoreCase": "key" }, "testRunTitle": { "type": "string", "description": "Test run title", "ignoreCase": "key" }, "failTaskOnFailedTests": { "type": "boolean", "description": "Fail task if there are test failures", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "dockerRegistryServiceConnection", "repository", "configFile" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "[Deprecated] IIS Web App deployment\n\nDeploy using MSDeploy, then create/update websites and app pools", "ignoreCase": "value", "pattern": "^IISWebAppDeployment@1$" }, "inputs": { "description": "[Deprecated] IIS Web App deployment inputs", "properties": { "EnvironmentName": { "type": "string", "description": "Machines", "ignoreCase": "key" }, "AdminUserName": { "type": "string", "description": "Admin Login", "ignoreCase": "key" }, "AdminPassword": { "type": "string", "description": "Password", "ignoreCase": "key" }, "WinRMProtocol": { "description": "Protocol", "ignoreCase": "all", "enum": [ "Http", "Https" ] }, "TestCertificate": { "type": "boolean", "description": "Test Certificate", "ignoreCase": "key" }, "WebDeployPackage": { "type": "string", "description": "Web Deploy Package", "ignoreCase": "key" }, "WebDeployParamFile": { "type": "string", "description": "Web Deploy Parameter File", "ignoreCase": "key" }, "OverRideParams": { "type": "string", "description": "Override Parameters", "ignoreCase": "key" }, "CreateWebSite": { "type": "boolean", "description": "Create or Update Website", "ignoreCase": "key" }, "WebSiteName": { "type": "string", "description": "Website Name", "ignoreCase": "key" }, "WebSitePhysicalPath": { "type": "string", "description": "Physical Path", "ignoreCase": "key" }, "WebSitePhysicalPathAuth": { "description": "Physical Path Authentication", "ignoreCase": "all", "enum": [ "WebSiteUserPassThrough", "WebSiteWindowsAuth" ] }, "WebSiteAuthUserName": { "type": "string", "description": "User Name", "ignoreCase": "key" }, "WebSiteAuthUserPassword": { "type": "string", "description": "Password", "ignoreCase": "key" }, "AddBinding": { "type": "boolean", "description": "Add Binding", "ignoreCase": "key" }, "AssignDuplicateBinding": { "type": "boolean", "description": "Assign Duplicate Binding", "ignoreCase": "key" }, "Protocol": { "description": "Protocol", "ignoreCase": "all", "enum": [ "https", "http" ] }, "IPAddress": { "type": "string", "description": "IP Address", "ignoreCase": "key" }, "Port": { "type": "string", "description": "Port", "ignoreCase": "key" }, "ServerNameIndication": { "type": "boolean", "description": "Server Name Indication Required", "ignoreCase": "key" }, "HostNameWithOutSNI": { "type": "string", "description": "Host Name", "ignoreCase": "key" }, "HostNameWithHttp": { "type": "string", "description": "Host Name", "ignoreCase": "key" }, "HostNameWithSNI": { "type": "string", "description": "Host Name", "ignoreCase": "key" }, "SSLCertThumbPrint": { "type": "string", "description": "SSL Certificate Thumb Print", "ignoreCase": "key" }, "CreateAppPool": { "type": "boolean", "description": "Create or Update Application Pool", "ignoreCase": "key" }, "AppPoolName": { "type": "string", "description": "Name", "ignoreCase": "key" }, "DotNetVersion": { "description": ".NET Version", "ignoreCase": "all", "enum": [ "v4.0", "v2.0", "No Managed Code" ] }, "PipeLineMode": { "description": "Managed Pipeline Mode", "ignoreCase": "all", "enum": [ "Integrated", "Classic" ] }, "AppPoolIdentity": { "description": "Identity", "ignoreCase": "all", "enum": [ "ApplicationPoolIdentity", "LocalService", "LocalSystem", "NetworkService", "SpecificUser" ] }, "AppPoolUsername": { "type": "string", "description": "Username", "ignoreCase": "key" }, "AppPoolPassword": { "type": "string", "description": "Password", "ignoreCase": "key" }, "AppCmdCommands": { "type": "string", "description": "Additional AppCmd.exe Commands", "ignoreCase": "key" }, "DeployInParallel": { "type": "boolean", "description": "Deploy in Parallel", "ignoreCase": "key" }, "ResourceFilteringMethod": { "description": "Select Machines By", "ignoreCase": "all", "enum": [ "machineNames", "tags" ] }, "MachineFilter": { "type": "string", "description": "Deploy to Machines", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "EnvironmentName", "WebDeployPackage" ] } }, "deprecationMessage": "IISWebAppDeployment is deprecated - Deploy using MSDeploy, then create/update websites and app pools", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Cloud-based load test\n\nRun a load test in the cloud with Azure Pipelines", "ignoreCase": "value", "pattern": "^CloudLoadTest@1$" }, "inputs": { "description": "Cloud-based load test inputs", "properties": { "connectedServiceName": { "type": "string", "description": "Azure Pipelines Connection", "ignoreCase": "key" }, "TestDrop": { "type": "string", "description": "Load test files folder", "ignoreCase": "key" }, "LoadTest": { "type": "string", "description": "Load test file", "ignoreCase": "key" }, "activeRunSettings": { "description": "Active Run Settings", "ignoreCase": "all", "enum": [ "useFile", "changeActive" ] }, "runSettingName": { "type": "string", "description": "Specify the name of the Run Settings", "ignoreCase": "key" }, "testContextParameters": { "type": "string", "description": "Override load test context parameters", "ignoreCase": "key" }, "TestSettings": { "type": "string", "description": "Test settings file", "ignoreCase": "key" }, "ThresholdLimit": { "type": "string", "description": "Number of permissible threshold violations", "ignoreCase": "key" }, "MachineType": { "description": "Run load test using", "ignoreCase": "all", "enum": [ "0", "2" ] }, "resourceGroupName": { "type": "string", "description": "Resource group rig", "ignoreCase": "key" }, "numOfSelfProvisionedAgents": { "type": "integer", "description": "Number of agents to use", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "LoadTest" ] } }, "deprecationMessage": "CloudLoadTest is deprecated - Run a load test in the cloud with Azure Pipelines", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Kubectl tool installer\n\nInstall Kubectl on agent machine", "ignoreCase": "value", "pattern": "^KubectlInstaller@0$" }, "inputs": { "description": "Kubectl tool installer inputs", "properties": { "kubectlVersion": { "type": "string", "description": "Kubectl Version Spec", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Command line\n\nRun a command line script using Bash on Linux and macOS and cmd.exe on Windows", "ignoreCase": "value", "pattern": "^CmdLine@2$" }, "inputs": { "description": "Command line inputs", "properties": { "script": { "type": "string", "description": "Script", "ignoreCase": "key" }, "workingDirectory": { "type": "string", "description": "Working Directory", "ignoreCase": "key" }, "failOnStderr": { "type": "boolean", "description": "Fail on Standard Error", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Command Line\n\nRun a command line with arguments", "ignoreCase": "value", "pattern": "^CmdLine@1$" }, "inputs": { "description": "Command Line inputs", "properties": { "filename": { "type": "string", "description": "Tool", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "workingFolder": { "type": "string", "description": "Working folder", "ignoreCase": "key" }, "failOnStandardError": { "type": "boolean", "description": "Fail on Standard Error", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "filename" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "NuGet command\n\nDeprecated: use the “NuGet” task instead. It works with the new Tool Installer framework so you can easily use new versions of NuGet without waiting for a task update, provides better support for authenticated feeds outside this organization/collection, and uses NuGet 4 by default.", "ignoreCase": "value", "pattern": "^NuGet@0$" }, "inputs": { "description": "NuGet command inputs", "properties": { "command": { "type": "string", "description": "Command", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "command" ] } }, "deprecationMessage": "NuGet is deprecated - Deprecated: use the “NuGet” task instead. It works with the new Tool Installer framework so you can easily use new versions of NuGet without waiting for a task update, provides better support for authenticated feeds outside this organization/collection, and uses NuGet 4 by default.", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Container Build\n\nContainer Build Task", "ignoreCase": "value", "pattern": "^ContainerBuild@0$" }, "inputs": { "description": "Container Build inputs", "properties": { "dockerRegistryServiceConnection": { "type": "string", "description": "Docker registry service connection", "ignoreCase": "key" }, "repository": { "type": "string", "description": "Container repository", "ignoreCase": "key" }, "Dockerfile": { "type": "string", "description": "Dockerfile", "ignoreCase": "key" }, "buildContext": { "type": "string", "description": "Build context", "ignoreCase": "key" }, "tags": { "type": "string", "description": "Tags", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "NuGet Installer\n\nInstalls or restores missing NuGet packages. Use NuGetAuthenticate@0 task for latest capabilities.", "ignoreCase": "value", "pattern": "^NuGetInstaller@0$" }, "inputs": { "description": "NuGet Installer inputs", "properties": { "solution": { "type": "string", "description": "Path to solution or packages.config", "ignoreCase": "key" }, "nugetConfigPath": { "type": "string", "description": "Path to NuGet.config", "ignoreCase": "key" }, "restoreMode": { "description": "Installation type", "ignoreCase": "all", "enum": [ "restore", "install" ] }, "noCache": { "type": "boolean", "description": "Disable local cache", "ignoreCase": "key" }, "nuGetRestoreArgs": { "type": "string", "description": "NuGet arguments", "ignoreCase": "key" }, "verbosity": { "description": "Verbosity", "ignoreCase": "all", "enum": [ "-", "Quiet", "Normal", "Detailed" ] }, "nuGetVersion": { "description": "NuGet Version", "ignoreCase": "all", "enum": [ "3.3.0", "3.5.0.1829", "4.0.0.2283", "custom" ] }, "nuGetPath": { "type": "string", "description": "Path to NuGet.exe", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "NuGetInstaller is deprecated - Installs or restores missing NuGet packages. Use NuGetAuthenticate@0 task for latest capabilities.", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "NuGet Restore\n\nRestores NuGet packages in preparation for a Visual Studio Build step.", "ignoreCase": "value", "pattern": "^NuGetRestore@1$" }, "inputs": { "description": "NuGet Restore inputs", "properties": { "solution": { "type": "string", "description": "Path to solution, packages.config, or project.json", "ignoreCase": "key" }, "selectOrConfig": { "description": "Feeds to use", "ignoreCase": "all", "enum": [ "select", "config" ] }, "feed": { "type": "string", "description": "Use packages from this Azure Artifacts feed", "ignoreCase": "key" }, "includeNuGetOrg": { "type": "boolean", "description": "Use packages from NuGet.org", "ignoreCase": "key" }, "nugetConfigPath": { "type": "string", "description": "Path to NuGet.config", "ignoreCase": "key" }, "noCache": { "type": "boolean", "description": "Disable local cache", "ignoreCase": "key" }, "packagesDirectory": { "type": "string", "description": "Destination directory", "ignoreCase": "key" }, "verbosity": { "description": "Verbosity", "ignoreCase": "all", "enum": [ "-", "Quiet", "Normal", "Detailed" ] } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "NuGetRestore is deprecated - Restores NuGet packages in preparation for a Visual Studio Build step.", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "NuGet\n\nRestore, pack, or push NuGet packages, or run a NuGet command. Supports NuGet.org and authenticated feeds like Azure Artifacts and MyGet. Uses NuGet.exe and works with .NET Framework apps. For .NET Core and .NET Standard apps, use the .NET Core task.", "ignoreCase": "value", "pattern": "^NuGetCommand@2$" }, "inputs": { "description": "NuGet inputs", "properties": { "command": { "description": "Command", "ignoreCase": "all", "enum": [ "restore", "pack", "push", "custom" ] }, "restoreSolution": { "type": "string", "description": "Path to solution, packages.config, or project.json", "ignoreCase": "key", "aliases": [ "solution" ] }, "feedsToUse": { "description": "Feeds to use", "ignoreCase": "all", "enum": [ "select", "config" ], "aliases": [ "selectOrConfig" ] }, "vstsFeed": { "type": "string", "description": "Use packages from this Azure Artifacts/TFS feed. Select from the dropdown or enter [project name/]feed name.", "ignoreCase": "key", "aliases": [ "feedRestore" ] }, "includeNuGetOrg": { "type": "boolean", "description": "Use packages from NuGet.org", "ignoreCase": "key" }, "nugetConfigPath": { "type": "string", "description": "Path to NuGet.config", "ignoreCase": "key" }, "externalFeedCredentials": { "type": "string", "description": "Credentials for feeds outside this organization/collection", "ignoreCase": "key", "aliases": [ "externalEndpoints" ] }, "noCache": { "type": "boolean", "description": "Disable local cache", "ignoreCase": "key" }, "disableParallelProcessing": { "type": "boolean", "description": "Disable parallel processing", "ignoreCase": "key" }, "restoreDirectory": { "type": "string", "description": "Destination directory", "ignoreCase": "key", "aliases": [ "packagesDirectory" ] }, "verbosityRestore": { "description": "Verbosity", "ignoreCase": "all", "enum": [ "Quiet", "Normal", "Detailed" ] }, "packagesToPush": { "type": "string", "description": "Path to NuGet package(s) to publish", "ignoreCase": "key", "aliases": [ "searchPatternPush" ] }, "nuGetFeedType": { "description": "Target feed location", "ignoreCase": "all", "enum": [ "internal", "external" ] }, "publishVstsFeed": { "type": "string", "description": "Target feed", "ignoreCase": "key", "aliases": [ "feedPublish" ] }, "publishPackageMetadata": { "type": "boolean", "description": "Publish pipeline metadata", "ignoreCase": "key" }, "allowPackageConflicts": { "type": "boolean", "description": "Allow duplicates to be skipped", "ignoreCase": "key" }, "publishFeedCredentials": { "type": "string", "description": "NuGet server", "ignoreCase": "key", "aliases": [ "externalEndpoint" ] }, "verbosityPush": { "description": "Verbosity", "ignoreCase": "all", "enum": [ "Quiet", "Normal", "Detailed" ] }, "packagesToPack": { "type": "string", "description": "Path to csproj or nuspec file(s) to pack", "ignoreCase": "key", "aliases": [ "searchPatternPack" ] }, "configuration": { "type": "string", "description": "Configuration to package", "ignoreCase": "key", "aliases": [ "configurationToPack" ] }, "packDestination": { "type": "string", "description": "Package folder", "ignoreCase": "key", "aliases": [ "outputDir" ] }, "versioningScheme": { "description": "Automatic package versioning", "ignoreCase": "all", "enum": [ "off", "byPrereleaseNumber", "byEnvVar", "byBuildNumber" ] }, "includeReferencedProjects": { "type": "boolean", "description": "Include referenced projects", "ignoreCase": "key" }, "versionEnvVar": { "type": "string", "description": "Environment variable", "ignoreCase": "key" }, "majorVersion": { "type": "string", "description": "Major", "ignoreCase": "key", "aliases": [ "requestedMajorVersion" ] }, "minorVersion": { "type": "string", "description": "Minor", "ignoreCase": "key", "aliases": [ "requestedMinorVersion" ] }, "patchVersion": { "type": "string", "description": "Patch", "ignoreCase": "key", "aliases": [ "requestedPatchVersion" ] }, "packTimezone": { "description": "Time zone", "ignoreCase": "all", "enum": [ "utc", "local" ] }, "includeSymbols": { "type": "boolean", "description": "Create symbols package", "ignoreCase": "key" }, "toolPackage": { "type": "boolean", "description": "Tool Package", "ignoreCase": "key" }, "buildProperties": { "type": "string", "description": "Additional build properties", "ignoreCase": "key" }, "basePath": { "type": "string", "description": "Base path", "ignoreCase": "key" }, "verbosityPack": { "description": "Verbosity", "ignoreCase": "all", "enum": [ "Quiet", "Normal", "Detailed" ] }, "arguments": { "type": "string", "description": "Command and arguments", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Delay\n\nDelay further execution of a workflow by a fixed time", "ignoreCase": "value", "pattern": "^Delay@1$" }, "inputs": { "description": "Delay inputs", "properties": { "delayForMinutes": { "type": "string", "description": "Delay Time (minutes)", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Xamarin.iOS\n\nBuild an iOS app with Xamarin on macOS", "ignoreCase": "value", "pattern": "^XamariniOS@2$" }, "inputs": { "description": "Xamarin.iOS inputs", "properties": { "solutionFile": { "type": "string", "description": "Solution", "ignoreCase": "key", "aliases": [ "solution" ] }, "configuration": { "type": "string", "description": "Configuration", "ignoreCase": "key" }, "clean": { "type": "boolean", "description": "Clean", "ignoreCase": "key" }, "packageApp": { "type": "boolean", "description": "Create app package", "ignoreCase": "key" }, "buildForSimulator": { "type": "boolean", "description": "Build for iOS Simulator", "ignoreCase": "key", "aliases": [ "forSimulator" ] }, "runNugetRestore": { "type": "boolean", "description": "Run NuGet restore", "ignoreCase": "key" }, "args": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "workingDirectory": { "type": "string", "description": "Working directory", "ignoreCase": "key", "aliases": [ "cwd" ] }, "mdtoolFile": { "type": "string", "description": "Build tool path", "ignoreCase": "key", "aliases": [ "buildToolLocation", "mdtoolLocation" ] }, "signingIdentity": { "type": "string", "description": "Signing identity", "ignoreCase": "key", "aliases": [ "iosSigningIdentity" ] }, "signingProvisioningProfileID": { "type": "string", "description": "Provisioning profile UUID", "ignoreCase": "key", "aliases": [ "provProfileUuid" ] } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "XamariniOS is deprecated - Build an iOS app with Xamarin on macOS", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Xamarin.iOS\n\nBuild an iOS app with Xamarin on macOS", "ignoreCase": "value", "pattern": "^XamariniOS@1$" }, "inputs": { "description": "Xamarin.iOS inputs", "properties": { "solutionFile": { "type": "string", "description": "Solution", "ignoreCase": "key", "aliases": [ "solution" ] }, "configuration": { "type": "string", "description": "Configuration", "ignoreCase": "key" }, "clean": { "type": "boolean", "description": "Clean", "ignoreCase": "key" }, "packageApp": { "type": "boolean", "description": "Create app package", "ignoreCase": "key" }, "buildForSimulator": { "type": "boolean", "description": "Build for iOS Simulator", "ignoreCase": "key", "aliases": [ "forSimulator" ] }, "runNugetRestore": { "type": "boolean", "description": "Run NuGet restore", "ignoreCase": "key" }, "args": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "workingDirectory": { "type": "string", "description": "Working directory", "ignoreCase": "key", "aliases": [ "cwd" ] }, "buildToolOption": { "description": "Build tool", "ignoreCase": "all", "enum": [ "xbuild", "msbuild" ], "aliases": [ "buildTool" ] }, "mdtoolFile": { "type": "string", "description": "Build tool path", "ignoreCase": "key", "aliases": [ "mdtoolLocation" ] }, "signingOption": { "description": "Override using", "ignoreCase": "all", "enum": [ "file", "id" ], "aliases": [ "signMethod" ] }, "signingIdentity": { "type": "string", "description": "Signing identity", "ignoreCase": "key", "aliases": [ "iosSigningIdentity" ] }, "signingUnlockDefaultKeychain": { "type": "boolean", "description": "Unlock default keychain", "ignoreCase": "key", "aliases": [ "unlockDefaultKeychain" ] }, "signingDefaultKeychainPassword": { "type": "string", "description": "Default keychain password", "ignoreCase": "key", "aliases": [ "defaultKeychainPassword" ] }, "signingProvisioningProfileID": { "type": "string", "description": "Provisioning profile UUID", "ignoreCase": "key", "aliases": [ "provProfileUuid" ] }, "signingP12File": { "type": "string", "description": "P12 certificate file", "ignoreCase": "key", "aliases": [ "p12" ] }, "signingP12Password": { "type": "string", "description": "P12 password", "ignoreCase": "key", "aliases": [ "p12pwd" ] }, "signingProvisioningProfileFile": { "type": "string", "description": "Provisioning profile file", "ignoreCase": "key", "aliases": [ "provProfile" ] }, "signingRemoveProfile": { "type": "boolean", "description": "Remove profile after build", "ignoreCase": "key", "aliases": [ "removeProfile" ] } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Publish Test Results\n\nPublish test results to Azure Pipelines", "ignoreCase": "value", "pattern": "^PublishTestResults@2$" }, "inputs": { "description": "Publish Test Results inputs", "properties": { "testResultsFormat": { "description": "Test result format", "ignoreCase": "all", "enum": [ "JUnit", "NUnit", "VSTest", "XUnit", "CTest" ], "aliases": [ "testRunner" ] }, "testResultsFiles": { "type": "string", "description": "Test results files", "ignoreCase": "key" }, "searchFolder": { "type": "string", "description": "Search folder", "ignoreCase": "key" }, "mergeTestResults": { "type": "boolean", "description": "Merge test results", "ignoreCase": "key" }, "failTaskOnFailedTests": { "type": "boolean", "description": "Fail if there are test failures", "ignoreCase": "key" }, "failTaskOnFailureToPublishResults": { "type": "boolean", "description": "Fail if there is failure in publishing test results", "ignoreCase": "key" }, "failTaskOnMissingResultsFile": { "type": "boolean", "description": "Fail if no result files are found", "ignoreCase": "key" }, "testRunTitle": { "type": "string", "description": "Test run title", "ignoreCase": "key" }, "buildPlatform": { "type": "string", "description": "Build Platform", "ignoreCase": "key", "aliases": [ "platform" ] }, "buildConfiguration": { "type": "string", "description": "Build Configuration", "ignoreCase": "key", "aliases": [ "configuration" ] }, "publishRunAttachments": { "type": "boolean", "description": "Upload test results files", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Publish test results\n\nPublish test results to Azure Pipelines", "ignoreCase": "value", "pattern": "^PublishTestResults@1$" }, "inputs": { "description": "Publish test results inputs", "properties": { "testRunner": { "description": "Test Result Format", "ignoreCase": "all", "enum": [ "JUnit", "NUnit", "VSTest", "XUnit" ] }, "testResultsFiles": { "type": "string", "description": "Test Results Files", "ignoreCase": "key" }, "mergeTestResults": { "type": "boolean", "description": "Merge Test Results", "ignoreCase": "key" }, "testRunTitle": { "type": "string", "description": "Test Run Title", "ignoreCase": "key" }, "platform": { "type": "string", "description": "Platform", "ignoreCase": "key" }, "configuration": { "type": "string", "description": "Configuration", "ignoreCase": "key" }, "publishRunAttachments": { "type": "boolean", "description": "Upload Test Attachments", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Azure file copy\n\nCopy files to Azure Blob Storage or virtual machines", "ignoreCase": "value", "pattern": "^AzureFileCopy@5$" }, "inputs": { "description": "Azure file copy inputs", "properties": { "SourcePath": { "type": "string", "description": "Source", "ignoreCase": "key" }, "azureSubscription": { "type": "string", "description": "Azure Subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceNameARM" ] }, "Destination": { "description": "Destination Type", "ignoreCase": "all", "enum": [ "AzureBlob", "AzureVMs" ] }, "storage": { "type": "string", "description": "RM Storage Account", "ignoreCase": "key", "aliases": [ "StorageAccountRM" ] }, "ContainerName": { "type": "string", "description": "Container Name", "ignoreCase": "key" }, "BlobPrefix": { "type": "string", "description": "Blob Prefix", "ignoreCase": "key" }, "resourceGroup": { "type": "string", "description": "Resource Group", "ignoreCase": "key", "aliases": [ "EnvironmentNameRM" ] }, "ResourceFilteringMethod": { "description": "Select Machines By", "ignoreCase": "all", "enum": [ "machineNames", "tags" ] }, "MachineNames": { "type": "string", "description": "Filter Criteria", "ignoreCase": "key" }, "vmsAdminUserName": { "type": "string", "description": "Admin Login", "ignoreCase": "key" }, "vmsAdminPassword": { "type": "string", "description": "Password", "ignoreCase": "key" }, "TargetPath": { "type": "string", "description": "Destination Folder", "ignoreCase": "key" }, "AdditionalArgumentsForBlobCopy": { "type": "string", "description": "Optional Arguments (for uploading files to blob)", "ignoreCase": "key" }, "AdditionalArgumentsForVMCopy": { "type": "string", "description": "Optional Arguments (for downloading files to VM)", "ignoreCase": "key" }, "sasTokenTimeOutInMinutes": { "type": "string", "description": "SAS Token Expiration Period In Minutes", "ignoreCase": "key" }, "enableCopyPrerequisites": { "type": "boolean", "description": "Enable Copy Prerequisites", "ignoreCase": "key" }, "CopyFilesInParallel": { "type": "boolean", "description": "Copy in Parallel", "ignoreCase": "key" }, "CleanTargetBeforeCopy": { "type": "boolean", "description": "Clean Target", "ignoreCase": "key" }, "skipCACheck": { "type": "boolean", "description": "Test Certificate", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "SourcePath", "azureSubscription", "Destination", "storage" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure file copy\n\nCopy files to Azure Blob Storage or virtual machines", "ignoreCase": "value", "pattern": "^AzureFileCopy@6$" }, "inputs": { "description": "Azure file copy inputs", "properties": { "SourcePath": { "type": "string", "description": "Source", "ignoreCase": "key" }, "azureSubscription": { "type": "string", "description": "Azure Subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceNameARM" ] }, "Destination": { "description": "Destination Type", "ignoreCase": "all", "enum": [ "AzureBlob", "AzureVMs" ] }, "storage": { "type": "string", "description": "RM Storage Account", "ignoreCase": "key", "aliases": [ "StorageAccountRM" ] }, "ContainerName": { "type": "string", "description": "Container Name", "ignoreCase": "key" }, "BlobPrefix": { "type": "string", "description": "Blob Prefix", "ignoreCase": "key" }, "resourceGroup": { "type": "string", "description": "Resource Group", "ignoreCase": "key", "aliases": [ "EnvironmentNameRM" ] }, "ResourceFilteringMethod": { "description": "Select Machines By", "ignoreCase": "all", "enum": [ "machineNames", "tags" ] }, "MachineNames": { "type": "string", "description": "Filter Criteria", "ignoreCase": "key" }, "vmsAdminUserName": { "type": "string", "description": "Admin Login", "ignoreCase": "key" }, "vmsAdminPassword": { "type": "string", "description": "Password", "ignoreCase": "key" }, "TargetPath": { "type": "string", "description": "Destination Folder", "ignoreCase": "key" }, "AdditionalArgumentsForBlobCopy": { "type": "string", "description": "Optional Arguments (for uploading files to blob)", "ignoreCase": "key" }, "AdditionalArgumentsForVMCopy": { "type": "string", "description": "Optional Arguments (for downloading files to VM)", "ignoreCase": "key" }, "enableCopyPrerequisites": { "type": "boolean", "description": "Enable Copy Prerequisites", "ignoreCase": "key" }, "CopyFilesInParallel": { "type": "boolean", "description": "Copy in Parallel", "ignoreCase": "key" }, "CleanTargetBeforeCopy": { "type": "boolean", "description": "Clean Target", "ignoreCase": "key" }, "skipCACheck": { "type": "boolean", "description": "Test Certificate", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "SourcePath", "azureSubscription", "Destination", "storage" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure file copy\n\nCopy files to Azure Blob Storage or virtual machines", "ignoreCase": "value", "pattern": "^AzureFileCopy@4$" }, "inputs": { "description": "Azure file copy inputs", "properties": { "SourcePath": { "type": "string", "description": "Source", "ignoreCase": "key" }, "azureSubscription": { "type": "string", "description": "Azure Subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceNameARM" ] }, "Destination": { "description": "Destination Type", "ignoreCase": "all", "enum": [ "AzureBlob", "AzureVMs" ] }, "storage": { "type": "string", "description": "RM Storage Account", "ignoreCase": "key", "aliases": [ "StorageAccountRM" ] }, "ContainerName": { "type": "string", "description": "Container Name", "ignoreCase": "key" }, "BlobPrefix": { "type": "string", "description": "Blob Prefix", "ignoreCase": "key" }, "resourceGroup": { "type": "string", "description": "Resource Group", "ignoreCase": "key", "aliases": [ "EnvironmentNameRM" ] }, "ResourceFilteringMethod": { "description": "Select Machines By", "ignoreCase": "all", "enum": [ "machineNames", "tags" ] }, "MachineNames": { "type": "string", "description": "Filter Criteria", "ignoreCase": "key" }, "vmsAdminUserName": { "type": "string", "description": "Admin Login", "ignoreCase": "key" }, "vmsAdminPassword": { "type": "string", "description": "Password", "ignoreCase": "key" }, "TargetPath": { "type": "string", "description": "Destination Folder", "ignoreCase": "key" }, "AdditionalArgumentsForBlobCopy": { "type": "string", "description": "Optional Arguments (for uploading files to blob)", "ignoreCase": "key" }, "AdditionalArgumentsForVMCopy": { "type": "string", "description": "Optional Arguments (for downloading files to VM)", "ignoreCase": "key" }, "sasTokenTimeOutInMinutes": { "type": "string", "description": "SAS Token Expiration Period In Minutes", "ignoreCase": "key" }, "enableCopyPrerequisites": { "type": "boolean", "description": "Enable Copy Prerequisites", "ignoreCase": "key" }, "CopyFilesInParallel": { "type": "boolean", "description": "Copy in Parallel", "ignoreCase": "key" }, "CleanTargetBeforeCopy": { "type": "boolean", "description": "Clean Target", "ignoreCase": "key" }, "skipCACheck": { "type": "boolean", "description": "Test Certificate", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "SourcePath", "azureSubscription", "Destination", "storage" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure file copy\n\nCopy files to Azure Blob Storage or virtual machines", "ignoreCase": "value", "pattern": "^AzureFileCopy@2$" }, "inputs": { "description": "Azure file copy inputs", "properties": { "SourcePath": { "type": "string", "description": "Source", "ignoreCase": "key" }, "azureConnectionType": { "description": "Azure Connection Type", "ignoreCase": "all", "enum": [ "ConnectedServiceName", "ConnectedServiceNameARM" ], "aliases": [ "ConnectedServiceNameSelector" ] }, "azureClassicSubscription": { "type": "string", "description": "Azure Classic Subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "azureSubscription": { "type": "string", "description": "Azure Subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceNameARM" ] }, "Destination": { "description": "Destination Type", "ignoreCase": "all", "enum": [ "AzureBlob", "AzureVMs" ] }, "classicStorage": { "type": "string", "description": "Classic Storage Account", "ignoreCase": "key", "aliases": [ "StorageAccount" ] }, "storage": { "type": "string", "description": "RM Storage Account", "ignoreCase": "key", "aliases": [ "StorageAccountRM" ] }, "ContainerName": { "type": "string", "description": "Container Name", "ignoreCase": "key" }, "BlobPrefix": { "type": "string", "description": "Blob Prefix", "ignoreCase": "key" }, "cloudService": { "type": "string", "description": "Cloud Service", "ignoreCase": "key", "aliases": [ "EnvironmentName" ] }, "resourceGroup": { "type": "string", "description": "Resource Group", "ignoreCase": "key", "aliases": [ "EnvironmentNameRM" ] }, "ResourceFilteringMethod": { "description": "Select Machines By", "ignoreCase": "all", "enum": [ "machineNames", "tags" ] }, "MachineNames": { "type": "string", "description": "Filter Criteria", "ignoreCase": "key" }, "vmsAdminUserName": { "type": "string", "description": "Admin Login", "ignoreCase": "key" }, "vmsAdminPassword": { "type": "string", "description": "Password", "ignoreCase": "key" }, "TargetPath": { "type": "string", "description": "Destination Folder", "ignoreCase": "key" }, "AdditionalArgumentsForBlobCopy": { "type": "string", "description": "Optional Arguments (for uploading files to blob)", "ignoreCase": "key" }, "AdditionalArgumentsForVMCopy": { "type": "string", "description": "Optional Arguments (for downloading files to VM)", "ignoreCase": "key" }, "enableCopyPrerequisites": { "type": "boolean", "description": "Enable Copy Prerequisites", "ignoreCase": "key" }, "CopyFilesInParallel": { "type": "boolean", "description": "Copy in Parallel", "ignoreCase": "key" }, "CleanTargetBeforeCopy": { "type": "boolean", "description": "Clean Target", "ignoreCase": "key" }, "skipCACheck": { "type": "boolean", "description": "Test Certificate", "ignoreCase": "key" }, "outputStorageUri": { "type": "string", "description": "Storage Container URI", "ignoreCase": "key" }, "outputStorageContainerSasToken": { "type": "string", "description": "Storage Container SAS Token", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "SourcePath", "Destination" ] } }, "deprecationMessage": "AzureFileCopy is deprecated - Copy files to Azure Blob Storage or virtual machines", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure file copy\n\nCopy files to Azure Blob Storage or virtual machines", "ignoreCase": "value", "pattern": "^AzureFileCopy@3$" }, "inputs": { "description": "Azure file copy inputs", "properties": { "SourcePath": { "type": "string", "description": "Source", "ignoreCase": "key" }, "azureSubscription": { "type": "string", "description": "Azure Subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceNameARM" ] }, "Destination": { "description": "Destination Type", "ignoreCase": "all", "enum": [ "AzureBlob", "AzureVMs" ] }, "storage": { "type": "string", "description": "RM Storage Account", "ignoreCase": "key", "aliases": [ "StorageAccountRM" ] }, "ContainerName": { "type": "string", "description": "Container Name", "ignoreCase": "key" }, "BlobPrefix": { "type": "string", "description": "Blob Prefix", "ignoreCase": "key" }, "resourceGroup": { "type": "string", "description": "Resource Group", "ignoreCase": "key", "aliases": [ "EnvironmentNameRM" ] }, "ResourceFilteringMethod": { "description": "Select Machines By", "ignoreCase": "all", "enum": [ "machineNames", "tags" ] }, "MachineNames": { "type": "string", "description": "Filter Criteria", "ignoreCase": "key" }, "vmsAdminUserName": { "type": "string", "description": "Admin Login", "ignoreCase": "key" }, "vmsAdminPassword": { "type": "string", "description": "Password", "ignoreCase": "key" }, "TargetPath": { "type": "string", "description": "Destination Folder", "ignoreCase": "key" }, "AdditionalArgumentsForBlobCopy": { "type": "string", "description": "Optional Arguments (for uploading files to blob)", "ignoreCase": "key" }, "AdditionalArgumentsForVMCopy": { "type": "string", "description": "Optional Arguments (for downloading files to VM)", "ignoreCase": "key" }, "enableCopyPrerequisites": { "type": "boolean", "description": "Enable Copy Prerequisites", "ignoreCase": "key" }, "CopyFilesInParallel": { "type": "boolean", "description": "Copy in Parallel", "ignoreCase": "key" }, "CleanTargetBeforeCopy": { "type": "boolean", "description": "Clean Target", "ignoreCase": "key" }, "skipCACheck": { "type": "boolean", "description": "Test Certificate", "ignoreCase": "key" }, "outputStorageUri": { "type": "string", "description": "Storage Container URI", "ignoreCase": "key" }, "outputStorageContainerSasToken": { "type": "string", "description": "Storage Container SAS Token", "ignoreCase": "key" }, "sasTokenTimeOutInMinutes": { "type": "string", "description": "SAS Token Expiration Period In Minutes", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "SourcePath", "azureSubscription", "Destination", "storage" ] } }, "deprecationMessage": "AzureFileCopy is deprecated - Copy files to Azure Blob Storage or virtual machines", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure file copy\n\nCopy files to Azure Blob Storage or virtual machines", "ignoreCase": "value", "pattern": "^AzureFileCopy@1$" }, "inputs": { "description": "Azure file copy inputs", "properties": { "SourcePath": { "type": "string", "description": "Source", "ignoreCase": "key" }, "azureConnectionType": { "description": "Azure Connection Type", "ignoreCase": "all", "enum": [ "ConnectedServiceName", "ConnectedServiceNameARM" ], "aliases": [ "ConnectedServiceNameSelector" ] }, "azureClassicSubscription": { "type": "string", "description": "Azure Classic Subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "azureSubscription": { "type": "string", "description": "Azure Subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceNameARM" ] }, "Destination": { "description": "Destination Type", "ignoreCase": "all", "enum": [ "AzureBlob", "AzureVMs" ] }, "classicStorage": { "type": "string", "description": "Classic Storage Account", "ignoreCase": "key", "aliases": [ "StorageAccount" ] }, "storage": { "type": "string", "description": "RM Storage Account", "ignoreCase": "key", "aliases": [ "StorageAccountRM" ] }, "ContainerName": { "type": "string", "description": "Container Name", "ignoreCase": "key" }, "BlobPrefix": { "type": "string", "description": "Blob Prefix", "ignoreCase": "key" }, "cloudService": { "type": "string", "description": "Cloud Service", "ignoreCase": "key", "aliases": [ "EnvironmentName" ] }, "resourceGroup": { "type": "string", "description": "Resource Group", "ignoreCase": "key", "aliases": [ "EnvironmentNameRM" ] }, "ResourceFilteringMethod": { "description": "Select Machines By", "ignoreCase": "all", "enum": [ "machineNames", "tags" ] }, "MachineNames": { "type": "string", "description": "Filter Criteria", "ignoreCase": "key" }, "vmsAdminUserName": { "type": "string", "description": "Admin Login", "ignoreCase": "key" }, "vmsAdminPassword": { "type": "string", "description": "Password", "ignoreCase": "key" }, "TargetPath": { "type": "string", "description": "Destination Folder", "ignoreCase": "key" }, "AdditionalArguments": { "type": "string", "description": "Additional Arguments", "ignoreCase": "key" }, "enableCopyPrerequisites": { "type": "boolean", "description": "Enable Copy Prerequisites", "ignoreCase": "key" }, "CopyFilesInParallel": { "type": "boolean", "description": "Copy in Parallel", "ignoreCase": "key" }, "CleanTargetBeforeCopy": { "type": "boolean", "description": "Clean Target", "ignoreCase": "key" }, "skipCACheck": { "type": "boolean", "description": "Test Certificate", "ignoreCase": "key" }, "outputStorageUri": { "type": "string", "description": "Storage Container URI", "ignoreCase": "key" }, "outputStorageContainerSasToken": { "type": "string", "description": "Storage Container SAS Token", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "SourcePath", "Destination" ] } }, "deprecationMessage": "AzureFileCopy is deprecated - Copy files to Azure Blob Storage or virtual machines", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Index sources and publish symbols\n\nIndex your source code and publish symbols to a file share or Azure Artifacts symbol server", "ignoreCase": "value", "pattern": "^PublishSymbols@2$" }, "inputs": { "description": "Index sources and publish symbols inputs", "properties": { "ConnectedServiceName": { "type": "string", "description": "Azure Resource Manager connection", "ignoreCase": "key" }, "SymbolsFolder": { "type": "string", "description": "Path to symbols folder", "ignoreCase": "key" }, "SearchPattern": { "type": "string", "description": "Search pattern", "ignoreCase": "key" }, "IndexSources": { "type": "boolean", "description": "Index sources", "ignoreCase": "key" }, "PublishSymbols": { "type": "boolean", "description": "Publish symbols", "ignoreCase": "key" }, "SymbolServerType": { "description": "Symbol server type", "ignoreCase": "all", "enum": [ " ", "TeamServices", "FileShare" ] }, "SymbolsPath": { "type": "string", "description": "Path to publish symbols", "ignoreCase": "key" }, "CompressSymbols": { "type": "boolean", "description": "Compress symbols", "ignoreCase": "key" }, "SymbolExpirationInDays": { "type": "string", "description": "Symbol Expiration (in days)", "ignoreCase": "key" }, "IndexableFileFormats": { "description": "Symbol file formats to publish", "ignoreCase": "all", "enum": [ "Default", "Pdb", "SourceMap", "All" ] }, "DetailedLog": { "type": "boolean", "description": "Verbose logging", "ignoreCase": "key" }, "TreatNotIndexedAsWarning": { "type": "boolean", "description": "Warn if not indexed", "ignoreCase": "key" }, "UseNetCoreClientTool": { "type": "boolean", "description": "Use NetCore client tool", "ignoreCase": "key" }, "SymbolsMaximumWaitTime": { "type": "string", "description": "Max wait time (min)", "ignoreCase": "key" }, "SymbolsProduct": { "type": "string", "description": "Product", "ignoreCase": "key" }, "SymbolsVersion": { "type": "string", "description": "Version", "ignoreCase": "key" }, "SymbolsArtifactName": { "type": "string", "description": "Artifact name", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Index Sources & Publish Symbols\n\nIndex your source code and publish symbols to a file share", "ignoreCase": "value", "pattern": "^PublishSymbols@1$" }, "inputs": { "description": "Index Sources & Publish Symbols inputs", "properties": { "SymbolsPath": { "type": "string", "description": "Path to publish symbols", "ignoreCase": "key" }, "SearchPattern": { "type": "string", "description": "Search pattern", "ignoreCase": "key" }, "SymbolsFolder": { "type": "string", "description": "Path to symbols folder", "ignoreCase": "key" }, "SkipIndexing": { "type": "boolean", "description": "Skip indexing", "ignoreCase": "key" }, "TreatNotIndexedAsWarning": { "type": "boolean", "description": "Warn if not indexed", "ignoreCase": "key" }, "SymbolsMaximumWaitTime": { "type": "string", "description": "Max wait time (min)", "ignoreCase": "key" }, "SymbolsProduct": { "type": "string", "description": "Product", "ignoreCase": "key" }, "SymbolsVersion": { "type": "string", "description": "Version", "ignoreCase": "key" }, "SymbolsArtifactName": { "type": "string", "description": "Artifact name", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Copy files over SSH\n\nCopy files or build artifacts to a remote machine over SSH", "ignoreCase": "value", "pattern": "^CopyFilesOverSSH@0$" }, "inputs": { "description": "Copy files over SSH inputs", "properties": { "sshEndpoint": { "type": "string", "description": "SSH service connection", "ignoreCase": "key" }, "sourceFolder": { "type": "string", "description": "Source folder", "ignoreCase": "key" }, "contents": { "type": "string", "description": "Contents", "ignoreCase": "key" }, "targetFolder": { "type": "string", "description": "Target folder", "ignoreCase": "key" }, "isWindowsOnTarget": { "type": "boolean", "description": "Target machine running Windows", "ignoreCase": "key" }, "cleanTargetFolder": { "type": "boolean", "description": "Clean target folder", "ignoreCase": "key" }, "cleanHiddenFilesInTarget": { "type": "boolean", "description": "Remove hidden files in target folder", "ignoreCase": "key" }, "readyTimeout": { "type": "string", "description": "SSH handshake timeout", "ignoreCase": "key" }, "overwrite": { "type": "boolean", "description": "Overwrite", "ignoreCase": "key" }, "failOnEmptySource": { "type": "boolean", "description": "Fail if no files found to copy", "ignoreCase": "key" }, "flattenFolders": { "type": "boolean", "description": "Flatten folders", "ignoreCase": "key" }, "concurrentUploads": { "type": "string", "description": "Number of concurrent uploads when copying files", "ignoreCase": "key" }, "delayBetweenUploads": { "type": "string", "description": "Delay between queueing uploads (in milliseconds)", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "sshEndpoint" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Gradle\n\nBuild using a Gradle wrapper script", "ignoreCase": "value", "pattern": "^Gradle@2$" }, "inputs": { "description": "Gradle inputs", "properties": { "gradleWrapperFile": { "type": "string", "description": "Gradle wrapper", "ignoreCase": "key", "aliases": [ "wrapperScript" ] }, "workingDirectory": { "type": "string", "description": "Working directory", "ignoreCase": "key", "aliases": [ "cwd" ] }, "options": { "type": "string", "description": "Options", "ignoreCase": "key" }, "tasks": { "type": "string", "description": "Tasks", "ignoreCase": "key" }, "publishJUnitResults": { "type": "boolean", "description": "Publish to Azure Pipelines", "ignoreCase": "key" }, "testResultsFiles": { "type": "string", "description": "Test results files", "ignoreCase": "key" }, "testRunTitle": { "type": "string", "description": "Test run title", "ignoreCase": "key" }, "codeCoverageToolOption": { "description": "Code coverage tool", "ignoreCase": "all", "enum": [ "None", "Cobertura", "JaCoCo" ], "aliases": [ "codeCoverageTool" ] }, "codeCoverageClassFilesDirectories": { "type": "string", "description": "Class files directories", "ignoreCase": "key", "aliases": [ "classFilesDirectories" ] }, "codeCoverageClassFilter": { "type": "string", "description": "Class inclusion/exclusion filters", "ignoreCase": "key", "aliases": [ "classFilter" ] }, "codeCoverageFailIfEmpty": { "type": "boolean", "description": "Fail when code coverage results are missing", "ignoreCase": "key", "aliases": [ "failIfCoverageEmpty" ] }, "codeCoverageGradle5xOrHigher": { "type": "boolean", "description": "Gradle version >= 5.x", "ignoreCase": "key", "aliases": [ "gradle5xOrHigher" ] }, "javaHomeOption": { "description": "Set JAVA_HOME by", "ignoreCase": "all", "enum": [ "JDKVersion", "Path" ], "aliases": [ "javaHomeSelection" ] }, "jdkVersionOption": { "description": "JDK version", "ignoreCase": "all", "enum": [ "default", "1.17", "1.11", "1.10", "1.9", "1.8", "1.7", "1.6" ], "aliases": [ "jdkVersion" ] }, "jdkDirectory": { "type": "string", "description": "JDK path", "ignoreCase": "key", "aliases": [ "jdkUserInputPath" ] }, "jdkArchitectureOption": { "description": "JDK architecture", "ignoreCase": "all", "enum": [ "x86", "x64" ], "aliases": [ "jdkArchitecture" ] }, "gradleOptions": { "type": "string", "description": "Set GRADLE_OPTS", "ignoreCase": "key", "aliases": [ "gradleOpts" ] }, "sonarQubeRunAnalysis": { "type": "boolean", "description": "Run SonarQube or SonarCloud Analysis", "ignoreCase": "key", "aliases": [ "sqAnalysisEnabled" ] }, "sqGradlePluginVersionChoice": { "description": "SonarQube scanner for Gradle version", "ignoreCase": "all", "enum": [ "specify", "build" ] }, "sonarQubeGradlePluginVersion": { "type": "string", "description": "SonarQube scanner for Gradle plugin version", "ignoreCase": "key", "aliases": [ "sqGradlePluginVersion" ] }, "checkStyleRunAnalysis": { "type": "boolean", "description": "Run Checkstyle", "ignoreCase": "key", "aliases": [ "checkstyleAnalysisEnabled" ] }, "findBugsRunAnalysis": { "type": "boolean", "description": "Run FindBugs", "ignoreCase": "key", "aliases": [ "findbugsAnalysisEnabled" ] }, "pmdRunAnalysis": { "type": "boolean", "description": "Run PMD", "ignoreCase": "key", "aliases": [ "pmdAnalysisEnabled" ] }, "spotBugsAnalysis": { "type": "boolean", "description": "Run SpotBugs", "ignoreCase": "key", "aliases": [ "spotBugsAnalysisEnabled" ] }, "spotBugsGradlePluginVersionChoice": { "description": "Spotbugs plugin version", "ignoreCase": "all", "enum": [ "specify", "build" ] }, "spotbugsGradlePluginVersion": { "type": "string", "description": "Version number", "ignoreCase": "key", "aliases": [ "spotbugsGradlePluginVersion" ] } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "Gradle is deprecated - Build using a Gradle wrapper script", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Gradle\n\nBuild using a Gradle wrapper script", "ignoreCase": "value", "pattern": "^Gradle@3$" }, "inputs": { "description": "Gradle inputs", "properties": { "gradleWrapperFile": { "type": "string", "description": "Gradle wrapper", "ignoreCase": "key", "aliases": [ "wrapperScript" ] }, "workingDirectory": { "type": "string", "description": "Working directory", "ignoreCase": "key", "aliases": [ "cwd" ] }, "options": { "type": "string", "description": "Options", "ignoreCase": "key" }, "tasks": { "type": "string", "description": "Tasks", "ignoreCase": "key" }, "publishJUnitResults": { "type": "boolean", "description": "Publish to Azure Pipelines", "ignoreCase": "key" }, "testResultsFiles": { "type": "string", "description": "Test results files", "ignoreCase": "key" }, "testRunTitle": { "type": "string", "description": "Test run title", "ignoreCase": "key" }, "codeCoverageToolOption": { "description": "Code coverage tool", "ignoreCase": "all", "enum": [ "None", "Cobertura", "JaCoCo" ], "aliases": [ "codeCoverageTool" ] }, "codeCoverageClassFilesDirectories": { "type": "string", "description": "Class files directories", "ignoreCase": "key", "aliases": [ "classFilesDirectories" ] }, "codeCoverageClassFilter": { "type": "string", "description": "Class inclusion/exclusion filters", "ignoreCase": "key", "aliases": [ "classFilter" ] }, "codeCoverageFailIfEmpty": { "type": "boolean", "description": "Fail when code coverage results are missing", "ignoreCase": "key", "aliases": [ "failIfCoverageEmpty" ] }, "codeCoverageGradle5xOrHigher": { "type": "boolean", "description": "Gradle version >= 5.x", "ignoreCase": "key", "aliases": [ "gradle5xOrHigher" ] }, "javaHomeOption": { "description": "Set JAVA_HOME by", "ignoreCase": "all", "enum": [ "JDKVersion", "Path" ], "aliases": [ "javaHomeSelection" ] }, "jdkVersionOption": { "description": "JDK version", "ignoreCase": "all", "enum": [ "default", "1.17", "1.11", "1.10", "1.9", "1.8", "1.7", "1.6" ], "aliases": [ "jdkVersion" ] }, "jdkDirectory": { "type": "string", "description": "JDK path", "ignoreCase": "key", "aliases": [ "jdkUserInputPath" ] }, "jdkArchitectureOption": { "description": "JDK architecture", "ignoreCase": "all", "enum": [ "x86", "x64" ], "aliases": [ "jdkArchitecture" ] }, "gradleOptions": { "type": "string", "description": "Set GRADLE_OPTS", "ignoreCase": "key", "aliases": [ "gradleOpts" ] }, "sonarQubeRunAnalysis": { "type": "boolean", "description": "Run SonarQube or SonarCloud Analysis", "ignoreCase": "key", "aliases": [ "sqAnalysisEnabled" ] }, "sqGradlePluginVersionChoice": { "description": "SonarQube scanner for Gradle version", "ignoreCase": "all", "enum": [ "specify", "build" ] }, "sonarQubeGradlePluginVersion": { "type": "string", "description": "SonarQube scanner for Gradle plugin version", "ignoreCase": "key", "aliases": [ "sqGradlePluginVersion" ] }, "checkStyleRunAnalysis": { "type": "boolean", "description": "Run Checkstyle", "ignoreCase": "key", "aliases": [ "checkstyleAnalysisEnabled" ] }, "findBugsRunAnalysis": { "type": "boolean", "description": "Run FindBugs", "ignoreCase": "key", "aliases": [ "findbugsAnalysisEnabled" ] }, "pmdRunAnalysis": { "type": "boolean", "description": "Run PMD", "ignoreCase": "key", "aliases": [ "pmdAnalysisEnabled" ] }, "spotBugsAnalysis": { "type": "boolean", "description": "Run SpotBugs", "ignoreCase": "key", "aliases": [ "spotBugsAnalysisEnabled" ] }, "spotBugsGradlePluginVersionChoice": { "description": "Spotbugs plugin version", "ignoreCase": "all", "enum": [ "specify", "build" ] }, "spotbugsGradlePluginVersion": { "type": "string", "description": "Version number", "ignoreCase": "key", "aliases": [ "spotbugsGradlePluginVersion" ] } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Gradle\n\nBuild using a Gradle wrapper script", "ignoreCase": "value", "pattern": "^Gradle@1$" }, "inputs": { "description": "Gradle inputs", "properties": { "gradleWrapperFile": { "type": "string", "description": "Gradle Wrapper", "ignoreCase": "key", "aliases": [ "wrapperScript" ] }, "options": { "type": "string", "description": "Options", "ignoreCase": "key" }, "tasks": { "type": "string", "description": "Tasks", "ignoreCase": "key" }, "workingDirectory": { "type": "string", "description": "Working Directory", "ignoreCase": "key", "aliases": [ "cwd" ] }, "publishJUnitResults": { "type": "boolean", "description": "Publish to TFS/Team Services", "ignoreCase": "key" }, "testResultsFiles": { "type": "string", "description": "Test Results Files", "ignoreCase": "key" }, "testRunTitle": { "type": "string", "description": "Test Run Title", "ignoreCase": "key" }, "codeCoverageToolOption": { "description": "Code Coverage Tool", "ignoreCase": "all", "enum": [ "None", "Cobertura", "JaCoCo" ], "aliases": [ "codeCoverageTool" ] }, "codeCoverageClassFilesDirectories": { "type": "string", "description": "Class Files Directories", "ignoreCase": "key", "aliases": [ "classFilesDirectories" ] }, "codeCoverageClassFilter": { "type": "string", "description": "Class Inclusion/Exclusion Filters", "ignoreCase": "key", "aliases": [ "classFilter" ] }, "codeCoverageFailIfEmpty": { "type": "boolean", "description": "Fail When Code Coverage Results Are Missing", "ignoreCase": "key", "aliases": [ "failIfCoverageEmpty" ] }, "javaHomeOption": { "description": "Set JAVA_HOME by", "ignoreCase": "all", "enum": [ "JDKVersion", "Path" ], "aliases": [ "javaHomeSelection" ] }, "jdkVersionOption": { "description": "JDK Version", "ignoreCase": "all", "enum": [ "default", "1.9", "1.8", "1.7", "1.6" ], "aliases": [ "jdkVersion" ] }, "jdkDirectory": { "type": "string", "description": "JDK Path", "ignoreCase": "key", "aliases": [ "jdkUserInputPath" ] }, "jdkArchitectureOption": { "description": "JDK Architecture", "ignoreCase": "all", "enum": [ "x86", "x64" ], "aliases": [ "jdkArchitecture" ] }, "gradleOptions": { "type": "string", "description": "Set GRADLE_OPTS", "ignoreCase": "key", "aliases": [ "gradleOpts" ] }, "sonarQubeRunAnalysis": { "type": "boolean", "description": "Run SonarQube Analysis", "ignoreCase": "key", "aliases": [ "sqAnalysisEnabled" ] }, "sonarQubeServiceEndpoint": { "type": "string", "description": "SonarQube Endpoint", "ignoreCase": "key", "aliases": [ "sqConnectedServiceName" ] }, "sonarQubeProjectName": { "type": "string", "description": "SonarQube Project Name", "ignoreCase": "key", "aliases": [ "sqProjectName" ] }, "sonarQubeProjectKey": { "type": "string", "description": "SonarQube Project Key", "ignoreCase": "key", "aliases": [ "sqProjectKey" ] }, "sonarQubeProjectVersion": { "type": "string", "description": "SonarQube Project Version", "ignoreCase": "key", "aliases": [ "sqProjectVersion" ] }, "sonarQubeGradlePluginVersion": { "type": "string", "description": "SonarQube Gradle Plugin Version", "ignoreCase": "key", "aliases": [ "sqGradlePluginVersion" ] }, "sonarQubeSpecifyDB": { "type": "boolean", "description": "The SonarQube server version is lower than 5.2", "ignoreCase": "key", "aliases": [ "sqDbDetailsRequired" ] }, "sonarQubeDBUrl": { "type": "string", "description": "Db Connection String", "ignoreCase": "key", "aliases": [ "sqDbUrl" ] }, "sonarQubeDBUsername": { "type": "string", "description": "Db Username", "ignoreCase": "key", "aliases": [ "sqDbUsername" ] }, "sonarQubeDBPassword": { "type": "string", "description": "Db User Password", "ignoreCase": "key", "aliases": [ "sqDbPassword" ] }, "sonarQubeIncludeFullReport": { "type": "boolean", "description": "Include full analysis report in the build summary (SQ 5.3+)", "ignoreCase": "key", "aliases": [ "sqAnalysisIncludeFullReport" ] }, "sonarQubeFailWhenQualityGateFails": { "type": "boolean", "description": "Fail the build on quality gate failure (SQ 5.3+)", "ignoreCase": "key", "aliases": [ "sqAnalysisBreakBuildIfQualityGateFailed" ] }, "checkStyleRunAnalysis": { "type": "boolean", "description": "Run Checkstyle", "ignoreCase": "key", "aliases": [ "checkstyleAnalysisEnabled" ] }, "findBugsRunAnalysis": { "type": "boolean", "description": "Run FindBugs", "ignoreCase": "key", "aliases": [ "findbugsAnalysisEnabled" ] }, "pmdRunAnalysis": { "type": "boolean", "description": "Run PMD", "ignoreCase": "key", "aliases": [ "pmdAnalysisEnabled" ] } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "App Center distribute\n\nDistribute app builds to testers and users via Visual Studio App Center", "ignoreCase": "value", "pattern": "^AppCenterDistribute@1$" }, "inputs": { "description": "App Center distribute inputs", "properties": { "serverEndpoint": { "type": "string", "description": "App Center service connection", "ignoreCase": "key" }, "appSlug": { "type": "string", "description": "App slug", "ignoreCase": "key" }, "appFile": { "type": "string", "description": "Binary file path", "ignoreCase": "key", "aliases": [ "app" ] }, "symbolsOption": { "description": "Symbols type", "ignoreCase": "all", "enum": [ "Apple" ], "aliases": [ "symbolsType" ] }, "symbolsPath": { "type": "string", "description": "Symbols path", "ignoreCase": "key" }, "symbolsPdbFiles": { "type": "string", "description": "Symbols path (*.pdb)", "ignoreCase": "key", "aliases": [ "pdbPath" ] }, "symbolsDsymFiles": { "type": "string", "description": "dSYM path", "ignoreCase": "key", "aliases": [ "dsymPath" ] }, "symbolsMappingTxtFile": { "type": "string", "description": "Mapping file", "ignoreCase": "key", "aliases": [ "mappingTxtPath" ] }, "symbolsIncludeParentDirectory": { "type": "boolean", "description": "Include all items in parent folder", "ignoreCase": "key", "aliases": [ "packParentFolder" ] }, "releaseNotesOption": { "description": "Create release notes", "ignoreCase": "all", "enum": [ "input", "file" ], "aliases": [ "releaseNotesSelection" ] }, "releaseNotesInput": { "type": "string", "description": "Release notes", "ignoreCase": "key" }, "releaseNotesFile": { "type": "string", "description": "Release notes file", "ignoreCase": "key" }, "isMandatory": { "type": "boolean", "description": "Require users to update to this release", "ignoreCase": "key" }, "distributionGroupId": { "type": "string", "description": "Destination ID", "ignoreCase": "key", "aliases": [ "destinationId" ] } }, "additionalProperties": false, "required": [ "serverEndpoint", "appSlug", "appFile" ] } }, "deprecationMessage": "AppCenterDistribute is deprecated - Distribute app builds to testers and users via Visual Studio App Center", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "App Center distribute\n\nDistribute app builds to testers and users via Visual Studio App Center", "ignoreCase": "value", "pattern": "^AppCenterDistribute@2$" }, "inputs": { "description": "App Center distribute inputs", "properties": { "serverEndpoint": { "type": "string", "description": "App Center service connection", "ignoreCase": "key" }, "appSlug": { "type": "string", "description": "App slug", "ignoreCase": "key" }, "appFile": { "type": "string", "description": "Binary file path", "ignoreCase": "key", "aliases": [ "app" ] }, "symbolsOption": { "description": "Symbols type", "ignoreCase": "all", "enum": [ "Apple" ], "aliases": [ "symbolsType" ] }, "symbolsPath": { "type": "string", "description": "Symbols path", "ignoreCase": "key" }, "symbolsPdbFiles": { "type": "string", "description": "Symbols path (*.pdb)", "ignoreCase": "key", "aliases": [ "pdbPath" ] }, "symbolsDsymFiles": { "type": "string", "description": "dSYM path", "ignoreCase": "key", "aliases": [ "dsymPath" ] }, "symbolsMappingTxtFile": { "type": "string", "description": "Mapping file", "ignoreCase": "key", "aliases": [ "mappingTxtPath" ] }, "symbolsIncludeParentDirectory": { "type": "boolean", "description": "Include all items in parent folder", "ignoreCase": "key", "aliases": [ "packParentFolder" ] }, "releaseNotesOption": { "description": "Create release notes", "ignoreCase": "all", "enum": [ "input", "file" ], "aliases": [ "releaseNotesSelection" ] }, "releaseNotesInput": { "type": "string", "description": "Release notes", "ignoreCase": "key" }, "releaseNotesFile": { "type": "string", "description": "Release notes file", "ignoreCase": "key" }, "isMandatory": { "type": "boolean", "description": "Require users to update to this release", "ignoreCase": "key" }, "distributionGroupId": { "type": "string", "description": "Destination IDs", "ignoreCase": "key", "aliases": [ "destinationIds", "destinationId" ] } }, "additionalProperties": false, "required": [ "serverEndpoint", "appSlug", "appFile" ] } }, "deprecationMessage": "AppCenterDistribute is deprecated - Distribute app builds to testers and users via Visual Studio App Center", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "App Center distribute\n\nDistribute app builds to testers and users via Visual Studio App Center", "ignoreCase": "value", "pattern": "^AppCenterDistribute@3$" }, "inputs": { "description": "App Center distribute inputs", "properties": { "serverEndpoint": { "type": "string", "description": "App Center service connection", "ignoreCase": "key" }, "appSlug": { "type": "string", "description": "App slug", "ignoreCase": "key" }, "appFile": { "type": "string", "description": "Binary file path", "ignoreCase": "key", "aliases": [ "app" ] }, "buildVersion": { "type": "string", "description": "Build version", "ignoreCase": "key" }, "symbolsOption": { "description": "Symbols type", "ignoreCase": "all", "enum": [ "Apple", "Android", "UWP" ], "aliases": [ "symbolsType" ] }, "symbolsPath": { "type": "string", "description": "Symbols path", "ignoreCase": "key" }, "appxsymPath": { "type": "string", "description": "Symbols path (*.appxsym)", "ignoreCase": "key" }, "symbolsDsymFiles": { "type": "string", "description": "dSYM path", "ignoreCase": "key", "aliases": [ "dsymPath" ] }, "symbolsMappingTxtFile": { "type": "string", "description": "Mapping file", "ignoreCase": "key", "aliases": [ "mappingTxtPath" ] }, "nativeLibrariesPath": { "type": "string", "description": "Native Library File Path", "ignoreCase": "key" }, "symbolsIncludeParentDirectory": { "type": "boolean", "description": "Include all items in parent folder", "ignoreCase": "key", "aliases": [ "packParentFolder" ] }, "releaseNotesOption": { "description": "Create release notes", "ignoreCase": "all", "enum": [ "input", "file" ], "aliases": [ "releaseNotesSelection" ] }, "releaseNotesInput": { "type": "string", "description": "Release notes", "ignoreCase": "key" }, "releaseNotesFile": { "type": "string", "description": "Release notes file", "ignoreCase": "key" }, "isMandatory": { "type": "boolean", "description": "Require users to update to this release", "ignoreCase": "key" }, "destinationType": { "description": "Release destination", "ignoreCase": "all", "enum": [ "groups", "store" ] }, "distributionGroupId": { "type": "string", "description": "Destination IDs", "ignoreCase": "key", "aliases": [ "destinationGroupIds" ] }, "destinationStoreId": { "type": "string", "description": "Destination ID", "ignoreCase": "key" }, "isSilent": { "type": "boolean", "description": "Do not notify testers. Release will still be available to install.", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "serverEndpoint", "appSlug", "appFile" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "App Center Distribute\n\nDistribute app builds to testers and users via App Center", "ignoreCase": "value", "pattern": "^AppCenterDistribute@0$" }, "inputs": { "description": "App Center Distribute inputs", "properties": { "serverEndpoint": { "type": "string", "description": "App Center connection", "ignoreCase": "key" }, "appSlug": { "type": "string", "description": "App slug", "ignoreCase": "key" }, "appFile": { "type": "string", "description": "Binary file path", "ignoreCase": "key", "aliases": [ "app" ] }, "symbolsOption": { "description": "Symbols type", "ignoreCase": "all", "enum": [ "Apple" ], "aliases": [ "symbolsType" ] }, "symbolsPath": { "type": "string", "description": "Symbols path", "ignoreCase": "key" }, "symbolsPdbFiles": { "type": "string", "description": "Symbols path (*.pdb)", "ignoreCase": "key", "aliases": [ "pdbPath" ] }, "symbolsDsymFiles": { "type": "string", "description": "dSYM path", "ignoreCase": "key", "aliases": [ "dsymPath" ] }, "symbolsMappingTxtFile": { "type": "string", "description": "Mapping file", "ignoreCase": "key", "aliases": [ "mappingTxtPath" ] }, "symbolsIncludeParentDirectory": { "type": "boolean", "description": "Include all items in parent folder", "ignoreCase": "key", "aliases": [ "packParentFolder" ] }, "releaseNotesOption": { "description": "Create release notes", "ignoreCase": "all", "enum": [ "input", "file" ], "aliases": [ "releaseNotesSelection" ] }, "releaseNotesInput": { "type": "string", "description": "Release notes", "ignoreCase": "key" }, "releaseNotesFile": { "type": "string", "description": "Release notes file", "ignoreCase": "key" }, "distributionGroupId": { "type": "string", "description": "Distribution group ID", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "serverEndpoint", "appSlug", "appFile" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "NuGet tool installer\n\nAcquires a specific version of NuGet from the internet or the tools cache and adds it to the PATH. Use this task to change the version of NuGet used in the NuGet tasks.", "ignoreCase": "value", "pattern": "^NuGetToolInstaller@0$" }, "inputs": { "description": "NuGet tool installer inputs", "properties": { "versionSpec": { "type": "string", "description": "Version of NuGet.exe to install", "ignoreCase": "key" }, "checkLatest": { "type": "boolean", "description": "Always download the latest matching version", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "NuGet tool installer\n\nAcquires a specific version of NuGet from the internet or the tools cache and adds it to the PATH. Use this task to change the version of NuGet used in the NuGet tasks.", "ignoreCase": "value", "pattern": "^NuGetToolInstaller@1$" }, "inputs": { "description": "NuGet tool installer inputs", "properties": { "versionSpec": { "type": "string", "description": "Version of NuGet.exe to install", "ignoreCase": "key" }, "checkLatest": { "type": "boolean", "description": "Always check for new versions", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Jenkins download artifacts\n\nDownload artifacts produced by a Jenkins job", "ignoreCase": "value", "pattern": "^JenkinsDownloadArtifacts@1$" }, "inputs": { "description": "Jenkins download artifacts inputs", "properties": { "jenkinsServerConnection": { "type": "string", "description": "Jenkins service connection", "ignoreCase": "key", "aliases": [ "serverEndpoint" ] }, "jobName": { "type": "string", "description": "Job name", "ignoreCase": "key" }, "jenkinsJobType": { "type": "string", "description": "Jenkins job type", "ignoreCase": "key" }, "saveTo": { "type": "string", "description": "Save to", "ignoreCase": "key" }, "jenkinsBuild": { "description": "Download artifacts produced by", "ignoreCase": "all", "enum": [ "LastSuccessfulBuild", "BuildNumber" ] }, "jenkinsBuildNumber": { "type": "string", "description": "Jenkins build number", "ignoreCase": "key" }, "itemPattern": { "type": "string", "description": "Item Pattern", "ignoreCase": "key" }, "downloadCommitsAndWorkItems": { "type": "boolean", "description": "Download Commits and WorkItems", "ignoreCase": "key" }, "startJenkinsBuildNumber": { "type": "string", "description": "Download commits and work items from", "ignoreCase": "key" }, "artifactDetailsFileNameSuffix": { "type": "string", "description": "Commit and WorkItem FileName", "ignoreCase": "key" }, "propagatedArtifacts": { "type": "boolean", "description": "Artifacts are propagated to Azure", "ignoreCase": "key" }, "artifactProvider": { "description": "Artifact Provider", "ignoreCase": "all", "enum": [ "azureStorage" ] }, "ConnectedServiceNameARM": { "type": "string", "description": "Azure Subscription", "ignoreCase": "key" }, "storageAccountName": { "type": "string", "description": "Storage Account Name", "ignoreCase": "key" }, "containerName": { "type": "string", "description": "Container Name", "ignoreCase": "key" }, "commonVirtualPath": { "type": "string", "description": "Common Virtual Path", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "jenkinsServerConnection", "jobName" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Jenkins download artifacts\n\nDownload artifacts produced by a Jenkins job", "ignoreCase": "value", "pattern": "^JenkinsDownloadArtifacts@2$" }, "inputs": { "description": "Jenkins download artifacts inputs", "properties": { "jenkinsServerConnection": { "type": "string", "description": "Jenkins service connection", "ignoreCase": "key", "aliases": [ "serverEndpoint" ] }, "jobName": { "type": "string", "description": "Job name", "ignoreCase": "key" }, "jenkinsJobType": { "type": "string", "description": "Jenkins job type", "ignoreCase": "key" }, "saveTo": { "type": "string", "description": "Save to", "ignoreCase": "key" }, "jenkinsBuild": { "description": "Download artifacts produced by", "ignoreCase": "all", "enum": [ "LastSuccessfulBuild", "BuildNumber" ] }, "jenkinsBuildNumber": { "type": "string", "description": "Jenkins build number", "ignoreCase": "key" }, "itemPattern": { "type": "string", "description": "Item Pattern", "ignoreCase": "key" }, "downloadCommitsAndWorkItems": { "type": "boolean", "description": "Download Commits and WorkItems", "ignoreCase": "key" }, "startJenkinsBuildNumber": { "type": "string", "description": "Download commits and work items from", "ignoreCase": "key" }, "artifactDetailsFileNameSuffix": { "type": "string", "description": "Commit and WorkItem FileName", "ignoreCase": "key" }, "propagatedArtifacts": { "type": "boolean", "description": "Artifacts are propagated to Azure", "ignoreCase": "key" }, "artifactProvider": { "description": "Artifact Provider", "ignoreCase": "all", "enum": [ "azureStorage" ] }, "ConnectedServiceNameARM": { "type": "string", "description": "Azure Subscription", "ignoreCase": "key" }, "storageAccountName": { "type": "string", "description": "Storage Account Name", "ignoreCase": "key" }, "containerName": { "type": "string", "description": "Container Name", "ignoreCase": "key" }, "commonVirtualPath": { "type": "string", "description": "Common Virtual Path", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "jenkinsServerConnection", "jobName" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure Functions for container\n\nUpdate a function app with a Docker container", "ignoreCase": "value", "pattern": "^AzureFunctionAppContainer@1$" }, "inputs": { "description": "Azure Functions for container inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key" }, "appName": { "type": "string", "description": "App name", "ignoreCase": "key" }, "deployToSlotOrASE": { "type": "boolean", "description": "Deploy to Slot or App Service Environment", "ignoreCase": "key" }, "resourceGroupName": { "type": "string", "description": "Resource group", "ignoreCase": "key" }, "slotName": { "type": "string", "description": "Slot", "ignoreCase": "key" }, "imageName": { "type": "string", "description": "Image name", "ignoreCase": "key" }, "containerCommand": { "type": "string", "description": "Startup command ", "ignoreCase": "key" }, "appSettings": { "type": "string", "description": "App settings", "ignoreCase": "key" }, "configurationStrings": { "type": "string", "description": "Configuration settings", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscription", "appName", "imageName" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Decrypt file (OpenSSL)\n\nDecrypt a file using OpenSSL", "ignoreCase": "value", "pattern": "^DecryptFile@1$" }, "inputs": { "description": "Decrypt file (OpenSSL) inputs", "properties": { "cipher": { "type": "string", "description": "Cypher", "ignoreCase": "key" }, "inFile": { "type": "string", "description": "Encrypted file", "ignoreCase": "key" }, "passphrase": { "type": "string", "description": "Passphrase", "ignoreCase": "key" }, "outFile": { "type": "string", "description": "Decrypted file path", "ignoreCase": "key" }, "workingDirectory": { "type": "string", "description": "Working directory", "ignoreCase": "key", "aliases": [ "cwd" ] } }, "additionalProperties": false, "required": [ "inFile", "passphrase" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Package and deploy Helm charts\n\nDeploy, configure, update a Kubernetes cluster in Azure Container Service by running helm commands", "ignoreCase": "value", "pattern": "^HelmDeploy@1$" }, "inputs": { "description": "Package and deploy Helm charts inputs", "properties": { "connectionType": { "description": "Connection Type", "ignoreCase": "all", "enum": [ "Azure Resource Manager", "Kubernetes Service Connection", "None" ] }, "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "azureSubscriptionEndpoint" ] }, "azureResourceGroup": { "type": "string", "description": "Resource group", "ignoreCase": "key" }, "kubernetesCluster": { "type": "string", "description": "Kubernetes cluster", "ignoreCase": "key" }, "useClusterAdmin": { "type": "boolean", "description": "Use cluster admin credentials", "ignoreCase": "key" }, "kubernetesServiceConnection": { "type": "string", "description": "Kubernetes Service Connection", "ignoreCase": "key", "aliases": [ "kubernetesServiceEndpoint" ] }, "namespace": { "type": "string", "description": "Namespace", "ignoreCase": "key" }, "azureSubscriptionForACR": { "type": "string", "description": "Azure subscription for Container Registry", "ignoreCase": "key", "aliases": [ "azureSubscriptionEndpointForACR" ] }, "azureResourceGroupForACR": { "type": "string", "description": "Resource group", "ignoreCase": "key" }, "azureContainerRegistry": { "type": "string", "description": "Azure Container Registry", "ignoreCase": "key" }, "command": { "description": "Command", "ignoreCase": "all", "enum": [ "create", "delete", "expose", "get", "init", "install", "login", "logout", "ls", "package", "rollback", "upgrade", "uninstall" ] }, "chartType": { "description": "Chart Type", "ignoreCase": "all", "enum": [ "Name", "FilePath" ] }, "chartName": { "type": "string", "description": "Chart Name", "ignoreCase": "key" }, "chartPath": { "type": "string", "description": "Chart Path", "ignoreCase": "key" }, "chartVersion": { "type": "string", "description": "Version", "ignoreCase": "key", "aliases": [ "version" ] }, "releaseName": { "type": "string", "description": "Release Name", "ignoreCase": "key" }, "overrideValues": { "type": "string", "description": "Set Values", "ignoreCase": "key" }, "valueFile": { "type": "string", "description": "Value File", "ignoreCase": "key" }, "destination": { "type": "string", "description": "Destination", "ignoreCase": "key" }, "canaryImage": { "type": "boolean", "description": "Use canary image version.", "ignoreCase": "key", "aliases": [ "canaryimage" ] }, "upgradeTiller": { "type": "boolean", "description": "Upgrade Tiller", "ignoreCase": "key", "aliases": [ "upgradetiller" ] }, "updateDependency": { "type": "boolean", "description": "Update Dependency", "ignoreCase": "key", "aliases": [ "updatedependency" ] }, "save": { "type": "boolean", "description": "Save", "ignoreCase": "key" }, "install": { "type": "boolean", "description": "Install if release not present.", "ignoreCase": "key" }, "recreate": { "type": "boolean", "description": "Recreate Pods.", "ignoreCase": "key" }, "resetValues": { "type": "boolean", "description": "Reset Values.", "ignoreCase": "key" }, "force": { "type": "boolean", "description": "Force", "ignoreCase": "key" }, "waitForExecution": { "type": "boolean", "description": "Wait", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "enableTls": { "type": "boolean", "description": "Enable TLS", "ignoreCase": "key" }, "caCert": { "type": "string", "description": "CA certificate", "ignoreCase": "key" }, "certificate": { "type": "string", "description": "Certificate", "ignoreCase": "key" }, "privatekey": { "type": "string", "description": "Key", "ignoreCase": "key" }, "tillerNamespace": { "type": "string", "description": "Tiller namespace", "ignoreCase": "key", "aliases": [ "tillernamespace" ] }, "failOnStderr": { "type": "boolean", "description": "Fail on Standard Error", "ignoreCase": "key" }, "publishPipelineMetadata": { "type": "boolean", "description": "Publish pipeline metadata", "ignoreCase": "key" }, "chartNameForACR": { "type": "string", "description": "Chart Name For Azure Container Registry", "ignoreCase": "key" }, "chartPathForACR": { "type": "string", "description": "Chart Path for Azure Container Registry", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscriptionForACR", "azureResourceGroupForACR", "azureContainerRegistry" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Package and deploy Helm charts\n\nDeploy, configure, update a Kubernetes cluster in Azure Container Service by running helm commands", "ignoreCase": "value", "pattern": "^HelmDeploy@0$" }, "inputs": { "description": "Package and deploy Helm charts inputs", "properties": { "connectionType": { "description": "Connection Type", "ignoreCase": "all", "enum": [ "Azure Resource Manager", "Kubernetes Service Connection", "None" ] }, "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "azureSubscriptionEndpoint" ] }, "azureResourceGroup": { "type": "string", "description": "Resource group", "ignoreCase": "key" }, "kubernetesCluster": { "type": "string", "description": "Kubernetes cluster", "ignoreCase": "key" }, "useClusterAdmin": { "type": "boolean", "description": "Use cluster admin credentials", "ignoreCase": "key" }, "kubernetesServiceConnection": { "type": "string", "description": "Kubernetes Service Connection", "ignoreCase": "key", "aliases": [ "kubernetesServiceEndpoint" ] }, "namespace": { "type": "string", "description": "Namespace", "ignoreCase": "key" }, "azureSubscriptionForACR": { "type": "string", "description": "Azure subscription for Container Registry", "ignoreCase": "key", "aliases": [ "azureSubscriptionEndpointForACR" ] }, "azureResourceGroupForACR": { "type": "string", "description": "Resource group", "ignoreCase": "key" }, "azureContainerRegistry": { "type": "string", "description": "Azure Container Registry", "ignoreCase": "key" }, "command": { "description": "Command", "ignoreCase": "all", "enum": [ "create", "delete", "expose", "get", "init", "install", "login", "logout", "ls", "package", "rollback", "save", "upgrade", "uninstall" ] }, "chartType": { "description": "Chart Type", "ignoreCase": "all", "enum": [ "Name", "FilePath" ] }, "chartName": { "type": "string", "description": "Chart Name", "ignoreCase": "key" }, "chartPath": { "type": "string", "description": "Chart Path", "ignoreCase": "key" }, "chartVersion": { "type": "string", "description": "Version", "ignoreCase": "key", "aliases": [ "version" ] }, "releaseName": { "type": "string", "description": "Release Name", "ignoreCase": "key" }, "overrideValues": { "type": "string", "description": "Set Values", "ignoreCase": "key" }, "valueFile": { "type": "string", "description": "Value File", "ignoreCase": "key" }, "destination": { "type": "string", "description": "Destination", "ignoreCase": "key" }, "canaryImage": { "type": "boolean", "description": "Use canary image version.", "ignoreCase": "key", "aliases": [ "canaryimage" ] }, "upgradeTiller": { "type": "boolean", "description": "Upgrade Tiller", "ignoreCase": "key", "aliases": [ "upgradetiller" ] }, "updateDependency": { "type": "boolean", "description": "Update Dependency", "ignoreCase": "key", "aliases": [ "updatedependency" ] }, "save": { "type": "boolean", "description": "Save", "ignoreCase": "key" }, "install": { "type": "boolean", "description": "Install if release not present.", "ignoreCase": "key" }, "recreate": { "type": "boolean", "description": "Recreate Pods.", "ignoreCase": "key" }, "resetValues": { "type": "boolean", "description": "Reset Values.", "ignoreCase": "key" }, "force": { "type": "boolean", "description": "Force", "ignoreCase": "key" }, "waitForExecution": { "type": "boolean", "description": "Wait", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "enableTls": { "type": "boolean", "description": "Enable TLS", "ignoreCase": "key" }, "caCert": { "type": "string", "description": "CA certificate", "ignoreCase": "key" }, "certificate": { "type": "string", "description": "Certificate", "ignoreCase": "key" }, "privatekey": { "type": "string", "description": "Key", "ignoreCase": "key" }, "tillerNamespace": { "type": "string", "description": "Tiller namespace", "ignoreCase": "key", "aliases": [ "tillernamespace" ] }, "failOnStderr": { "type": "boolean", "description": "Fail on Standard Error", "ignoreCase": "key" }, "publishPipelineMetadata": { "type": "boolean", "description": "Publish pipeline metadata", "ignoreCase": "key" }, "chartNameForACR": { "type": "string", "description": "Chart Name For Azure Container Registry", "ignoreCase": "key" }, "chartPathForACR": { "type": "string", "description": "Chart Path for Azure Container Registry", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscriptionForACR", "azureResourceGroupForACR", "azureContainerRegistry" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Install Apple certificate\n\nInstall an Apple certificate required to build on a macOS agent machine", "ignoreCase": "value", "pattern": "^InstallAppleCertificate@2$" }, "inputs": { "description": "Install Apple certificate inputs", "properties": { "certSecureFile": { "type": "string", "description": "Certificate (P12)", "ignoreCase": "key" }, "certPwd": { "type": "string", "description": "Certificate (P12) password", "ignoreCase": "key" }, "keychain": { "description": "Keychain", "ignoreCase": "all", "enum": [ "default", "temp", "custom" ] }, "keychainPassword": { "type": "string", "description": "Keychain password", "ignoreCase": "key" }, "customKeychainPath": { "type": "string", "description": "Custom keychain path", "ignoreCase": "key" }, "deleteCert": { "type": "boolean", "description": "Delete certificate from keychain", "ignoreCase": "key" }, "deleteCustomKeychain": { "type": "boolean", "description": "Delete custom keychain", "ignoreCase": "key" }, "signingIdentity": { "type": "string", "description": "Certificate signing identity", "ignoreCase": "key" }, "setUpPartitionIdACLForPrivateKey": { "type": "boolean", "description": "Set up partition_id ACL for the imported private key", "ignoreCase": "key" }, "opensslPkcsArgs": { "type": "string", "description": "OpenSSL arguments for PKCS12", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "certSecureFile" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Install Apple Certificate\n\nInstall an Apple certificate required to build on a macOS agent", "ignoreCase": "value", "pattern": "^InstallAppleCertificate@1$" }, "inputs": { "description": "Install Apple Certificate inputs", "properties": { "certSecureFile": { "type": "string", "description": "Certificate (P12)", "ignoreCase": "key" }, "certPwd": { "type": "string", "description": "Certificate (P12) password", "ignoreCase": "key" }, "keychain": { "description": "Keychain", "ignoreCase": "all", "enum": [ "default", "temp", "custom" ] }, "keychainPassword": { "type": "string", "description": "Keychain password", "ignoreCase": "key" }, "customKeychainPath": { "type": "string", "description": "Custom keychain path", "ignoreCase": "key" }, "deleteCert": { "type": "boolean", "description": "Delete certificate from keychain", "ignoreCase": "key" }, "deleteCustomKeychain": { "type": "boolean", "description": "Delete custom keychain", "ignoreCase": "key" }, "signingIdentity": { "type": "string", "description": "Certificate signing identity", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "certSecureFile" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Install Apple Certificate\n\nInstall an Apple certificate required to build on a macOS agent", "ignoreCase": "value", "pattern": "^InstallAppleCertificate@0$" }, "inputs": { "description": "Install Apple Certificate inputs", "properties": { "certSecureFile": { "type": "string", "description": "Certificate (P12)", "ignoreCase": "key" }, "certPwd": { "type": "string", "description": "Certificate (P12) Password", "ignoreCase": "key" }, "keychain": { "description": "Keychain", "ignoreCase": "all", "enum": [ "default", "temp", "custom" ] }, "keychainPassword": { "type": "string", "description": "Keychain Password", "ignoreCase": "key" }, "customKeychainPath": { "type": "string", "description": "Custom Keychain Path", "ignoreCase": "key" }, "deleteCert": { "type": "boolean", "description": "Delete Certificate from Keychain", "ignoreCase": "key" }, "deleteCustomKeychain": { "type": "boolean", "description": "Delete Custom Keychain", "ignoreCase": "key" }, "signingIdentity": { "type": "string", "description": "Certificate Signing Identity", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "certSecureFile" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Invoke Azure Function\n\nInvoke an Azure Function", "ignoreCase": "value", "pattern": "^AzureFunction@1$" }, "inputs": { "description": "Invoke Azure Function inputs", "properties": { "function": { "type": "string", "description": "Azure function URL", "ignoreCase": "key" }, "key": { "type": "string", "description": "Function key", "ignoreCase": "key" }, "method": { "description": "Method", "ignoreCase": "all", "enum": [ "OPTIONS", "GET", "HEAD", "POST", "PUT", "DELETE", "TRACE", "PATCH" ] }, "headers": { "type": "string", "description": "Headers", "ignoreCase": "key" }, "queryParameters": { "type": "string", "description": "Query parameters", "ignoreCase": "key" }, "body": { "type": "string", "description": "Body", "ignoreCase": "key" }, "waitForCompletion": { "description": "Completion event", "ignoreCase": "all", "enum": [ "true", "false" ] }, "successCriteria": { "type": "string", "description": "Success criteria", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "function", "key" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Invoke Azure Function\n\nInvoke Azure function as a part of your process.", "ignoreCase": "value", "pattern": "^AzureFunction@0$" }, "inputs": { "description": "Invoke Azure Function inputs", "properties": { "function": { "type": "string", "description": "Azure function url", "ignoreCase": "key" }, "key": { "type": "string", "description": "Function key", "ignoreCase": "key" }, "method": { "description": "Method", "ignoreCase": "all", "enum": [ "OPTIONS", "GET", "HEAD", "POST", "PUT", "DELETE", "TRACE", "PATCH" ] }, "headers": { "type": "string", "description": "Headers", "ignoreCase": "key" }, "queryParameters": { "type": "string", "description": "Query parameters", "ignoreCase": "key" }, "body": { "type": "string", "description": "Body", "ignoreCase": "key" }, "waitForCompletion": { "description": "Complete based on", "ignoreCase": "all", "enum": [ "true", "false" ] }, "successCriteria": { "type": "string", "description": "Success criteria", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "function", "key" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Open Policy Agent Installer\n\nInstall Open Policy Agent on agent machine", "ignoreCase": "value", "pattern": "^OpenPolicyAgentInstaller@0$" }, "inputs": { "description": "Open Policy Agent Installer inputs", "properties": { "opaVersion": { "type": "string", "description": "OPA Version Spec", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Download GitHub Release\n\nDownloads a GitHub Release from a repository", "ignoreCase": "value", "pattern": "^DownloadGitHubRelease@0$" }, "inputs": { "description": "Download GitHub Release inputs", "properties": { "connection": { "type": "string", "description": "GitHub Connection", "ignoreCase": "key" }, "userRepository": { "type": "string", "description": "Repository", "ignoreCase": "key" }, "defaultVersionType": { "description": "Default version", "ignoreCase": "all", "enum": [ "latest", "specificVersion", "specificTag" ] }, "version": { "type": "string", "description": "Release", "ignoreCase": "key" }, "itemPattern": { "type": "string", "description": "Item Pattern", "ignoreCase": "key" }, "downloadPath": { "type": "string", "description": "Destination directory", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "connection", "userRepository" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "SSH\n\nRun shell commands or a script on a remote machine using SSH", "ignoreCase": "value", "pattern": "^SSH@0$" }, "inputs": { "description": "SSH inputs", "properties": { "sshEndpoint": { "type": "string", "description": "SSH service connection", "ignoreCase": "key" }, "runOptions": { "description": "Run", "ignoreCase": "all", "enum": [ "commands", "script", "inline" ] }, "commands": { "type": "string", "description": "Commands", "ignoreCase": "key" }, "scriptPath": { "type": "string", "description": "Shell script path", "ignoreCase": "key" }, "inline": { "type": "string", "description": "Inline Script", "ignoreCase": "key" }, "interpreterCommand": { "type": "string", "description": "Interpreter command", "ignoreCase": "key" }, "args": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "failOnStdErr": { "type": "boolean", "description": "Fail on STDERR", "ignoreCase": "key" }, "interactiveSession": { "type": "boolean", "description": "Enable interactive session", "ignoreCase": "key" }, "readyTimeout": { "type": "string", "description": "SSH handshake timeout", "ignoreCase": "key" }, "interactiveKeyboardAuthentication": { "type": "boolean", "description": "Use interactive-keyboard authentication", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "sshEndpoint" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Publish pipeline artifact\n\nPublish a local directory or file as a named artifact for the current pipeline", "ignoreCase": "value", "pattern": "^PublishPipelineArtifact@0$" }, "inputs": { "description": "Publish pipeline artifact inputs", "properties": { "artifactName": { "type": "string", "description": "The name of this artifact", "ignoreCase": "key" }, "targetPath": { "type": "string", "description": "Path to publish", "ignoreCase": "key" }, "properties": { "type": "string", "description": "Custom properties", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "targetPath" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Publish Pipeline Artifacts\n\nPublish (upload) a file or directory as a named artifact for the current run", "ignoreCase": "value", "pattern": "^PublishPipelineArtifact@1$" }, "inputs": { "description": "Publish Pipeline Artifacts inputs", "properties": { "targetPath": { "type": "string", "description": "File or directory path", "ignoreCase": "key", "aliases": [ "path" ] }, "artifact": { "type": "string", "description": "Artifact name", "ignoreCase": "key", "aliases": [ "artifactName" ] }, "publishLocation": { "description": "Artifact publish location", "ignoreCase": "all", "enum": [ "pipeline", "filepath" ], "aliases": [ "artifactType" ] }, "fileSharePath": { "type": "string", "description": "File share path", "ignoreCase": "key" }, "parallel": { "type": "boolean", "description": "Parallel copy", "ignoreCase": "key" }, "parallelCount": { "type": "integer", "description": "Parallel count", "ignoreCase": "key" }, "properties": { "type": "string", "description": "Custom properties", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "SonarQube for MSBuild - Begin Analysis\n\n[DEPRECATED] Fetch the Quality Profile from SonarQube to configure the analysis", "ignoreCase": "value", "pattern": "^SonarQubePreBuild@1$" }, "inputs": { "description": "SonarQube for MSBuild - Begin Analysis inputs", "properties": { "projectKey": { "type": "string", "description": "Project Key", "ignoreCase": "key" }, "projectName": { "type": "string", "description": "Project Name", "ignoreCase": "key" }, "projectVersion": { "type": "string", "description": "Project Version", "ignoreCase": "key" }, "connectedServiceName": { "type": "string", "description": "SonarQube Endpoint", "ignoreCase": "key" }, "dbUrl": { "type": "string", "description": "Db Connection String", "ignoreCase": "key" }, "dbUsername": { "type": "string", "description": "Db UserName", "ignoreCase": "key" }, "dbPassword": { "type": "string", "description": "Db User Password", "ignoreCase": "key" }, "cmdLineArgs": { "type": "string", "description": "Additional Settings", "ignoreCase": "key" }, "configFile": { "type": "string", "description": "Settings File", "ignoreCase": "key" }, "includeFullReport": { "type": "boolean", "description": "Include full analysis report in the build summary (SQ 5.3+)", "ignoreCase": "key" }, "breakBuild": { "type": "boolean", "description": "Fail the build on quality gate failure (SQ 5.3+)", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "projectKey", "projectName", "connectedServiceName" ] } }, "deprecationMessage": "SonarQubePreBuild is deprecated - [DEPRECATED] Fetch the Quality Profile from SonarQube to configure the analysis", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Download artifacts from file share\n\nDownload artifacts from a file share, like \\\\share\\drop", "ignoreCase": "value", "pattern": "^DownloadFileshareArtifacts@1$" }, "inputs": { "description": "Download artifacts from file share inputs", "properties": { "filesharePath": { "type": "string", "description": "File share path", "ignoreCase": "key" }, "artifactName": { "type": "string", "description": "Artifact name", "ignoreCase": "key" }, "itemPattern": { "type": "string", "description": "Matching pattern", "ignoreCase": "key" }, "downloadPath": { "type": "string", "description": "Download path", "ignoreCase": "key" }, "parallelizationLimit": { "type": "string", "description": "Parallelization limit", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "filesharePath", "artifactName" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Kubectl\n\nDeploy, configure, update a Kubernetes cluster in Azure Container Service by running kubectl commands", "ignoreCase": "value", "pattern": "^Kubernetes@0$" }, "inputs": { "description": "Kubectl inputs", "properties": { "kubernetesServiceConnection": { "type": "string", "description": "Kubernetes service connection", "ignoreCase": "key", "aliases": [ "kubernetesServiceEndpoint" ] }, "namespace": { "type": "string", "description": "Namespace", "ignoreCase": "key" }, "command": { "description": "Command", "ignoreCase": "all", "enum": [ "apply", "create", "delete", "exec", "expose", "get", "logs", "run", "set", "top" ] }, "useConfigurationFile": { "type": "boolean", "description": "Use Configuration files", "ignoreCase": "key" }, "configuration": { "type": "string", "description": "Configuration file", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "secretType": { "description": "Type of secret", "ignoreCase": "all", "enum": [ "dockerRegistry", "generic" ] }, "secretArguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "containerRegistryType": { "description": "Container Registry type", "ignoreCase": "all", "enum": [ "Azure Container Registry", "Container Registry" ] }, "dockerRegistryConnection": { "type": "string", "description": "Docker Registry service connection", "ignoreCase": "key", "aliases": [ "dockerRegistryEndpoint" ] }, "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "azureSubscriptionEndpoint" ] }, "azureContainerRegistry": { "type": "string", "description": "Azure Container Registry", "ignoreCase": "key" }, "secretName": { "type": "string", "description": "Secret name", "ignoreCase": "key" }, "forceUpdate": { "type": "boolean", "description": "Force update secret", "ignoreCase": "key" }, "configMapName": { "type": "string", "description": "ConfigMap name", "ignoreCase": "key" }, "forceUpdateConfigMap": { "type": "boolean", "description": "Force update configmap", "ignoreCase": "key" }, "useConfigMapFile": { "type": "boolean", "description": "Use file", "ignoreCase": "key" }, "configMapFile": { "type": "string", "description": "ConfigMap file", "ignoreCase": "key" }, "configMapArguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "versionOrLocation": { "description": "Kubectl", "ignoreCase": "all", "enum": [ "version", "location" ] }, "versionSpec": { "type": "string", "description": "Version spec", "ignoreCase": "key" }, "checkLatest": { "type": "boolean", "description": "Check for latest version", "ignoreCase": "key" }, "specifyLocation": { "type": "string", "description": "Path to Kubectl", "ignoreCase": "key" }, "workingDirectory": { "type": "string", "description": "Working directory", "ignoreCase": "key", "aliases": [ "cwd" ] }, "outputFormat": { "description": "Output format", "ignoreCase": "all", "enum": [ "json", "yaml" ] }, "kubectlOutput": { "type": "string", "description": "Output variable name", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "Kubernetes is deprecated - Deploy, configure, update a Kubernetes cluster in Azure Container Service by running kubectl commands", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Kubectl\n\nDeploy, configure, update a Kubernetes cluster in Azure Container Service by running kubectl commands", "ignoreCase": "value", "pattern": "^Kubernetes@1$" }, "inputs": { "description": "Kubectl inputs", "properties": { "connectionType": { "description": "Service connection type", "ignoreCase": "all", "enum": [ "Azure Resource Manager", "Kubernetes Service Connection", "None" ] }, "kubernetesServiceEndpoint": { "type": "string", "description": "Kubernetes service connection", "ignoreCase": "key" }, "azureSubscriptionEndpoint": { "type": "string", "description": "Azure subscription", "ignoreCase": "key" }, "azureResourceGroup": { "type": "string", "description": "Resource group", "ignoreCase": "key" }, "kubernetesCluster": { "type": "string", "description": "Kubernetes cluster", "ignoreCase": "key" }, "useClusterAdmin": { "type": "boolean", "description": "Use cluster admin credentials", "ignoreCase": "key" }, "namespace": { "type": "string", "description": "Namespace", "ignoreCase": "key" }, "command": { "description": "Command", "ignoreCase": "all", "enum": [ "apply", "create", "delete", "exec", "expose", "get", "login", "logout", "logs", "run", "set", "top" ] }, "useConfigurationFile": { "type": "boolean", "description": "Use configuration", "ignoreCase": "key" }, "configurationType": { "description": "Configuration type", "ignoreCase": "all", "enum": [ "configuration", "inline" ] }, "configuration": { "type": "string", "description": "File path", "ignoreCase": "key" }, "inline": { "type": "string", "description": "Inline configuration", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "secretType": { "description": "Type of secret", "ignoreCase": "all", "enum": [ "dockerRegistry", "generic" ] }, "secretArguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "containerRegistryType": { "description": "Container registry type", "ignoreCase": "all", "enum": [ "Azure Container Registry", "Container Registry" ] }, "dockerRegistryEndpoint": { "type": "string", "description": "Docker registry service connection", "ignoreCase": "key" }, "azureSubscriptionEndpointForSecrets": { "type": "string", "description": "Azure subscription", "ignoreCase": "key" }, "azureContainerRegistry": { "type": "string", "description": "Azure container registry", "ignoreCase": "key" }, "secretName": { "type": "string", "description": "Secret name", "ignoreCase": "key" }, "forceUpdate": { "type": "boolean", "description": "Force update secret", "ignoreCase": "key" }, "configMapName": { "type": "string", "description": "ConfigMap name", "ignoreCase": "key" }, "forceUpdateConfigMap": { "type": "boolean", "description": "Force update configmap", "ignoreCase": "key" }, "useConfigMapFile": { "type": "boolean", "description": "Use file", "ignoreCase": "key" }, "configMapFile": { "type": "string", "description": "ConfigMap file", "ignoreCase": "key" }, "configMapArguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "versionOrLocation": { "description": "Kubectl", "ignoreCase": "all", "enum": [ "version", "location" ] }, "versionSpec": { "type": "string", "description": "Version spec", "ignoreCase": "key" }, "checkLatest": { "type": "boolean", "description": "Check for latest version", "ignoreCase": "key" }, "specifyLocation": { "type": "string", "description": "Path to kubectl", "ignoreCase": "key" }, "workingDirectory": { "type": "string", "description": "Working directory", "ignoreCase": "key", "aliases": [ "cwd" ] }, "outputFormat": { "description": "Output format", "ignoreCase": "all", "enum": [ "json", "yaml", "none" ] } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Azure IoT Edge\n\nBuild and deploy an Azure IoT Edge image", "ignoreCase": "value", "pattern": "^AzureIoTEdge@2$" }, "inputs": { "description": "Azure IoT Edge inputs", "properties": { "action": { "description": "Action", "ignoreCase": "all", "enum": [ "Build module images", "Push module images", "Generate deployment manifest", "Deploy to IoT Edge devices" ] }, "deploymentFilePath": { "type": "string", "description": "Deployment file", "ignoreCase": "key" }, "azureSubscription": { "type": "string", "description": "Azure subscription contains IoT Hub", "ignoreCase": "key", "aliases": [ "connectedServiceNameARM" ] }, "iothubname": { "type": "string", "description": "IoT Hub name", "ignoreCase": "key" }, "deploymentid": { "type": "string", "description": "IoT Edge deployment ID", "ignoreCase": "key" }, "priority": { "type": "string", "description": "IoT Edge deployment priority", "ignoreCase": "key" }, "deviceOption": { "description": "Choose single/multiple device", "ignoreCase": "all", "enum": [ "Single Device", "Multiple Devices" ] }, "deviceId": { "type": "string", "description": "IoT Edge device ID", "ignoreCase": "key" }, "targetcondition": { "type": "string", "description": "IoT Edge device target condition", "ignoreCase": "key" }, "containerregistrytype": { "description": "Container registry type", "ignoreCase": "all", "enum": [ "Azure Container Registry", "Generic Container Registry" ] }, "dockerRegistryConnection": { "type": "string", "description": "Docker Registry Connection", "ignoreCase": "key", "aliases": [ "dockerRegistryEndpoint" ] }, "azureSubscriptionEndpoint": { "type": "string", "description": "Azure subscription", "ignoreCase": "key" }, "azureContainerRegistry": { "type": "string", "description": "Azure Container Registry", "ignoreCase": "key" }, "templateFilePath": { "type": "string", "description": ".template.json file", "ignoreCase": "key" }, "defaultPlatform": { "description": "Default platform", "ignoreCase": "all", "enum": [ "amd64", "windows-amd64", "arm32v7", "arm64v8" ] }, "fillRegistryCredential": { "description": "Add registry credential to deployment manifest", "ignoreCase": "all", "enum": [ "true", "false" ] }, "deploymentManifestOutputPath": { "type": "string", "description": "Output path", "ignoreCase": "key" }, "validateGeneratedDeploymentManifest": { "description": "Validate the schema of generated deployment manifest", "ignoreCase": "all", "enum": [ "true", "false" ] }, "bypassModules": { "type": "string", "description": "Bypass module(s)", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Service Fabric Compose deploy\n\nDeploy a Docker Compose application to an Azure Service Fabric cluster", "ignoreCase": "value", "pattern": "^ServiceFabricComposeDeploy@0$" }, "inputs": { "description": "Service Fabric Compose deploy inputs", "properties": { "clusterConnection": { "type": "string", "description": "Cluster Service Connection", "ignoreCase": "key", "aliases": [ "serviceConnectionName" ] }, "composeFilePath": { "type": "string", "description": "Compose File Path", "ignoreCase": "key" }, "applicationName": { "type": "string", "description": "Application Name", "ignoreCase": "key" }, "registryCredentials": { "description": "Registry Credentials Source", "ignoreCase": "all", "enum": [ "AzureResourceManagerEndpoint", "ContainerRegistryEndpoint", "UsernamePassword", "None" ] }, "dockerRegistryConnection": { "type": "string", "description": "Docker Registry Service Connection", "ignoreCase": "key", "aliases": [ "dockerRegistryEndpointName" ] }, "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "azureSubscriptionEndpoint" ] }, "registryUserName": { "type": "string", "description": "Registry User Name", "ignoreCase": "key" }, "registryPassword": { "type": "string", "description": "Registry Password", "ignoreCase": "key" }, "passwordEncrypted": { "type": "boolean", "description": "Password Encrypted", "ignoreCase": "key" }, "upgrade": { "type": "boolean", "description": "Upgrade", "ignoreCase": "key" }, "deployTimeoutSec": { "type": "string", "description": "Deploy Timeout (s)", "ignoreCase": "key" }, "removeTimeoutSec": { "type": "string", "description": "Remove Timeout (s)", "ignoreCase": "key" }, "getStatusTimeoutSec": { "type": "string", "description": "Get Status Timeout (s)", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "clusterConnection" ] } }, "deprecationMessage": "ServiceFabricComposeDeploy is deprecated - Deploy a Docker Compose application to an Azure Service Fabric cluster", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Android Signing\n\nSign and align Android APK files", "ignoreCase": "value", "pattern": "^AndroidSigning@1$" }, "inputs": { "description": "Android Signing inputs", "properties": { "files": { "type": "string", "description": "APK Files", "ignoreCase": "key" }, "jarsign": { "type": "boolean", "description": "Sign the APK", "ignoreCase": "key" }, "keystoreFile": { "type": "string", "description": "Keystore File", "ignoreCase": "key" }, "keystorePass": { "type": "string", "description": "Keystore Password", "ignoreCase": "key" }, "keystoreAlias": { "type": "string", "description": "Alias", "ignoreCase": "key" }, "keyPass": { "type": "string", "description": "Key Password", "ignoreCase": "key" }, "jarsignerArguments": { "type": "string", "description": "Jarsigner Arguments", "ignoreCase": "key" }, "zipalign": { "type": "boolean", "description": "Zipalign", "ignoreCase": "key" }, "zipalignLocation": { "type": "string", "description": "Zipalign Location", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "files" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Android signing\n\nSign and align Android APK files", "ignoreCase": "value", "pattern": "^AndroidSigning@2$" }, "inputs": { "description": "Android signing inputs", "properties": { "apkFiles": { "type": "string", "description": "APK files", "ignoreCase": "key", "aliases": [ "files" ] }, "jarsign": { "type": "boolean", "description": "Sign the APK", "ignoreCase": "key" }, "jarsignerKeystoreFile": { "type": "string", "description": "Keystore file", "ignoreCase": "key", "aliases": [ "keystoreFile" ] }, "jarsignerKeystorePassword": { "type": "string", "description": "Keystore password", "ignoreCase": "key", "aliases": [ "keystorePass" ] }, "jarsignerKeystoreAlias": { "type": "string", "description": "Alias", "ignoreCase": "key", "aliases": [ "keystoreAlias" ] }, "jarsignerKeyPassword": { "type": "string", "description": "Key password", "ignoreCase": "key", "aliases": [ "keyPass" ] }, "jarsignerArguments": { "type": "string", "description": "Jarsigner arguments", "ignoreCase": "key" }, "zipalign": { "type": "boolean", "description": "Zipalign", "ignoreCase": "key" }, "zipalignFile": { "type": "string", "description": "Zipalign location", "ignoreCase": "key", "aliases": [ "zipalignLocation" ] } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "AndroidSigning is deprecated - Sign and align Android APK files", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Android signing\n\nSign and align Android APK files", "ignoreCase": "value", "pattern": "^AndroidSigning@3$" }, "inputs": { "description": "Android signing inputs", "properties": { "apkFiles": { "type": "string", "description": "APK files", "ignoreCase": "key", "aliases": [ "files" ] }, "apksign": { "type": "boolean", "description": "Sign the APK", "ignoreCase": "key" }, "apksignerKeystoreFile": { "type": "string", "description": "Keystore file", "ignoreCase": "key", "aliases": [ "keystoreFile" ] }, "apksignerKeystorePassword": { "type": "string", "description": "Keystore password", "ignoreCase": "key", "aliases": [ "keystorePass" ] }, "apksignerKeystoreAlias": { "type": "string", "description": "Alias", "ignoreCase": "key", "aliases": [ "keystoreAlias" ] }, "apksignerKeyPassword": { "type": "string", "description": "Key password", "ignoreCase": "key", "aliases": [ "keyPass" ] }, "apksignerVersion": { "type": "string", "description": "apksigner version", "ignoreCase": "key" }, "apksignerArguments": { "type": "string", "description": "apksigner arguments", "ignoreCase": "key" }, "apksignerFile": { "type": "string", "description": "apksigner location", "ignoreCase": "key", "aliases": [ "apksignerLocation" ] }, "zipalign": { "type": "boolean", "description": "Zipalign", "ignoreCase": "key" }, "zipalignVersion": { "type": "string", "description": "Zipalign version", "ignoreCase": "key" }, "zipalignFile": { "type": "string", "description": "Zipalign location", "ignoreCase": "key", "aliases": [ "zipalignLocation" ] } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Download pipeline artifact\n\nDownloads an artifact associated with a pipeline", "ignoreCase": "value", "pattern": "^DownloadPipelineArtifact@0$" }, "inputs": { "description": "Download pipeline artifact inputs", "properties": { "pipelineId": { "type": "string", "description": "The specific pipeline to download from", "ignoreCase": "key" }, "artifactName": { "type": "string", "description": "The name of artifact to download.", "ignoreCase": "key" }, "targetPath": { "type": "string", "description": "Path to download to", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "targetPath" ] } }, "deprecationMessage": "DownloadPipelineArtifact is deprecated - Downloads an artifact associated with a pipeline", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Download Pipeline Artifacts\n\nDownload build and pipeline artifacts", "ignoreCase": "value", "pattern": "^DownloadPipelineArtifact@2$" }, "inputs": { "description": "Download Pipeline Artifacts inputs", "properties": { "buildType": { "description": "Download artifacts produced by", "ignoreCase": "all", "enum": [ "current", "specific" ], "aliases": [ "source" ] }, "project": { "type": "string", "description": "Project", "ignoreCase": "key" }, "definition": { "type": "string", "description": "Build pipeline", "ignoreCase": "key", "aliases": [ "pipeline" ] }, "specificBuildWithTriggering": { "type": "boolean", "description": "When appropriate, download artifacts from the triggering build.", "ignoreCase": "key", "aliases": [ "preferTriggeringPipeline" ] }, "buildVersionToDownload": { "description": "Build version to download", "ignoreCase": "all", "enum": [ "latest", "latestFromBranch", "specific" ], "aliases": [ "runVersion" ] }, "branchName": { "type": "string", "description": "Branch name", "ignoreCase": "key", "aliases": [ "runBranch" ] }, "pipelineId": { "type": "string", "description": "Build", "ignoreCase": "key", "aliases": [ "runId", "buildId" ] }, "tags": { "type": "string", "description": "Build Tags", "ignoreCase": "key" }, "allowPartiallySucceededBuilds": { "type": "boolean", "description": "Download artifacts from partially succeeded builds.", "ignoreCase": "key" }, "allowFailedBuilds": { "type": "boolean", "description": "Download artifacts from failed builds.", "ignoreCase": "key" }, "artifactName": { "type": "string", "description": "Artifact name", "ignoreCase": "key", "aliases": [ "artifact" ] }, "itemPattern": { "type": "string", "description": "Matching patterns", "ignoreCase": "key", "aliases": [ "patterns" ] }, "targetPath": { "type": "string", "description": "Destination directory", "ignoreCase": "key", "aliases": [ "path", "downloadPath" ] } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Download pipeline artifact\n\nDownload a named artifact from a pipeline to a local path", "ignoreCase": "value", "pattern": "^DownloadPipelineArtifact@1$" }, "inputs": { "description": "Download pipeline artifact inputs", "properties": { "buildType": { "description": "Download artifacts produced by", "ignoreCase": "all", "enum": [ "current", "specific" ] }, "project": { "type": "string", "description": "Project", "ignoreCase": "key" }, "pipeline": { "type": "string", "description": "Build pipeline", "ignoreCase": "key", "aliases": [ "definition" ] }, "specificBuildWithTriggering": { "type": "boolean", "description": "When appropriate, download artifacts from the triggering build.", "ignoreCase": "key" }, "buildVersionToDownload": { "description": "Build version to download", "ignoreCase": "all", "enum": [ "latest", "latestFromBranch", "specific" ] }, "branchName": { "type": "string", "description": "Branch name", "ignoreCase": "key" }, "pipelineId": { "type": "string", "description": "Build", "ignoreCase": "key", "aliases": [ "buildId" ] }, "tags": { "type": "string", "description": "Build Tags", "ignoreCase": "key" }, "artifactName": { "type": "string", "description": "Artifact name", "ignoreCase": "key" }, "itemPattern": { "type": "string", "description": "Matching pattern", "ignoreCase": "key" }, "targetPath": { "type": "string", "description": "Destination directory", "ignoreCase": "key", "aliases": [ "downloadPath" ] } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Use Python version\n\nUse the specified version of Python from the tool cache, optionally adding it to the PATH", "ignoreCase": "value", "pattern": "^UsePythonVersion@0$" }, "inputs": { "description": "Use Python version inputs", "properties": { "versionSpec": { "type": "string", "description": "Version spec", "ignoreCase": "key" }, "disableDownloadFromRegistry": { "type": "boolean", "description": "Disable downloading releases from the GitHub registry", "ignoreCase": "key" }, "allowUnstable": { "type": "boolean", "description": "Allow downloading unstable releases", "ignoreCase": "key" }, "githubToken": { "type": "string", "description": "GitHub token for GitHub Actions python registry", "ignoreCase": "key" }, "addToPath": { "type": "boolean", "description": "Add to PATH", "ignoreCase": "key" }, "architecture": { "description": "Architecture", "ignoreCase": "all", "enum": [ "x86", "x64" ] } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Service Fabric PowerShell\n\nRun a PowerShell script in the context of an Azure Service Fabric cluster connection", "ignoreCase": "value", "pattern": "^ServiceFabricPowerShell@1$" }, "inputs": { "description": "Service Fabric PowerShell inputs", "properties": { "clusterConnection": { "type": "string", "description": "Cluster Service Connection", "ignoreCase": "key", "aliases": [ "serviceConnectionName" ] }, "ScriptType": { "description": "Script Type", "ignoreCase": "all", "enum": [ "FilePath", "InlineScript" ] }, "ScriptPath": { "type": "string", "description": "Script Path", "ignoreCase": "key" }, "Inline": { "type": "string", "description": "Inline Script", "ignoreCase": "key" }, "ScriptArguments": { "type": "string", "description": "Script Arguments", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "clusterConnection" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Visual Studio Test\n\nRun unit and functional tests (Selenium, Appium, Coded UI test, etc.) using the Visual Studio Test (VsTest) runner. Test frameworks that have a Visual Studio test adapter such as MsTest, xUnit, NUnit, Chutzpah (for JavaScript tests using QUnit, Mocha and Jasmine), etc. can be run. Tests can be distributed on multiple agents using this task (version 2 and later).", "ignoreCase": "value", "pattern": "^VSTest@2$" }, "inputs": { "description": "Visual Studio Test inputs", "properties": { "testSelector": { "description": "Select tests using", "ignoreCase": "all", "enum": [ "testAssemblies", "testPlan", "testRun" ] }, "testAssemblyVer2": { "type": "string", "description": "Test files", "ignoreCase": "key" }, "testPlan": { "type": "string", "description": "Test plan", "ignoreCase": "key" }, "testSuite": { "type": "string", "description": "Test suite", "ignoreCase": "key" }, "testConfiguration": { "type": "string", "description": "Test configuration", "ignoreCase": "key" }, "tcmTestRun": { "type": "string", "description": "Test Run", "ignoreCase": "key" }, "searchFolder": { "type": "string", "description": "Search folder", "ignoreCase": "key" }, "resultsFolder": { "type": "string", "description": "Test results folder", "ignoreCase": "key" }, "testFiltercriteria": { "type": "string", "description": "Test filter criteria", "ignoreCase": "key" }, "runOnlyImpactedTests": { "type": "boolean", "description": "Run only impacted tests", "ignoreCase": "key" }, "runAllTestsAfterXBuilds": { "type": "string", "description": "Number of builds after which all tests should be run", "ignoreCase": "key" }, "uiTests": { "type": "boolean", "description": "Test mix contains UI tests", "ignoreCase": "key" }, "vstestLocationMethod": { "description": "Select test platform using", "ignoreCase": "all", "enum": [ "version", "location" ] }, "vsTestVersion": { "description": "Test platform version", "ignoreCase": "all", "enum": [ "latest", "17.0", "16.0", "15.0", "14.0", "toolsInstaller" ] }, "vstestLocation": { "type": "string", "description": "Path to vstest.console.exe", "ignoreCase": "key" }, "runSettingsFile": { "type": "string", "description": "Settings file", "ignoreCase": "key" }, "overrideTestrunParameters": { "type": "string", "description": "Override test run parameters", "ignoreCase": "key" }, "pathtoCustomTestAdapters": { "type": "string", "description": "Path to custom test adapters", "ignoreCase": "key" }, "runInParallel": { "type": "boolean", "description": "Run tests in parallel on multi-core machines", "ignoreCase": "key" }, "runTestsInIsolation": { "type": "boolean", "description": "Run tests in isolation", "ignoreCase": "key" }, "codeCoverageEnabled": { "type": "boolean", "description": "Code coverage enabled", "ignoreCase": "key" }, "otherConsoleOptions": { "type": "string", "description": "Other console options", "ignoreCase": "key" }, "distributionBatchType": { "description": "Batch tests", "ignoreCase": "all", "enum": [ "basedOnTestCases", "basedOnExecutionTime", "basedOnAssembly" ] }, "batchingBasedOnAgentsOption": { "description": "Batch options", "ignoreCase": "all", "enum": [ "autoBatchSize", "customBatchSize" ] }, "customBatchSizeValue": { "type": "string", "description": "Number of tests per batch", "ignoreCase": "key" }, "batchingBasedOnExecutionTimeOption": { "description": "Batch options", "ignoreCase": "all", "enum": [ "autoBatchSize", "customTimeBatchSize" ] }, "customRunTimePerBatchValue": { "type": "string", "description": "Running time (sec) per batch", "ignoreCase": "key" }, "dontDistribute": { "type": "boolean", "description": "Replicate tests instead of distributing when multiple agents are used in the job", "ignoreCase": "key" }, "testRunTitle": { "type": "string", "description": "Test run title", "ignoreCase": "key" }, "platform": { "type": "string", "description": "Build platform", "ignoreCase": "key" }, "configuration": { "type": "string", "description": "Build configuration", "ignoreCase": "key" }, "publishRunAttachments": { "type": "boolean", "description": "Upload test attachments", "ignoreCase": "key" }, "failOnMinTestsNotRun": { "type": "boolean", "description": "Fail the task if a minimum number of tests are not run.", "ignoreCase": "key" }, "minimumExpectedTests": { "type": "string", "description": "Minimum # of tests", "ignoreCase": "key" }, "diagnosticsEnabled": { "type": "boolean", "description": "Collect advanced diagnostics in case of catastrophic failures", "ignoreCase": "key" }, "collectDumpOn": { "description": "Collect process dump and attach to test run report", "ignoreCase": "all", "enum": [ "onAbortOnly", "always", "never" ] }, "rerunFailedTests": { "type": "boolean", "description": "Rerun failed tests", "ignoreCase": "key" }, "rerunType": { "description": "Do not rerun if test failures exceed specified threshold", "ignoreCase": "all", "enum": [ "basedOnTestFailurePercentage", "basedOnTestFailureCount" ] }, "rerunFailedThreshold": { "type": "string", "description": "% failure", "ignoreCase": "key" }, "rerunFailedTestCasesMaxLimit": { "type": "string", "description": "# of failed tests", "ignoreCase": "key" }, "rerunMaxAttempts": { "type": "string", "description": "Maximum # of attempts", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Visual Studio Test\n\nRun unit and functional tests (Selenium, Appium, Coded UI test, etc.) using the Visual Studio Test (VsTest) runner. Test frameworks that have a Visual Studio test adapter such as MsTest, xUnit, NUnit, Chutzpah (for JavaScript tests using QUnit, Mocha and Jasmine), etc. can be run. Tests can be distributed on multiple agents using this task (version 2 and later).", "ignoreCase": "value", "pattern": "^VSTest@3$" }, "inputs": { "description": "Visual Studio Test inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure Resource Manager connection", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "testSelector": { "description": "Select tests using", "ignoreCase": "all", "enum": [ "testAssemblies", "testPlan", "testRun" ] }, "testAssemblyVer2": { "type": "string", "description": "Test files", "ignoreCase": "key" }, "testPlan": { "type": "string", "description": "Test plan", "ignoreCase": "key" }, "testSuite": { "type": "string", "description": "Test suite", "ignoreCase": "key" }, "testConfiguration": { "type": "string", "description": "Test configuration", "ignoreCase": "key" }, "tcmTestRun": { "type": "string", "description": "Test Run", "ignoreCase": "key" }, "searchFolder": { "type": "string", "description": "Search folder", "ignoreCase": "key" }, "resultsFolder": { "type": "string", "description": "Test results folder", "ignoreCase": "key" }, "testFiltercriteria": { "type": "string", "description": "Test filter criteria", "ignoreCase": "key" }, "runOnlyImpactedTests": { "type": "boolean", "description": "Run only impacted tests", "ignoreCase": "key" }, "runAllTestsAfterXBuilds": { "type": "string", "description": "Number of builds after which all tests should be run", "ignoreCase": "key" }, "uiTests": { "type": "boolean", "description": "Test mix contains UI tests", "ignoreCase": "key" }, "vstestLocationMethod": { "description": "Select test platform using", "ignoreCase": "all", "enum": [ "version", "location" ] }, "vsTestVersion": { "description": "Test platform version", "ignoreCase": "all", "enum": [ "latest", "17.0", "16.0", "15.0", "14.0", "toolsInstaller" ] }, "vstestLocation": { "type": "string", "description": "Path to vstest.console.exe", "ignoreCase": "key" }, "runSettingsFile": { "type": "string", "description": "Settings file", "ignoreCase": "key" }, "overrideTestrunParameters": { "type": "string", "description": "Override test run parameters", "ignoreCase": "key" }, "pathtoCustomTestAdapters": { "type": "string", "description": "Path to custom test adapters", "ignoreCase": "key" }, "runInParallel": { "type": "boolean", "description": "Run tests in parallel on multi-core machines", "ignoreCase": "key" }, "runTestsInIsolation": { "type": "boolean", "description": "Run tests in isolation", "ignoreCase": "key" }, "codeCoverageEnabled": { "type": "boolean", "description": "Code coverage enabled", "ignoreCase": "key" }, "otherConsoleOptions": { "type": "string", "description": "Other console options", "ignoreCase": "key" }, "distributionBatchType": { "description": "Batch tests", "ignoreCase": "all", "enum": [ "basedOnTestCases", "basedOnExecutionTime", "basedOnAssembly" ] }, "batchingBasedOnAgentsOption": { "description": "Batch options", "ignoreCase": "all", "enum": [ "autoBatchSize", "customBatchSize" ] }, "customBatchSizeValue": { "type": "string", "description": "Number of tests per batch", "ignoreCase": "key" }, "batchingBasedOnExecutionTimeOption": { "description": "Batch options", "ignoreCase": "all", "enum": [ "autoBatchSize", "customTimeBatchSize" ] }, "customRunTimePerBatchValue": { "type": "string", "description": "Running time (sec) per batch", "ignoreCase": "key" }, "dontDistribute": { "type": "boolean", "description": "Replicate tests instead of distributing when multiple agents are used in the job", "ignoreCase": "key" }, "testRunTitle": { "type": "string", "description": "Test run title", "ignoreCase": "key" }, "platform": { "type": "string", "description": "Build platform", "ignoreCase": "key" }, "configuration": { "type": "string", "description": "Build configuration", "ignoreCase": "key" }, "publishRunAttachments": { "type": "boolean", "description": "Upload test attachments", "ignoreCase": "key" }, "failOnMinTestsNotRun": { "type": "boolean", "description": "Fail the task if a minimum number of tests are not run.", "ignoreCase": "key" }, "minimumExpectedTests": { "type": "string", "description": "Minimum # of tests", "ignoreCase": "key" }, "diagnosticsEnabled": { "type": "boolean", "description": "Collect advanced diagnostics in case of catastrophic failures", "ignoreCase": "key" }, "collectDumpOn": { "description": "Collect process dump and attach to test run report", "ignoreCase": "all", "enum": [ "onAbortOnly", "always", "never" ] }, "rerunFailedTests": { "type": "boolean", "description": "Rerun failed tests", "ignoreCase": "key" }, "rerunType": { "description": "Do not rerun if test failures exceed specified threshold", "ignoreCase": "all", "enum": [ "basedOnTestFailurePercentage", "basedOnTestFailureCount" ] }, "rerunFailedThreshold": { "type": "string", "description": "% failure", "ignoreCase": "key" }, "rerunFailedTestCasesMaxLimit": { "type": "string", "description": "# of failed tests", "ignoreCase": "key" }, "rerunMaxAttempts": { "type": "string", "description": "Maximum # of attempts", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Visual Studio Test\n\nRun tests with Visual Studio test runner", "ignoreCase": "value", "pattern": "^VSTest@1$" }, "inputs": { "description": "Visual Studio Test inputs", "properties": { "testAssembly": { "type": "string", "description": "Test Assembly", "ignoreCase": "key" }, "testFiltercriteria": { "type": "string", "description": "Test Filter criteria", "ignoreCase": "key" }, "runSettingsFile": { "type": "string", "description": "Run Settings File", "ignoreCase": "key" }, "overrideTestrunParameters": { "type": "string", "description": "Override TestRun Parameters", "ignoreCase": "key" }, "codeCoverageEnabled": { "type": "boolean", "description": "Code Coverage Enabled", "ignoreCase": "key" }, "runInParallel": { "type": "boolean", "description": "Run In Parallel", "ignoreCase": "key" }, "vstestLocationMethod": { "description": "VSTest", "ignoreCase": "all", "enum": [ "version", "location" ] }, "vsTestVersion": { "description": "VSTest version", "ignoreCase": "all", "enum": [ "latest", "14.0", "12.0" ] }, "vstestLocation": { "type": "string", "description": "Path to vstest.console.exe", "ignoreCase": "key" }, "pathtoCustomTestAdapters": { "type": "string", "description": "Path to Custom Test Adapters", "ignoreCase": "key" }, "otherConsoleOptions": { "type": "string", "description": "Other console options", "ignoreCase": "key" }, "testRunTitle": { "type": "string", "description": "Test Run Title", "ignoreCase": "key" }, "platform": { "type": "string", "description": "Platform", "ignoreCase": "key" }, "configuration": { "type": "string", "description": "Configuration", "ignoreCase": "key" }, "publishRunAttachments": { "type": "boolean", "description": "Upload Test Attachments", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "VSTest is deprecated - Run tests with Visual Studio test runner", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Manual validation\n\nPause a pipeline run to wait for manual interaction. Works only with YAML pipelines.", "ignoreCase": "value", "pattern": "^ManualValidation@1$" }, "inputs": { "description": "Manual validation inputs", "properties": { "notifyUsers": { "type": "string", "description": "Notify users", "ignoreCase": "key" }, "approvers": { "type": "string", "description": "Approvers", "ignoreCase": "key" }, "allowApproversToApproveTheirOwnRuns": { "type": "boolean", "description": "Allow approvers to approve their own run", "ignoreCase": "key" }, "instructions": { "type": "string", "description": "Instructions", "ignoreCase": "key" }, "onTimeout": { "description": "On timeout", "ignoreCase": "all", "enum": [ "reject", "resume" ] } }, "additionalProperties": false, "required": [ "notifyUsers" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Manual validation\n\nPause a pipeline run to wait for manual interaction. Works only with YAML pipelines.", "ignoreCase": "value", "pattern": "^ManualValidation@0$" }, "inputs": { "description": "Manual validation inputs", "properties": { "notifyUsers": { "type": "string", "description": "Notify users", "ignoreCase": "key" }, "instructions": { "type": "string", "description": "Instructions", "ignoreCase": "key" }, "onTimeout": { "description": "On timeout", "ignoreCase": "all", "enum": [ "reject", "resume" ] } }, "additionalProperties": false, "required": [ "notifyUsers" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Ant\n\nBuild with Apache Ant", "ignoreCase": "value", "pattern": "^Ant@1$" }, "inputs": { "description": "Ant inputs", "properties": { "buildFile": { "type": "string", "description": "Ant build file", "ignoreCase": "key", "aliases": [ "antBuildFile" ] }, "options": { "type": "string", "description": "Options", "ignoreCase": "key" }, "targets": { "type": "string", "description": "Target(s)", "ignoreCase": "key" }, "publishJUnitResults": { "type": "boolean", "description": "Publish to Azure Pipelines", "ignoreCase": "key" }, "testResultsFiles": { "type": "string", "description": "Test results files", "ignoreCase": "key" }, "testRunTitle": { "type": "string", "description": "Test run title", "ignoreCase": "key" }, "codeCoverageToolOptions": { "description": "Code coverage tool", "ignoreCase": "all", "enum": [ "None", "Cobertura", "JaCoCo" ], "aliases": [ "codeCoverageTool" ] }, "codeCoverageClassFilesDirectories": { "type": "string", "description": "Class files directories", "ignoreCase": "key", "aliases": [ "classFilesDirectories" ] }, "codeCoverageClassFilter": { "type": "string", "description": "Class inclusion/exclusion filters", "ignoreCase": "key", "aliases": [ "classFilter" ] }, "codeCoverageSourceDirectories": { "type": "string", "description": "Source files directories", "ignoreCase": "key", "aliases": [ "srcDirectories" ] }, "codeCoverageFailIfEmpty": { "type": "boolean", "description": "Fail when code coverage results are missing", "ignoreCase": "key", "aliases": [ "failIfCoverageEmpty" ] }, "antHomeDirectory": { "type": "string", "description": "Set ANT_HOME path", "ignoreCase": "key", "aliases": [ "antHomeUserInputPath" ] }, "javaHomeOption": { "description": "Set JAVA_HOME by", "ignoreCase": "all", "enum": [ "JDKVersion", "Path" ], "aliases": [ "javaHomeSelection" ] }, "jdkVersionOption": { "description": "JDK version", "ignoreCase": "all", "enum": [ "default", "1.11", "1.10", "1.9", "1.8", "1.7", "1.6" ], "aliases": [ "jdkVersion" ] }, "jdkUserInputDirectory": { "type": "string", "description": "JDK path", "ignoreCase": "key", "aliases": [ "jdkUserInputPath" ] }, "jdkArchitectureOption": { "description": "JDK architecture", "ignoreCase": "all", "enum": [ "x86", "x64" ], "aliases": [ "jdkArchitecture" ] } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Visual Studio test agent deployment\n\nDeprecated: Instead, use the 'Visual Studio Test' task to run unit and functional tests", "ignoreCase": "value", "pattern": "^DeployVisualStudioTestAgent@2$" }, "inputs": { "description": "Visual Studio test agent deployment inputs", "properties": { "testMachines": { "type": "string", "description": "Machines", "ignoreCase": "key" }, "adminUserName": { "type": "string", "description": "Admin login", "ignoreCase": "key" }, "adminPassword": { "type": "string", "description": "Admin password", "ignoreCase": "key" }, "winRmProtocol": { "description": "Protocol", "ignoreCase": "all", "enum": [ "Http", "Https" ] }, "testCertificate": { "type": "boolean", "description": "Test Certificate", "ignoreCase": "key" }, "machineUserName": { "type": "string", "description": "Username", "ignoreCase": "key" }, "machinePassword": { "type": "string", "description": "Password", "ignoreCase": "key" }, "runAsProcess": { "type": "boolean", "description": "Run UI tests", "ignoreCase": "key" }, "isDataCollectionOnly": { "type": "boolean", "description": "Enable data collection only", "ignoreCase": "key" }, "testPlatform": { "description": "Test agent version", "ignoreCase": "all", "enum": [ "15.0", "14.0" ] }, "agentLocation": { "type": "string", "description": "Test agent location", "ignoreCase": "key" }, "updateTestAgent": { "type": "boolean", "description": "Update test agent", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "testMachines", "adminUserName", "adminPassword", "machineUserName", "machinePassword" ] } }, "deprecationMessage": "DeployVisualStudioTestAgent is deprecated - Deprecated: Instead, use the 'Visual Studio Test' task to run unit and functional tests", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Visual Studio Test Agent Deployment\n\nDeploy and configure Test Agent to run tests on a set of machines", "ignoreCase": "value", "pattern": "^DeployVisualStudioTestAgent@1$" }, "inputs": { "description": "Visual Studio Test Agent Deployment inputs", "properties": { "testMachineGroup": { "type": "string", "description": "Machines", "ignoreCase": "key" }, "adminUserName": { "type": "string", "description": "Admin Login", "ignoreCase": "key" }, "adminPassword": { "type": "string", "description": "Admin Password", "ignoreCase": "key" }, "winRmProtocol": { "description": "Protocol", "ignoreCase": "all", "enum": [ "Http", "Https" ] }, "testCertificate": { "type": "boolean", "description": "Test Certificate", "ignoreCase": "key" }, "resourceFilteringMethod": { "description": "Select Machines By", "ignoreCase": "all", "enum": [ "machineNames", "tags" ] }, "testMachines": { "type": "string", "description": "Filter Criteria", "ignoreCase": "key" }, "machineUserName": { "type": "string", "description": "Username", "ignoreCase": "key" }, "machinePassword": { "type": "string", "description": "Password", "ignoreCase": "key" }, "runAsProcess": { "type": "boolean", "description": "Interactive Process", "ignoreCase": "key" }, "agentLocation": { "type": "string", "description": "Test Agent Location", "ignoreCase": "key" }, "updateTestAgent": { "type": "boolean", "description": "Update Test Agent", "ignoreCase": "key" }, "isDataCollectionOnly": { "type": "boolean", "description": "Enable Data Collection Only", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "testMachineGroup", "machineUserName", "machinePassword" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Conda environment\n\nCreate and activate a Conda environment", "ignoreCase": "value", "pattern": "^CondaEnvironment@0$" }, "inputs": { "description": "Conda environment inputs", "properties": { "environmentName": { "type": "string", "description": "Environment name", "ignoreCase": "key" }, "packageSpecs": { "type": "string", "description": "Package specs", "ignoreCase": "key" }, "updateConda": { "type": "boolean", "description": "Update to the latest Conda", "ignoreCase": "key" }, "createOptions": { "type": "string", "description": "Environment creation options", "ignoreCase": "key" }, "cleanEnvironment": { "type": "boolean", "description": "Clean the environment", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "environmentName" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Conda environment\n\nThis task is deprecated. Use `conda` directly in script to work with Anaconda environments.", "ignoreCase": "value", "pattern": "^CondaEnvironment@1$" }, "inputs": { "description": "Conda environment inputs", "properties": { "createCustomEnvironment": { "type": "boolean", "description": "Create a custom environment", "ignoreCase": "key" }, "environmentName": { "type": "string", "description": "Environment name", "ignoreCase": "key" }, "packageSpecs": { "type": "string", "description": "Package specs", "ignoreCase": "key" }, "updateConda": { "type": "boolean", "description": "Update to the latest Conda", "ignoreCase": "key" }, "installOptions": { "type": "string", "description": "Other options for `conda install`", "ignoreCase": "key" }, "createOptions": { "type": "string", "description": "Other options for `conda create`", "ignoreCase": "key" }, "cleanEnvironment": { "type": "boolean", "description": "Clean the environment", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "CondaEnvironment is deprecated - This task is deprecated. Use `conda` directly in script to work with Anaconda environments.", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Batch script\n\nRun a Windows command or batch script and optionally allow it to change the environment", "ignoreCase": "value", "pattern": "^BatchScript@1$" }, "inputs": { "description": "Batch script inputs", "properties": { "filename": { "type": "string", "description": "Path", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "modifyEnvironment": { "type": "boolean", "description": "Modify Environment", "ignoreCase": "key" }, "workingFolder": { "type": "string", "description": "Working folder", "ignoreCase": "key" }, "failOnStandardError": { "type": "boolean", "description": "Fail on Standard Error", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "filename" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Download Github Npm Package\n\nInstall npm packages from GitHub.", "ignoreCase": "value", "pattern": "^DownloadGithubNpmPackage@1$" }, "inputs": { "description": "Download Github Npm Package inputs", "properties": { "packageName": { "type": "string", "description": "Package Name", "ignoreCase": "key" }, "version": { "type": "string", "description": "Package Version", "ignoreCase": "key" }, "externalRegistryCredentials": { "type": "string", "description": "Credentials for registry from GitHub", "ignoreCase": "key", "aliases": [ "externalEndpoints" ] }, "installDirectory": { "type": "string", "description": "Destination directory", "ignoreCase": "key", "aliases": [ "packagesDirectory" ] } }, "additionalProperties": false, "required": [ "packageName", "version", "externalRegistryCredentials" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Visual Studio build\n\nBuild with MSBuild and set the Visual Studio version property", "ignoreCase": "value", "pattern": "^VSBuild@1$" }, "inputs": { "description": "Visual Studio build inputs", "properties": { "solution": { "type": "string", "description": "Solution", "ignoreCase": "key" }, "vsVersion": { "description": "Visual Studio Version", "ignoreCase": "all", "enum": [ "latest", "17.0", "16.0", "15.0", "14.0", "12.0", "11.0" ] }, "msbuildArgs": { "type": "string", "description": "MSBuild Arguments", "ignoreCase": "key" }, "platform": { "type": "string", "description": "Platform", "ignoreCase": "key" }, "configuration": { "type": "string", "description": "Configuration", "ignoreCase": "key" }, "clean": { "type": "boolean", "description": "Clean", "ignoreCase": "key" }, "maximumCpuCount": { "type": "boolean", "description": "Build in Parallel", "ignoreCase": "key" }, "restoreNugetPackages": { "type": "boolean", "description": "Restore NuGet Packages", "ignoreCase": "key" }, "msbuildArchitecture": { "description": "MSBuild Architecture", "ignoreCase": "all", "enum": [ "x86", "x64" ] }, "logProjectEvents": { "type": "boolean", "description": "Record Project Details", "ignoreCase": "key" }, "createLogFile": { "type": "boolean", "description": "Create Log File", "ignoreCase": "key" }, "logFileVerbosity": { "description": "Log File Verbosity", "ignoreCase": "all", "enum": [ "quiet", "minimal", "normal", "detailed", "diagnostic" ] }, "enableDefaultLogger": { "type": "boolean", "description": "Enable Default Logger", "ignoreCase": "key" }, "customVersion": { "type": "string", "description": "Custom Version", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Azure Key Vault\n\nDownload Azure Key Vault secrets", "ignoreCase": "value", "pattern": "^AzureKeyVault@1$" }, "inputs": { "description": "Azure Key Vault inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "KeyVaultName": { "type": "string", "description": "Key vault", "ignoreCase": "key" }, "SecretsFilter": { "type": "string", "description": "Secrets filter", "ignoreCase": "key" }, "RunAsPreJob": { "type": "boolean", "description": "Make secrets available to whole job", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscription", "KeyVaultName" ] } }, "deprecationMessage": "AzureKeyVault is deprecated - Download Azure Key Vault secrets", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure Key Vault\n\nDownload Azure Key Vault secrets", "ignoreCase": "value", "pattern": "^AzureKeyVault@2$" }, "inputs": { "description": "Azure Key Vault inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "KeyVaultName": { "type": "string", "description": "Key vault", "ignoreCase": "key" }, "SecretsFilter": { "type": "string", "description": "Secrets filter", "ignoreCase": "key" }, "RunAsPreJob": { "type": "boolean", "description": "Make secrets available to whole job", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscription", "KeyVaultName" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Use .NET Core\n\nAcquires a specific version of the .NET Core SDK from the internet or the local cache and adds it to the PATH. Use this task to change the version of .NET Core used in subsequent tasks. Additionally provides proxy support.", "ignoreCase": "value", "pattern": "^UseDotNet@2$" }, "inputs": { "description": "Use .NET Core inputs", "properties": { "packageType": { "description": "Package to install", "ignoreCase": "all", "enum": [ "runtime", "sdk" ] }, "useGlobalJson": { "type": "boolean", "description": "Use global json", "ignoreCase": "key" }, "workingDirectory": { "type": "string", "description": "Working Directory", "ignoreCase": "key" }, "version": { "type": "string", "description": "Version", "ignoreCase": "key" }, "vsVersion": { "type": "string", "description": "Compatible Visual Studio version", "ignoreCase": "key" }, "includePreviewVersions": { "type": "boolean", "description": "Include Preview Versions", "ignoreCase": "key" }, "installationPath": { "type": "string", "description": "Path To Install .Net Core", "ignoreCase": "key" }, "performMultiLevelLookup": { "type": "boolean", "description": "Perform Multi Level Lookup", "ignoreCase": "key" }, "requestTimeout": { "type": "integer", "description": "Set timeout for package download request", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": ".NET Core SDK/runtime installer\n\nAcquire a specific version of the .NET Core SDK from the internet or local cache and add it to the PATH", "ignoreCase": "value", "pattern": "^DotNetCoreInstaller@0$" }, "inputs": { "description": ".NET Core SDK/runtime installer inputs", "properties": { "packageType": { "description": "Package to install", "ignoreCase": "all", "enum": [ "runtime", "sdk" ] }, "version": { "type": "string", "description": "Version", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "DotNetCoreInstaller is deprecated - Acquire a specific version of the .NET Core SDK from the internet or local cache and add it to the PATH", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": ".NET Core sdk/runtime installer\n\nAcquire a specific version of the .NET Core SDK from the internet or local cache and add it to the PATH", "ignoreCase": "value", "pattern": "^DotNetCoreInstaller@1$" }, "inputs": { "description": ".NET Core sdk/runtime installer inputs", "properties": { "packageType": { "description": "Package to install", "ignoreCase": "all", "enum": [ "runtime", "sdk" ] }, "version": { "type": "string", "description": "Version", "ignoreCase": "key" }, "includePreviewVersions": { "type": "boolean", "description": "Include Preview Versions", "ignoreCase": "key" }, "installationPath": { "type": "string", "description": "Path To Install .Net Core", "ignoreCase": "key" }, "performMultiLevelLookup": { "type": "boolean", "description": "Perform Multi Level Lookup", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "DotNetCoreInstaller is deprecated - Acquire a specific version of the .NET Core SDK from the internet or local cache and add it to the PATH", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Azure App Configuration Import\n\nPush key-values to an Azure App Configuration instance", "ignoreCase": "value", "pattern": "^AzureAppConfigurationImport@10$" }, "inputs": { "description": "Azure App Configuration Import inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "AppConfigurationEndpoint": { "type": "string", "description": "App Configuration Endpoint", "ignoreCase": "key" }, "ConfigurationFile": { "type": "string", "description": "Configuration File Path", "ignoreCase": "key" }, "UseFilePathExtension": { "type": "boolean", "description": "Use the file path extension to determine the file format", "ignoreCase": "key" }, "FileFormat": { "description": "File Format", "ignoreCase": "all", "enum": [ "json", "yaml", "properties" ] }, "FileContentProfile": { "description": "File Content Profile", "ignoreCase": "all", "enum": [ "appconfig/default", "appconfig/kvset" ] }, "Separator": { "description": "Separator", "ignoreCase": "all", "enum": [ ".", "/", ":", ";", ",", "-", "_", "__" ] }, "Depth": { "type": "string", "description": "Depth", "ignoreCase": "key" }, "Prefix": { "type": "string", "description": "Prefix", "ignoreCase": "key" }, "Label": { "type": "string", "description": "Label", "ignoreCase": "key" }, "ContentType": { "type": "string", "description": "Content Type", "ignoreCase": "key" }, "Tags": { "type": "string", "description": "Tags", "ignoreCase": "key" }, "ExcludeFeatureFlags": { "type": "boolean", "description": "Exclude feature flags", "ignoreCase": "key" }, "Strict": { "type": "boolean", "description": "Delete key-values that are not included in the configuration file", "ignoreCase": "key" }, "DryRun": { "type": "boolean", "description": "Dry run", "ignoreCase": "key" }, "ImportMode": { "description": "Import Mode", "ignoreCase": "all", "enum": [ "All", "Ignore-Match" ] } }, "additionalProperties": false, "required": [ "azureSubscription", "AppConfigurationEndpoint", "ConfigurationFile" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure App Service manage\n\nStart, stop, restart, slot swap, slot delete, install site extensions or enable continuous monitoring for an Azure App Service", "ignoreCase": "value", "pattern": "^AzureAppServiceManage@0$" }, "inputs": { "description": "Azure App Service manage inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "Action": { "description": "Action", "ignoreCase": "all", "enum": [ "Swap Slots", "Start Azure App Service", "Stop Azure App Service", "Restart Azure App Service", "Start Swap With Preview", "Complete Swap", "Cancel Swap", "Delete Slot", "Install Extensions", "Enable Continuous Monitoring", "Start all continuous webjobs", "Stop all continuous webjobs" ] }, "WebAppName": { "type": "string", "description": "App Service name", "ignoreCase": "key" }, "SpecifySlotOrASE": { "type": "boolean", "description": "Specify Slot or App Service Environment", "ignoreCase": "key", "aliases": [ "SpecifySlot" ] }, "ResourceGroupName": { "type": "string", "description": "Resource group", "ignoreCase": "key" }, "SourceSlot": { "type": "string", "description": "Source Slot", "ignoreCase": "key" }, "SwapWithProduction": { "type": "boolean", "description": "Swap with Production", "ignoreCase": "key" }, "TargetSlot": { "type": "string", "description": "Target Slot", "ignoreCase": "key" }, "PreserveVnet": { "type": "boolean", "description": "Preserve Vnet", "ignoreCase": "key" }, "Slot": { "type": "string", "description": "Slot", "ignoreCase": "key" }, "ExtensionsList": { "type": "string", "description": "Install Extensions", "ignoreCase": "key" }, "OutputVariable": { "type": "string", "description": "Output variable", "ignoreCase": "key" }, "AppInsightsResourceGroupName": { "type": "string", "description": "Resource Group name for Application Insights", "ignoreCase": "key" }, "ApplicationInsightsResourceName": { "type": "string", "description": "Application Insights resource name", "ignoreCase": "key" }, "ApplicationInsightsWebTestName": { "type": "string", "description": "Application Insights web test name", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscription", "WebAppName" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Kubelogin tool installer\n\nHelps to install kubelogin", "ignoreCase": "value", "pattern": "^KubeloginInstaller@0$" }, "inputs": { "description": "Kubelogin tool installer inputs", "properties": { "kubeloginVersion": { "type": "string", "description": "kubelogin version", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Install Azure Func Core Tools\n\nInstall Azure Func Core Tools", "ignoreCase": "value", "pattern": "^FuncToolsInstaller@0$" }, "inputs": { "description": "Install Azure Func Core Tools inputs", "properties": { "version": { "type": "string", "description": "Version", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "File transform\n\nReplace tokens with variable values in XML or JSON configuration files", "ignoreCase": "value", "pattern": "^FileTransform@2$" }, "inputs": { "description": "File transform inputs", "properties": { "folderPath": { "type": "string", "description": "Package or folder", "ignoreCase": "key" }, "enableXmlTransform": { "type": "boolean", "description": "XML transformation", "ignoreCase": "key" }, "xmlTransformationRules": { "type": "string", "description": "XML Transformation rules", "ignoreCase": "key" }, "jsonTargetFiles": { "type": "string", "description": "JSON target files", "ignoreCase": "key" }, "xmlTargetFiles": { "type": "string", "description": "XML target files", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "File transform\n\nReplace tokens with variable values in XML or JSON configuration files", "ignoreCase": "value", "pattern": "^FileTransform@1$" }, "inputs": { "description": "File transform inputs", "properties": { "folderPath": { "type": "string", "description": "Package or folder", "ignoreCase": "key" }, "enableXmlTransform": { "type": "boolean", "description": "XML transformation", "ignoreCase": "key" }, "xmlTransformationRules": { "type": "string", "description": "Transformation rules", "ignoreCase": "key" }, "fileType": { "description": "File format", "ignoreCase": "all", "enum": [ "xml", "json" ] }, "targetFiles": { "type": "string", "description": "Target files", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "FileTransform is deprecated - Replace tokens with variable values in XML or JSON configuration files", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Extract files\n\nExtract a variety of archive and compression files such as .7z, .rar, .tar.gz, and .zip", "ignoreCase": "value", "pattern": "^ExtractFiles@1$" }, "inputs": { "description": "Extract files inputs", "properties": { "archiveFilePatterns": { "type": "string", "description": "Archive file patterns", "ignoreCase": "key" }, "destinationFolder": { "type": "string", "description": "Destination folder", "ignoreCase": "key" }, "cleanDestinationFolder": { "type": "boolean", "description": "Clean destination folder before extracting", "ignoreCase": "key" }, "overwriteExistingFiles": { "type": "boolean", "description": "Overwrite existing files", "ignoreCase": "key" }, "pathToSevenZipTool": { "type": "string", "description": "Path to 7z utility", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "destinationFolder" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Xamarin.Android\n\nBuild an Android app with Xamarin", "ignoreCase": "value", "pattern": "^XamarinAndroid@1$" }, "inputs": { "description": "Xamarin.Android inputs", "properties": { "projectFile": { "type": "string", "description": "Project", "ignoreCase": "key", "aliases": [ "project" ] }, "target": { "type": "string", "description": "Target", "ignoreCase": "key" }, "outputDirectory": { "type": "string", "description": "Output directory", "ignoreCase": "key", "aliases": [ "outputDir" ] }, "configuration": { "type": "string", "description": "Configuration", "ignoreCase": "key" }, "createAppPackage": { "type": "boolean", "description": "Create app package", "ignoreCase": "key" }, "clean": { "type": "boolean", "description": "Clean", "ignoreCase": "key" }, "msbuildLocationOption": { "description": "MSBuild", "ignoreCase": "all", "enum": [ "version", "location" ], "aliases": [ "msbuildLocationMethod" ] }, "msbuildVersionOption": { "description": "MSBuild version", "ignoreCase": "all", "enum": [ "latest", "17.0", "16.0", "15.0", "14.0", "12.0", "4.0" ], "aliases": [ "msbuildVersion" ] }, "msbuildFile": { "type": "string", "description": "MSBuild location", "ignoreCase": "key", "aliases": [ "msbuildLocation" ] }, "msbuildArchitectureOption": { "description": "MSBuild architecture", "ignoreCase": "all", "enum": [ "x86", "x64" ], "aliases": [ "msbuildArchitecture" ] }, "msbuildArguments": { "type": "string", "description": "Additional arguments", "ignoreCase": "key" }, "jdkOption": { "description": "Select JDK to use for the build", "ignoreCase": "all", "enum": [ "JDKVersion", "Path" ], "aliases": [ "jdkSelection" ] }, "jdkVersionOption": { "description": "JDK version", "ignoreCase": "all", "enum": [ "default", "1.11", "1.10", "1.9", "1.8", "1.7", "1.6" ], "aliases": [ "jdkVersion" ] }, "jdkDirectory": { "type": "string", "description": "JDK path", "ignoreCase": "key", "aliases": [ "jdkUserInputPath" ] }, "jdkArchitectureOption": { "description": "JDK architecture", "ignoreCase": "all", "enum": [ "x86", "x64" ], "aliases": [ "jdkArchitecture" ] } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "XamarinAndroid is deprecated - Build an Android app with Xamarin", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Copy and Publish Build Artifacts\n\n[DEPRECATED] Use the Copy Files task and the Publish Build Artifacts task instead", "ignoreCase": "value", "pattern": "^CopyPublishBuildArtifacts@1$" }, "inputs": { "description": "Copy and Publish Build Artifacts inputs", "properties": { "CopyRoot": { "type": "string", "description": "Copy Root", "ignoreCase": "key" }, "Contents": { "type": "string", "description": "Contents", "ignoreCase": "key" }, "ArtifactName": { "type": "string", "description": "Artifact Name", "ignoreCase": "key" }, "ArtifactType": { "description": "Artifact Type", "ignoreCase": "all", "enum": [ "Container", "FilePath" ] }, "TargetPath": { "type": "string", "description": "Path", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "Contents", "ArtifactName", "ArtifactType" ] } }, "deprecationMessage": "CopyPublishBuildArtifacts is deprecated - [DEPRECATED] Use the Copy Files task and the Publish Build Artifacts task instead", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Download package\n\nDownload a package from a package management feed in Azure Artifacts", "ignoreCase": "value", "pattern": "^DownloadPackage@0$" }, "inputs": { "description": "Download package inputs", "properties": { "feed": { "type": "string", "description": "Feed", "ignoreCase": "key" }, "definition": { "type": "string", "description": "Package", "ignoreCase": "key" }, "version": { "type": "string", "description": "Version", "ignoreCase": "key" }, "downloadPath": { "type": "string", "description": "Destination directory", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "feed", "definition", "version" ] } }, "deprecationMessage": "DownloadPackage is deprecated - Download a package from a package management feed in Azure Artifacts", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Download package\n\nDownload a package from a package management feed in Azure Artifacts", "ignoreCase": "value", "pattern": "^DownloadPackage@1$" }, "inputs": { "description": "Download package inputs", "properties": { "packageType": { "description": "Package Type", "ignoreCase": "all", "enum": [ "maven", "npm", "nuget", "pypi", "upack", "cargo" ] }, "feed": { "type": "string", "description": "Feed", "ignoreCase": "key" }, "view": { "type": "string", "description": "View", "ignoreCase": "key" }, "definition": { "type": "string", "description": "Package", "ignoreCase": "key" }, "version": { "type": "string", "description": "Version", "ignoreCase": "key" }, "files": { "type": "string", "description": "Files", "ignoreCase": "key" }, "extract": { "type": "boolean", "description": "Extract package contents", "ignoreCase": "key" }, "downloadPath": { "type": "string", "description": "Destination directory", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "feed", "definition", "version" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure resource group deployment\n\nDeploy an Azure Resource Manager (ARM) template to a resource group and manage virtual machines", "ignoreCase": "value", "pattern": "^AzureResourceGroupDeployment@2$" }, "inputs": { "description": "Azure resource group deployment inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "action": { "description": "Action", "ignoreCase": "all", "enum": [ "Create Or Update Resource Group", "Select Resource Group", "Start", "Stop", "StopWithDeallocate", "Restart", "Delete", "DeleteRG" ] }, "resourceGroupName": { "type": "string", "description": "Resource group", "ignoreCase": "key" }, "location": { "type": "string", "description": "Location", "ignoreCase": "key" }, "templateLocation": { "description": "Template location", "ignoreCase": "all", "enum": [ "Linked artifact", "URL of the file" ] }, "csmFileLink": { "type": "string", "description": "Template link", "ignoreCase": "key" }, "csmParametersFileLink": { "type": "string", "description": "Template parameters link", "ignoreCase": "key" }, "csmFile": { "type": "string", "description": "Template", "ignoreCase": "key" }, "csmParametersFile": { "type": "string", "description": "Template parameters", "ignoreCase": "key" }, "overrideParameters": { "type": "string", "description": "Override template parameters", "ignoreCase": "key" }, "deploymentMode": { "description": "Deployment mode", "ignoreCase": "all", "enum": [ "Incremental", "Complete", "Validation" ] }, "enableDeploymentPrerequisites": { "description": "Enable prerequisites", "ignoreCase": "all", "enum": [ "None", "ConfigureVMwithWinRM", "ConfigureVMWithDGAgent" ] }, "teamServicesConnection": { "type": "string", "description": "Azure Pipelines service connection", "ignoreCase": "key", "aliases": [ "deploymentGroupEndpoint" ] }, "teamProject": { "type": "string", "description": "Team project", "ignoreCase": "key", "aliases": [ "project" ] }, "deploymentGroupName": { "type": "string", "description": "Deployment Group", "ignoreCase": "key" }, "copyAzureVMTags": { "type": "boolean", "description": "Copy Azure VM tags to agents", "ignoreCase": "key" }, "runAgentServiceAsUser": { "type": "boolean", "description": "Run agent service as a user", "ignoreCase": "key" }, "userName": { "type": "string", "description": "User name", "ignoreCase": "key" }, "password": { "type": "string", "description": "Password", "ignoreCase": "key" }, "outputVariable": { "type": "string", "description": "VM details for WinRM", "ignoreCase": "key" }, "deploymentName": { "type": "string", "description": "Deployment name", "ignoreCase": "key" }, "deploymentOutputs": { "type": "string", "description": "Deployment outputs", "ignoreCase": "key" }, "addSpnToEnvironment": { "type": "boolean", "description": "Access service principal details in override parameters", "ignoreCase": "key" }, "useWithoutJSON": { "type": "boolean", "description": "Use individual output values without JSON.Stringify applied", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscription", "resourceGroupName" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure Resource Group Deployment\n\nDeploy, start, stop, delete Azure Resource Groups", "ignoreCase": "value", "pattern": "^AzureResourceGroupDeployment@1$" }, "inputs": { "description": "Azure Resource Group Deployment inputs", "properties": { "ConnectedServiceNameSelector": { "description": "Azure Connection Type", "ignoreCase": "all", "enum": [ "ConnectedServiceName", "ConnectedServiceNameClassic" ] }, "ConnectedServiceName": { "type": "string", "description": "Azure Subscription", "ignoreCase": "key" }, "ConnectedServiceNameClassic": { "type": "string", "description": "Azure Classic Subscription", "ignoreCase": "key" }, "action": { "description": "Action", "ignoreCase": "all", "enum": [ "Create Or Update Resource Group", "Select Resource Group", "Start", "Stop", "Restart", "Delete", "DeleteRG" ] }, "actionClassic": { "description": "Action", "ignoreCase": "all", "enum": [ "Select Resource Group" ] }, "resourceGroupName": { "type": "string", "description": "Resource Group", "ignoreCase": "key" }, "cloudService": { "type": "string", "description": "Cloud Service", "ignoreCase": "key" }, "location": { "description": "Location", "ignoreCase": "all", "enum": [ "Australia East", "Australia Southeast", "Brazil South", "Canada Central", "Canada East", "Central India", "Central US", "East Asia", "East US", "East US 2 ", "Japan East", "Japan West", "North Central US", "North Europe", "South Central US", "South India", "Southeast Asia", "UK South", "UK West", "West Central US", "West Europe", "West India", "West US", "West US 2" ] }, "csmFile": { "type": "string", "description": "Template", "ignoreCase": "key" }, "csmParametersFile": { "type": "string", "description": "Template Parameters", "ignoreCase": "key" }, "overrideParameters": { "type": "string", "description": "Override Template Parameters", "ignoreCase": "key" }, "deploymentMode": { "description": "Deployment Mode", "ignoreCase": "all", "enum": [ "Validation", "Incremental", "Complete" ] }, "enableDeploymentPrerequisitesForCreate": { "type": "boolean", "description": "Enable Deployment Prerequisites", "ignoreCase": "key" }, "enableDeploymentPrerequisitesForSelect": { "type": "boolean", "description": "Enable Deployment Prerequisites", "ignoreCase": "key" }, "outputVariable": { "type": "string", "description": "Resource Group", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "AzureResourceGroupDeployment is deprecated - Deploy, start, stop, delete Azure Resource Groups", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "ARM template deployment\n\nDeploy an Azure Resource Manager (ARM) template to all the deployment scopes", "ignoreCase": "value", "pattern": "^AzureResourceManagerTemplateDeployment@3$" }, "inputs": { "description": "ARM template deployment inputs", "properties": { "deploymentScope": { "description": "Deployment scope", "ignoreCase": "all", "enum": [ "Management Group", "Subscription", "Resource Group" ] }, "azureResourceManagerConnection": { "type": "string", "description": "Azure Resource Manager connection", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "subscriptionId": { "type": "string", "description": "Subscription", "ignoreCase": "key", "aliases": [ "subscriptionName" ] }, "action": { "description": "Action", "ignoreCase": "all", "enum": [ "Create Or Update Resource Group", "DeleteRG" ] }, "resourceGroupName": { "type": "string", "description": "Resource group", "ignoreCase": "key" }, "location": { "type": "string", "description": "Location", "ignoreCase": "key" }, "templateLocation": { "description": "Template location", "ignoreCase": "all", "enum": [ "Linked artifact", "URL of the file" ] }, "csmFileLink": { "type": "string", "description": "Template link", "ignoreCase": "key" }, "csmParametersFileLink": { "type": "string", "description": "Template parameters link", "ignoreCase": "key" }, "csmFile": { "type": "string", "description": "Template", "ignoreCase": "key" }, "csmParametersFile": { "type": "string", "description": "Template parameters", "ignoreCase": "key" }, "overrideParameters": { "type": "string", "description": "Override template parameters", "ignoreCase": "key" }, "deploymentMode": { "description": "Deployment mode", "ignoreCase": "all", "enum": [ "Incremental", "Complete", "Validation" ] }, "deploymentName": { "type": "string", "description": "Deployment name", "ignoreCase": "key" }, "deploymentOutputs": { "type": "string", "description": "Deployment outputs", "ignoreCase": "key" }, "addSpnToEnvironment": { "type": "boolean", "description": "Access service principal details in override parameters", "ignoreCase": "key" }, "useWithoutJSON": { "type": "boolean", "description": "Use individual output values without JSON.Stringify applied", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureResourceManagerConnection" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Invoke REST API\n\nInvoke REST API as a part of your process.", "ignoreCase": "value", "pattern": "^InvokeRESTAPI@0$" }, "inputs": { "description": "Invoke REST API inputs", "properties": { "serviceConnection": { "type": "string", "description": "Generic endpoint", "ignoreCase": "key", "aliases": [ "connectedServiceName" ] }, "method": { "description": "Method", "ignoreCase": "all", "enum": [ "OPTIONS", "GET", "HEAD", "POST", "PUT", "DELETE", "TRACE", "PATCH" ] }, "headers": { "type": "string", "description": "Headers", "ignoreCase": "key" }, "body": { "type": "string", "description": "Body", "ignoreCase": "key" }, "urlSuffix": { "type": "string", "description": "Url suffix string", "ignoreCase": "key" }, "waitForCompletion": { "description": "Complete based on", "ignoreCase": "all", "enum": [ "true", "false" ] }, "successCriteria": { "type": "string", "description": "Success criteria", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "serviceConnection" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Invoke REST API\n\nInvoke a REST API as a part of your pipeline.", "ignoreCase": "value", "pattern": "^InvokeRESTAPI@1$" }, "inputs": { "description": "Invoke REST API inputs", "properties": { "connectionType": { "description": "Connection type", "ignoreCase": "all", "enum": [ "connectedServiceName", "connectedServiceNameARM" ], "aliases": [ "connectedServiceNameSelector" ] }, "serviceConnection": { "type": "string", "description": "Generic service connection", "ignoreCase": "key", "aliases": [ "connectedServiceName", "genericService" ] }, "azureServiceConnection": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "connectedServiceNameARM", "azureSubscription" ] }, "method": { "description": "Method", "ignoreCase": "all", "enum": [ "OPTIONS", "GET", "HEAD", "POST", "PUT", "DELETE", "TRACE", "PATCH" ] }, "headers": { "type": "string", "description": "Headers", "ignoreCase": "key" }, "body": { "type": "string", "description": "Body", "ignoreCase": "key" }, "urlSuffix": { "type": "string", "description": "URL suffix and parameters", "ignoreCase": "key" }, "waitForCompletion": { "description": "Completion event", "ignoreCase": "all", "enum": [ "true", "false" ] }, "successCriteria": { "type": "string", "description": "Success criteria", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Archive files\n\nCompress files into .7z, .tar.gz, or .zip", "ignoreCase": "value", "pattern": "^ArchiveFiles@2$" }, "inputs": { "description": "Archive files inputs", "properties": { "rootFolderOrFile": { "type": "string", "description": "Root folder or file to archive", "ignoreCase": "key" }, "includeRootFolder": { "type": "boolean", "description": "Prepend root folder name to archive paths", "ignoreCase": "key" }, "archiveType": { "description": "Archive type", "ignoreCase": "all", "enum": [ "zip", "7z", "tar", "wim" ] }, "sevenZipCompression": { "description": "7z compression", "ignoreCase": "all", "enum": [ "ultra", "maximum", "normal", "fast", "fastest", "none" ] }, "tarCompression": { "description": "Tar compression", "ignoreCase": "all", "enum": [ "gz", "bz2", "xz", "none" ] }, "archiveFile": { "type": "string", "description": "Archive file to create", "ignoreCase": "key" }, "replaceExistingArchive": { "type": "boolean", "description": "Replace existing archive", "ignoreCase": "key" }, "verbose": { "type": "boolean", "description": "Force verbose output", "ignoreCase": "key" }, "quiet": { "type": "boolean", "description": "Force quiet output", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Archive Files\n\nArchive files using compression formats such as .7z, .rar, .tar.gz, and .zip.", "ignoreCase": "value", "pattern": "^ArchiveFiles@1$" }, "inputs": { "description": "Archive Files inputs", "properties": { "rootFolder": { "type": "string", "description": "Root folder (or file) to archive", "ignoreCase": "key" }, "includeRootFolder": { "type": "boolean", "description": "Prefix root folder name to archive paths", "ignoreCase": "key" }, "archiveType": { "description": "Archive type", "ignoreCase": "all", "enum": [ "default", "7z", "tar", "wim" ] }, "tarCompression": { "description": "Tar compression", "ignoreCase": "all", "enum": [ "gz", "bz2", "xz", "none" ] }, "archiveFile": { "type": "string", "description": "Archive file to create", "ignoreCase": "key" }, "replaceExistingArchive": { "type": "boolean", "description": "Replace existing archive", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "GitHub Comment\n\nWrite a comment to your Github entity i.e. issue or a Pull Request (PR)", "ignoreCase": "value", "pattern": "^GitHubComment@0$" }, "inputs": { "description": "GitHub Comment inputs", "properties": { "gitHubConnection": { "type": "string", "description": "GitHub connection (OAuth or PAT)", "ignoreCase": "key" }, "repositoryName": { "type": "string", "description": "Repository", "ignoreCase": "key" }, "id": { "type": "string", "description": "ID of the github pr/issue", "ignoreCase": "key" }, "comment": { "type": "string", "description": "Comment", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "gitHubConnection" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Copy files\n\nCopy files from a source folder to a target folder using patterns matching file paths (not folder paths)", "ignoreCase": "value", "pattern": "^CopyFiles@2$" }, "inputs": { "description": "Copy files inputs", "properties": { "SourceFolder": { "type": "string", "description": "Source Folder", "ignoreCase": "key" }, "Contents": { "type": "string", "description": "Contents", "ignoreCase": "key" }, "TargetFolder": { "type": "string", "description": "Target Folder", "ignoreCase": "key" }, "CleanTargetFolder": { "type": "boolean", "description": "Clean Target Folder", "ignoreCase": "key" }, "OverWrite": { "type": "boolean", "description": "Overwrite", "ignoreCase": "key" }, "flattenFolders": { "type": "boolean", "description": "Flatten Folders", "ignoreCase": "key" }, "preserveTimestamp": { "type": "boolean", "description": "Preserve Target Timestamp", "ignoreCase": "key" }, "retryCount": { "type": "string", "description": "Retry count to copy the file", "ignoreCase": "key" }, "delayBetweenRetries": { "type": "string", "description": "Delay between two retries.", "ignoreCase": "key" }, "ignoreMakeDirErrors": { "type": "boolean", "description": "Ignore errors during creation of target folder.", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "TargetFolder" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Copy Files\n\nCopy files from source folder to target folder using minimatch patterns (The minimatch patterns will only match file paths, not folder paths)", "ignoreCase": "value", "pattern": "^CopyFiles@1$" }, "inputs": { "description": "Copy Files inputs", "properties": { "SourceFolder": { "type": "string", "description": "Source Folder", "ignoreCase": "key" }, "Contents": { "type": "string", "description": "Contents", "ignoreCase": "key" }, "TargetFolder": { "type": "string", "description": "Target Folder", "ignoreCase": "key" }, "CleanTargetFolder": { "type": "boolean", "description": "Clean Target Folder", "ignoreCase": "key" }, "OverWrite": { "type": "boolean", "description": "Overwrite", "ignoreCase": "key" }, "flattenFolders": { "type": "boolean", "description": "Flatten Folders", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "TargetFolder" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure Database for MySQL deployment\n\nRun your scripts and make changes to your Azure Database for MySQL", "ignoreCase": "value", "pattern": "^AzureMysqlDeployment@1$" }, "inputs": { "description": "Azure Database for MySQL deployment inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure Subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "ServerName": { "type": "string", "description": "Host Name", "ignoreCase": "key" }, "DatabaseName": { "type": "string", "description": "Database Name", "ignoreCase": "key" }, "SqlUsername": { "type": "string", "description": "Server Admin Login", "ignoreCase": "key" }, "SqlPassword": { "type": "string", "description": "Password", "ignoreCase": "key" }, "TaskNameSelector": { "description": "Type", "ignoreCase": "all", "enum": [ "SqlTaskFile", "InlineSqlTask" ] }, "SqlFile": { "type": "string", "description": "MySQL Script", "ignoreCase": "key" }, "SqlInline": { "type": "string", "description": "Inline MySQL Script", "ignoreCase": "key" }, "SqlAdditionalArguments": { "type": "string", "description": "Additional MySQL Arguments", "ignoreCase": "key" }, "IpDetectionMethod": { "description": "Specify Firewall Rules Using", "ignoreCase": "all", "enum": [ "AutoDetect", "IPAddressRange" ] }, "StartIpAddress": { "type": "string", "description": "Start IP Address", "ignoreCase": "key" }, "EndIpAddress": { "type": "string", "description": "End IP Address", "ignoreCase": "key" }, "DeleteFirewallRule": { "type": "boolean", "description": "Delete Rule After Task Ends", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscription", "ServerName", "SqlUsername", "SqlPassword" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "npm\n\nInstall and publish npm packages, or run an npm command. Supports npmjs.com and authenticated registries like Azure Artifacts.", "ignoreCase": "value", "pattern": "^Npm@1$" }, "inputs": { "description": "npm inputs", "properties": { "command": { "description": "Command", "ignoreCase": "all", "enum": [ "ci", "install", "publish", "custom" ] }, "workingDir": { "type": "string", "description": "Working folder that contains package.json", "ignoreCase": "key" }, "verbose": { "type": "boolean", "description": "Verbose logging", "ignoreCase": "key" }, "customCommand": { "type": "string", "description": "Command and arguments", "ignoreCase": "key" }, "customRegistry": { "description": "Registries to use", "ignoreCase": "all", "enum": [ "useNpmrc", "useFeed" ] }, "customFeed": { "type": "string", "description": "Use packages from this Azure Artifacts/TFS registry", "ignoreCase": "key" }, "customEndpoint": { "type": "string", "description": "Credentials for registries outside this organization/collection", "ignoreCase": "key" }, "publishRegistry": { "description": "Registry location", "ignoreCase": "all", "enum": [ "useExternalRegistry", "useFeed" ] }, "publishFeed": { "type": "string", "description": "Target registry", "ignoreCase": "key" }, "publishPackageMetadata": { "type": "boolean", "description": "Publish pipeline metadata", "ignoreCase": "key" }, "publishEndpoint": { "type": "string", "description": "External Registry", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "npm\n\nRun an npm command. Use NpmAuthenticate@0 task for latest capabilities.", "ignoreCase": "value", "pattern": "^Npm@0$" }, "inputs": { "description": "npm inputs", "properties": { "cwd": { "type": "string", "description": "working folder", "ignoreCase": "key" }, "command": { "type": "string", "description": "npm command", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "arguments", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Deploy Azure Static Web App\n\n[PREVIEW] Build and deploy an Azure Static Web App", "ignoreCase": "value", "pattern": "^AzureStaticWebApp@0$" }, "inputs": { "description": "Deploy Azure Static Web App inputs", "properties": { "workingDirectory": { "type": "string", "description": "Working directory", "ignoreCase": "key", "aliases": [ "cwd", "rootDirectory" ] }, "app_location": { "type": "string", "description": "App location", "ignoreCase": "key" }, "app_build_command": { "type": "string", "description": "App build command", "ignoreCase": "key" }, "output_location": { "type": "string", "description": "Output location", "ignoreCase": "key" }, "api_location": { "type": "string", "description": "Api location", "ignoreCase": "key" }, "api_build_command": { "type": "string", "description": "Api build command", "ignoreCase": "key" }, "routes_location": { "type": "string", "description": "Routes location", "ignoreCase": "key" }, "config_file_location": { "type": "string", "description": "Config file location", "ignoreCase": "key" }, "skip_app_build": { "type": "boolean", "description": "Skip app build", "ignoreCase": "key" }, "skip_api_build": { "type": "boolean", "description": "Skip api build", "ignoreCase": "key" }, "is_static_export": { "type": "boolean", "description": "Set static export", "ignoreCase": "key" }, "verbose": { "type": "boolean", "description": "Verbose", "ignoreCase": "key" }, "build_timeout_in_minutes": { "type": "integer", "description": "Build timeout in minutes", "ignoreCase": "key" }, "azure_static_web_apps_api_token": { "type": "string", "description": "Azure Static Web Apps api token", "ignoreCase": "key" }, "deployment_environment": { "type": "string", "description": "Deployment Environment", "ignoreCase": "key" }, "production_branch": { "type": "string", "description": "Production Branch", "ignoreCase": "key" }, "data_api_location": { "type": "string", "description": "Data api location", "ignoreCase": "key" }, "azure_access_token": { "type": "string", "description": "Azure Access Token", "ignoreCase": "key" }, "default_hostname": { "type": "string", "description": "Default Hostname", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Use Node.js ecosystem\n\nSet up a Node.js environment and add it to the PATH, additionally providing proxy support", "ignoreCase": "value", "pattern": "^UseNode@1$" }, "inputs": { "description": "Use Node.js ecosystem inputs", "properties": { "version": { "type": "string", "description": "Version", "ignoreCase": "key" }, "checkLatest": { "type": "boolean", "description": "Check for Latest Version", "ignoreCase": "key" }, "force32bit": { "type": "boolean", "description": "Use 32 bit version on x64 agents", "ignoreCase": "key" }, "retryCountOnDownloadFails": { "type": "string", "description": "Set retry count when nodes downloads failed", "ignoreCase": "key" }, "delayBetweenRetries": { "type": "string", "description": "Set delay between retries", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Node.js tool installer\n\nFinds or downloads and caches the specified version spec of Node.js and adds it to the PATH", "ignoreCase": "value", "pattern": "^NodeTool@0$" }, "inputs": { "description": "Node.js tool installer inputs", "properties": { "versionSource": { "description": "Source of version", "ignoreCase": "all", "enum": [ "spec", "fromFile" ] }, "versionSpec": { "type": "string", "description": "Version Spec", "ignoreCase": "key" }, "versionFilePath": { "type": "string", "description": "Path to the .nvmrc file", "ignoreCase": "key" }, "checkLatest": { "type": "boolean", "description": "Check for Latest Version", "ignoreCase": "key" }, "force32bit": { "type": "boolean", "description": "Use 32 bit version on x64 agents", "ignoreCase": "key" }, "nodejsMirror": { "type": "string", "description": "Set source for Node.js binaries", "ignoreCase": "key" }, "retryCountOnDownloadFails": { "type": "string", "description": "Set retry count when nodes downloads failed", "ignoreCase": "key" }, "delayBetweenRetries": { "type": "string", "description": "Set delay between retries", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "[Deprecated] SQL Server database deploy\n\nDeploy a SQL Server database using DACPAC", "ignoreCase": "value", "pattern": "^SqlServerDacpacDeployment@1$" }, "inputs": { "description": "[Deprecated] SQL Server database deploy inputs", "properties": { "EnvironmentName": { "type": "string", "description": "Machines", "ignoreCase": "key" }, "AdminUserName": { "type": "string", "description": "Admin Login", "ignoreCase": "key" }, "AdminPassword": { "type": "string", "description": "Password", "ignoreCase": "key" }, "Protocol": { "description": "Protocol", "ignoreCase": "all", "enum": [ "Http", "Https" ] }, "TestCertificate": { "type": "boolean", "description": "Test Certificate", "ignoreCase": "key" }, "DacpacFile": { "type": "string", "description": "DACPAC File", "ignoreCase": "key" }, "TargetMethod": { "description": "Specify SQL Using", "ignoreCase": "all", "enum": [ "server", "connectionString", "publishProfile" ] }, "ServerName": { "type": "string", "description": "Server Name", "ignoreCase": "key" }, "DatabaseName": { "type": "string", "description": "Database Name", "ignoreCase": "key" }, "SqlUsername": { "type": "string", "description": "SQL Username", "ignoreCase": "key" }, "SqlPassword": { "type": "string", "description": "SQL Password", "ignoreCase": "key" }, "ConnectionString": { "type": "string", "description": "Connection String", "ignoreCase": "key" }, "PublishProfile": { "type": "string", "description": "Publish Profile", "ignoreCase": "key" }, "AdditionalArguments": { "type": "string", "description": "Additional Arguments", "ignoreCase": "key" }, "DeployInParallel": { "type": "boolean", "description": "Deploy in Parallel", "ignoreCase": "key" }, "ResourceFilteringMethod": { "description": "Select Machines By", "ignoreCase": "all", "enum": [ "machineNames", "tags" ] }, "MachineFilter": { "type": "string", "description": "Deploy to Machines", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "EnvironmentName", "DacpacFile" ] } }, "deprecationMessage": "SqlServerDacpacDeployment is deprecated - Deploy a SQL Server database using DACPAC", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Visual Studio test platform installer\n\nAcquire the test platform from nuget.org or the tool cache. Satisfies the ‘vstest’ demand and can be used for running tests and collecting diagnostic data using the Visual Studio Test task.", "ignoreCase": "value", "pattern": "^VisualStudioTestPlatformInstaller@1$" }, "inputs": { "description": "Visual Studio test platform installer inputs", "properties": { "packageFeedSelector": { "description": "Package Feed", "ignoreCase": "all", "enum": [ "nugetOrg", "customFeed", "netShare" ] }, "versionSelector": { "description": "Version", "ignoreCase": "all", "enum": [ "latestPreRelease", "latestStable", "specificVersion" ] }, "testPlatformVersion": { "type": "string", "description": "Test Platform Version", "ignoreCase": "key" }, "customFeed": { "type": "string", "description": "Package Source", "ignoreCase": "key" }, "username": { "type": "string", "description": "User Name", "ignoreCase": "key" }, "password": { "type": "string", "description": "Password", "ignoreCase": "key" }, "netShare": { "type": "string", "description": "UNC Path", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Publish To Azure Service Bus\n\nSends a message to Azure Service Bus using a service connection (no agent is required)", "ignoreCase": "value", "pattern": "^PublishToAzureServiceBus@1$" }, "inputs": { "description": "Publish To Azure Service Bus inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure Service Bus service connection", "ignoreCase": "key", "aliases": [ "connectedServiceName" ] }, "messageBody": { "type": "string", "description": "Message body", "ignoreCase": "key" }, "sessionId": { "type": "string", "description": "Session Id", "ignoreCase": "key" }, "signPayload": { "type": "boolean", "description": "Sign the Message", "ignoreCase": "key" }, "certificateString": { "type": "string", "description": "Certificate Variable", "ignoreCase": "key" }, "signatureKey": { "type": "string", "description": "Signature Property Key", "ignoreCase": "key" }, "waitForCompletion": { "type": "boolean", "description": "Wait for task completion", "ignoreCase": "key" }, "useDataContractSerializer": { "type": "boolean", "description": "Use .NET data contract serializer", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscription" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Publish To Azure Service Bus\n\nSends a message to Azure Service Bus using an Azure Resource Manager service connection (no agent is required)", "ignoreCase": "value", "pattern": "^PublishToAzureServiceBus@2$" }, "inputs": { "description": "Publish To Azure Service Bus inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure Resource Manager service connection", "ignoreCase": "key", "aliases": [ "connectedServiceName" ] }, "serviceBusQueueName": { "type": "string", "description": "Azure Service Bus Queue name", "ignoreCase": "key" }, "serviceBusNamespace": { "type": "string", "description": "Azure Service Bus Namespace", "ignoreCase": "key" }, "messageBody": { "type": "string", "description": "Message body", "ignoreCase": "key" }, "sessionId": { "type": "string", "description": "Session Id", "ignoreCase": "key" }, "signPayload": { "type": "boolean", "description": "Sign the Message", "ignoreCase": "key" }, "certificateString": { "type": "string", "description": "Certificate Variable", "ignoreCase": "key" }, "signatureKey": { "type": "string", "description": "Signature Property Key", "ignoreCase": "key" }, "waitForCompletion": { "type": "boolean", "description": "Wait for task completion", "ignoreCase": "key" }, "useDataContractSerializer": { "type": "boolean", "description": "Use .NET data contract serializer", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscription", "serviceBusQueueName", "serviceBusNamespace" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Publish To Azure Service Bus\n\nSends a message to azure service bus using a service connection (no agent required).", "ignoreCase": "value", "pattern": "^PublishToAzureServiceBus@0$" }, "inputs": { "description": "Publish To Azure Service Bus inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure service bus connection", "ignoreCase": "key", "aliases": [ "connectedServiceName" ] }, "messageBody": { "type": "string", "description": "Message body", "ignoreCase": "key" }, "waitForCompletion": { "type": "boolean", "description": "Wait for task completion", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscription" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Deploy to Kubernetes\n\nUse Kubernetes manifest files to deploy to clusters or even bake the manifest files to be used for deployments using Helm charts", "ignoreCase": "value", "pattern": "^KubernetesManifest@0$" }, "inputs": { "description": "Deploy to Kubernetes inputs", "properties": { "action": { "description": "Action", "ignoreCase": "all", "enum": [ "bake", "createSecret", "delete", "deploy", "patch", "promote", "scale", "reject" ] }, "kubernetesServiceConnection": { "type": "string", "description": "Kubernetes service connection", "ignoreCase": "key" }, "namespace": { "type": "string", "description": "Namespace", "ignoreCase": "key" }, "strategy": { "description": "Strategy", "ignoreCase": "all", "enum": [ "canary", "none" ] }, "trafficSplitMethod": { "description": "Traffic split method", "ignoreCase": "all", "enum": [ "pod", "smi" ] }, "percentage": { "type": "string", "description": "Percentage", "ignoreCase": "key" }, "baselineAndCanaryReplicas": { "type": "string", "description": "Baseline and canary replicas", "ignoreCase": "key" }, "manifests": { "type": "string", "description": "Manifests", "ignoreCase": "key" }, "containers": { "type": "string", "description": "Containers", "ignoreCase": "key" }, "imagePullSecrets": { "type": "string", "description": "ImagePullSecrets", "ignoreCase": "key" }, "renderType": { "description": "Render Engine", "ignoreCase": "all", "enum": [ "helm", "kompose", "kustomize" ] }, "dockerComposeFile": { "type": "string", "description": "Path to docker compose file", "ignoreCase": "key" }, "helmChart": { "type": "string", "description": "Helm Chart", "ignoreCase": "key" }, "releaseName": { "type": "string", "description": "Helm Release Name", "ignoreCase": "key" }, "overrideFiles": { "type": "string", "description": "Override Files", "ignoreCase": "key" }, "overrides": { "type": "string", "description": "Overrides", "ignoreCase": "key" }, "kustomizationPath": { "type": "string", "description": "Kustomization Path", "ignoreCase": "key" }, "resourceToPatch": { "description": "Resource to patch", "ignoreCase": "all", "enum": [ "file", "name" ] }, "resourceFileToPatch": { "type": "string", "description": "File path", "ignoreCase": "key" }, "kind": { "description": "Kind", "ignoreCase": "all", "enum": [ "deployment", "replicaset", "statefulset" ] }, "name": { "type": "string", "description": "Name", "ignoreCase": "key" }, "replicas": { "type": "string", "description": "Replica count", "ignoreCase": "key" }, "mergeStrategy": { "description": "Merge Strategy", "ignoreCase": "all", "enum": [ "json", "merge", "strategic" ] }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "patch": { "type": "string", "description": "Patch", "ignoreCase": "key" }, "secretType": { "description": "Type of secret", "ignoreCase": "all", "enum": [ "dockerRegistry", "generic" ] }, "secretName": { "type": "string", "description": "Secret name", "ignoreCase": "key" }, "secretArguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "dockerRegistryEndpoint": { "type": "string", "description": "Docker registry service connection", "ignoreCase": "key" }, "rolloutStatusTimeout": { "type": "string", "description": "Timeout for rollout status", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "deprecationMessage": "KubernetesManifest is deprecated - Use Kubernetes manifest files to deploy to clusters or even bake the manifest files to be used for deployments using Helm charts", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Deploy to Kubernetes\n\nUse Kubernetes manifest files to deploy to clusters or even bake the manifest files to be used for deployments using Helm charts", "ignoreCase": "value", "pattern": "^KubernetesManifest@1$" }, "inputs": { "description": "Deploy to Kubernetes inputs", "properties": { "action": { "description": "Action", "ignoreCase": "all", "enum": [ "bake", "createSecret", "delete", "deploy", "patch", "promote", "scale", "reject" ] }, "connectionType": { "description": "Service connection type", "ignoreCase": "all", "enum": [ "azureResourceManager", "kubernetesServiceConnection" ] }, "kubernetesServiceConnection": { "type": "string", "description": "Kubernetes service connection", "ignoreCase": "key", "aliases": [ "kubernetesServiceEndpoint" ] }, "azureSubscriptionConnection": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "azureSubscriptionEndpoint" ] }, "azureResourceGroup": { "type": "string", "description": "Resource group", "ignoreCase": "key" }, "kubernetesCluster": { "type": "string", "description": "Kubernetes cluster", "ignoreCase": "key" }, "useClusterAdmin": { "type": "boolean", "description": "Use cluster admin credentials", "ignoreCase": "key" }, "namespace": { "type": "string", "description": "Namespace", "ignoreCase": "key" }, "strategy": { "description": "Strategy", "ignoreCase": "all", "enum": [ "canary", "none" ] }, "trafficSplitMethod": { "description": "Traffic split method", "ignoreCase": "all", "enum": [ "pod", "smi" ] }, "percentage": { "type": "string", "description": "Percentage", "ignoreCase": "key" }, "baselineAndCanaryReplicas": { "type": "string", "description": "Baseline and canary replicas", "ignoreCase": "key" }, "manifests": { "type": "string", "description": "Manifests", "ignoreCase": "key" }, "containers": { "type": "string", "description": "Containers", "ignoreCase": "key" }, "imagePullSecrets": { "type": "string", "description": "ImagePullSecrets", "ignoreCase": "key" }, "renderType": { "description": "Render Engine", "ignoreCase": "all", "enum": [ "helm", "kompose", "kustomize" ] }, "dockerComposeFile": { "type": "string", "description": "Path to docker compose file", "ignoreCase": "key" }, "helmChart": { "type": "string", "description": "Helm Chart", "ignoreCase": "key" }, "releaseName": { "type": "string", "description": "Helm Release Name", "ignoreCase": "key" }, "overrideFiles": { "type": "string", "description": "Override Files", "ignoreCase": "key" }, "overrides": { "type": "string", "description": "Overrides", "ignoreCase": "key" }, "kustomizationPath": { "type": "string", "description": "Kustomization Path", "ignoreCase": "key" }, "resourceToPatch": { "description": "Resource to patch", "ignoreCase": "all", "enum": [ "file", "name" ] }, "resourceFileToPatch": { "type": "string", "description": "File path", "ignoreCase": "key" }, "kind": { "description": "Kind", "ignoreCase": "all", "enum": [ "deployment", "replicaset", "statefulset" ] }, "name": { "type": "string", "description": "Name", "ignoreCase": "key" }, "replicas": { "type": "string", "description": "Replica count", "ignoreCase": "key" }, "mergeStrategy": { "description": "Merge Strategy", "ignoreCase": "all", "enum": [ "json", "merge", "strategic" ] }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "patch": { "type": "string", "description": "Patch", "ignoreCase": "key" }, "secretType": { "description": "Type of secret", "ignoreCase": "all", "enum": [ "dockerRegistry", "generic" ] }, "secretName": { "type": "string", "description": "Secret name", "ignoreCase": "key" }, "secretArguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "dockerRegistryEndpoint": { "type": "string", "description": "Docker registry service connection", "ignoreCase": "key" }, "rolloutStatusTimeout": { "type": "string", "description": "Timeout for rollout status", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Download build artifacts\n\nDownload files that were saved as artifacts of a completed build", "ignoreCase": "value", "pattern": "^DownloadBuildArtifacts@0$" }, "inputs": { "description": "Download build artifacts inputs", "properties": { "buildType": { "description": "Download artifacts produced by", "ignoreCase": "all", "enum": [ "current", "specific" ] }, "project": { "type": "string", "description": "Project", "ignoreCase": "key" }, "pipeline": { "type": "string", "description": "Build pipeline", "ignoreCase": "key", "aliases": [ "definition" ] }, "specificBuildWithTriggering": { "type": "boolean", "description": "When appropriate, download artifacts from the triggering build.", "ignoreCase": "key" }, "buildVersionToDownload": { "description": "Build version to download", "ignoreCase": "all", "enum": [ "latest", "latestFromBranch", "specific" ] }, "allowPartiallySucceededBuilds": { "type": "boolean", "description": "Download artifacts even from partially succeeded builds.", "ignoreCase": "key" }, "branchName": { "type": "string", "description": "Branch name", "ignoreCase": "key" }, "buildId": { "type": "string", "description": "Build", "ignoreCase": "key" }, "tags": { "type": "string", "description": "Build Tags", "ignoreCase": "key" }, "downloadType": { "description": "Download type", "ignoreCase": "all", "enum": [ "single", "specific" ] }, "artifactName": { "type": "string", "description": "Artifact name", "ignoreCase": "key" }, "itemPattern": { "type": "string", "description": "Matching pattern", "ignoreCase": "key" }, "downloadPath": { "type": "string", "description": "Destination directory", "ignoreCase": "key" }, "cleanDestinationFolder": { "type": "boolean", "description": "Clean destination folder", "ignoreCase": "key" }, "parallelizationLimit": { "type": "string", "description": "Parallelization limit", "ignoreCase": "key" }, "checkDownloadedFiles": { "type": "boolean", "description": "Check downloaded files", "ignoreCase": "key" }, "retryDownloadCount": { "type": "string", "description": "Retry count", "ignoreCase": "key" }, "retryRedirectDownloadCount": { "type": "string", "description": "Retry count for redirect download", "ignoreCase": "key" }, "extractTars": { "type": "boolean", "description": "Extract all files that are stored inside tar archives", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Download build artifacts\n\nDownload files that were saved as artifacts of a completed build", "ignoreCase": "value", "pattern": "^DownloadBuildArtifacts@1$" }, "inputs": { "description": "Download build artifacts inputs", "properties": { "buildType": { "description": "Download artifacts produced by", "ignoreCase": "all", "enum": [ "current", "specific" ] }, "project": { "type": "string", "description": "Project", "ignoreCase": "key" }, "pipeline": { "type": "string", "description": "Build pipeline", "ignoreCase": "key", "aliases": [ "definition" ] }, "specificBuildWithTriggering": { "type": "boolean", "description": "When appropriate, download artifacts from the triggering build.", "ignoreCase": "key" }, "buildVersionToDownload": { "description": "Build version to download", "ignoreCase": "all", "enum": [ "latest", "latestFromBranch", "specific" ] }, "allowPartiallySucceededBuilds": { "type": "boolean", "description": "Download artifacts even from partially succeeded builds.", "ignoreCase": "key" }, "branchName": { "type": "string", "description": "Branch name", "ignoreCase": "key" }, "buildId": { "type": "string", "description": "Build", "ignoreCase": "key" }, "tags": { "type": "string", "description": "Build Tags", "ignoreCase": "key" }, "downloadType": { "description": "Download type", "ignoreCase": "all", "enum": [ "single", "specific" ] }, "artifactName": { "type": "string", "description": "Artifact name", "ignoreCase": "key" }, "itemPattern": { "type": "string", "description": "Matching pattern", "ignoreCase": "key" }, "downloadPath": { "type": "string", "description": "Destination directory", "ignoreCase": "key" }, "cleanDestinationFolder": { "type": "boolean", "description": "Clean destination folder", "ignoreCase": "key" }, "parallelizationLimit": { "type": "string", "description": "Parallelization limit", "ignoreCase": "key" }, "checkDownloadedFiles": { "type": "boolean", "description": "Check downloaded files", "ignoreCase": "key" }, "retryDownloadCount": { "type": "string", "description": "Retry count", "ignoreCase": "key" }, "extractTars": { "type": "boolean", "description": "Extract all files that are stored inside tar archives", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "CocoaPods\n\nInstall CocoaPods dependencies for Swift and Objective-C Cocoa projects", "ignoreCase": "value", "pattern": "^CocoaPods@0$" }, "inputs": { "description": "CocoaPods inputs", "properties": { "workingDirectory": { "type": "string", "description": "Working directory", "ignoreCase": "key", "aliases": [ "cwd" ] }, "forceRepoUpdate": { "type": "boolean", "description": "Force repo update", "ignoreCase": "key" }, "projectDirectory": { "type": "string", "description": "Project directory", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Azure Spring Apps\n\nDeploy applications to Azure Spring Apps and manage deployments.", "ignoreCase": "value", "pattern": "^AzureSpringCloud@0$" }, "inputs": { "description": "Azure Spring Apps inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "Action": { "description": "Action", "ignoreCase": "all", "enum": [ "Deploy", "Set Production", "Delete Staging Deployment" ] }, "AzureSpringCloud": { "type": "string", "description": "Azure Spring Apps Name", "ignoreCase": "key" }, "AppName": { "type": "string", "description": "App", "ignoreCase": "key" }, "DeploymentType": { "description": "Deployment Type", "ignoreCase": "all", "enum": [ "Artifacts", "CustomContainer" ] }, "UseStagingDeployment": { "type": "boolean", "description": "Use Staging Deployment", "ignoreCase": "key" }, "CreateNewDeployment": { "type": "boolean", "description": "Create a new staging deployment if one does not exist.", "ignoreCase": "key" }, "DeploymentName": { "type": "string", "description": "Deployment", "ignoreCase": "key" }, "Package": { "type": "string", "description": "Package or folder", "ignoreCase": "key" }, "Builder": { "type": "string", "description": "Builder", "ignoreCase": "key" }, "RegistryServer": { "type": "string", "description": "Registry Server", "ignoreCase": "key" }, "RegistryUsername": { "type": "string", "description": "Registry Username", "ignoreCase": "key" }, "RegistryPassword": { "type": "string", "description": "Registry Password", "ignoreCase": "key" }, "ImageName": { "type": "string", "description": "Image Name and Tag", "ignoreCase": "key" }, "ImageCommand": { "type": "string", "description": "Image Command", "ignoreCase": "key" }, "ImageArgs": { "type": "string", "description": "Image Arguments", "ignoreCase": "key" }, "ImageLanguageFramework": { "description": "Language Framework", "ignoreCase": "all", "enum": [ "springboot", "" ] }, "EnvironmentVariables": { "type": "string", "description": "Environment Variables", "ignoreCase": "key" }, "JvmOptions": { "type": "string", "description": "JVM Options", "ignoreCase": "key" }, "RuntimeVersion": { "description": "Runtime Version", "ignoreCase": "all", "enum": [ "Java_8", "Java_11", "Java_17", "Java_21", "NetCore_31" ] }, "DotNetCoreMainEntryPath": { "type": "string", "description": "Main Entry Path", "ignoreCase": "key" }, "Version": { "type": "string", "description": "Version", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscription", "AzureSpringCloud", "AppName" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure Web App\n\nDeploy an Azure Web App for Linux or Windows", "ignoreCase": "value", "pattern": "^AzureWebApp@1$" }, "inputs": { "description": "Azure Web App inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key" }, "appType": { "description": "App type", "ignoreCase": "all", "enum": [ "webApp", "webAppLinux" ] }, "appName": { "type": "string", "description": "App name", "ignoreCase": "key" }, "deployToSlotOrASE": { "type": "boolean", "description": "Deploy to Slot or App Service Environment", "ignoreCase": "key" }, "resourceGroupName": { "type": "string", "description": "Resource group", "ignoreCase": "key" }, "slotName": { "type": "string", "description": "Slot", "ignoreCase": "key" }, "package": { "type": "string", "description": "Package or folder", "ignoreCase": "key" }, "customDeployFolder": { "type": "string", "description": "Custom Deploy Folder", "ignoreCase": "key" }, "runtimeStack": { "type": "string", "description": "Runtime stack", "ignoreCase": "key" }, "startUpCommand": { "type": "string", "description": "Startup command ", "ignoreCase": "key" }, "customWebConfig": { "type": "string", "description": "Generate web.config parameters for Python, Node.js, Go and Java apps", "ignoreCase": "key" }, "appSettings": { "type": "string", "description": "App settings", "ignoreCase": "key" }, "configurationStrings": { "type": "string", "description": "Configuration settings", "ignoreCase": "key" }, "deploymentMethod": { "description": "Deployment method", "ignoreCase": "all", "enum": [ "auto", "zipDeploy", "runFromPackage" ] } }, "additionalProperties": false, "required": [ "azureSubscription", "appType", "appName" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure CLI\n\nRun Azure CLI commands against an Azure subscription in a Shell script when running on Linux agent or Batch script when running on Windows agent.", "ignoreCase": "value", "pattern": "^AzureCLI@1$" }, "inputs": { "description": "Azure CLI inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "connectedServiceNameARM" ] }, "scriptLocation": { "description": "Script Location", "ignoreCase": "all", "enum": [ "inlineScript", "scriptPath" ] }, "scriptPath": { "type": "string", "description": "Script Path", "ignoreCase": "key" }, "inlineScript": { "type": "string", "description": "Inline Script", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key", "aliases": [ "args" ] }, "addSpnToEnvironment": { "type": "boolean", "description": "Access service principal details in script", "ignoreCase": "key" }, "useGlobalConfig": { "type": "boolean", "description": "Use global Azure CLI configuration", "ignoreCase": "key" }, "workingDirectory": { "type": "string", "description": "Working Directory", "ignoreCase": "key", "aliases": [ "cwd" ] }, "failOnStandardError": { "type": "boolean", "description": "Fail on Standard Error", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscription" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure CLI Preview\n\nRun a Shell or Batch script with Azure CLI commands against an azure subscription", "ignoreCase": "value", "pattern": "^AzureCLI@0$" }, "inputs": { "description": "Azure CLI Preview inputs", "properties": { "connectedServiceNameSelector": { "description": "Azure Connection Type", "ignoreCase": "all", "enum": [ "connectedServiceName", "connectedServiceNameARM" ] }, "connectedServiceNameARM": { "type": "string", "description": "AzureRM Subscription", "ignoreCase": "key" }, "connectedServiceName": { "type": "string", "description": "Azure Classic Subscription", "ignoreCase": "key" }, "scriptLocation": { "description": "Script Location", "ignoreCase": "all", "enum": [ "inlineScript", "scriptPath" ] }, "scriptPath": { "type": "string", "description": "Script Path", "ignoreCase": "key" }, "inlineScript": { "type": "string", "description": "Inline Script", "ignoreCase": "key" }, "args": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "cwd": { "type": "string", "description": "Working Directory", "ignoreCase": "key" }, "failOnStandardError": { "type": "boolean", "description": "Fail on Standard Error", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Azure CLI\n\nRun Azure CLI commands against an Azure subscription in a PowerShell Core/Shell script when running on Linux agent or PowerShell/PowerShell Core/Batch script when running on Windows agent.", "ignoreCase": "value", "pattern": "^AzureCLI@2$" }, "inputs": { "description": "Azure CLI inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure Resource Manager connection", "ignoreCase": "key", "aliases": [ "connectedServiceNameARM" ] }, "scriptType": { "description": "Script Type", "ignoreCase": "all", "enum": [ "ps", "pscore", "batch", "bash" ] }, "scriptLocation": { "description": "Script Location", "ignoreCase": "all", "enum": [ "inlineScript", "scriptPath" ] }, "scriptPath": { "type": "string", "description": "Script Path", "ignoreCase": "key" }, "inlineScript": { "type": "string", "description": "Inline Script", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Script Arguments", "ignoreCase": "key", "aliases": [ "scriptArguments" ] }, "powerShellErrorActionPreference": { "description": "ErrorActionPreference", "ignoreCase": "all", "enum": [ "stop", "continue", "silentlyContinue" ] }, "addSpnToEnvironment": { "type": "boolean", "description": "Access service principal details in script", "ignoreCase": "key" }, "useGlobalConfig": { "type": "boolean", "description": "Use global Azure CLI configuration", "ignoreCase": "key" }, "workingDirectory": { "type": "string", "description": "Working Directory", "ignoreCase": "key", "aliases": [ "cwd" ] }, "failOnStandardError": { "type": "boolean", "description": "Fail on Standard Error", "ignoreCase": "key" }, "powerShellIgnoreLASTEXITCODE": { "type": "boolean", "description": "Ignore $LASTEXITCODE", "ignoreCase": "key" }, "visibleAzLogin": { "type": "boolean", "description": "az login output visibility", "ignoreCase": "key" }, "keepAzSessionActive": { "type": "boolean", "description": "[Experimental] Keep Azure CLI session active", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscription", "scriptType" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "GitHub Release\n\nCreate, edit, or delete a GitHub release", "ignoreCase": "value", "pattern": "^GitHubRelease@1$" }, "inputs": { "description": "GitHub Release inputs", "properties": { "gitHubConnection": { "type": "string", "description": "GitHub connection (OAuth or PAT)", "ignoreCase": "key" }, "repositoryName": { "type": "string", "description": "Repository", "ignoreCase": "key" }, "action": { "description": "Action", "ignoreCase": "all", "enum": [ "create", "edit", "delete" ] }, "target": { "type": "string", "description": "Target", "ignoreCase": "key" }, "tagSource": { "description": "Tag source", "ignoreCase": "all", "enum": [ "gitTag", "userSpecifiedTag" ] }, "tagPattern": { "type": "string", "description": "Tag Pattern", "ignoreCase": "key" }, "tag": { "type": "string", "description": "Tag", "ignoreCase": "key" }, "title": { "type": "string", "description": "Release title", "ignoreCase": "key" }, "releaseNotesSource": { "description": "Release notes source", "ignoreCase": "all", "enum": [ "filePath", "inline" ] }, "releaseNotesFilePath": { "type": "string", "description": "Release notes file path", "ignoreCase": "key" }, "releaseNotesInline": { "type": "string", "description": "Release notes", "ignoreCase": "key" }, "assets": { "type": "string", "description": "Assets", "ignoreCase": "key" }, "assetUploadMode": { "description": "Asset upload mode", "ignoreCase": "all", "enum": [ "delete", "replace" ] }, "isDraft": { "type": "boolean", "description": "Draft release", "ignoreCase": "key" }, "isPreRelease": { "type": "boolean", "description": "Pre-release", "ignoreCase": "key" }, "addChangeLog": { "type": "boolean", "description": "Add changelog", "ignoreCase": "key" }, "changeLogCompareToRelease": { "description": "Compare to", "ignoreCase": "all", "enum": [ "lastFullRelease", "lastNonDraftRelease", "lastNonDraftReleaseByTag" ] }, "changeLogCompareToReleaseTag": { "type": "string", "description": "Release Tag", "ignoreCase": "key" }, "changeLogType": { "description": "Changelog type", "ignoreCase": "all", "enum": [ "commitBased", "issueBased" ] }, "changeLogLabels": { "type": "string", "description": "Categories", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "gitHubConnection" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "GitHub Release\n\nCreate, edit, or delete a GitHub release", "ignoreCase": "value", "pattern": "^GitHubRelease@0$" }, "inputs": { "description": "GitHub Release inputs", "properties": { "gitHubConnection": { "type": "string", "description": "GitHub connection (OAuth or PAT)", "ignoreCase": "key" }, "repositoryName": { "type": "string", "description": "Repository", "ignoreCase": "key" }, "action": { "description": "Action", "ignoreCase": "all", "enum": [ "create", "edit", "delete" ] }, "target": { "type": "string", "description": "Target", "ignoreCase": "key" }, "tagSource": { "description": "Tag source", "ignoreCase": "all", "enum": [ "auto", "manual" ] }, "tagPattern": { "type": "string", "description": "Tag Pattern", "ignoreCase": "key" }, "tag": { "type": "string", "description": "Tag", "ignoreCase": "key" }, "title": { "type": "string", "description": "Release title", "ignoreCase": "key" }, "releaseNotesSource": { "description": "Release notes source", "ignoreCase": "all", "enum": [ "file", "input" ] }, "releaseNotesFile": { "type": "string", "description": "Release notes file path", "ignoreCase": "key" }, "releaseNotes": { "type": "string", "description": "Release notes", "ignoreCase": "key" }, "assets": { "type": "string", "description": "Assets", "ignoreCase": "key" }, "assetUploadMode": { "description": "Asset upload mode", "ignoreCase": "all", "enum": [ "delete", "replace" ] }, "isDraft": { "type": "boolean", "description": "Draft release", "ignoreCase": "key" }, "isPreRelease": { "type": "boolean", "description": "Pre-release", "ignoreCase": "key" }, "addChangeLog": { "type": "boolean", "description": "Add changelog", "ignoreCase": "key" }, "changeLogCompareToRelease": { "description": "Compare to", "ignoreCase": "all", "enum": [ "lastFullRelease", "lastNonDraftRelease", "lastNonDraftReleaseByTag" ] }, "changeLogCompareToReleaseTag": { "type": "string", "description": "Release Tag", "ignoreCase": "key" }, "changeLogType": { "description": "Changelog type", "ignoreCase": "all", "enum": [ "commitBased", "issueBased" ] }, "changeLogLabels": { "type": "string", "description": "Categories", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "gitHubConnection" ] } }, "deprecationMessage": "GitHubRelease is deprecated - Create, edit, or delete a GitHub release", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "cURL Upload Files\n\nUse cURL to upload files with FTP, FTPS, SFTP, HTTP, and more.", "ignoreCase": "value", "pattern": "^cURLUploader@1$" }, "inputs": { "description": "cURL Upload Files inputs", "properties": { "files": { "type": "string", "description": "Files", "ignoreCase": "key" }, "username": { "type": "string", "description": "Username", "ignoreCase": "key" }, "password": { "type": "string", "description": "Password", "ignoreCase": "key" }, "url": { "type": "string", "description": "URL", "ignoreCase": "key" }, "options": { "type": "string", "description": "Optional Arguments", "ignoreCase": "key" }, "redirectStderr": { "type": "boolean", "description": "Redirect Standard Error to Standard Out", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "files", "url" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "cURL upload files\n\nUse cURL's supported protocols to upload files", "ignoreCase": "value", "pattern": "^cURLUploader@2$" }, "inputs": { "description": "cURL upload files inputs", "properties": { "files": { "type": "string", "description": "Files", "ignoreCase": "key" }, "authType": { "description": "Authentication Method", "ignoreCase": "all", "enum": [ "ServiceEndpoint", "UserAndPass" ] }, "serviceEndpoint": { "type": "string", "description": "Service Connection", "ignoreCase": "key" }, "username": { "type": "string", "description": "Username", "ignoreCase": "key" }, "password": { "type": "string", "description": "Password", "ignoreCase": "key" }, "url": { "type": "string", "description": "URL", "ignoreCase": "key" }, "remotePath": { "type": "string", "description": "Remote Directory", "ignoreCase": "key" }, "options": { "type": "string", "description": "Optional Arguments", "ignoreCase": "key" }, "redirectStderr": { "type": "boolean", "description": "Redirect Standard Error to Standard Out", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "files" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure App Service Settings\n\nUpdate/Add App settings an Azure Web App for Linux or Windows", "ignoreCase": "value", "pattern": "^AzureAppServiceSettings@1$" }, "inputs": { "description": "Azure App Service Settings inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "appName": { "type": "string", "description": "App Service name", "ignoreCase": "key" }, "resourceGroupName": { "type": "string", "description": "Resource group", "ignoreCase": "key" }, "slotName": { "type": "string", "description": "Slot", "ignoreCase": "key" }, "appSettings": { "type": "string", "description": "App settings", "ignoreCase": "key" }, "generalSettings": { "type": "string", "description": "General settings", "ignoreCase": "key" }, "connectionStrings": { "type": "string", "description": "Connection Strings", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscription", "appName", "resourceGroupName" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Universal packages\n\nDownload or publish Universal Packages", "ignoreCase": "value", "pattern": "^UniversalPackages@0$" }, "inputs": { "description": "Universal packages inputs", "properties": { "command": { "description": "Command", "ignoreCase": "all", "enum": [ "download", "publish" ] }, "downloadDirectory": { "type": "string", "description": "Destination directory", "ignoreCase": "key", "aliases": [ "downloadDirectory" ] }, "feedsToUse": { "description": "Feed location", "ignoreCase": "all", "enum": [ "internal", "external" ], "aliases": [ "internalOrExternalDownload" ] }, "externalFeedCredentials": { "type": "string", "description": "organization/collection connection", "ignoreCase": "key", "aliases": [ "externalEndpoint" ] }, "vstsFeed": { "type": "string", "description": "Feed", "ignoreCase": "key", "aliases": [ "feedListDownload" ] }, "vstsFeedPackage": { "type": "string", "description": "Package name", "ignoreCase": "key", "aliases": [ "packageListDownload" ] }, "vstsPackageVersion": { "type": "string", "description": "Version", "ignoreCase": "key", "aliases": [ "versionListDownload" ] }, "feedDownloadExternal": { "type": "string", "description": "Feed (or Project/Feed if the feed was created in a project)", "ignoreCase": "key" }, "packageDownloadExternal": { "type": "string", "description": "Package name", "ignoreCase": "key" }, "versionDownloadExternal": { "type": "string", "description": "Version", "ignoreCase": "key" }, "publishDirectory": { "type": "string", "description": "Path to file(s) to publish", "ignoreCase": "key", "aliases": [ "publishDirectory" ] }, "feedsToUsePublish": { "description": "Feed location", "ignoreCase": "all", "enum": [ "internal", "external" ], "aliases": [ "internalOrExternalPublish" ] }, "publishFeedCredentials": { "type": "string", "description": "organization/collection connection", "ignoreCase": "key", "aliases": [ "externalEndpoints" ] }, "vstsFeedPublish": { "type": "string", "description": "Destination Feed", "ignoreCase": "key", "aliases": [ "feedListPublish" ] }, "publishPackageMetadata": { "type": "boolean", "description": "Publish pipeline metadata", "ignoreCase": "key" }, "vstsFeedPackagePublish": { "type": "string", "description": "Package name", "ignoreCase": "key", "aliases": [ "packageListPublish" ] }, "feedPublishExternal": { "type": "string", "description": "Feed (or Project/Feed if the feed was created in a project)", "ignoreCase": "key" }, "packagePublishExternal": { "type": "string", "description": "Package name", "ignoreCase": "key" }, "versionOption": { "description": "Version", "ignoreCase": "all", "enum": [ "major", "minor", "patch", "custom" ], "aliases": [ "versionPublishSelector" ] }, "versionPublish": { "type": "string", "description": "Custom version", "ignoreCase": "key" }, "packagePublishDescription": { "type": "string", "description": "Description", "ignoreCase": "key" }, "verbosity": { "description": "Verbosity", "ignoreCase": "all", "enum": [ "None", "Trace", "Debug", "Information", "Warning", "Error", "Critical" ] }, "publishedPackageVar": { "type": "string", "description": "Package Output Variable", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Check Azure Policy compliance\n\nSecurity and compliance assessment for Azure Policy", "ignoreCase": "value", "pattern": "^AzurePolicyCheckGate@0$" }, "inputs": { "description": "Check Azure Policy compliance inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "ResourceGroupName": { "type": "string", "description": "Resource group", "ignoreCase": "key" }, "Resources": { "type": "string", "description": "Resource name", "ignoreCase": "key" }, "RetryDuration": { "type": "string", "description": "Retry duration", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscription" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure Function on Kubernetes\n\nDeploy Azure function to Kubernetes cluster.", "ignoreCase": "value", "pattern": "^AzureFunctionOnKubernetes@0$" }, "inputs": { "description": "Azure Function on Kubernetes inputs", "properties": { "dockerRegistryServiceConnection": { "type": "string", "description": "Docker registry service connection", "ignoreCase": "key" }, "kubernetesServiceConnection": { "type": "string", "description": "Kubernetes service connection", "ignoreCase": "key" }, "namespace": { "type": "string", "description": "Kubernetes namespace", "ignoreCase": "key" }, "secretName": { "type": "string", "description": "Secret Name", "ignoreCase": "key" }, "dockerHubNamespace": { "type": "string", "description": "Docker Hub namespace", "ignoreCase": "key" }, "appName": { "type": "string", "description": "Application Name", "ignoreCase": "key" }, "functionRootDirectory": { "type": "string", "description": "Function root directory", "ignoreCase": "key" }, "waitForStability": { "type": "boolean", "description": "Wait for stability", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "dockerRegistryServiceConnection", "kubernetesServiceConnection", "appName" ] } }, "deprecationMessage": "AzureFunctionOnKubernetes is deprecated - Deploy Azure function to Kubernetes cluster.", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure Function on Kubernetes\n\nDeploy Azure function to Kubernetes cluster.", "ignoreCase": "value", "pattern": "^AzureFunctionOnKubernetes@1$" }, "inputs": { "description": "Azure Function on Kubernetes inputs", "properties": { "connectionType": { "description": "Service connection type", "ignoreCase": "all", "enum": [ "Azure Resource Manager", "Kubernetes Service Connection" ] }, "dockerRegistryServiceConnection": { "type": "string", "description": "Docker registry service connection", "ignoreCase": "key" }, "kubernetesServiceConnection": { "type": "string", "description": "Kubernetes service connection", "ignoreCase": "key", "aliases": [ "kubernetesServiceEndpoint" ] }, "azureSubscriptionConnection": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "azureSubscriptionEndpoint" ] }, "azureResourceGroup": { "type": "string", "description": "Resource group", "ignoreCase": "key" }, "kubernetesCluster": { "type": "string", "description": "Kubernetes cluster", "ignoreCase": "key" }, "namespace": { "type": "string", "description": "Kubernetes namespace", "ignoreCase": "key" }, "secretName": { "type": "string", "description": "Secret Name", "ignoreCase": "key" }, "dockerHubNamespace": { "type": "string", "description": "Docker Hub namespace", "ignoreCase": "key" }, "appName": { "type": "string", "description": "Application Name", "ignoreCase": "key" }, "functionRootDirectory": { "type": "string", "description": "Function root directory", "ignoreCase": "key" }, "waitForStability": { "type": "boolean", "description": "Wait for stability", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "dockerRegistryServiceConnection", "appName" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Shell script\n\nRun a shell script using Bash", "ignoreCase": "value", "pattern": "^ShellScript@2$" }, "inputs": { "description": "Shell script inputs", "properties": { "scriptPath": { "type": "string", "description": "Script Path", "ignoreCase": "key" }, "args": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "disableAutoCwd": { "type": "boolean", "description": "Specify Working Directory", "ignoreCase": "key" }, "cwd": { "type": "string", "description": "Working Directory", "ignoreCase": "key" }, "failOnStandardError": { "type": "boolean", "description": "Fail on Standard Error", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "scriptPath" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Bash\n\nRun a Bash script on macOS, Linux, or Windows", "ignoreCase": "value", "pattern": "^Bash@3$" }, "inputs": { "description": "Bash inputs", "properties": { "targetType": { "description": "Type", "ignoreCase": "all", "enum": [ "filePath", "inline" ] }, "filePath": { "type": "string", "description": "Script Path", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "script": { "type": "string", "description": "Script", "ignoreCase": "key" }, "workingDirectory": { "type": "string", "description": "Working Directory", "ignoreCase": "key" }, "failOnStderr": { "type": "boolean", "description": "Fail on Standard Error", "ignoreCase": "key" }, "bashEnvValue": { "type": "string", "description": "Set value for BASH_ENV environment variable", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Publish build artifacts\n\nPublish build artifacts to Azure Pipelines or a Windows file share", "ignoreCase": "value", "pattern": "^PublishBuildArtifacts@1$" }, "inputs": { "description": "Publish build artifacts inputs", "properties": { "PathtoPublish": { "type": "string", "description": "Path to publish", "ignoreCase": "key" }, "ArtifactName": { "type": "string", "description": "Artifact name", "ignoreCase": "key" }, "publishLocation": { "description": "Artifact publish location", "ignoreCase": "all", "enum": [ "Container", "FilePath" ], "aliases": [ "ArtifactType" ] }, "MaxArtifactSize": { "type": "integer", "description": "Max Artifact Size", "ignoreCase": "key" }, "TargetPath": { "type": "string", "description": "File share path", "ignoreCase": "key" }, "Parallel": { "type": "boolean", "description": "Parallel copy", "ignoreCase": "key" }, "ParallelCount": { "type": "integer", "description": "Parallel count", "ignoreCase": "key" }, "StoreAsTar": { "type": "boolean", "description": "Tar the artifact before uploading", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Install SSH key\n\nInstall an SSH key prior to a build or deployment", "ignoreCase": "value", "pattern": "^InstallSSHKey@0$" }, "inputs": { "description": "Install SSH key inputs", "properties": { "knownHostsEntry": { "type": "string", "description": "Known Hosts Entry", "ignoreCase": "key", "aliases": [ "hostName" ] }, "sshPublicKey": { "type": "string", "description": "SSH Public Key", "ignoreCase": "key" }, "sshPassphrase": { "type": "string", "description": "SSH Passphrase", "ignoreCase": "key" }, "sshKeySecureFile": { "type": "string", "description": "SSH Key", "ignoreCase": "key" }, "addEntryToConfig": { "type": "boolean", "description": "Add entry to SSH config", "ignoreCase": "key" }, "configHostAlias": { "type": "string", "description": "Alias", "ignoreCase": "key" }, "configHostname": { "type": "string", "description": "Host name", "ignoreCase": "key" }, "configUser": { "type": "string", "description": "User", "ignoreCase": "key" }, "configPort": { "type": "string", "description": "Port", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "knownHostsEntry", "sshKeySecureFile" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure VM scale set deployment\n\nDeploy a virtual machine scale set image", "ignoreCase": "value", "pattern": "^AzureVmssDeployment@0$" }, "inputs": { "description": "Azure VM scale set deployment inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "action": { "description": "Action", "ignoreCase": "all", "enum": [ "Update image", "Configure application startup" ] }, "vmssName": { "type": "string", "description": "Virtual Machine scale set name", "ignoreCase": "key" }, "vmssOsType": { "description": "OS type", "ignoreCase": "all", "enum": [ "Windows", "Linux" ] }, "imageUrl": { "type": "string", "description": "Image URL", "ignoreCase": "key" }, "customScriptsDirectory": { "type": "string", "description": "Custom script directory", "ignoreCase": "key" }, "customScript": { "type": "string", "description": "Command", "ignoreCase": "key" }, "customScriptArguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "customScriptsStorageAccount": { "type": "string", "description": "Azure storage account where custom scripts will be uploaded", "ignoreCase": "key" }, "skipArchivingCustomScripts": { "type": "boolean", "description": "Skip Archiving custom scripts", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscription", "vmssName", "vmssOsType", "imageUrl" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure VM scale set deployment\n\nDeploy a virtual machine scale set image", "ignoreCase": "value", "pattern": "^AzureVmssDeployment@1$" }, "inputs": { "description": "Azure VM scale set deployment inputs", "properties": { "azureSubscription": { "type": "string", "description": "Azure subscription", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "action": { "description": "Action", "ignoreCase": "all", "enum": [ "Update image", "Configure application startup" ] }, "vmssName": { "type": "string", "description": "Virtual Machine scale set name", "ignoreCase": "key" }, "vmssOsType": { "description": "OS type", "ignoreCase": "all", "enum": [ "Windows", "Linux" ] }, "imageUrl": { "type": "string", "description": "Image URL", "ignoreCase": "key" }, "customScriptsDirectory": { "type": "string", "description": "Custom script directory", "ignoreCase": "key" }, "customScript": { "type": "string", "description": "Command", "ignoreCase": "key" }, "customScriptArguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "customScriptsStorageAccount": { "type": "string", "description": "Azure storage account where custom scripts will be uploaded", "ignoreCase": "key" }, "skipArchivingCustomScripts": { "type": "boolean", "description": "Skip Archiving custom scripts", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureSubscription", "vmssName", "vmssOsType", "imageUrl" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure App Service: Classic (Deprecated)\n\nCreate or update Azure App Service using Azure PowerShell", "ignoreCase": "value", "pattern": "^AzureWebPowerShellDeployment@1$" }, "inputs": { "description": "Azure App Service: Classic (Deprecated) inputs", "properties": { "ConnectedServiceName": { "type": "string", "description": "Azure Subscription (Classic)", "ignoreCase": "key" }, "WebSiteLocation": { "type": "string", "description": "Web App Location", "ignoreCase": "key" }, "WebSiteName": { "type": "string", "description": "Web App Name", "ignoreCase": "key" }, "Slot": { "type": "string", "description": "Slot", "ignoreCase": "key" }, "Package": { "type": "string", "description": "Web Deploy Package", "ignoreCase": "key" }, "doNotDelete": { "type": "boolean", "description": "Set DoNotDelete flag", "ignoreCase": "key" }, "AdditionalArguments": { "type": "string", "description": "Additional Arguments", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "ConnectedServiceName", "WebSiteLocation", "WebSiteName", "Package" ] } }, "deprecationMessage": "AzureWebPowerShellDeployment is deprecated - Create or update Azure App Service using Azure PowerShell", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Conda authenticate (for task runners)\n\nAuthentication task for the conda client", "ignoreCase": "value", "pattern": "^CondaAuthenticate@0$" }, "inputs": { "description": "Conda authenticate (for task runners) inputs", "properties": { "azureDevOpsServiceConnection": { "type": "string", "description": "'Azure DevOps' Service Connection", "ignoreCase": "key", "aliases": [ "workloadIdentityServiceConnection" ] } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Azure Cloud Service deployment\n\nDeploy an Azure Cloud Service", "ignoreCase": "value", "pattern": "^AzureCloudPowerShellDeployment@2$" }, "inputs": { "description": "Azure Cloud Service deployment inputs", "properties": { "ARMConnectedServiceName": { "type": "string", "description": "Azure subscription (ARM)", "ignoreCase": "key" }, "ResourceGroupName": { "type": "string", "description": "Resource group", "ignoreCase": "key" }, "ARMStorageAccount": { "type": "string", "description": "Storage account (ARM)", "ignoreCase": "key" }, "ServiceName": { "type": "string", "description": "Service name", "ignoreCase": "key" }, "ServiceLocation": { "type": "string", "description": "Service location", "ignoreCase": "key" }, "CsCfg": { "type": "string", "description": "CsCfg", "ignoreCase": "key" }, "CsDef": { "type": "string", "description": "CsDef", "ignoreCase": "key" }, "CsPkg": { "type": "string", "description": "CsPkg", "ignoreCase": "key" }, "KeyVault": { "type": "string", "description": "Azure KeyVault", "ignoreCase": "key" }, "DeploymentLabel": { "type": "string", "description": "Deployment label", "ignoreCase": "key" }, "AppendDateTimeToLabel": { "type": "boolean", "description": "Append current date and time", "ignoreCase": "key" }, "UpgradeMode": { "type": "string", "description": "Update mode for the cloud service", "ignoreCase": "key" }, "AllowUpgrade": { "type": "boolean", "description": "Allow upgrade", "ignoreCase": "key" }, "VerifyRoleInstanceStatus": { "type": "boolean", "description": "Verify role instance status", "ignoreCase": "key" }, "DiagnosticStorageAccountKeys": { "type": "string", "description": "Diagnostic storage account keys", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "ARMConnectedServiceName", "ResourceGroupName", "ARMStorageAccount", "ServiceName", "ServiceLocation", "CsCfg", "CsDef", "CsPkg" ] } }, "deprecationMessage": "AzureCloudPowerShellDeployment is deprecated - Deploy an Azure Cloud Service", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Azure Cloud Service deployment\n\nDeploy an Azure Cloud Service", "ignoreCase": "value", "pattern": "^AzureCloudPowerShellDeployment@1$" }, "inputs": { "description": "Azure Cloud Service deployment inputs", "properties": { "azureClassicSubscription": { "type": "string", "description": "Azure subscription (Classic)", "ignoreCase": "key", "aliases": [ "ConnectedServiceName" ] }, "EnableAdvancedStorageOptions": { "type": "boolean", "description": "Enable ARM storage support", "ignoreCase": "key" }, "StorageAccount": { "type": "string", "description": "Storage account (Classic)", "ignoreCase": "key" }, "ARMConnectedServiceName": { "type": "string", "description": "Azure subscription (ARM)", "ignoreCase": "key" }, "ARMStorageAccount": { "type": "string", "description": "Storage account (ARM)", "ignoreCase": "key" }, "ServiceName": { "type": "string", "description": "Service name", "ignoreCase": "key" }, "ServiceLocation": { "type": "string", "description": "Service location", "ignoreCase": "key" }, "CsPkg": { "type": "string", "description": "CsPkg", "ignoreCase": "key" }, "CsCfg": { "type": "string", "description": "CsCfg", "ignoreCase": "key" }, "slotName": { "type": "string", "description": "Environment (Slot)", "ignoreCase": "key", "aliases": [ "Slot" ] }, "DeploymentLabel": { "type": "string", "description": "Deployment label", "ignoreCase": "key" }, "AppendDateTimeToLabel": { "type": "boolean", "description": "Append current date and time", "ignoreCase": "key" }, "AllowUpgrade": { "type": "boolean", "description": "Allow upgrade", "ignoreCase": "key" }, "SimultaneousUpgrade": { "type": "boolean", "description": "Simultaneous upgrade", "ignoreCase": "key" }, "ForceUpgrade": { "type": "boolean", "description": "Force upgrade", "ignoreCase": "key" }, "VerifyRoleInstanceStatus": { "type": "boolean", "description": "Verify role instance status", "ignoreCase": "key" }, "DiagnosticStorageAccountKeys": { "type": "string", "description": "Diagnostic storage account keys", "ignoreCase": "key" }, "NewServiceCustomCertificates": { "type": "string", "description": "Custom certificates to import", "ignoreCase": "key" }, "NewServiceAdditionalArguments": { "type": "string", "description": "Additional arguments", "ignoreCase": "key" }, "NewServiceAffinityGroup": { "type": "string", "description": "Affinity group", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "azureClassicSubscription", "ServiceName", "ServiceLocation", "CsPkg", "CsCfg" ] } }, "deprecationMessage": "AzureCloudPowerShellDeployment is deprecated - Deploy an Azure Cloud Service", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Cargo authenticate (for task runners)\n\nAuthentication task for the cargo client used for installing Cargo crates distribution", "ignoreCase": "value", "pattern": "^CargoAuthenticate@0$" }, "inputs": { "description": "Cargo authenticate (for task runners) inputs", "properties": { "azureDevOpsServiceConnection": { "type": "string", "description": "'Azure DevOps' Service Connection", "ignoreCase": "key", "aliases": [ "workloadIdentityServiceConnection" ] }, "registryNames": { "type": "string", "description": "Registry names from config.toml", "ignoreCase": "key" }, "configFile": { "type": "string", "description": "config.toml file to authenticate", "ignoreCase": "key" }, "cargoServiceConnections": { "type": "string", "description": "Credentials for registries outside this organization/collection", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "configFile" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Delete files\n\nDelete folders, or files matching a pattern", "ignoreCase": "value", "pattern": "^DeleteFiles@1$" }, "inputs": { "description": "Delete files inputs", "properties": { "SourceFolder": { "type": "string", "description": "Source Folder", "ignoreCase": "key" }, "Contents": { "type": "string", "description": "Contents", "ignoreCase": "key" }, "RemoveSourceFolder": { "type": "boolean", "description": "Remove SourceFolder", "ignoreCase": "key" }, "RemoveDotFiles": { "type": "boolean", "description": "Remove files starting with a dot", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "gulp\n\nRun the gulp Node.js streaming task-based build system", "ignoreCase": "value", "pattern": "^gulp@0$" }, "inputs": { "description": "gulp inputs", "properties": { "gulpFile": { "type": "string", "description": "gulp File Path", "ignoreCase": "key" }, "targets": { "type": "string", "description": "gulp Task(s)", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "workingDirectory": { "type": "string", "description": "Working Directory", "ignoreCase": "key", "aliases": [ "cwd" ] }, "gulpjs": { "type": "string", "description": "gulp.js location", "ignoreCase": "key" }, "publishJUnitResults": { "type": "boolean", "description": "Publish to Azure Pipelines", "ignoreCase": "key" }, "testResultsFiles": { "type": "string", "description": "Test Results Files", "ignoreCase": "key" }, "testRunTitle": { "type": "string", "description": "Test Run Title", "ignoreCase": "key" }, "enableCodeCoverage": { "type": "boolean", "description": "Enable code Coverage", "ignoreCase": "key" }, "testFramework": { "description": "Test Framework", "ignoreCase": "all", "enum": [ "Mocha", "Jasmine" ] }, "srcFiles": { "type": "string", "description": "Source Files", "ignoreCase": "key" }, "testFiles": { "type": "string", "description": "Test Script Files", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "gulp\n\nRun the gulp Node.js streaming task-based build system", "ignoreCase": "value", "pattern": "^gulp@1$" }, "inputs": { "description": "gulp inputs", "properties": { "gulpFile": { "type": "string", "description": "gulp File Path", "ignoreCase": "key" }, "targets": { "type": "string", "description": "gulp Task(s)", "ignoreCase": "key" }, "arguments": { "type": "string", "description": "Arguments", "ignoreCase": "key" }, "workingDirectory": { "type": "string", "description": "Working Directory", "ignoreCase": "key", "aliases": [ "cwd" ] }, "gulpjs": { "type": "string", "description": "gulp.js location", "ignoreCase": "key" }, "publishJUnitResults": { "type": "boolean", "description": "Publish to Azure Pipelines", "ignoreCase": "key" }, "testResultsFiles": { "type": "string", "description": "Test Results Files", "ignoreCase": "key" }, "testRunTitle": { "type": "string", "description": "Test Run Title", "ignoreCase": "key" }, "enableCodeCoverage": { "type": "boolean", "description": "Enable code Coverage", "ignoreCase": "key" }, "testFramework": { "description": "Test Framework", "ignoreCase": "all", "enum": [ "Mocha", "Jasmine" ] }, "srcFiles": { "type": "string", "description": "Source Files", "ignoreCase": "key" }, "testFiles": { "type": "string", "description": "Test Script Files", "ignoreCase": "key" } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] }, { "properties": { "task": { "description": "Cloud-based web performance test\n\nRun a quick web performance test in the cloud with Azure Pipelines", "ignoreCase": "value", "pattern": "^QuickPerfTest@1$" }, "inputs": { "description": "Cloud-based web performance test inputs", "properties": { "connectedServiceName": { "type": "string", "description": "Azure Pipelines Connection", "ignoreCase": "key" }, "websiteUrl": { "type": "string", "description": "Website URL", "ignoreCase": "key" }, "testName": { "type": "string", "description": "Test Name", "ignoreCase": "key" }, "vuLoad": { "description": "User Load", "ignoreCase": "all", "enum": [ "25", "50", "100", "250" ] }, "runDuration": { "description": "Run Duration (sec)", "ignoreCase": "all", "enum": [ "60", "120", "180", "240", "300" ] }, "geoLocation": { "description": "Load Location", "ignoreCase": "all", "enum": [ "Default", "Australia East", "Australia Southeast", "Brazil South", "Central India", "Central US", "East Asia", "East US 2", "East US", "Japan East", "Japan West", "North Central US", "North Europe", "South Central US", "South India", "Southeast Asia", "West Europe", "West US" ] }, "machineType": { "description": "Run load test using", "ignoreCase": "all", "enum": [ "0", "2" ] }, "resourceGroupName": { "type": "string", "description": "Resource group rig", "ignoreCase": "key" }, "numOfSelfProvisionedAgents": { "type": "integer", "description": "No. of agents to use", "ignoreCase": "key" }, "avgResponseTimeThreshold": { "type": "string", "description": "Fail test if Avg.Response Time(ms) exceeds", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "websiteUrl", "testName" ] } }, "deprecationMessage": "QuickPerfTest is deprecated - Run a quick web performance test in the cloud with Azure Pipelines", "doNotSuggest": true, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "IIS web app manage\n\nCreate or update websites, web apps, virtual directories, or application pools", "ignoreCase": "value", "pattern": "^IISWebAppManagementOnMachineGroup@0$" }, "inputs": { "description": "IIS web app manage inputs", "properties": { "EnableIIS": { "type": "boolean", "description": "Enable IIS", "ignoreCase": "key" }, "IISDeploymentType": { "description": "Configuration type", "ignoreCase": "all", "enum": [ "IISWebsite", "IISWebApplication", "IISVirtualDirectory", "IISApplicationPool" ] }, "ActionIISWebsite": { "description": "Action", "ignoreCase": "all", "enum": [ "CreateOrUpdateWebsite", "StartWebsite", "StopWebsite" ] }, "ActionIISApplicationPool": { "description": "Action", "ignoreCase": "all", "enum": [ "CreateOrUpdateAppPool", "StartAppPool", "StopAppPool", "RecycleAppPool" ] }, "StartStopWebsiteName": { "type": "string", "description": "Website name", "ignoreCase": "key" }, "WebsiteName": { "type": "string", "description": "Website name", "ignoreCase": "key" }, "WebsitePhysicalPath": { "type": "string", "description": "Physical path", "ignoreCase": "key" }, "WebsitePhysicalPathAuth": { "description": "Physical path authentication", "ignoreCase": "all", "enum": [ "WebsiteUserPassThrough", "WebsiteWindowsAuth" ] }, "WebsiteAuthUserName": { "type": "string", "description": "Username", "ignoreCase": "key" }, "WebsiteAuthUserPassword": { "type": "string", "description": "Password", "ignoreCase": "key" }, "AddBinding": { "type": "boolean", "description": "Add binding", "ignoreCase": "key" }, "Protocol": { "description": "Protocol", "ignoreCase": "all", "enum": [ "https", "http" ] }, "IPAddress": { "type": "string", "description": "IP address", "ignoreCase": "key" }, "Port": { "type": "string", "description": "Port", "ignoreCase": "key" }, "ServerNameIndication": { "type": "boolean", "description": "Server Name Indication required", "ignoreCase": "key" }, "HostNameWithOutSNI": { "type": "string", "description": "Host name", "ignoreCase": "key" }, "HostNameWithHttp": { "type": "string", "description": "Host name", "ignoreCase": "key" }, "HostNameWithSNI": { "type": "string", "description": "Host name", "ignoreCase": "key" }, "SSLCertThumbPrint": { "type": "string", "description": "SSL certificate thumbprint", "ignoreCase": "key" }, "Bindings": { "type": "string", "description": "Add bindings", "ignoreCase": "key" }, "CreateOrUpdateAppPoolForWebsite": { "type": "boolean", "description": "Create or update app pool", "ignoreCase": "key" }, "ConfigureAuthenticationForWebsite": { "type": "boolean", "description": "Configure authentication", "ignoreCase": "key" }, "AppPoolNameForWebsite": { "type": "string", "description": "Name", "ignoreCase": "key" }, "DotNetVersionForWebsite": { "description": ".NET version", "ignoreCase": "all", "enum": [ "v4.0", "v2.0", "No Managed Code" ] }, "PipeLineModeForWebsite": { "description": "Managed pipeline mode", "ignoreCase": "all", "enum": [ "Integrated", "Classic" ] }, "AppPoolIdentityForWebsite": { "description": "Identity", "ignoreCase": "all", "enum": [ "ApplicationPoolIdentity", "LocalService", "LocalSystem", "NetworkService", "SpecificUser" ] }, "AppPoolUsernameForWebsite": { "type": "string", "description": "Username", "ignoreCase": "key" }, "AppPoolPasswordForWebsite": { "type": "string", "description": "Password", "ignoreCase": "key" }, "AnonymousAuthenticationForWebsite": { "type": "boolean", "description": "Anonymous authentication", "ignoreCase": "key" }, "BasicAuthenticationForWebsite": { "type": "boolean", "description": "Basic authentication", "ignoreCase": "key" }, "WindowsAuthenticationForWebsite": { "type": "boolean", "description": "Windows authentication", "ignoreCase": "key" }, "ParentWebsiteNameForVD": { "type": "string", "description": "Parent website name", "ignoreCase": "key" }, "VirtualPathForVD": { "type": "string", "description": "Virtual path", "ignoreCase": "key" }, "PhysicalPathForVD": { "type": "string", "description": "Physical path", "ignoreCase": "key" }, "VDPhysicalPathAuth": { "description": "Physical path authentication", "ignoreCase": "all", "enum": [ "VDUserPassThrough", "VDWindowsAuth" ] }, "VDAuthUserName": { "type": "string", "description": "Username", "ignoreCase": "key" }, "VDAuthUserPassword": { "type": "string", "description": "Password", "ignoreCase": "key" }, "ParentWebsiteNameForApplication": { "type": "string", "description": "Parent website name", "ignoreCase": "key" }, "VirtualPathForApplication": { "type": "string", "description": "Virtual path", "ignoreCase": "key" }, "PhysicalPathForApplication": { "type": "string", "description": "Physical path", "ignoreCase": "key" }, "ApplicationPhysicalPathAuth": { "description": "Physical path authentication", "ignoreCase": "all", "enum": [ "ApplicationUserPassThrough", "ApplicationWindowsAuth" ] }, "ApplicationAuthUserName": { "type": "string", "description": "Username", "ignoreCase": "key" }, "ApplicationAuthUserPassword": { "type": "string", "description": "Password", "ignoreCase": "key" }, "CreateOrUpdateAppPoolForApplication": { "type": "boolean", "description": "Create or update app pool", "ignoreCase": "key" }, "AppPoolNameForApplication": { "type": "string", "description": "Name", "ignoreCase": "key" }, "DotNetVersionForApplication": { "description": ".NET version", "ignoreCase": "all", "enum": [ "v4.0", "v2.0", "No Managed Code" ] }, "PipeLineModeForApplication": { "description": "Managed pipeline mode", "ignoreCase": "all", "enum": [ "Integrated", "Classic" ] }, "AppPoolIdentityForApplication": { "description": "Identity", "ignoreCase": "all", "enum": [ "ApplicationPoolIdentity", "LocalService", "LocalSystem", "NetworkService", "SpecificUser" ] }, "AppPoolUsernameForApplication": { "type": "string", "description": "Username", "ignoreCase": "key" }, "AppPoolPasswordForApplication": { "type": "string", "description": "Password", "ignoreCase": "key" }, "AppPoolName": { "type": "string", "description": "Name", "ignoreCase": "key" }, "DotNetVersion": { "description": ".NET version", "ignoreCase": "all", "enum": [ "v4.0", "v2.0", "No Managed Code" ] }, "PipeLineMode": { "description": "Managed pipeline mode", "ignoreCase": "all", "enum": [ "Integrated", "Classic" ] }, "AppPoolIdentity": { "description": "Identity", "ignoreCase": "all", "enum": [ "ApplicationPoolIdentity", "LocalService", "LocalSystem", "NetworkService", "SpecificUser" ] }, "AppPoolUsername": { "type": "string", "description": "Username", "ignoreCase": "key" }, "AppPoolPassword": { "type": "string", "description": "Password", "ignoreCase": "key" }, "StartStopRecycleAppPoolName": { "type": "string", "description": "Application pool name", "ignoreCase": "key" }, "AppCmdCommands": { "type": "string", "description": "Additional appcmd.exe commands", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ "WebsiteName", "Bindings", "AppPoolNameForWebsite", "ParentWebsiteNameForVD", "VirtualPathForVD", "ParentWebsiteNameForApplication", "VirtualPathForApplication", "AppPoolNameForApplication", "AppPoolName" ] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task", "inputs" ] }, { "properties": { "task": { "description": "Docker CLI installer\n\nInstall Docker CLI on agent machine.", "ignoreCase": "value", "pattern": "^DockerInstaller@0$" }, "inputs": { "description": "Docker CLI installer inputs", "properties": { "dockerVersion": { "type": "string", "description": "Docker Version", "ignoreCase": "key" }, "releaseType": { "description": "Release type", "ignoreCase": "all", "enum": [ "stable", "edge", "test", "nightly" ] } }, "additionalProperties": false, "required": [] } }, "doNotSuggest": false, "firstProperty": [ "task" ], "required": [ "task" ] } ] } } } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/bamboo-spec.json0000644000175100017510000005410315062662115030350 0ustar00runnerrunner{ "$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" } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/bitbucket-pipelines.json0000644000175100017510000005135515062662115032131 0ustar00runnerrunner{"$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", "scoped", "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"}, "custom": {"description": "The name of the custom pipeline to run, if the step type is pipeline.", "title": "Custom", "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"}, "input-variables": {"additionalProperties": {"description": "input variable value", "oneOf": [{"type": "string"}]}, "description": "Variables from the parent step that are provided to the child pipeline.", "example": {"VAR_1": "VALUE_1", "VAR_2": "${BITBUCKET_BRANCH}"}, "maxProperties": 20, "minProperties": 1, "title": "Input Variables", "type": "object"}, "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"}, "type": {"default": "shared", "description": "The type of the step.", "enum": ["inline", "pipeline"], "title": "Step Type", "type": "string"}}, "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"}, "trigger_context": {"description": "Context of the trigger that started the pipeline. Only returned for pipelines triggered by a parent step.", "properties": {"parent_pipeline_run_uuid": {"description": "The UUID of the pipeline run that contains the parent step that triggered this pipeline.", "example": "{00000000-0000-0000-0000-000000000000}", "title": "Parent Pipeline Run UUID", "type": "string"}, "parent_pipeline_uuid": {"description": "The UUID of the pipeline that contains the parent step that triggered this pipeline.", "example": "{00000000-0000-0000-0000-000000000000}", "title": "Parent Pipeline UUID", "type": "string"}, "parent_step_uuid": {"description": "The UUID of the parent step that triggered this pipeline.", "example": "{00000000-0000-0000-0000-000000000000}", "title": "Parent Step UUID", "type": "string"}, "type": {"description": "The type of trigger that started the pipeline.", "enum": ["parent_step"], "title": "Pipeline Trigger", "type": "string"}}, "type": "object"}, "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"}}}}././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/buildkite.json0000644000175100017510000011704315062662115030140 0ustar00runnerrunner{ "title": "JSON schema for Buildkite pipeline configuration files", "$schema": "http://json-schema.org/draft-07/schema#", "fileMatch": [ "buildkite.yml", "buildkite.yaml", "buildkite.json", "buildkite.*.yml", "buildkite.*.yaml", "buildkite.*.json", ".buildkite/pipeline.yml", ".buildkite/pipeline.yaml", ".buildkite/pipeline.json", ".buildkite/pipeline.*.yml", ".buildkite/pipeline.*.yaml", ".buildkite/pipeline.*.json" ], "type": "object", "required": ["steps"], "definitions": { "allowDependencyFailure": { "enum": [true, false, "true", "false"], "description": "Whether to proceed with this step and further steps if a step named in the depends_on attribute fails", "default": false }, "image": { "type": "string", "description": "(Kubernetes stack only) The container image to use for this pipeline or step", "examples": ["node:18-alpine", "python:3.11", "ubuntu:22.04"] }, "allowedTeams": { "description": "A list of teams that are permitted to unblock this step, whose values are a list of one or more team slugs or IDs", "anyOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ], "examples": [ "frontend-team", "96176d08-f503-413f-8423-96094953b9e7", [ "frontend-team", "backend-team", "96176d08-f503-413f-8423-96094953b9e7" ] ] }, "agents": { "oneOf": [ { "$ref": "#/definitions/agentsObject" }, { "$ref": "#/definitions/agentsList" } ] }, "agentsObject": { "type": "object", "description": "Query rules to target specific agents", "examples": [{ "queue": "deploy" }, { "ruby": "2*" }] }, "agentsList": { "type": "array", "description": "Query rules to target specific agents in k=v format", "examples": ["queue=default", "xcode=true"], "items": { "type": "string" } }, "automaticRetry": { "type": "object", "properties": { "exit_status": { "description": "The exit status number that will cause this job to retry", "anyOf": [ { "type": "string", "enum": ["*"] }, { "type": "integer" }, { "type": "array", "items": { "type": "integer" } } ] }, "limit": { "type": "integer", "description": "The number of times this job can be retried", "minimum": 0, "maximum": 10 }, "signal": { "description": "The exit signal, if any, that may be retried", "type": "string", "examples": ["*", "none", "SIGKILL", "term"] }, "signal_reason": { "description": "The exit signal reason, if any, that may be retried", "type": "string", "enum": [ "*", "none", "agent_refused", "agent_stop", "cancel", "process_run_error", "signature_rejected" ] } }, "additionalProperties": false }, "branches": { "description": "Which branches will include this step in their builds", "anyOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ], "examples": ["master", ["feature/*", "chore/*"]] }, "cache": { "description": "The paths for the caches to be used in the step", "anyOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } }, { "type": "object", "properties": { "paths": { "type": "array", "items": { "type": "string" } }, "size": { "type": "string", "pattern": "^\\d+g$" }, "name": { "type": "string" } }, "required": ["paths"] } ], "examples": [ "dist/", [".build/*", "assets/*"], { "name": "cool-cache", "size": "20g", "paths": ["/path/one", "/path/two"] } ] }, "cancelOnBuildFailing": { "enum": [true, false, "true", "false"], "description": "Whether to cancel the job as soon as the build is marked as failing", "default": false }, "dependsOn": { "description": "The step keys for a step to depend on", "anyOf": [ { "type": "null" }, { "type": "string" }, { "type": "array", "items": { "anyOf": [ { "type": "string" }, { "type": "object", "properties": { "step": { "type": "string" }, "allow_failure": { "enum": [true, false, "true", "false"], "default": false } }, "additionalProperties": false } ] } } ] }, "env": { "type": "object", "description": "Environment variables for this step", "examples": [{ "NODE_ENV": "test" }] }, "if": { "type": "string", "description": "A boolean expression that omits the step when false", "examples": ["build.message != 'skip me'", "build.branch == 'master'"] }, "key": { "type": "string", "description": "A unique identifier for a step, must not resemble a UUID", "examples": ["deploy-staging", "test-integration"], "not": { "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$" } }, "label": { "type": "string", "description": "The label that will be displayed in the pipeline visualisation in Buildkite. Supports emoji.", "examples": [":docker: Build"] }, "notifySimple": { "type": "string", "enum": ["github_check", "github_commit_status"] }, "notifyEmail": { "type": "object", "properties": { "email": { "type": "string" }, "if": { "$ref": "#/definitions/if" } }, "additionalProperties": false }, "notifyBasecamp": { "type": "object", "properties": { "basecamp_campfire": { "type": "string" }, "if": { "$ref": "#/definitions/if" } }, "additionalProperties": false }, "notifySlackObject": { "type": "object", "properties": { "channels": { "type": "array", "items": { "type": "string" } }, "message": { "type": "string" } } }, "notifySlack": { "type": "object", "properties": { "slack": { "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/notifySlackObject" } ] }, "if": { "$ref": "#/definitions/if" } }, "additionalProperties": false }, "notifyWebhook": { "type": "object", "properties": { "webhook": { "type": "string" }, "if": { "$ref": "#/definitions/if" } }, "additionalProperties": false }, "notifyPagerduty": { "type": "object", "properties": { "pagerduty_change_event": { "type": "string" }, "if": { "$ref": "#/definitions/if" } }, "additionalProperties": false }, "notifyGithubCommitStatus": { "type": "object", "properties": { "github_commit_status": { "type": "object", "properties": { "context": { "description": "GitHub commit status name", "type": "string" } }, "additionalProperties": false }, "if": { "$ref": "#/definitions/if" } }, "additionalProperties": false }, "notifyGithubCheck": { "type": "object", "properties": { "github_check": { "type": "object" } }, "additionalProperties": false }, "buildNotify": { "type": "array", "description": "Array of notification options for this step", "items": { "oneOf": [ { "$ref": "#/definitions/notifySimple" }, { "$ref": "#/definitions/notifyEmail" }, { "$ref": "#/definitions/notifyBasecamp" }, { "$ref": "#/definitions/notifySlack" }, { "$ref": "#/definitions/notifyWebhook" }, { "$ref": "#/definitions/notifyPagerduty" }, { "$ref": "#/definitions/notifyGithubCommitStatus" }, { "$ref": "#/definitions/notifyGithubCheck" } ] } }, "fields": { "type": "array", "description": "A list of input fields required to be filled out before unblocking the step", "items": { "oneOf": [ { "type": "object", "properties": { "text": { "type": "string", "description": "The text input name", "examples": ["Release Name"] }, "key": { "type": "string", "description": "The meta-data key that stores the field's input", "pattern": "^[a-zA-Z0-9-_]+$", "examples": ["release-name"] }, "hint": { "type": "string", "description": "The explanatory text that is shown after the label", "examples": [ "What’s the code name for this release? :name_badge:" ] }, "format": { "type": "string", "description": "The format must be a regular expression implicitly anchored to the beginning and end of the input and is functionally equivalent to the HTML5 pattern attribute.", "format": "regex", "examples": ["[0-9a-f]+"] }, "required": { "enum": [true, false, "true", "false"], "default": true, "description": "Whether the field is required for form submission" }, "default": { "type": "string", "description": "The value that is pre-filled in the text field", "examples": ["Flying Dolphin"] } }, "additionalProperties": false, "required": ["key"] }, { "type": "object", "properties": { "select": { "type": "string", "description": "The text input name", "examples": ["Release Stream"] }, "key": { "type": "string", "description": "The meta-data key that stores the field's input", "pattern": "^[a-zA-Z0-9-_]+$", "examples": ["release-stream"] }, "default": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ], "description": "The value of the option(s) that will be pre-selected in the dropdown", "examples": ["beta", ["alpha", "beta"]] }, "hint": { "type": "string", "description": "The explanatory text that is shown after the label", "examples": [ "What’s the code name for this release? :name_badge:" ] }, "multiple": { "enum": [true, false, "true", "false"], "description": "Whether more than one option may be selected", "default": false }, "options": { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The text displayed on the select list item", "examples": ["Stable"] }, "value": { "type": "string", "description": "The value to be stored as meta-data", "examples": ["stable"] }, "hint": { "type": "string", "description": "The text displayed directly under the select field’s label", "examples": [ "Which release stream does this belong in? :fork:" ] }, "required": { "enum": [true, false, "true", "false"], "default": true, "description": "Whether the field is required for form submission" } }, "additionalProperties": false, "required": ["label", "value"] } }, "required": { "enum": [true, false, "true", "false"], "default": true, "description": "Whether the field is required for form submission" } }, "additionalProperties": false, "required": ["key", "options"] } ] } }, "if_changed": { "type": "string", "description": "Agent-applied attribute: A glob pattern that omits the step from a build if it does not match any files changed in the build.", "examples": ["**.go", "go.mod", "go.sum", "fixtures/**"] }, "matrixElement": { "oneOf": [ { "type": "string" }, { "type": "integer" }, { "type": "boolean" } ] }, "prompt": { "type": "string", "description": "The instructional message displayed in the dialog box when the unblock step is activated", "examples": ["Release to production?"] }, "skip": { "anyOf": [ { "type": "boolean" }, { "type": "string", "maxLength": 70 } ], "description": "Whether this step should be skipped. Passing a string provides a reason for skipping this command", "examples": [true, false, "My reason"] }, "softFail": { "description": "The conditions for marking the step as a soft-fail.", "anyOf": [ { "enum": [true, false, "true", "false"] }, { "type": "array", "items": { "type": "object", "properties": { "exit_status": { "description": "The exit status number that will cause this job to soft-fail", "anyOf": [ { "type": "string", "enum": ["*"] }, { "type": "integer" } ] } } } } ] }, "blockStep": { "type": "object", "properties": { "allow_dependency_failure": { "$ref": "#/definitions/allowDependencyFailure" }, "block": { "type": "string", "description": "The label of the block step" }, "blocked_state": { "type": "string", "default": "passed", "description": "The state that the build is set to when the build is blocked by this block step", "enum": ["passed", "failed", "running"] }, "branches": { "$ref": "#/definitions/branches" }, "depends_on": { "$ref": "#/definitions/dependsOn" }, "fields": { "$ref": "#/definitions/fields" }, "if": { "$ref": "#/definitions/if" }, "key": { "$ref": "#/definitions/key" }, "identifier": { "$ref": "#/definitions/blockStep/properties/key" }, "id": { "$ref": "#/definitions/blockStep/properties/key", "deprecated": true }, "label": { "$ref": "#/definitions/blockStep/properties/block" }, "name": { "$ref": "#/definitions/blockStep/properties/block" }, "prompt": { "$ref": "#/definitions/prompt" }, "allowed_teams": { "$ref": "#/definitions/allowedTeams" }, "type": { "type": "string", "enum": ["block"] } }, "additionalProperties": false }, "nestedBlockStep": { "type": "object", "properties": { "block": { "$ref": "#/definitions/blockStep" } }, "additionalProperties": false }, "stringBlockStep": { "type": "string", "description": "Pauses the execution of a build and waits on a user to unblock it", "enum": ["block"] }, "inputStep": { "type": "object", "properties": { "allow_dependency_failure": { "$ref": "#/definitions/allowDependencyFailure" }, "input": { "type": "string", "description": "The label of the input step" }, "branches": { "$ref": "#/definitions/branches" }, "depends_on": { "$ref": "#/definitions/dependsOn" }, "fields": { "$ref": "#/definitions/fields" }, "blocked_state": { "type": "string", "default": "passed", "description": "The state that the build is set to when the build is blocked by this input step", "enum": ["passed", "failed", "running"] }, "if": { "$ref": "#/definitions/if" }, "key": { "$ref": "#/definitions/key" }, "identifier": { "$ref": "#/definitions/inputStep/properties/key" }, "id": { "$ref": "#/definitions/inputStep/properties/key", "deprecated": true }, "label": { "$ref": "#/definitions/inputStep/properties/input" }, "name": { "$ref": "#/definitions/inputStep/properties/input" }, "prompt": { "$ref": "#/definitions/prompt" }, "allowed_teams": { "$ref": "#/definitions/allowedTeams" }, "type": { "type": "string", "enum": ["input"] } }, "additionalProperties": false }, "nestedInputStep": { "type": "object", "properties": { "input": { "$ref": "#/definitions/inputStep" } }, "additionalProperties": false }, "stringInputStep": { "type": "string", "description": "Pauses the execution of a build and waits on a user to unblock it", "enum": ["input"] }, "commandStep": { "type": "object", "properties": { "agents": { "$ref": "#/definitions/agents" }, "allow_dependency_failure": { "$ref": "#/definitions/allowDependencyFailure" }, "artifact_paths": { "anyOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ], "description": "The glob path/s of artifacts to upload once this step has finished running", "examples": [["screenshots/*"], ["dist/myapp.zip", "dist/myapp.tgz"]] }, "branches": { "$ref": "#/definitions/branches" }, "cache": { "$ref": "#/definitions/cache" }, "cancel_on_build_failing": { "$ref": "#/definitions/cancelOnBuildFailing" }, "command": { "description": "The commands to run on the agent", "anyOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] }, "commands": { "description": "The commands to run on the agent", "$ref": "#/definitions/commandStep/properties/command" }, "concurrency": { "type": "integer", "description": "The maximum number of jobs created from this step that are allowed to run at the same time. If you use this attribute, you must also define concurrency_group.", "examples": [1] }, "concurrency_group": { "type": "string", "description": "A unique name for the concurrency group that you are creating with the concurrency attribute", "examples": ["my-pipeline/deploy"] }, "concurrency_method": { "type": "string", "enum": ["ordered", "eager"], "description": "Control command order, allowed values are 'ordered' (default) and 'eager'. If you use this attribute, you must also define concurrency_group and concurrency.", "examples": ["ordered"] }, "depends_on": { "$ref": "#/definitions/dependsOn" }, "env": { "$ref": "#/definitions/env" }, "if": { "$ref": "#/definitions/if" }, "if_changed": { "$ref": "#/definitions/if_changed" }, "key": { "$ref": "#/definitions/key" }, "identifier": { "$ref": "#/definitions/commandStep/properties/key" }, "id": { "$ref": "#/definitions/commandStep/properties/key", "deprecated": true }, "image": { "$ref": "#/definitions/image" }, "label": { "$ref": "#/definitions/label" }, "signature": { "type": "object", "description": "The signature of the command step, generally injected by agents at pipeline upload", "properties": { "algorithm": { "type": "string", "description": "The algorithm used to generate the signature", "examples": ["HS512", "EdDSA", "PS256"] }, "value": { "type": "string", "description": "The signature value, a JWS compact signature with a detached body" }, "signed_fields": { "type": "array", "description": "The fields that were signed to form the signature value", "items": { "type": "string" }, "examples": [ ["command", "matrix", "plugins", "env::SOME_ENV_VAR"] ] } } }, "matrix": { "oneOf": [ { "type": "array", "description": "List of elements for simple single-dimension Build Matrix", "items": { "$ref": "#/definitions/matrixElement" }, "examples": [["linux", "freebsd"]] }, { "type": "object", "description": "Configuration for multi-dimension Build Matrix", "properties": { "setup": { "oneOf": [ { "type": "array", "description": "List of elements for single-dimension Build Matrix", "items": { "$ref": "#/definitions/matrixElement" }, "examples": [["linux", "freebsd"]] }, { "type": "object", "description": "Mapping of Build Matrix dimension names to their lists of elements", "propertyNames": { "type": "string", "description": "Build Matrix dimension name", "pattern": "^[a-zA-Z0-9_]+$" }, "additionalProperties": { "type": "array", "description": "List of elements for this Build Matrix dimension", "items": { "$ref": "#/definitions/matrixElement" } }, "examples": [ { "os": ["linux", "freebsd"], "arch": ["arm64", "riscv"] } ] } ] }, "adjustments": { "type": "array", "description": "List of Build Matrix adjustments", "items": { "type": "object", "description": "An adjustment to a Build Matrix", "properties": { "with": { "oneOf": [ { "type": "array", "description": "List of existing or new elements for single-dimension Build Matrix", "items": { "$ref": "#/definitions/matrixElement" } }, { "type": "object", "description": "Specification of a new or existing Build Matrix combination", "propertyNames": { "type": "string", "description": "Build Matrix dimension name" }, "additionalProperties": { "type": "string", "description": "Build Matrix dimension element" }, "examples": [{ "os": "linux", "arch": "arm64" }] } ] }, "skip": { "$ref": "#/definitions/skip" }, "soft_fail": { "$ref": "#/definitions/softFail" } }, "required": ["with"] } } }, "required": ["setup"] } ] }, "name": { "$ref": "#/definitions/commandStep/properties/label" }, "notify": { "type": "array", "description": "Array of notification options for this step", "items": { "oneOf": [ { "$ref": "#/definitions/notifySimple" }, { "$ref": "#/definitions/notifyBasecamp" }, { "$ref": "#/definitions/notifySlack" }, { "$ref": "#/definitions/notifyGithubCommitStatus" }, { "$ref": "#/definitions/notifyGithubCheck" } ] } }, "parallelism": { "type": "integer", "description": "The number of parallel jobs that will be created based on this step", "examples": [42] }, "plugins": { "anyOf": [ { "type": "array", "description": "Array of plugins for this step", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "maxProperties": 1, "examples": [{ "docker-compose#v1.0.0": { "run": "app" } }] } ] } }, { "type": "object", "description": "A map of plugins for this step. Deprecated: please use the array syntax.", "deprecated": true } ] }, "soft_fail": { "$ref": "#/definitions/softFail" }, "retry": { "type": "object", "description": "The conditions for retrying this step.", "properties": { "automatic": { "anyOf": [ { "enum": [true, false, "true", "false"] }, { "$ref": "#/definitions/automaticRetry" }, { "type": "array", "items": { "$ref": "#/definitions/automaticRetry" } } ], "description": "Whether to allow a job to retry automatically. If set to true, the retry conditions are set to the default value.", "default": [ { "exit_status": "*", "limit": 2 } ] }, "manual": { "description": "Whether to allow a job to be retried manually", "anyOf": [ { "enum": [true, false, "true", "false"] }, { "type": "object", "properties": { "allowed": { "enum": [true, false, "true", "false"], "description": "Whether or not this job can be retried manually", "default": true }, "permit_on_passed": { "enum": [true, false, "true", "false"], "description": "Whether or not this job can be retried after it has passed", "default": true }, "reason": { "type": "string", "description": "A string that will be displayed in a tooltip on the Retry button in Buildkite. This will only be displayed if the allowed attribute is set to false.", "examples": ["No retries allowed on deploy steps"] } }, "additionalProperties": false } ], "default": true } }, "additionalProperties": false }, "skip": { "$ref": "#/definitions/skip" }, "timeout_in_minutes": { "type": "integer", "description": "The number of minutes to time out a job", "minimum": 1, "examples": [60] }, "type": { "type": "string", "enum": ["script", "command", "commands"] }, "priority": { "type": "integer", "description": "Priority of the job, higher priorities are assigned to agents", "examples": [-1, 1] } }, "additionalProperties": false }, "nestedCommandStep": { "type": "object", "properties": { "command": { "$ref": "#/definitions/commandStep" }, "commands": { "$ref": "#/definitions/commandStep" }, "script": { "$ref": "#/definitions/commandStep" } }, "additionalProperties": false }, "stringWaitStep": { "type": "string", "description": "Waits for previous steps to pass before continuing", "enum": ["wait", "waiter"] }, "waitStep": { "type": "object", "properties": { "allow_dependency_failure": { "$ref": "#/definitions/allowDependencyFailure" }, "branches": { "$ref": "#/definitions/branches" }, "continue_on_failure": { "description": "Continue to the next steps, even if the previous group of steps fail", "enum": [true, false, "true", "false"], "default": false }, "depends_on": { "$ref": "#/definitions/dependsOn" }, "if": { "$ref": "#/definitions/if" }, "key": { "$ref": "#/definitions/key" }, "label": { "$ref": "#/definitions/waitStep/properties/wait" }, "name": { "$ref": "#/definitions/waitStep/properties/wait" }, "identifier": { "$ref": "#/definitions/waitStep/properties/key" }, "id": { "$ref": "#/definitions/waitStep/properties/key", "deprecated": true }, "type": { "type": "string", "enum": ["wait", "waiter"] }, "wait": { "description": "Waits for previous steps to pass before continuing", "type": ["string", "null"] } }, "additionalProperties": false }, "nestedWaitStep": { "type": "object", "properties": { "wait": { "description": "Waits for previous steps to pass before continuing", "$ref": "#/definitions/waitStep" }, "waiter": { "$ref": "#/definitions/waitStep" } }, "additionalProperties": false }, "triggerStep": { "type": "object", "properties": { "allow_dependency_failure": { "$ref": "#/definitions/allowDependencyFailure" }, "async": { "enum": [true, false, "true", "false"], "default": false, "description": "Whether to continue the build without waiting for the triggered step to complete" }, "branches": { "$ref": "#/definitions/branches" }, "build": { "type": "object", "description": "Properties of the build that will be created when the step is triggered", "properties": { "branch": { "type": "string", "description": "The branch for the build", "default": "master", "examples": ["master", "feature/xyz"] }, "commit": { "type": "string", "description": "The commit hash for the build", "default": "HEAD", "examples": ["HEAD", "b5fb108"] }, "env": { "$ref": "#/definitions/env" }, "message": { "type": "string", "description": "The message for the build (supports emoji)", "default": "The label of the trigger step", "examples": ["Deployment 123 :rocket:"] }, "meta_data": { "type": "object", "description": "Meta-data for the build", "examples": [{ "server": "i-b244e37160c" }] } }, "additionalProperties": false }, "depends_on": { "$ref": "#/definitions/dependsOn" }, "if": { "$ref": "#/definitions/if" }, "if_changed": { "$ref": "#/definitions/if_changed" }, "key": { "$ref": "#/definitions/key" }, "identifier": { "$ref": "#/definitions/triggerStep/properties/key" }, "id": { "$ref": "#/definitions/triggerStep/properties/key", "deprecated": true }, "label": { "$ref": "#/definitions/label" }, "name": { "$ref": "#/definitions/triggerStep/properties/label" }, "type": { "type": "string", "enum": ["trigger"] }, "trigger": { "type": "string", "description": "The slug of the pipeline to create a build" }, "skip": { "$ref": "#/definitions/skip" }, "soft_fail": { "$ref": "#/definitions/softFail" } }, "additionalProperties": false, "required": ["trigger"] }, "nestedTriggerStep": { "type": "object", "properties": { "trigger": { "$ref": "#/definitions/triggerStep" } }, "additionalProperties": false }, "groupStep": { "type": "object", "properties": { "depends_on": { "$ref": "#/definitions/dependsOn" }, "group": { "type": ["string", "null"], "description": "The name to give to this group of steps", "examples": ["Tests"] }, "if": { "$ref": "#/definitions/if" }, "if_changed": { "$ref": "#/definitions/if_changed" }, "key": { "$ref": "#/definitions/key" }, "identifier": { "$ref": "#/definitions/groupStep/properties/key" }, "id": { "$ref": "#/definitions/groupStep/properties/key", "deprecated": true }, "label": { "$ref": "#/definitions/groupStep/properties/group" }, "name": { "$ref": "#/definitions/groupStep/properties/group" }, "allow_dependency_failure": { "$ref": "#/definitions/allowDependencyFailure" }, "notify": { "$ref": "#/definitions/buildNotify" }, "skip": { "$ref": "#/definitions/skip" }, "steps": { "type": "array", "description": "A list of steps", "items": { "anyOf": [ { "$ref": "#/definitions/blockStep" }, { "$ref": "#/definitions/nestedBlockStep" }, { "$ref": "#/definitions/stringBlockStep" }, { "$ref": "#/definitions/inputStep" }, { "$ref": "#/definitions/nestedInputStep" }, { "$ref": "#/definitions/stringInputStep" }, { "$ref": "#/definitions/commandStep" }, { "$ref": "#/definitions/nestedCommandStep" }, { "$ref": "#/definitions/waitStep" }, { "$ref": "#/definitions/nestedWaitStep" }, { "$ref": "#/definitions/stringWaitStep" }, { "$ref": "#/definitions/triggerStep" }, { "$ref": "#/definitions/nestedTriggerStep" } ] }, "minItems": 1 } }, "required": ["group", "steps"], "additionalProperties": false } }, "properties": { "env": { "$ref": "#/definitions/env" }, "agents": { "$ref": "#/definitions/agents" }, "notify": { "$ref": "#/definitions/buildNotify" }, "image": { "$ref": "#/definitions/image" }, "steps": { "description": "A list of steps", "type": "array", "items": { "anyOf": [ { "$ref": "#/definitions/blockStep" }, { "$ref": "#/definitions/nestedBlockStep" }, { "$ref": "#/definitions/stringBlockStep" }, { "$ref": "#/definitions/inputStep" }, { "$ref": "#/definitions/nestedInputStep" }, { "$ref": "#/definitions/stringInputStep" }, { "$ref": "#/definitions/commandStep" }, { "$ref": "#/definitions/nestedCommandStep" }, { "$ref": "#/definitions/waitStep" }, { "$ref": "#/definitions/nestedWaitStep" }, { "$ref": "#/definitions/stringWaitStep" }, { "$ref": "#/definitions/triggerStep" }, { "$ref": "#/definitions/nestedTriggerStep" }, { "$ref": "#/definitions/groupStep" } ] } } } } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/circle-ci.json0000644000175100017510000000044315062662115030011 0ustar00runnerrunner{ "$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" } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/cloudbuild.json0000644000175100017510000007506315062662115030317 0ustar00runnerrunner{ "$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" } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/codecov.json0000644000175100017510000003755715062662115027621 0ustar00runnerrunner{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://json.schemastore.org/codecov", "definitions": { "default": { "$comment": "See https://docs.codecov.com/docs/commit-status#basic-configuration", "properties": { "target": { "type": ["string", "number"], "pattern": "^(([0-9]+\\.?[0-9]*|\\.[0-9]+)%?|auto)$", "default": "auto" }, "threshold": { "type": "string", "default": "0%", "pattern": "^([0-9]+\\.?[0-9]*|\\.[0-9]+)%?$" }, "base": { "type": "string", "default": "auto", "deprecated": true }, "flags": { "type": "array", "default": [] }, "paths": { "type": ["array", "string"], "default": [] }, "branches": { "type": "array", "default": [] }, "if_not_found": { "type": "string", "enum": ["failure", "success"], "default": "success" }, "informational": { "type": "boolean", "default": false }, "only_pulls": { "type": "boolean", "default": false }, "if_ci_failed": { "type": "string", "enum": ["error", "success"] }, "flag_coverage_not_uploaded_behavior": { "type": "string", "enum": ["include", "exclude", "pass"] } } }, "flag": { "type": "object", "properties": { "joined": { "type": "boolean" }, "required": { "type": "boolean" }, "ignore": { "type": "array", "items": { "type": "string" } }, "paths": { "type": "array", "items": { "type": "string" } }, "assume": { "type": ["boolean", "array"], "items": { "type": "string" } } } }, "layout": { "anyOf": [ {}, { "enum": [ "header", "footer", "diff", "file", "files", "flag", "flags", "reach", "sunburst", "uncovered" ] } ] }, "notification": { "type": "object", "properties": { "url": { "type": "string" }, "branches": { "type": "string" }, "threshold": { "type": "string" }, "message": { "type": "string" }, "flags": { "type": "string" }, "base": { "enum": ["parent", "pr", "auto"] }, "only_pulls": { "type": "boolean" }, "paths": { "type": "array", "items": { "type": "string" } } } } }, "description": "Schema for codecov.yml files.", "properties": { "codecov": { "description": "See https://docs.codecov.io/docs/codecov-yaml for details", "type": "object", "properties": { "url": { "type": "string" }, "slug": { "type": "string" }, "bot": { "description": "Team bot. See https://docs.codecov.io/docs/team-bot for details", "type": "string" }, "branch": { "type": "string" }, "ci": { "description": "Detecting CI services. See https://docs.codecov.io/docs/detecting-ci-services for details.", "type": "array", "items": { "type": "string" } }, "assume_all_flags": { "type": "boolean" }, "strict_yaml_branch": { "type": "string" }, "max_report_age": { "type": ["string", "integer", "boolean"] }, "disable_default_path_fixes": { "type": "boolean" }, "require_ci_to_pass": { "type": "boolean" }, "allow_pseudo_compare": { "type": "boolean" }, "archive": { "type": "object", "properties": { "uploads": { "type": "boolean" } } }, "notify": { "type": "object", "properties": { "after_n_builds": { "type": "integer" }, "countdown": { "type": "integer" }, "delay": { "type": "integer" }, "wait_for_ci": { "type": "boolean" } } }, "ui": { "type": "object", "properties": { "hide_density": { "type": ["boolean", "array"], "items": { "type": "string" } }, "hide_complexity": { "type": ["boolean", "array"], "items": { "type": "string" } }, "hide_contextual": { "type": "boolean" }, "hide_sunburst": { "type": "boolean" }, "hide_search": { "type": "boolean" } } } } }, "coverage": { "description": "Coverage configuration. See https://docs.codecov.io/docs/coverage-configuration for details.", "type": "object", "properties": { "precision": { "type": "integer", "minimum": 0, "maximum": 5 }, "round": { "enum": ["down", "up", "nearest"] }, "range": { "type": "string" }, "notify": { "description": "Notifications. See https://docs.codecov.io/docs/notifications for details.", "type": "object", "properties": { "irc": { "type": "object", "properties": { "url": { "type": "string" }, "branches": { "type": "string" }, "threshold": { "type": "string" }, "message": { "type": "string" }, "flags": { "type": "string" }, "base": { "enum": ["parent", "pr", "auto"] }, "only_pulls": { "type": "boolean" }, "paths": { "type": "array", "items": { "type": "string" } }, "channel": { "type": "string" }, "password": { "type": "string" }, "nickserv_password": { "type": "string" }, "notice": { "type": "boolean" } } }, "slack": { "description": "Slack. See https://docs.codecov.io/docs/notifications#section-slack for details.", "type": "object", "properties": { "url": { "type": "string" }, "branches": { "type": "string" }, "threshold": { "type": "string" }, "message": { "type": "string" }, "flags": { "type": "string" }, "base": { "enum": ["parent", "pr", "auto"] }, "only_pulls": { "type": "boolean" }, "paths": { "type": "array", "items": { "type": "string" } }, "attachments": { "$ref": "#/definitions/layout" } } }, "gitter": { "description": "Gitter. See https://docs.codecov.io/docs/notifications#section-gitter for details.", "type": "object", "properties": { "url": { "type": "string" }, "branches": { "type": "string" }, "threshold": { "type": "string" }, "message": { "type": "string" }, "flags": { "type": "string" }, "base": { "enum": ["parent", "pr", "auto"] }, "only_pulls": { "type": "boolean" }, "paths": { "type": "array", "items": { "type": "string" } } } }, "hipchat": { "description": "Hipchat. See https://docs.codecov.io/docs/notifications#section-hipchat for details.", "type": "object", "properties": { "url": { "type": "string" }, "branches": { "type": "string" }, "threshold": { "type": "string" }, "message": { "type": "string" }, "flags": { "type": "string" }, "base": { "enum": ["parent", "pr", "auto"] }, "only_pulls": { "type": "boolean" }, "paths": { "type": "array", "items": { "type": "string" } }, "card": { "type": "boolean" }, "notify": { "type": "boolean" } } }, "webhook": { "type": "object", "properties": { "url": { "type": "string" }, "branches": { "type": "string" }, "threshold": { "type": "string" }, "message": { "type": "string" }, "flags": { "type": "string" }, "base": { "enum": ["parent", "pr", "auto"] }, "only_pulls": { "type": "boolean" }, "paths": { "type": "array", "items": { "type": "string" } } } }, "email": { "type": "object", "properties": { "url": { "type": "string" }, "branches": { "type": "string" }, "threshold": { "type": "string" }, "message": { "type": "string" }, "flags": { "type": "string" }, "base": { "enum": ["parent", "pr", "auto"] }, "only_pulls": { "type": "boolean" }, "paths": { "type": "array", "items": { "type": "string" } }, "layout": { "$ref": "#/definitions/layout" }, "+to": { "type": "array", "items": { "type": "string" } } } } } }, "status": { "description": "Commit status. See https://docs.codecov.io/docs/commit-status for details.", "type": ["boolean", "object"], "additionalProperties": false, "properties": { "default_rules": { "type": "object" }, "project": { "properties": { "default": { "$ref": "#/definitions/default", "type": ["object", "boolean"] } }, "additionalProperties": { "$ref": "#/definitions/default", "type": ["object", "boolean"] } }, "patch": { "anyOf": [ { "$ref": "#/definitions/default", "type": "object" }, { "type": "string", "enum": ["off"] }, { "type": "boolean" } ] }, "changes": { "$ref": "#/definitions/default", "type": ["object", "boolean"] } } } } }, "ignore": { "description": "Ignoring paths. see https://docs.codecov.io/docs/ignoring-paths for details.", "type": "array", "items": { "type": "string" } }, "fixes": { "description": "Fixing paths. See https://docs.codecov.io/docs/fixing-paths for details.", "type": "array", "items": { "type": "string" } }, "flags": { "description": "Flags. See https://docs.codecov.io/docs/flags for details.", "oneOf": [ { "type": "array", "items": { "$ref": "#/definitions/flag" } }, { "type": "object", "additionalProperties": { "$ref": "#/definitions/flag" } } ] }, "comment": { "description": "Pull request comments. See https://docs.codecov.io/docs/pull-request-comments for details.", "oneOf": [ { "type": "object", "properties": { "layout": { "$ref": "#/definitions/layout" }, "require_changes": { "type": "boolean" }, "require_base": { "type": "boolean" }, "require_head": { "type": "boolean" }, "branches": { "type": "array", "items": { "type": "string" } }, "behavior": { "enum": ["default", "once", "new", "spammy"] }, "flags": { "type": "array", "items": { "$ref": "#/definitions/flag" } }, "paths": { "type": "array", "items": { "type": "string" } } } }, { "const": false } ] }, "github_checks": { "description": "GitHub Checks. See https://docs.codecov.com/docs/github-checks for details.", "anyOf": [ { "type": "object", "properties": { "annotations": { "type": "boolean" } } }, { "type": "boolean" }, { "type": "string", "enum": ["off"] } ] } }, "title": "JSON schema for Codecov configuration files", "type": "object" } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/compose-spec.json0000644000175100017510000022151215062662115030556 0ustar00runnerrunner{ "$schema": "https://json-schema.org/draft-07/schema", "$id": "compose_spec.json", "type": "object", "title": "Compose Specification", "description": "The Compose file is a YAML file defining a multi-containers based application.", "properties": { "version": { "type": "string", "deprecated": true, "description": "declared for backward compatibility, ignored. Please remove it." }, "name": { "type": "string", "description": "define the Compose project name, until user defines one explicitly." }, "include": { "type": "array", "items": { "$ref": "#/definitions/include" }, "description": "compose sub-projects to be included." }, "services": { "type": "object", "patternProperties": { "^[a-zA-Z0-9._-]+$": { "$ref": "#/definitions/service" } }, "additionalProperties": false, "description": "The services that will be used by your application." }, "models": { "type": "object", "patternProperties": { "^[a-zA-Z0-9._-]+$": { "$ref": "#/definitions/model" } }, "description": "Language models that will be used by your application." }, "networks": { "type": "object", "patternProperties": { "^[a-zA-Z0-9._-]+$": { "$ref": "#/definitions/network" } }, "description": "Networks that are shared among multiple services." }, "volumes": { "type": "object", "patternProperties": { "^[a-zA-Z0-9._-]+$": { "$ref": "#/definitions/volume" } }, "additionalProperties": false, "description": "Named volumes that are shared among multiple services." }, "secrets": { "type": "object", "patternProperties": { "^[a-zA-Z0-9._-]+$": { "$ref": "#/definitions/secret" } }, "additionalProperties": false, "description": "Secrets that are shared among multiple services." }, "configs": { "type": "object", "patternProperties": { "^[a-zA-Z0-9._-]+$": { "$ref": "#/definitions/config" } }, "additionalProperties": false, "description": "Configurations that are shared among multiple services." } }, "patternProperties": {"^x-": {}}, "additionalProperties": false, "definitions": { "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", "description": "Path to the build context. Can be a relative path or a URL."}, { "type": "object", "properties": { "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."}, "provenance": {"type": ["string","boolean"], "description": "Add a provenance attestation"}, "sbom": {"type": ["string","boolean"], "description": "Add a SBOM attestation"}, "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-": {}} } ] }, "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"], "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, "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.", "pattern": "[a-zA-Z0-9][a-zA-Z0-9_.-]+" }, "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", "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-": {}} }, "depends_on": { "oneOf": [ {"$ref": "#/definitions/list_of_strings"}, { "type": "object", "additionalProperties": false, "patternProperties": { "^[a-zA-Z0-9._-]+$": { "type": "object", "additionalProperties": false, "patternProperties": {"^x-": {}}, "properties": { "restart": { "type": ["boolean", "string"], "description": "Whether to restart dependent services when this service is restarted." }, "required": { "type": "boolean", "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"], "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." }, "devices": { "type": "array", "description": "List of device mappings for the container.", "items": { "oneOf": [ {"type": "string"}, { "type": "object", "required": ["source"], "properties": { "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-": {}} } ] } }, "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, "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", "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.", "required": ["type"], "properties": { "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": { "^.+$": {"oneOf": [ { "type": ["string", "number", "boolean"] }, { "type": "array", "items": {"type": ["string", "number", "boolean"]}} ]} } } }, "additionalProperties": false, "patternProperties": {"^x-": {}} }, "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, "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." }, "logging": { "type": "object", "description": "Logging configuration for the service.", "properties": { "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"]} } } }, "additionalProperties": false, "patternProperties": {"^x-": {}} }, "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]'." }, "models": { "oneOf": [ {"$ref": "#/definitions/list_of_strings"}, {"type": "object", "patternProperties": { "^[a-zA-Z0-9._-]+$": { "type": "object", "properties": { "endpoint_var": { "type": "string", "description": "Environment variable set to AI model endpoint." }, "model_var": { "type": "string", "description": "Environment variable set to AI model name." } }, "additionalProperties": false, "patternProperties": {"^x-": {}} } } } ], "description": "AI Models to use, referencing entries under the top-level models key." }, "networks": { "oneOf": [ {"$ref": "#/definitions/list_of_strings"}, { "type": "object", "patternProperties": { "^[a-zA-Z0-9._-]+$": { "oneOf": [ { "type": "object", "properties": { "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", "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-": {}} }, {"type": "null"} ] } }, "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'." }, "ports": { "type": "array", "description": "Expose container ports. Short format ([HOST:]CONTAINER[/PROTOCOL]).", "items": { "oneOf": [ {"type": "number"}, {"type": "string"}, { "type": "object", "properties": { "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-": {}} } ] }, "uniqueItems": true }, "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'." }, "runtime": { "type": "string", "description": "Runtime to use for this container, e.g., 'runc'." }, "scale": { "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." }, "use_api_socket": { "type": "boolean", "description": "Bind mount Docker API socket and required auth." }, "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"}, { "type": "object", "required": ["type"], "properties": { "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." }, "bind": { "type": "object", "description": "Configuration specific to bind mounts.", "properties": { "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", "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"], "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", "description": "Path within the image to mount instead of the image root." } }, "additionalProperties": false, "patternProperties": {"^x-": {}} } }, "additionalProperties": false, "patternProperties": {"^x-": {}} } ] }, "uniqueItems": true }, "volumes_from": { "type": "array", "items": {"type": "string"}, "uniqueItems": true, "description": "Mount volumes from another service or container. Optionally specify read-only access (ro) or read-write (rw)." }, "working_dir": { "type": "string", "description": "The working directory in which the entrypoint or command will be run" } }, "patternProperties": {"^x-": {}}, "additionalProperties": false }, "healthcheck": { "type": "object", "description": "Configuration options to determine whether the container is healthy.", "properties": { "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." }, "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", "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-": {}} } } }, "additionalProperties": false, "patternProperties": {"^x-": {}} }, "deployment": { "type": ["object", "null"], "description": "Deployment configuration for the service.", "properties": { "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"], "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"], "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"], "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"], "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-": {}} } }, "additionalProperties": false, "patternProperties": {"^x-": {}} }, "restart_policy": { "type": "object", "description": "Restart policy for the service containers.", "properties": { "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"}, "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", "description": "Spread tasks evenly across values of the specified node label." } }, "additionalProperties": false, "patternProperties": {"^x-": {}} } }, "max_replicas_per_node": { "type": ["integer", "string"], "description": "Maximum number of replicas of the service." } }, "additionalProperties": false, "patternProperties": {"^x-": {}} } }, "additionalProperties": false, "patternProperties": {"^x-": {}} }, "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", "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-": {}} } }, "additionalProperties": false, "patternProperties": {"^x-": {}} } }, "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", "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-": {}}, "required": [ "capabilities" ] } }, "gpus": { "oneOf": [ { "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", "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, "patternProperties": {"^x-": {}} } ] }, "include": { "description": "Compose application or sub-projects to be included.", "oneOf": [ {"type": "string"}, { "type": "object", "properties": { "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 } ] }, "network": { "type": ["object", "null"], "description": "Network configuration for the Compose application.", "properties": { "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", "description": "Custom IPAM driver, instead of the default." }, "config": { "type": "array", "description": "List of IPAM configuration blocks.", "items": { "type": "object", "properties": { "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"}} } }, "additionalProperties": false, "patternProperties": {"^x-": {}} } }, "options": { "type": "object", "description": "Driver-specific options for the IPAM driver.", "additionalProperties": false, "patternProperties": {"^.+$": {"type": "string"}} } }, "additionalProperties": false, "patternProperties": {"^x-": {}} }, "external": { "type": ["boolean", "string", "object"], "description": "Specifies that this network already exists and was created outside of Compose.", "properties": { "name": { "deprecated": true, "type": "string", "description": "Specifies the name of the external network. Deprecated: use the 'name' property instead." } }, "additionalProperties": false, "patternProperties": {"^x-": {}} }, "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-": {}} }, "volume": { "type": ["object", "null"], "description": "Volume configuration for the Compose application.", "properties": { "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", "description": "Specifies the name of the external volume. Deprecated: use the 'name' property instead." } }, "additionalProperties": false, "patternProperties": {"^x-": {}} }, "labels": { "$ref": "#/definitions/list_or_dict", "description": "Add metadata to the volume using labels." } }, "additionalProperties": false, "patternProperties": {"^x-": {}} }, "secret": { "type": "object", "description": "Secret configuration for the Compose application.", "properties": { "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", "description": "Specifies the name of the external secret." } } }, "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", "description": "Driver to use for templating the secret's value." } }, "additionalProperties": false, "patternProperties": {"^x-": {}} }, "config": { "type": "object", "description": "Config configuration for the Compose application.", "properties": { "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", "description": "Specifies the name of the external config. Deprecated: use the 'name' property instead." } } }, "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-": {}} }, "model": { "type": "object", "description": "Language Model for the Compose application.", "properties": { "name": { "type": "string", "description": "Custom name for this model." }, "model": { "type": "string", "description": "Language Model to run." }, "context_size": { "type": "integer" }, "runtime_flags": { "type": "array", "items": {"type": "string"}, "description": "Raw runtime flags to pass to the inference engine." } }, "required": ["model"], "additionalProperties": false, "patternProperties": {"^x-": {}} }, "command": { "oneOf": [ { "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", "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-": {}}, "required": ["command"] }, "env_file": { "oneOf": [ { "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", "description": "Path to a file containing environment variables." }, { "type": "object", "description": "Detailed configuration for an environment file.", "additionalProperties": false, "properties": { "path": { "type": "string", "description": "Path to the environment file." }, "format": { "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, "description": "Whether the file is required. If true and the file doesn't exist, an error will be raised." } }, "required": [ "path" ] } ] } } ] }, "label_file": { "oneOf": [ { "type": "string", "description": "Path to a file containing Docker labels." }, { "type": "array", "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", "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", "description": "A list of unique string values.", "items": { "type": "string", "description": "A string value in the list." }, "uniqueItems": true }, "list_or_dict": { "oneOf": [ { "type": "object", "description": "A dictionary mapping keys to values.", "patternProperties": { ".+": { "type": ["string", "number", "boolean", "null"], "description": "Value for the key, which can be a string, number, boolean, or null." } }, "additionalProperties": false }, { "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", "description": "IP address for the hostname." }, { "type": "array", "description": "List of IP addresses for the hostname.", "items": { "type": "string", "description": "IP address for the hostname." }, "uniqueItems": false } ] } }, "additionalProperties": false }, { "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", "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", "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", "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", "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-": {}} } ] } }, "ulimits": { "type": "object", "description": "Container ulimit options, controlling resource limits for processes inside the container.", "patternProperties": { "^[a-z]+$": { "oneOf": [ { "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"], "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, "patternProperties": {"^x-": {}} } ] } } } } } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/dependabot.json0000644000175100017510000011066415062662115030273 0ustar00runnerrunner{ "$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", "rust-toolchain", "swift", "terraform", "uv", "vcpkg" ] }, "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", "additionalProperties": false, "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 }, "cooldown": { "description": "Defines a cooldown period for dependency updates, allowing updates to be delayed for a configurable number of days. This feature enables users to customize how often Dependabot generates new version updates, offering greater control over update frequency.", "type": "object", "properties": { "default-days": { "description": "Default cooldown period for dependencies without specific rules (optional).", "type": "integer", "minimum": 0 }, "semver-major-days": { "description": "Cooldown period for major version updates (optional, applies only to package managers supporting SemVer).", "type": "integer", "minimum": 0 }, "semver-minor-days": { "description": "Cooldown period for minor version updates (optional, applies only to package managers supporting SemVer).", "type": "integer", "minimum": 0 }, "semver-patch-days": { "description": "Cooldown period for patch version updates (optional, applies only to package managers supporting SemVer).", "type": "integer", "minimum": 0 }, "include": { "description": "List of dependencies to apply cooldown (up to 150 items). Supports wildcards (`*`).", "type": "array", "items": { "type": "string" }, "maxItems": 150 }, "exclude": { "description": "List of dependencies excluded from cooldown (up to 150 items). Supports wildcards (`*`).", "type": "array", "items": { "type": "string" }, "maxItems": 150 } }, "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": "/" }, "exclude-paths": { "description": "List of file paths to exclude from dependency updates", "type": "array", "minItems": 0, "uniqueItems": true, "items": { "type": "string" } }, "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": "*" } ] }, "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": [ "cargo-registry", "composer-repository", "docker-registry", "git", "hex-organization", "hex-repository", "maven-repository", "npm-registry", "nuget-feed", "pub-repository", "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" } } } } } } } ] } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/drone-ci.json0000644000175100017510000005055315062662115027666 0ustar00runnerrunner{ "$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", "description": "Defines the concurrency limits for the named pipeline\nhttps://docs.drone.io/yaml/exec/#the-concurrency-object" } } }, "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", "description": "If empty the full repository may be cloned\nhttps://docs.drone.io/yaml/exec/#the-clone-object" }, "disable": { "type": "boolean", "description": "It can be useful when you need to disable implement your own custom clone logic.\nhttps://docs.drone.io/yaml/exec/#the-clone-object" } } }, "steps": { "type": "array", "minLength": 1 }, "trigger": { "$ref": "#/definitions/allConditions" }, "concurrency": { "$ref": "#/definitions/concurrency" }, "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" }, "concurrency": { "$ref": "#/definitions/concurrency" }, "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" }, "concurrency": { "$ref": "#/definitions/concurrency" }, "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" } } }, "concurrency": { "$ref": "#/definitions/concurrency" }, "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" } }, "concurrency": { "$ref": "#/definitions/concurrency" }, "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" } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/github-actions.json0000644000175100017510000007337315062662115031113 0ustar00runnerrunner{ "$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", "node24"] }, "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" } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/github-issue-config.json0000644000175100017510000000447115062662115032037 0ustar00runnerrunner{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://json.schemastore.org/github-issue-config.json", "$comment": "https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository#configuring-the-template-chooser", "properties": { "blank_issues_enabled": { "description": "Specify whether allow blank issue creation\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository#configuring-the-template-chooser", "type": "boolean" }, "contact_links": { "title": "contact links", "description": "Contact links\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository#configuring-the-template-chooser", "type": "array", "minItems": 1, "items": { "type": "object", "required": ["name", "url", "about"], "properties": { "name": { "description": "A link title\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository#configuring-the-template-chooser", "type": "string", "minLength": 1, "examples": ["Sample name"] }, "url": { "description": "A link URL\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository#configuring-the-template-chooser", "type": "string", "pattern": "^https?://", "examples": ["https://sample/url"] }, "about": { "description": "A link description\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository#configuring-the-template-chooser", "type": "string", "minLength": 1, "examples": ["Sample description"] } }, "additionalProperties": false } } }, "additionalProperties": false, "title": "GitHub issue template chooser config file schema", "type": "object" } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/github-issue-forms.json0000644000175100017510000023557315062662115031731 0ustar00runnerrunner{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://json.schemastore.org/github-issue-forms.json", "$comment": "https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms", "additionalProperties": false, "definitions": { "type": { "description": "A form item type\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#keys", "type": "string", "enum": ["checkboxes", "dropdown", "input", "markdown", "textarea"] }, "id": { "type": "string", "pattern": "^[a-zA-Z0-9_-]+$", "examples": ["SampleId"] }, "validations": { "title": "validation options", "type": "object", "properties": { "required": { "description": "Specify whether require a form item", "type": "boolean", "default": false } }, "additionalProperties": false }, "assignee": { "type": "string", "maxLength": 39, "pattern": "^[a-zA-Z0-9](-?[a-zA-Z0-9])*$", "examples": ["SampleAssignee"] }, "label": { "type": "string", "minLength": 1, "examples": ["Sample label"] }, "description": { "type": "string", "default": "", "examples": ["Sample description"] }, "placeholder": { "type": "string", "default": "", "examples": ["Sample placeholder"] }, "value": { "type": "string", "minLength": 1, "examples": ["Sample value"] }, "form_item": { "title": "form item", "description": "A form item\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#about-githubs-form-schema", "type": "object", "required": ["type"], "properties": { "type": { "$ref": "#/definitions/type" } }, "allOf": [ { "if": { "properties": { "type": { "const": "markdown" } } }, "then": { "$comment": "For `additionalProperties` to work `type` must also be present here.", "title": "markdown", "description": "Markdown\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#markdown", "type": "object", "required": ["type", "attributes"], "properties": { "type": { "$ref": "#/definitions/type" }, "attributes": { "title": "markdown attributes", "description": "Markdown attributes\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes", "type": "object", "required": ["value"], "properties": { "value": { "description": "A markdown code\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes", "type": "string", "minLength": 1, "examples": ["Sample code"] } }, "additionalProperties": false } }, "additionalProperties": false } }, { "if": { "properties": { "type": { "const": "textarea" } } }, "then": { "$comment": "For `additionalProperties` to work `type` must also be present here.", "title": "textarea", "description": "Textarea\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#textarea", "type": "object", "required": ["type", "attributes"], "properties": { "type": { "$ref": "#/definitions/type" }, "id": { "$ref": "#/definitions/id", "description": "A textarea id\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#keys" }, "attributes": { "title": "textarea attributes", "description": "Textarea attributes\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes-1", "type": "object", "required": ["label"], "properties": { "label": { "$ref": "#/definitions/label", "description": "A short textarea description\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes-1" }, "description": { "$ref": "#/definitions/description", "description": "A long textarea description\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes-1" }, "placeholder": { "$ref": "#/definitions/placeholder", "description": "A textarea placeholder\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes-1" }, "value": { "$ref": "#/definitions/value", "description": "A textarea value\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes-1" }, "render": { "description": "A textarea syntax highlighting mode\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes-1", "type": "string", "enum": [ "1C Enterprise", "1c enterprise", "2-Dimensional Array", "2-dimensional array", "4D", "4d", "ABAP", "ABAP CDS", "ABNF", "AFDKO", "AGS Script", "AIDL", "AL", "AMPL", "ANTLR", "API Blueprint", "APL", "ASL", "ASN.1", "ASP.NET", "ATS", "ActionScript", "Ada", "Adblock Filter List", "Adobe Font Metrics", "Agda", "Alloy", "Alpine Abuild", "Altium Designer", "AngelScript", "Ant Build System", "Antlers", "ApacheConf", "Apex", "Apollo Guidance Computer", "AppleScript", "Arc", "AsciiDoc", "AspectJ", "Assembly", "Astro", "Asymptote", "Augeas", "AutoHotkey", "AutoIt", "AutoIt3", "AutoItScript", "Avro IDL", "Awk", "BASIC", "Ballerina", "Batchfile", "Beef", "Befunge", "Berry", "BibTeX", "Bicep", "Bikeshed", "Bison", "BitBake", "Blade", "BlitzBasic", "BlitzMax", "Bluespec", "Bluespec BH", "Boo", "Boogie", "Brainfuck", "BrighterScript", "Brightscript", "Browserslist", "C", "C#", "C++", "C-ObjDump", "C2hs Haskell", "CAP CDS", "CIL", "CLIPS", "CMake", "COBOL", "CODEOWNERS", "COLLADA", "CSON", "CSS", "CSV", "CUE", "CWeb", "Cabal", "Cabal Config", "Cadence", "Cairo", "CameLIGO", "Cap'n Proto", "Carto", "CartoCSS", "Ceylon", "Chapel", "Charity", "Checksums", "ChucK", "Circom", "Cirru", "Clarion", "Clarity", "Classic ASP", "Clean", "Click", "Clojure", "Closure Templates", "Cloud Firestore Security Rules", "CoNLL", "CoNLL-U", "CoNLL-X", "CodeQL", "CoffeeScript", "ColdFusion", "ColdFusion CFC", "Common Lisp", "Common Workflow Language", "Component Pascal", "Containerfile", "Cool", "Coq", "Cpp-ObjDump", "Creole", "Crystal", "Csound", "Csound Document", "Csound Score", "Cuda", "Cue Sheet", "Curry", "Cycript", "Cypher", "Cython", "D", "D-ObjDump", "D2", "DIGITAL Command Language", "DM", "DNS Zone", "DTrace", "Dafny", "Darcs Patch", "Dart", "DataWeave", "Debian Package Control File", "DenizenScript", "Dhall", "Diff", "DirectX 3D File", "Dlang", "Dockerfile", "Dogescript", "Dotenv", "Dylan", "E", "E-mail", "EBNF", "ECL", "ECLiPSe", "EJS", "EQ", "Eagle", "Earthfile", "Earthly", "Easybuild", "Ecere Projects", "Ecmarkup", "EdgeQL", "EditorConfig", "Edje Data Collection", "Eiffel", "Elixir", "Elm", "Elvish", "Elvish Transcript", "Emacs Lisp", "EmberScript", "Erlang", "Euphoria", "F#", "F*", "FIGfont", "FIGlet Font", "FLUX", "Factor", "Fancy", "Fantom", "Faust", "Fennel", "Filebench WML", "Filterscript", "Fluent", "Formatted", "Forth", "Fortran", "Fortran Free Form", "FreeBasic", "FreeMarker", "Frege", "Futhark", "G-code", "GAML", "GAMS", "GAP", "GCC Machine Description", "GDB", "GDScript", "GEDCOM", "GLSL", "GN", "GSC", "Game Maker Language", "Gemfile.lock", "Gemini", "Genero 4gl", "Genero per", "Genie", "Genshi", "Gentoo Ebuild", "Gentoo Eclass", "Gerber Image", "Gettext Catalog", "Gherkin", "Git Attributes", "Git Blame Ignore Revs", "Git Config", "Git Revision List", "Gleam", "Glimmer JS", "Glyph", "Glyph Bitmap Distribution Format", "Gnuplot", "Go", "Go Checksums", "Go Module", "Go Workspace", "Godot Resource", "Golo", "Gosu", "Grace", "Gradle", "Gradle Kotlin DSL", "Grammatical Framework", "Graph Modeling Language", "GraphQL", "Graphviz (DOT)", "Groovy", "Groovy Server Pages", "HAProxy", "HCL", "HLSL", "HOCON", "HTML", "HTML+ECR", "HTML+EEX", "HTML+ERB", "HTML+PHP", "HTML+Razor", "HTTP", "HXML", "Hack", "Haml", "Handlebars", "Harbour", "HashiCorp Configuration Language", "Haskell", "Haxe", "HiveQL", "HolyC", "Hosts File", "Hy", "HyPhy", "IDL", "IGOR Pro", "INI", "IPython Notebook", "IRC log", "Idris", "Ignore List", "ImageJ Macro", "Imba", "Inform 7", "Ink", "Inno Setup", "Io", "Ioke", "Isabelle", "Isabelle ROOT", "J", "JAR Manifest", "JCL", "JFlex", "JSON", "JSON with Comments", "JSON5", "JSONLD", "JSONiq", "Janet", "Jasmin", "Java", "Java Properties", "Java Server Pages", "JavaScript", "JavaScript+ERB", "Jest Snapshot", "JetBrains MPS", "Jinja", "Jison", "Jison Lex", "Jolie", "Jsonnet", "Julia", "Jupyter Notebook", "Just", "Justfile", "KRL", "Kaitai Struct", "KakouneScript", "KerboScript", "KiCad Layout", "KiCad Legacy Layout", "KiCad Schematic", "Kickstart", "Kit", "Kotlin", "Kusto", "LFE", "LLVM", "LOLCODE", "LSL", "LTspice Symbol", "LabVIEW", "Lark", "Lasso", "Latte", "Lean", "Lean 4", "Less", "Lex", "LigoLANG", "LilyPond", "Limbo", "Linker Script", "Linux Kernel Module", "Liquid", "Literate Agda", "Literate CoffeeScript", "Literate Haskell", "LiveScript", "Logos", "Logtalk", "LookML", "LoomScript", "Lua", "M", "M4", "M4Sugar", "MATLAB", "MAXScript", "MDX", "MLIR", "MQL4", "MQL5", "MTML", "MUF", "Macaulay2", "Makefile", "Mako", "Markdown", "Marko", "Mask", "Mathematica", "Maven POM", "Max", "Mercury", "Mermaid", "Meson", "Metal", "Microsoft Developer Studio Project", "Microsoft Visual Studio Solution", "MiniD", "MiniYAML", "Mint", "Mirah", "Modelica", "Modula-2", "Modula-3", "Module Management System", "Monkey", "Monkey C", "Moocode", "MoonScript", "Motoko", "Motorola 68K Assembly", "Move", "Muse", "Mustache", "Myghty", "NASL", "NCL", "NEON", "NL", "NPM Config", "NSIS", "NWScript", "Nasal", "Nearley", "Nemerle", "NeoSnippet", "NetLinx", "NetLinx+ERB", "NetLogo", "NewLisp", "Nextflow", "Nginx", "Nim", "Ninja", "Nit", "Nix", "Nu", "NumPy", "Nunjucks", "Nushell", "OASv2-json", "OASv2-yaml", "OASv3-json", "OASv3-yaml", "OCaml", "ObjDump", "Object Data Instance Notation", "ObjectScript", "Objective-C", "Objective-C++", "Objective-J", "Odin", "Omgrofl", "Opa", "Opal", "Open Policy Agent", "OpenAPI Specification v2", "OpenAPI Specification v3", "OpenCL", "OpenEdge ABL", "OpenQASM", "OpenRC runscript", "OpenSCAD", "OpenStep Property List", "OpenType Feature File", "Option List", "Org", "Ox", "Oxygene", "Oz", "P4", "PDDL", "PEG.js", "PHP", "PLSQL", "PLpgSQL", "POV-Ray SDL", "Pact", "Pan", "Papyrus", "Parrot", "Parrot Assembly", "Parrot Internal Representation", "Pascal", "Pawn", "Pep8", "Perl", "Pic", "Pickle", "PicoLisp", "PigLatin", "Pike", "PlantUML", "Pod", "Pod 6", "PogoScript", "Polar", "Pony", "Portugol", "PostCSS", "PostScript", "PowerBuilder", "PowerShell", "Praat", "Prisma", "Processing", "Procfile", "Proguard", "Prolog", "Promela", "Propeller Spin", "Protocol Buffer", "Protocol Buffer Text Format", "Protocol Buffers", "Public Key", "Pug", "Puppet", "Pure Data", "PureBasic", "PureScript", "Pyret", "Python", "Python console", "Python traceback", "Q#", "QML", "QMake", "Qt Script", "Quake", "R", "RAML", "RBS", "RDoc", "REALbasic", "REXX", "RMarkdown", "RPC", "RPGLE", "RPM Spec", "RUNOFF", "Racket", "Ragel", "Raku", "Rascal", "Raw token data", "ReScript", "Readline Config", "Reason", "ReasonLIGO", "Rebol", "Record Jar", "Red", "Redcode", "Redirect Rules", "Regular Expression", "Ren'Py", "RenderScript", "Rez", "Rich Text Format", "Ring", "Riot", "RobotFramework", "Roff", "Roff Manpage", "Rouge", "RouterOS Script", "Rscript", "Ruby", "Rust", "SAS", "SCSS", "SELinux Kernel Policy Language", "SELinux Policy", "SMT", "SPARQL", "SQF", "SQL", "SQLPL", "SRecode Template", "SSH Config", "STAR", "STL", "STON", "SVG", "SWIG", "Sage", "SaltStack", "Sass", "Scala", "Scaml", "Scenic", "Scheme", "Scilab", "Self", "ShaderLab", "Shell", "ShellCheck Config", "ShellSession", "Shen", "Sieve", "Simple File Verification", "Singularity", "Slash", "Slice", "Slim", "SmPL", "Smali", "Smalltalk", "Smarty", "Smithy", "Snakemake", "SnipMate", "Solidity", "Soong", "SourcePawn", "Spline Font Database", "Squirrel", "Stan", "Standard ML", "Starlark", "Stata", "StringTemplate", "Stylus", "SubRip Text", "SugarSS", "SuperCollider", "Svelte", "Sway", "Sweave", "Swift", "SystemVerilog", "TI Program", "TL-Verilog", "TLA", "TOML", "TSQL", "TSV", "TSX", "TXL", "Talon", "Tcl", "Tcsh", "TeX", "Tea", "Terra", "Terraform Template", "Texinfo", "Text", "TextMate Properties", "Textile", "Thrift", "Toit", "Turing", "Turtle", "Twig", "Type Language", "TypeScript", "Typst", "UltiSnip", "UltiSnips", "Unified Parallel C", "Unity3D Asset", "Unix Assembly", "Uno", "UnrealScript", "Ur", "Ur/Web", "UrWeb", "V", "VBA", "VBScript", "VCL", "VHDL", "Vala", "Valve Data Format", "Velocity Template Language", "Verilog", "Vim Help File", "Vim Script", "Vim Snippet", "Visual Basic .NET", "Visual Basic 6.0", "Volt", "Vue", "Vyper", "WDL", "WGSL", "Wavefront Material", "Wavefront Object", "Web Ontology Language", "WebAssembly", "WebAssembly Interface Type", "WebIDL", "WebVTT", "Wget Config", "Whiley", "Wikitext", "Win32 Message File", "Windows Registry Entries", "Witcher Script", "Wollok", "Workflow Description Language", "World of Warcraft Addon Data", "Wren", "X BitMap", "X Font Directory Index", "X PixMap", "X10", "XC", "XCompose", "XML", "XML Property List", "XPages", "XProc", "XQuery", "XS", "XSLT", "Xojo", "Xonsh", "Xtend", "YAML", "YANG", "YARA", "YASnippet", "Yacc", "Yul", "ZAP", "ZIL", "Zeek", "ZenScript", "Zephir", "Zig", "Zimpl", "abap", "abap cds", "abl", "abnf", "abuild", "acfm", "ackrc", "aconf", "actionscript", "actionscript 3", "actionscript3", "ad block", "ad block filters", "ada", "ada2005", "ada95", "adb", "adblock", "adblock filter list", "adobe composite font metrics", "adobe font metrics", "adobe multiple font metrics", "advpl", "agda", "ags", "ags script", "ahk", "aidl", "al", "alloy", "alpine abuild", "altium", "altium designer", "amfm", "ampl", "amusewiki", "angelscript", "ant build system", "antlers", "antlr", "apache", "apacheconf", "apex", "api blueprint", "apkbuild", "apl", "apollo guidance computer", "applescript", "arc", "arexx", "as3", "ascii stl", "asciidoc", "asl", "asm", "asn.1", "asp", "asp.net", "aspectj", "aspx", "aspx-vb", "assembly", "astro", "asymptote", "ats", "ats2", "au3", "augeas", "autoconf", "autohotkey", "autoit", "avro idl", "awk", "b3d", "ballerina", "bash", "bash session", "basic", "bat", "batch", "batchfile", "bazel", "be", "beef", "befunge", "berry", "bh", "bibtex", "bicep", "bikeshed", "bison", "bitbake", "blade", "blitz3d", "blitzbasic", "blitzmax", "blitzplus", "bluespec", "bluespec bh", "bluespec bsv", "bluespec classic", "bmax", "boo", "boogie", "bplus", "brainfuck", "brighterscript", "brightscript", "bro", "browserslist", "bsdmake", "bsv", "byond", "bzl", "c", "c#", "c++", "c++-objdump", "c-objdump", "c2hs", "c2hs haskell", "cURL Config", "cabal config", "cadence", "cairo", "cake", "cakescript", "cameligo", "cap cds", "cap'n proto", "cartocss", "cds", "ceylon", "cfc", "cfm", "cfml", "chapel", "charity", "checksum", "checksums", "chpl", "chuck", "cil", "circom", "cirru", "clarion", "clarity", "classic asp", "classic visual basic", "clean", "click", "clipper", "clips", "clojure", "closure templates", "cloud firestore security rules", "cmake", "cobol", "coccinelle", "codeowners", "codeql", "coffee", "coffee-script", "coffeescript", "coldfusion", "coldfusion cfc", "coldfusion html", "collada", "common lisp", "common workflow language", "component pascal", "conll-u", "console", "cool", "coq", "cperl", "cpp", "cpp-objdump", "creole", "crystal", "csharp", "cson", "csound", "csound document", "csound score", "csound-csd", "csound-orc", "csound-sco", "css", "csv", "cucumber", "cuda", "cue", "cue sheet", "curl config", "curlrc", "curry", "cweb", "cwl", "cycript", "cypher", "cython", "d", "d-objdump", "d2", "d2lang", "dafny", "darcs patch", "dart", "dataweave", "dcl", "debian package control file", "delphi", "denizenscript", "desktop", "dhall", "diff", "digital command language", "dircolors", "directx 3d file", "django", "dm", "dns zone", "dockerfile", "dogescript", "dosbatch", "dosini", "dotenv", "dpatch", "dtrace", "dtrace-script", "dylan", "e", "e-mail", "eC", "eagle", "earthly", "easybuild", "ebnf", "ec", "ecere projects", "ecl", "eclipse", "ecmarkdown", "ecmarkup", "ecr", "edgeql", "editor-config", "editorconfig", "edje data collection", "edn", "eeschema schematic", "eex", "eiffel", "ejs", "elisp", "elixir", "elm", "elvish", "elvish transcript", "emacs", "emacs lisp", "emacs muse", "email", "emberscript", "eml", "eq", "erb", "erlang", "esdl", "euphoria", "f#", "f*", "factor", "fancy", "fantom", "faust", "fb", "fennel", "figlet font", "filebench wml", "filterscript", "fish", "flex", "fluent", "flux", "formatted", "forth", "fortran", "fortran free form", "foxpro", "freebasic", "freemarker", "frege", "fsharp", "fstar", "ftl", "fundamental", "futhark", "g-code", "game maker language", "gaml", "gams", "gap", "gas", "gcc machine description", "gdb", "gdscript", "gedcom", "gemfile.lock", "gemini", "gemtext", "genero 4gl", "genero per", "genie", "genshi", "gentoo ebuild", "gentoo eclass", "geojson", "gerber image", "gettext catalog", "gf", "gherkin", "git attributes", "git config", "git revision list", "git-ignore", "gitattributes", "gitconfig", "gitignore", "gitmodules", "gleam", "glimmer js", "glsl", "glyph", "glyph bitmap distribution format", "gn", "gnu asm", "gnuplot", "go", "go checksums", "go mod", "go module", "go sum", "go work", "go work sum", "go workspace", "go.mod", "go.sum", "go.work", "go.work.sum", "godot resource", "golang", "golo", "gosu", "grace", "gradle", "gradle kotlin dsl", "grammatical framework", "graph modeling language", "graphql", "graphviz (dot)", "groff", "groovy", "groovy server pages", "gsc", "gsp", "hack", "haml", "handlebars", "haproxy", "harbour", "hash", "hashes", "haskell", "haxe", "hbs", "hcl", "heex", "help", "hiveql", "hlsl", "hocon", "holyc", "hoon", "hosts", "hosts file", "html", "html+django", "html+ecr", "html+eex", "html+erb", "html+jinja", "html+php", "html+razor", "html+ruby", "htmlbars", "htmldjango", "http", "hxml", "hy", "hylang", "hyphy", "i7", "idl", "idris", "ignore", "ignore list", "igor", "igor pro", "igorpro", "ijm", "ile rpg", "imagej macro", "imba", "inc", "inform 7", "inform7", "ini", "ink", "inno setup", "inputrc", "io", "ioke", "irc", "irc log", "irc logs", "isabelle", "isabelle root", "j", "janet", "jar manifest", "jasmin", "java", "java properties", "java server page", "java server pages", "javascript", "javascript+erb", "jcl", "jest snapshot", "jetbrains mps", "jflex", "jinja", "jison", "jison lex", "jolie", "jq", "jruby", "js", "json", "json with comments", "json5", "jsonc", "jsoniq", "jsonl", "jsonld", "jsonnet", "jsp", "julia", "jupyter notebook", "just", "kaitai struct", "kak", "kakounescript", "kakscript", "kerboscript", "keyvalues", "kicad layout", "kicad legacy layout", "kicad schematic", "kickstart", "kit", "kotlin", "krl", "ksy", "kusto", "kvlang", "labview", "lark", "lasso", "lassoscript", "latex", "latte", "lean", "lean 4", "leex", "less", "less-css", "lex", "lfe", "lhaskell", "lhs", "ligolang", "lilypond", "limbo", "linker script", "linux kernel module", "liquid", "lisp", "litcoffee", "literate agda", "literate coffeescript", "literate haskell", "live-script", "livescript", "llvm", "logos", "logtalk", "lolcode", "lookml", "loomscript", "ls", "lsl", "ltspice symbol", "lua", "m", "m2", "m4", "m4sugar", "m68k", "mIRC Script", "macaulay2", "macruby", "mail", "make", "makefile", "mako", "man", "man page", "man-page", "manpage", "markdown", "marko", "markojs", "mask", "mathematica", "matlab", "maven pom", "max", "max/msp", "maxmsp", "maxscript", "mbox", "mcfunction", "md", "mdoc", "mdx", "mediawiki", "mercury", "mermaid", "mermaid example", "meson", "metal", "mf", "microsoft developer studio project", "microsoft visual studio solution", "minid", "miniyaml", "mint", "mirah", "mirc script", "mlir", "mma", "modelica", "modula-2", "modula-3", "module management system", "monkey", "monkey c", "moocode", "moonscript", "motoko", "motorola 68k assembly", "move", "mps", "mql4", "mql5", "mtml", "muf", "mumps", "mupad", "muse", "mustache", "myghty", "nanorc", "nasal", "nasl", "nasm", "ncl", "ne-on", "nearley", "nemerle", "neon", "nesC", "nesc", "netlinx", "netlinx+erb", "netlogo", "nette object notation", "newlisp", "nextflow", "nginx", "nginx configuration file", "nim", "ninja", "nit", "nix", "nixos", "njk", "nl", "node", "npm config", "npmrc", "nroff", "nsis", "nu", "nu-script", "numpy", "nunjucks", "nush", "nushell", "nushell-script", "nvim", "nwscript", "oasv2", "oasv2-json", "oasv2-yaml", "oasv3", "oasv3-json", "oasv3-yaml", "obj-c", "obj-c++", "obj-j", "objc", "objc++", "objdump", "object data instance notation", "objective-c", "objective-c++", "objective-j", "objectivec", "objectivec++", "objectivej", "objectpascal", "objectscript", "objj", "ocaml", "octave", "odin", "odin-lang", "odinlang", "omgrofl", "oncrpc", "ooc", "opa", "opal", "open policy agent", "openapi specification v2", "openapi specification v3", "opencl", "openedge", "openedge abl", "openqasm", "openrc", "openrc runscript", "openscad", "openstep property list", "opentype feature file", "option list", "opts", "org", "osascript", "ox", "oxygene", "oz", "p4", "pact", "pan", "pandoc", "papyrus", "parrot", "parrot assembly", "parrot internal representation", "pascal", "pasm", "pawn", "pcbnew", "pddl", "peg.js", "pep8", "perl", "perl-6", "perl6", "php", "pic", "pickle", "picolisp", "piglatin", "pikchr", "pike", "pir", "plain text", "plantuml", "plpgsql", "plsql", "pod", "pod 6", "pogoscript", "polar", "pony", "portugol", "posh", "postcss", "postscr", "postscript", "pot", "pov-ray", "pov-ray sdl", "povray", "powerbuilder", "powershell", "praat", "prisma", "processing", "procfile", "progress", "proguard", "prolog", "promela", "propeller spin", "proto", "protobuf", "protobuf text format", "protocol buffer", "protocol buffer text format", "public key", "pug", "puppet", "pure data", "purebasic", "purescript", "pwsh", "pycon", "pyret", "pyrex", "python", "python console", "python traceback", "python3", "q", "q#", "ql", "qmake", "qml", "qsharp", "qt script", "quake", "r", "racket", "ragel", "ragel-rb", "ragel-ruby", "rake", "raku", "raml", "rascal", "raw", "raw token data", "razor", "rb", "rbs", "rbx", "rdoc", "reStructuredText", "readline", "readline config", "realbasic", "reason", "reasonligo", "rebol", "record jar", "red", "red/system", "redcode", "redirect rules", "redirects", "regex", "regexp", "regular expression", "ren'py", "renderscript", "renpy", "rescript", "restructuredtext", "rexx", "rez", "rhtml", "rich text format", "ring", "riot", "rmarkdown", "robotframework", "robots", "robots txt", "robots.txt", "roff", "roff manpage", "rouge", "routeros script", "rpc", "rpcgen", "rpgle", "rpm spec", "rs", "rs-274x", "rss", "rst", "ruby", "runoff", "rust", "rusthon", "sage", "salt", "saltstack", "saltstate", "sas", "sass", "scala", "scaml", "scenic", "scheme", "scilab", "scss", "sdc", "sed", "self", "selinux policy", "sepolicy", "sfv", "sh", "shaderlab", "shell", "shell-script", "shellcheck config", "shellcheckrc", "shellsession", "shen", "sieve", "simple file verification", "singularity", "slash", "slice", "slim", "smali", "smalltalk", "smarty", "smithy", "sml", "smpl", "smt", "snakefile", "snakemake", "snippet", "solidity", "soong", "sourcemod", "sourcepawn", "soy", "sparql", "specfile", "spline font database", "splus", "sqf", "sql", "sqlpl", "sqlrpgle", "squeak", "squirrel", "srecode template", "ssh config", "stan", "standard ml", "star", "starlark", "stata", "stl", "stla", "ston", "stringtemplate", "stylus", "subrip text", "sugarss", "sum", "sums", "supercollider", "svelte", "svg", "sway", "sweave", "swift", "swig", "systemverilog", "talon", "tcl", "tcsh", "tea", "terra", "terraform", "terraform template", "tex", "texinfo", "text", "text proto", "textile", "textmate properties", "thrift", "ti program", "tl", "tl-verilog", "tla", "tm-properties", "toit", "toml", "topojson", "troff", "ts", "tsql", "tsv", "tsx", "turing", "turtle", "twig", "txl", "typ", "type language", "typescript", "typst", "udiff", "unified parallel c", "unity3d asset", "unix asm", "unix assembly", "uno", "unrealscript", "urweb", "v", "vala", "valve data format", "vb .net", "vb 6", "vb.net", "vb6", "vba", "vbnet", "vbscript", "vcl", "vdf", "velocity", "velocity template language", "verilog", "vhdl", "vim", "vim help file", "vim script", "vim snippet", "vimhelp", "viml", "visual basic", "visual basic .net", "visual basic 6", "visual basic 6.0", "visual basic classic", "visual basic for applications", "vlang", "volt", "vtl", "vtt", "vue", "vyper", "wasm", "wast", "wavefront material", "wavefront object", "wdl", "web ontology language", "webassembly", "webassembly interface type", "webidl", "webvtt", "wget config", "wgetrc", "wgsl", "whiley", "wiki", "wikitext", "win32 message file", "winbatch", "windows registry entries", "wisp", "wit", "witcher script", "wl", "wolfram", "wolfram lang", "wolfram language", "wollok", "world of warcraft addon data", "wren", "wrenlang", "wsdl", "x bitmap", "x font directory index", "x pixmap", "x10", "xBase", "xbase", "xbm", "xc", "xcompose", "xdc", "xdr", "xhtml", "xml", "xml property list", "xml+genshi", "xml+kid", "xojo", "xonsh", "xpages", "xpm", "xproc", "xquery", "xs", "xsd", "xsl", "xslt", "xten", "xtend", "yacc", "yaml", "yang", "yara", "yas", "yasnippet", "yml", "yul", "zap", "zeek", "zenscript", "zephir", "zig", "zil", "zimpl", "zsh" ] } }, "additionalProperties": false }, "validations": { "$ref": "#/definitions/validations", "title": "textarea validations", "description": "Textarea validations\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#validations" } }, "additionalProperties": false } }, { "if": { "properties": { "type": { "const": "input" } } }, "then": { "$comment": "For `additionalProperties` to work `type` must also be present here.", "title": "input", "description": "Input\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#input", "type": "object", "required": ["type", "attributes"], "properties": { "type": { "$ref": "#/definitions/type" }, "id": { "$ref": "#/definitions/id", "description": "An input id\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#keys" }, "attributes": { "title": "input attributes", "description": "Input attributes\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes-2", "type": "object", "required": ["label"], "properties": { "label": { "$ref": "#/definitions/label", "description": "A short input description\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes-2" }, "description": { "$ref": "#/definitions/description", "description": "A long input description\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes-2" }, "placeholder": { "$ref": "#/definitions/placeholder", "description": "An input placeholder\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes-2" }, "value": { "$ref": "#/definitions/value", "description": "An input value\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes-2" } }, "additionalProperties": false }, "validations": { "$ref": "#/definitions/validations", "title": "input validations", "description": "Input validations\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#validations-1" } }, "additionalProperties": false } }, { "if": { "properties": { "type": { "const": "dropdown" } } }, "then": { "$comment": "For `additionalProperties` to work `type` must also be present here.", "title": "dropdown", "description": "dropdown\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#dropdown", "type": "object", "required": ["type", "attributes"], "properties": { "type": { "$ref": "#/definitions/type" }, "id": { "$ref": "#/definitions/id", "description": "A dropdown id\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#keys" }, "attributes": { "title": "dropdown attributes", "description": "Dropdown attributes\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes-3", "type": "object", "required": ["label", "options"], "properties": { "label": { "$ref": "#/definitions/label", "description": "A short dropdown description\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes-3" }, "description": { "$ref": "#/definitions/description", "description": "A long dropdown description\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes-3" }, "multiple": { "description": "Specify whether allow a multiple choices\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes-3", "type": "boolean", "default": false }, "options": { "description": "Dropdown choices\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes-3", "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "minLength": 1, "examples": ["Sample choice"] } }, "default": { "description": "Index of the default option\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes-3", "type": "integer", "examples": [0] } }, "additionalProperties": false }, "validations": { "$ref": "#/definitions/validations", "title": "dropdown validations", "description": "Dropdown validations\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#validations-2" } }, "additionalProperties": false } }, { "if": { "properties": { "type": { "const": "checkboxes" } } }, "then": { "$comment": "For `additionalProperties` to work `type` must also be present here.", "title": "checkboxes", "description": "Checkboxes\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#checkboxes", "type": "object", "required": ["type", "attributes"], "properties": { "type": { "$ref": "#/definitions/type" }, "id": { "$ref": "#/definitions/id", "description": "Checkbox list id\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#keys" }, "attributes": { "title": "checkbox list attributes", "description": "Checkbox list attributes\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes-4", "type": "object", "required": ["label", "options"], "properties": { "label": { "$ref": "#/definitions/label", "description": "A short checkbox list description\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes-4" }, "description": { "$ref": "#/definitions/description", "description": "A long checkbox list description\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes-4" }, "options": { "description": "Checkbox list choices\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes-4", "type": "array", "minItems": 1, "items": { "title": "checkbox list choice", "description": "Checkbox list choice\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes-4", "type": "object", "required": ["label"], "properties": { "label": { "description": "A short checkbox list choice description\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes-4", "type": "string", "minLength": 1, "examples": ["Sample label"] }, "required": { "description": "Specify whether a choice is required\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#attributes-4", "type": "boolean", "default": false } }, "additionalProperties": false } } }, "additionalProperties": false } }, "additionalProperties": false } } ] } }, "properties": { "name": { "description": "An issue template name\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms#top-level-syntax", "type": "string", "minLength": 1, "examples": ["Sample name"] }, "description": { "description": "An issue template description\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms#top-level-syntax", "type": "string", "minLength": 1, "examples": ["Sample description"] }, "title": { "description": "An issue template title\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms#top-level-syntax", "type": "string", "minLength": 1, "examples": ["Sample title", "Bug: ", "Feature: "] }, "labels": { "description": "An issue template labels\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms#top-level-syntax", "oneOf": [ { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "minLength": 1, "examples": [ "Sample label", "bug", "documentation", "duplicate", "enhancement", "good first issue", "help wanted", "invalid", "question", "wontfix" ] } }, { "description": "Comma-delimited labels", "type": "string", "minLength": 1, "examples": ["Sample label", "bug,documentation,duplicate"] } ] }, "projects": { "description": "Projects that any issues created with this template will automatically be added to.", "type": "array", "items": { "type": "string" } }, "assignees": { "description": "An issue template assignees\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms#top-level-syntax", "oneOf": [ { "$ref": "#/definitions/assignee" }, { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/definitions/assignee" } } ] }, "type": { "description": "An issue type, currently in beta\nhttps://github.com/orgs/community/discussions/139933", "type": "string", "minLength": 1, "examples": ["Bug", "Enhancement"] }, "body": { "description": "An issue template body\nhttps://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms#top-level-syntax", "type": "array", "minItems": 1, "items": { "$ref": "#/definitions/form_item" } } }, "required": ["name", "description", "body"], "title": "GitHub issue forms config file schema", "type": "object" } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/github-workflows.json0000644000175100017510000027015315062662115031503 0ustar00runnerrunner{ "$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" } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/gitlab-ci.json0000644000175100017510000033462215062662115030023 0ustar00runnerrunner{ "$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/ci/yaml/). [Learn More](https://docs.gitlab.com/ci/).", "type": "object", "properties": { "$schema": { "type": "string", "format": "uri" }, "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/ci/yaml/#spec).", "properties": { "inputs": { "$ref": "#/definitions/inputParameters" } }, "additionalProperties": false }, "image": { "$ref": "#/definitions/image", "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/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/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/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/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" }, "default": { "type": "object", "properties": { "after_script": { "$ref": "#/definitions/after_script" }, "artifacts": { "$ref": "#/definitions/artifacts" }, "before_script": { "$ref": "#/definitions/before_script" }, "hooks": { "$ref": "#/definitions/hooks" }, "cache": { "$ref": "#/definitions/cache" }, "image": { "$ref": "#/definitions/image" }, "interruptible": { "$ref": "#/definitions/interruptible" }, "id_tokens": { "$ref": "#/definitions/id_tokens" }, "identity": { "$ref": "#/definitions/identity" }, "retry": { "$ref": "#/definitions/retry" }, "services": { "$ref": "#/definitions/services" }, "tags": { "$ref": "#/definitions/tags" }, "timeout": { "$ref": "#/definitions/timeout" }, "!reference": { "$ref": "#/definitions/!reference" } }, "additionalProperties": false }, "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/ci/yaml/#stages).", "default": [ "build", "test", "deploy" ], "items": { "anyOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "uniqueItems": true, "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/ci/yaml/#include).", "oneOf": [ { "$ref": "#/definitions/include_item" }, { "type": "array", "items": { "$ref": "#/definitions/include_item" } } ] }, "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/ci/yaml/#pages)." }, "workflow": { "type": "object", "properties": { "name": { "$ref": "#/definitions/workflowName" }, "auto_cancel": { "$ref": "#/definitions/workflowAutoCancel" }, "rules": { "type": "array", "items": { "anyOf": [ { "type": "object" }, { "type": "array", "minItems": 1, "items": { "type": "string" } } ], "properties": { "if": { "$ref": "#/definitions/if" }, "changes": { "$ref": "#/definitions/changes" }, "exists": { "$ref": "#/definitions/exists" }, "variables": { "$ref": "#/definitions/rulesVariables" }, "when": { "type": "string", "enum": [ "always", "never" ] }, "auto_cancel": { "$ref": "#/definitions/workflowAutoCancel" } }, "additionalProperties": false } } } } }, "patternProperties": { "^[.]": { "description": "Hidden keys.", "anyOf": [ { "$ref": "#/definitions/job_template" }, { "description": "Arbitrary YAML anchor." } ] } }, "additionalProperties": { "$ref": "#/definitions/job" }, "definitions": { "artifacts": { "type": [ "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/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/ci/yaml/#artifactspaths).", "items": { "type": "string" }, "minItems": 1 }, "exclude": { "type": "array", "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" }, "minItems": 1 }, "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/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/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/ci/yaml/#artifactsuntracked).", "default": false }, "when": { "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": [ "on_success", "on_failure", "always" ] }, "access": { "markdownDescription": "Configure who can access the artifacts. [Learn More](https://docs.gitlab.com/ci/yaml/#artifactsaccess).", "default": "all", "type": "string", "enum": [ "none", "developer", "all" ] }, "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/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/ci/yaml/#artifactsreports).", "additionalProperties": false, "properties": { "accessibility": { "type": "string", "description": "Path to JSON file with accessibility report." }, "annotations": { "type": "string", "description": "Path to JSON file with annotations report." }, "junit": { "description": "Path for file(s) that should be parsed as JUnit XML result", "oneOf": [ { "type": "string", "description": "Path to a single XML file" }, { "type": "array", "description": "A list of paths to XML files that will automatically be concatenated into a single file", "items": { "type": "string" }, "minItems": 1 } ] }, "browser_performance": { "type": "string", "description": "Path to a single file with browser performance metric report(s)." }, "coverage_report": { "type": [ "object", "null" ], "description": "Used to collect coverage reports from the job.", "properties": { "coverage_format": { "description": "Code coverage format used by the test framework.", "enum": [ "cobertura", "jacoco" ] }, "path": { "description": "Path to the coverage report file that should be parsed.", "type": "string", "minLength": 1 } } }, "codequality": { "$ref": "#/definitions/string_file_list", "description": "Path to file or list of files with code quality report(s) (such as Code Climate)." }, "dotenv": { "$ref": "#/definitions/string_file_list", "description": "Path to file or list of files containing runtime-created variables for this job." }, "lsif": { "$ref": "#/definitions/string_file_list", "description": "Path to file or list of files containing code intelligence (Language Server Index Format)." }, "sast": { "$ref": "#/definitions/string_file_list", "description": "Path to file or list of files with SAST vulnerabilities report(s)." }, "dependency_scanning": { "$ref": "#/definitions/string_file_list", "description": "Path to file or list of files with Dependency scanning vulnerabilities report(s)." }, "container_scanning": { "$ref": "#/definitions/string_file_list", "description": "Path to file or list of files with Container scanning vulnerabilities report(s)." }, "dast": { "$ref": "#/definitions/string_file_list", "description": "Path to file or list of files with DAST vulnerabilities report(s)." }, "license_management": { "$ref": "#/definitions/string_file_list", "description": "Deprecated in 12.8: Path to file or list of files with license report(s)." }, "license_scanning": { "$ref": "#/definitions/string_file_list", "description": "Path to file or list of files with license report(s)." }, "requirements": { "$ref": "#/definitions/string_file_list", "description": "Path to file or list of files with requirements report(s)." }, "secret_detection": { "$ref": "#/definitions/string_file_list", "description": "Path to file or list of files with secret detection report(s)." }, "metrics": { "$ref": "#/definitions/string_file_list", "description": "Path to file or list of files with custom metrics report(s)." }, "terraform": { "$ref": "#/definitions/string_file_list", "description": "Path to file or list of files with terraform plan(s)." }, "cyclonedx": { "$ref": "#/definitions/string_file_list", "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/ci/yaml/artifacts_reports/#artifactsreportsload_performance)." }, "repository_xray": { "$ref": "#/definitions/string_file_list", "description": "Path to file or list of files with Repository X-Ray report(s)." } } } } }, "string_file_list": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "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/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", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "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", "number", "string" ], "default": "string" }, "description": { "type": "string", "markdownDescription": "Give a description to a specific input. The description does not affect the input, but can help people understand the input details or expected values. Supports markdown.", "maxLength": 1024 }, "options": { "type": "array", "markdownDescription": "Specify a list of allowed values for an input.", "items": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean" } ] } }, "regex": { "type": "string", "markdownDescription": "Specify a regular expression that the input must match. Only impacts inputs with a `type` of `string`." }, "default": { "markdownDescription": "Define default values for inputs when not specified. When you specify a default, the inputs are no longer mandatory." } }, "allOf": [ { "if": { "properties": { "type": { "enum": [ "string" ] } } }, "then": { "properties": { "default": { "type": [ "string", "null" ] } } } }, { "if": { "properties": { "type": { "enum": [ "number" ] } } }, "then": { "properties": { "default": { "type": [ "number", "null" ] } } } }, { "if": { "properties": { "type": { "enum": [ "boolean" ] } } }, "then": { "properties": { "default": { "type": [ "boolean", "null" ] } } } }, { "if": { "properties": { "type": { "enum": [ "array" ] } } }, "then": { "properties": { "default": { "oneOf": [ { "type": "array" }, { "type": "null" } ] } } } } ], "additionalProperties": false }, { "type": "null" } ] } } }, "include_item": { "oneOf": [ { "description": "Will infer the method based on the value. E.g. `https://...` strings will be of type `include:remote`, and `/templates/...` or `templates/...` will be of type `include:local`.", "type": "string", "format": "uri-reference", "pattern": "\\w\\.ya?ml$", "anyOf": [ { "pattern": "^https?://" }, { "not": { "pattern": "^\\w+://" } } ] }, { "type": "object", "additionalProperties": false, "properties": { "local": { "description": "Relative path from local repository root (`/`) to the `yaml`/`yml` file template. The file must be on the same branch, and does not work across git submodules.", "type": "string", "format": "uri-reference", "pattern": "\\.ya?ml$" }, "rules": { "$ref": "#/definitions/includeRules" }, "inputs": { "$ref": "#/definitions/inputs" } }, "required": [ "local" ] }, { "type": "object", "additionalProperties": false, "properties": { "project": { "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+)" }, "ref": { "description": "Branch/Tag/Commit-hash for the target project.", "type": "string" }, "file": { "oneOf": [ { "description": "Relative path from project root (`/`) to the `yaml`/`yml` file template.", "type": "string", "pattern": "\\.ya?ml$" }, { "description": "List of files by relative path from project root (`/`) to the `yaml`/`yml` file template.", "type": "array", "items": { "type": "string", "pattern": "\\.ya?ml$" } } ] }, "rules": { "$ref": "#/definitions/includeRules" }, "inputs": { "$ref": "#/definitions/inputs" } }, "required": [ "project", "file" ] }, { "type": "object", "additionalProperties": false, "properties": { "template": { "description": "Use a `.gitlab-ci.yml` template as a base, e.g. `Nodejs.gitlab-ci.yml`.", "type": "string", "format": "uri-reference", "pattern": "\\.ya?ml$" }, "rules": { "$ref": "#/definitions/includeRules" }, "inputs": { "$ref": "#/definitions/inputs" } }, "required": [ "template" ] }, { "type": "object", "additionalProperties": false, "properties": { "component": { "description": "Local path to component directory or full path to external component directory.", "type": "string", "format": "uri-reference" }, "rules": { "$ref": "#/definitions/includeRules" }, "inputs": { "$ref": "#/definitions/inputs" } }, "required": [ "component" ] }, { "type": "object", "additionalProperties": false, "properties": { "remote": { "description": "URL to a `yaml`/`yml` template file using HTTP/HTTPS.", "type": "string", "format": "uri-reference", "pattern": "^https?://.+\\.ya?ml$" }, "integrity": { "description": "SHA256 integrity hash of the remote file content.", "type": "string", "pattern": "^sha256-[A-Za-z0-9+/]{43}=$" }, "rules": { "$ref": "#/definitions/includeRules" }, "inputs": { "$ref": "#/definitions/inputs" } }, "required": [ "remote" ] } ] }, "!reference": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "image": { "oneOf": [ { "type": "string", "minLength": 1, "description": "Full name of the image that should be used. It should contain the Registry part if needed." }, { "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.", "additionalProperties": false, "properties": { "name": { "type": "string", "minLength": 1, "description": "Full name of the image that should be used. It should contain the Registry part if needed." }, "entrypoint": { "type": "array", "description": "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.", "minItems": 1 }, "docker": { "type": "object", "markdownDescription": "Options to pass to Runners Docker Executor. [Learn More](https://docs.gitlab.com/ci/yaml/#imagedocker)", "additionalProperties": false, "properties": { "platform": { "type": "string", "minLength": 1, "description": "Image architecture to pull." }, "user": { "type": "string", "minLength": 1, "maxLength": 255, "description": "Username or UID to use for the container." } } }, "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/ci/yaml/#imagepull_policy).", "default": "always", "oneOf": [ { "type": "string", "enum": [ "always", "never", "if-not-present" ] }, { "type": "array", "items": { "type": "string", "enum": [ "always", "never", "if-not-present" ] }, "minItems": 1, "uniqueItems": true } ] } }, "required": [ "name" ] } ], "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/ci/yaml/#services).", "items": { "oneOf": [ { "type": "string", "minLength": 1, "description": "Full name of the image that should be used. It should contain the Registry part if needed." }, { "type": "object", "description": "", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Full name of the image that should be used. It should contain the Registry part if needed.", "minLength": 1 }, "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/ci/services/#available-settings-for-services)", "minItems": 1, "items": { "type": "string" } }, "docker": { "type": "object", "markdownDescription": "Options to pass to Runners Docker Executor. [Learn More](https://docs.gitlab.com/ci/yaml/#servicesdocker)", "additionalProperties": false, "properties": { "platform": { "type": "string", "minLength": 1, "description": "Image architecture to pull." }, "user": { "type": "string", "minLength": 1, "maxLength": 255, "description": "Username or UID to use for the container." } } }, "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/ci/yaml/#servicespull_policy).", "default": "always", "oneOf": [ { "type": "string", "enum": [ "always", "never", "if-not-present" ] }, { "type": "array", "items": { "type": "string", "enum": [ "always", "never", "if-not-present" ] }, "minItems": 1, "uniqueItems": true } ] }, "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/ci/services/#available-settings-for-services)", "minItems": 1, "items": { "type": "string" } }, "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/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/ci/services/#available-settings-for-services)" } }, "required": [ "name" ] } ] } }, "id_tokens": { "type": "object", "markdownDescription": "Defines JWTs to be injected as environment variables.", "patternProperties": { ".*": { "type": "object", "properties": { "aud": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true } ] } }, "required": [ "aud" ], "additionalProperties": false } } }, "identity": { "type": "string", "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/ci/yaml/#secrets).", "patternProperties": { ".*": { "type": "object", "properties": { "vault": { "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/ci/yaml/#secretsvault)" }, { "type": "object", "properties": { "engine": { "type": "object", "properties": { "name": { "type": "string" }, "path": { "type": "string" } }, "required": [ "name", "path" ] }, "path": { "type": "string" }, "field": { "type": "string" } }, "required": [ "engine", "path", "field" ], "additionalProperties": false } ] }, "gcp_secret_manager": { "type": "object", "markdownDescription": "Defines the secret version to be fetched from GCP Secret Manager. Name refers to the secret name in GCP secret manager. Version refers to the desired secret version (defaults to 'latest').", "properties": { "name": { "type": "string" }, "version": { "oneOf": [ { "type": "string" }, { "type": "integer" } ], "default": "version" } }, "required": [ "name" ], "additionalProperties": false }, "azure_key_vault": { "type": "object", "properties": { "name": { "type": "string" }, "version": { "type": "string" } }, "required": [ "name" ], "additionalProperties": false }, "aws_secrets_manager": { "oneOf": [ { "type": "string", "description": "The ARN or name of the secret to retrieve. To retrieve a secret from another account, you must use an ARN." }, { "type": "object", "markdownDescription": "Defines the secret to be fetched from AWS Secrets Manager. The secret_id refers to the ARN or name of the secret in AWS Secrets Manager. Version_id and version_stage are optional parameters that can be used to specify a specific version of the secret, else AWSCURRENT version will be returned.", "properties": { "secret_id": { "type": "string", "description": "The ARN or name of the secret to retrieve. To retrieve a secret from another account, you must use an ARN." }, "version_id": { "type": "string", "description": "The unique identifier of the version of the secret to retrieve. If you include both this parameter and VersionStage, the two parameters must refer to the same secret version. If you don't specify either a VersionStage or VersionId, Secrets Manager returns the AWSCURRENT version." }, "version_stage": { "type": "string", "description": "The staging label of the version of the secret to retrieve. If you include both this parameter and VersionStage, the two parameters must refer to the same secret version. If you don't specify either a VersionStage or VersionId, Secrets Manager returns the AWSCURRENT version." }, "region": { "type": "string", "description": "The AWS region where the secret is stored. Use this to override the region for a specific secret. Defaults to AWS_REGION variable." }, "role_arn": { "type": "string", "description": "The ARN of the IAM role to assume before retrieving the secret. Use this to override the ARN. Defaults to AWS_ROLE_ARN variable." }, "role_session_name": { "type": "string", "description": "The name of the session to use when assuming the role. Use this to override the session name. Defaults to AWS_ROLE_SESSION_NAME variable." }, "field": { "type": "string", "description": "The name of the field to retrieve from the secret. If not specified, the entire secret is retrieved." } }, "required": [ "secret_id" ], "additionalProperties": false } ] }, "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/ci/yaml/#secretsfile)" }, "token": { "type": "string", "description": "Specifies the JWT variable that should be used to authenticate with the secret provider." } }, "anyOf": [ { "required": [ "vault" ] }, { "required": [ "azure_key_vault" ] }, { "required": [ "gcp_secret_manager" ] }, { "required": [ "aws_secrets_manager" ] } ], "dependencies": { "gcp_secret_manager": [ "token" ] }, "additionalProperties": false } } }, "script": { "oneOf": [ { "type": "string", "minLength": 1 }, { "type": "array", "items": { "anyOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "minItems": 1 } ] }, "steps": { "type": "array", "items": { "$ref": "#/definitions/step" } }, "optional_script": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "anyOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] } } ] }, "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/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/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/ci/yaml/#rules).", "items": { "anyOf": [ { "type": "object", "additionalProperties": false, "properties": { "if": { "$ref": "#/definitions/if" }, "changes": { "$ref": "#/definitions/changes" }, "exists": { "$ref": "#/definitions/exists" }, "variables": { "$ref": "#/definitions/rulesVariables" }, "when": { "$ref": "#/definitions/when" }, "start_in": { "$ref": "#/definitions/start_in" }, "allow_failure": { "$ref": "#/definitions/allow_failure" }, "needs": { "$ref": "#/definitions/rulesNeeds" }, "interruptible": { "$ref": "#/definitions/interruptible" } } }, { "type": "string", "minLength": 1 }, { "type": "array", "minItems": 1, "items": { "type": "string" } } ] } }, "includeRules": { "type": [ "array", "null" ], "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": [ { "type": "object", "additionalProperties": false, "properties": { "if": { "$ref": "#/definitions/if" }, "changes": { "$ref": "#/definitions/changes" }, "exists": { "$ref": "#/definitions/exists" }, "when": { "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", "enum": [ "never", "always" ] }, { "type": "null" } ] } } }, { "type": "string", "minLength": 1 }, { "type": "array", "minItems": 1, "items": { "type": "string" } } ] } }, "workflowName": { "type": "string", "markdownDescription": "Defines the pipeline name. [Learn More](https://docs.gitlab.com/ci/yaml/#workflowname).", "minLength": 1, "maxLength": 255 }, "workflowAutoCancel": { "type": "object", "description": "Define the rules for when pipeline should be automatically cancelled.", "additionalProperties": false, "properties": { "on_job_failure": { "markdownDescription": "Define which jobs to stop after a job fails.", "default": "none", "type": "string", "enum": [ "none", "all" ] }, "on_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", "interruptible", "none" ] } } }, "globalVariables": { "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": { ".*": { "oneOf": [ { "type": [ "boolean", "number", "string" ] }, { "type": "object", "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/ci/yaml/#variablesvalue)" }, "options": { "type": "array", "items": { "type": "string" }, "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/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/ci/yaml/#variablesdescription)." }, "expand": { "type": "boolean", "markdownDescription": "If the variable is expandable or not. [Learn More](https://docs.gitlab.com/ci/yaml/#variablesexpand)." } }, "additionalProperties": false } ] } } }, "jobVariables": { "markdownDescription": "Defines variables for a job. [Learn More](https://docs.gitlab.com/ci/yaml/#variables).", "type": "object", "patternProperties": { ".*": { "oneOf": [ { "type": [ "boolean", "number", "string" ] }, { "type": "object", "properties": { "value": { "type": "string" }, "expand": { "type": "boolean", "markdownDescription": "Defines if the variable is expandable or not. [Learn More](https://docs.gitlab.com/ci/yaml/#variablesexpand)." } }, "additionalProperties": false } ] } } }, "rulesVariables": { "markdownDescription": "Defines variables for a rule result. [Learn More](https://docs.gitlab.com/ci/yaml/#rulesvariables).", "type": "object", "patternProperties": { ".*": { "type": [ "boolean", "number", "string" ] } } }, "if": { "type": "string", "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/ci/yaml/#ruleschanges).", "anyOf": [ { "type": "object", "additionalProperties": false, "required": [ "paths" ], "properties": { "paths": { "type": "array", "description": "List of file paths.", "items": { "type": "string" } }, "compare_to": { "type": "string", "description": "Ref for comparing changes." } } }, { "type": "array", "items": { "type": "string" } } ] }, "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/ci/yaml/#rulesexists).", "anyOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "object", "additionalProperties": false, "required": [ "paths" ], "properties": { "paths": { "type": "array", "description": "List of file paths.", "items": { "type": "string" } }, "project": { "type": "string", "description": "Path of the project to search in." } } }, { "type": "object", "additionalProperties": false, "required": [ "paths", "project" ], "properties": { "paths": { "type": "array", "description": "List of file paths.", "items": { "type": "string" } }, "project": { "type": "string", "description": "Path of the project to search in." }, "ref": { "type": "string", "description": "Ref of the project to search in." } } } ] }, "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/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/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/ci/yaml/#rulesneeds).", "type": "array", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "additionalProperties": false, "properties": { "job": { "type": "string", "minLength": 1, "description": "Name of a job that is defined in the pipeline." }, "artifacts": { "type": "boolean", "description": "Download artifacts of the job in needs." }, "optional": { "type": "boolean", "description": "Whether the job needs to be present in the pipeline to run ahead of the current job." } }, "required": [ "job" ] } ] } }, "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.", "type": "boolean", "default": false }, { "description": "Exit code that are not considered failure. The job fails for any other exit code.", "type": "object", "additionalProperties": false, "required": [ "exit_codes" ], "properties": { "exit_codes": { "type": "integer" } } }, { "description": "You can list which exit codes are not considered failures. The job fails for any other exit code.", "type": "object", "additionalProperties": false, "required": [ "exit_codes" ], "properties": { "exit_codes": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "integer" } } } } ] }, "parallel": { "description": "Splits up a single job into multiple that run in parallel. Provides `CI_NODE_INDEX` and `CI_NODE_TOTAL` environment variables to the jobs.", "oneOf": [ { "type": "integer", "description": "Creates N instances of the job that run in parallel.", "default": 0, "minimum": 1, "maximum": 200 }, { "type": "object", "properties": { "matrix": { "type": "array", "description": "Defines different variables for jobs that are running in parallel.", "items": { "type": "object", "description": "Defines the variables for a specific job.", "additionalProperties": { "type": [ "string", "number", "array" ] } }, "maxItems": 200 } }, "additionalProperties": false, "required": [ "matrix" ] } ] }, "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/ci/yaml/#needsparallelmatrix)", "oneOf": [ { "type": "object", "properties": { "matrix": { "type": "array", "description": "Defines different variables for jobs that are running in parallel.", "items": { "type": "object", "description": "Defines the variables for a specific job.", "additionalProperties": { "type": [ "string", "number", "array" ] } }, "maxItems": 200 } }, "additionalProperties": false, "required": [ "matrix" ] } ] }, "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": [ "on_success", "on_failure", "always", "never", "manual", "delayed" ] }, "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" }, { "type": "array", "items": { "$ref": "#/definitions/cache_item" } } ] }, "cache_item": { "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/ci/yaml/#cachekey).", "oneOf": [ { "type": "string", "pattern": "^[^/]*[^./][^/]*$" }, { "type": "object", "properties": { "files": { "markdownDescription": "Use the `cache:key:files` keyword to generate a new cache key when specified file content changes. Cache keys remain stable across branches with identical file content. [Learn More](https://docs.gitlab.com/ci/yaml/#cachekeyfiles)", "type": "array", "items": { "type": "string" }, "minItems": 1, "maxItems": 2 }, "files_commits": { "markdownDescription": "Use the `cache:key:files_commits` keyword to generate a new cache key when the latest commit changes for the specified files. [Learn More](https://docs.gitlab.com/ci/yaml/#cachekeyfiles_commits)", "type": "array", "items": { "type": "string" }, "minItems": 1, "maxItems": 2 }, "prefix": { "markdownDescription": "Use `cache:key:prefix` to combine a prefix with the SHA computed for `cache:key:files` or `cache:key:files_commits`. [Learn More](https://docs.gitlab.com/ci/yaml/#cachekeyprefix)", "type": "string" } } } ] }, "paths": { "type": "array", "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/ci/yaml/#cachepolicy)", "default": "pull-push", "pattern": "pull-push|pull|push|\\$\\w{1,255}" }, "unprotect": { "type": "boolean", "markdownDescription": "Use `unprotect: true` to set a cache to be shared between protected and unprotected branches.", "default": false }, "untracked": { "type": "boolean", "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/ci/yaml/#cachewhen).", "default": "on_success", "enum": [ "on_success", "on_failure", "always" ] }, "fallback_keys": { "type": "array", "markdownDescription": "List of keys to download cache from if no cache hit occurred for key", "items": { "type": "string" }, "maxItems": 5 } } }, "filter_refs": { "type": "array", "description": "Filter job by different keywords that determine origin or state, or by supplying string/regex to check against branch/tag names.", "items": { "anyOf": [ { "oneOf": [ { "enum": [ "branches" ], "description": "When a branch is pushed." }, { "enum": [ "tags" ], "description": "When a tag is pushed." }, { "enum": [ "api" ], "description": "When a pipeline has been triggered by a second pipelines API (not triggers API)." }, { "enum": [ "external" ], "description": "When using CI services other than GitLab" }, { "enum": [ "pipelines" ], "description": "For multi-project triggers, created using the API with 'CI_JOB_TOKEN'." }, { "enum": [ "pushes" ], "description": "Pipeline is triggered by a `git push` by the user" }, { "enum": [ "schedules" ], "description": "For scheduled pipelines." }, { "enum": [ "triggers" ], "description": "For pipelines created using a trigger token." }, { "enum": [ "web" ], "description": "For pipelines created using *Run pipeline* button in GitLab UI (under your project's *Pipelines*)." } ] }, { "type": "string", "description": "String or regular expression to match against tag or branch names." } ] } }, "filter": { "oneOf": [ { "type": "null" }, { "$ref": "#/definitions/filter_refs" }, { "type": "object", "additionalProperties": false, "properties": { "refs": { "$ref": "#/definitions/filter_refs" }, "kubernetes": { "enum": [ "active" ], "description": "Filter job based on if Kubernetes integration is active." }, "variables": { "type": "array", "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" } }, "changes": { "type": "array", "description": "Filter job creation based on files that were modified in a git push.", "items": { "type": "string" } } } } ] }, "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" }, { "type": "object", "additionalProperties": false, "properties": { "max": { "$ref": "#/definitions/retry_max" }, "when": { "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" }, { "type": "array", "items": { "$ref": "#/definitions/retry_errors" } } ] }, "exit_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.", "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "integer" } }, { "description": "Retry when the job exit code is equal to.", "type": "integer" } ] } } } ] }, "retry_max": { "type": "integer", "description": "The number of times the job will be retried if it fails. Defaults to 0 and can max be retried 2 times (3 times total).", "default": 0, "minimum": 0, "maximum": 2 }, "retry_errors": { "oneOf": [ { "const": "always", "description": "Retry on any failure (default)." }, { "const": "unknown_failure", "description": "Retry when the failure reason is unknown." }, { "const": "script_failure", "description": "Retry when the script failed." }, { "const": "api_failure", "description": "Retry on API failure." }, { "const": "stuck_or_timeout_failure", "description": "Retry when the job got stuck or timed out." }, { "const": "runner_system_failure", "description": "Retry if there is a runner system failure (for example, job setup failed)." }, { "const": "runner_unsupported", "description": "Retry if the runner is unsupported." }, { "const": "stale_schedule", "description": "Retry if a delayed job could not be executed." }, { "const": "job_execution_timeout", "description": "Retry if the script exceeded the maximum execution time set for the job." }, { "const": "archived_failure", "description": "Retry if the job is archived and can’t be run." }, { "const": "unmet_prerequisites", "description": "Retry if the job failed to complete prerequisite tasks." }, { "const": "scheduler_failure", "description": "Retry if the scheduler failed to assign the job to a runner." }, { "const": "data_integrity_failure", "description": "Retry if there is an unknown job problem." } ] }, "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/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/ci/inputs/).", "type": "object", "patternProperties": { "^[a-zA-Z0-9_-]+$": { "description": "Input parameter value that matches parameter names defined in spec:inputs of the included configuration.", "oneOf": [ { "type": "string", "maxLength": 1024 }, { "type": "number" }, { "type": "boolean" }, { "type": "array", "items": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean" }, { "type": "object", "additionalProperties": true }, { "type": "array", "items": { "additionalProperties": true } } ] } }, { "type": "object", "additionalProperties": true }, { "type": "null" } ] } }, "additionalProperties": false }, "job": { "allOf": [ { "$ref": "#/definitions/job_template" } ] }, "job_template": { "type": "object", "additionalProperties": false, "properties": { "image": { "$ref": "#/definitions/image" }, "services": { "$ref": "#/definitions/services" }, "before_script": { "$ref": "#/definitions/before_script" }, "after_script": { "$ref": "#/definitions/after_script" }, "hooks": { "$ref": "#/definitions/hooks" }, "rules": { "$ref": "#/definitions/rules" }, "variables": { "$ref": "#/definitions/jobVariables" }, "cache": { "$ref": "#/definitions/cache" }, "id_tokens": { "$ref": "#/definitions/id_tokens" }, "identity": { "$ref": "#/definitions/identity" }, "secrets": { "$ref": "#/definitions/secrets" }, "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/ci/yaml/#script)" }, "run": { "$ref": "#/definitions/steps", "markdownDescription": "Specifies a list of steps to execute in the job. The `run` keyword is an alternative to `script` and allows for more advanced job configuration. Each step is an object that defines a single task or command. Use either `run` or `script` in a job, but not both, otherwise the pipeline will error out." }, "stage": { "description": "Define what stage the job will run in.", "anyOf": [ { "type": "string", "minLength": 1 }, { "type": "array", "minItems": 1, "items": { "type": "string" } } ] }, "only": { "$ref": "#/definitions/filter", "description": "Job will run *only* when these filtering options match." }, "extends": { "description": "The name of one or more jobs to inherit configuration from.", "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" }, "minItems": 1 } ] }, "needs": { "description": "The list of jobs in previous stages whose sole completion is needed to start the current job.", "type": "array", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "additionalProperties": false, "properties": { "job": { "type": "string" }, "artifacts": { "type": "boolean" }, "optional": { "type": "boolean" }, "parallel": { "$ref": "#/definitions/parallel_matrix" } }, "required": [ "job" ] }, { "type": "object", "additionalProperties": false, "properties": { "pipeline": { "type": "string" }, "job": { "type": "string" }, "artifacts": { "type": "boolean" }, "parallel": { "$ref": "#/definitions/parallel_matrix" } }, "required": [ "job", "pipeline" ] }, { "type": "object", "additionalProperties": false, "properties": { "job": { "type": "string" }, "project": { "type": "string" }, "ref": { "type": "string" }, "artifacts": { "type": "boolean" }, "parallel": { "$ref": "#/definitions/parallel_matrix" } }, "required": [ "job", "project", "ref" ] }, { "$ref": "#/definitions/!reference" } ] } }, "except": { "$ref": "#/definitions/filter", "description": "Job will run *except* for when these filtering options match." }, "tags": { "$ref": "#/definitions/tags" }, "allow_failure": { "$ref": "#/definitions/allow_failure" }, "timeout": { "$ref": "#/definitions/timeout" }, "when": { "$ref": "#/definitions/when" }, "start_in": { "$ref": "#/definitions/start_in" }, "manual_confirmation": { "markdownDescription": "Describes the Custom confirmation message for a manual job [Learn More](https://docs.gitlab.com/ci/yaml/#when).", "type": "string" }, "dependencies": { "type": "array", "description": "Specify a list of job names from earlier stages from which artifacts should be loaded. By default, all previous artifacts are passed. Use an empty array to skip downloading artifacts.", "items": { "type": "string" } }, "artifacts": { "$ref": "#/definitions/artifacts" }, "environment": { "description": "Used to associate environment metadata with a deploy. Environment can have a name and URL attached to it, and will be displayed under /environments under the project.", "oneOf": [ { "type": "string" }, { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "The name of the environment, e.g. 'qa', 'staging', 'production'.", "minLength": 1 }, "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.", "format": "uri", "pattern": "^(https?://.+|\\$[A-Za-z]+)" }, "on_stop": { "type": "string", "description": "The name of a job to execute when the environment is about to be stopped." }, "action": { "enum": [ "start", "prepare", "stop", "verify", "access" ], "description": "Specifies what this job will do. 'start' (default) indicates the job will start the deployment. 'prepare'/'verify'/'access' indicates this will not affect the deployment. 'stop' indicates this will stop the deployment.", "default": "start" }, "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'." }, "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.", "properties": { "agent": { "type": "string", "description": "Specifies the GitLab Agent for Kubernetes. The format is `path/to/agent/project:agent-name`." }, "namespace": { "type": "string", "description": "Deprecated. Use `dashboard.namespace` instead. The kubernetes namespace where this environment's dashboard should be deployed to.", "minLength": 1 }, "flux_resource_path": { "type": "string", "description": "Deprecated. Use `dashboard.flux_resource_path` instead. The Flux resource path to associate with this environment. This must be the full resource path. For example, 'helm.toolkit.fluxcd.io/v2/namespaces/gitlab-agent/helmreleases/gitlab-agent'." }, "managed_resources": { "type": "object", "description": "Used to configure the managed resources for this environment.", "properties": { "enabled": { "type": "boolean", "description": "Indicates whether the managed resources are enabled for this environment.", "default": true } } }, "dashboard": { "type": "object", "description": "Used to configure the dashboard for this environment.", "properties": { "namespace": { "type": "string", "description": "The kubernetes namespace where the dashboard for this environment should be deployed to.", "minLength": 1 }, "flux_resource_path": { "type": "string", "description": "The Flux resource path to associate with this environment. This must be the full resource path. For example, 'helm.toolkit.fluxcd.io/v2/namespaces/gitlab-agent/helmreleases/gitlab-agent'." } } } } }, "deployment_tier": { "type": "string", "description": "Explicitly specifies the tier of the deployment environment if non-standard environment name is used.", "enum": [ "production", "staging", "testing", "development", "other" ] } }, "required": [ "name" ] } ] }, "release": { "type": "object", "description": "Indicates that the job creates a Release.", "additionalProperties": false, "properties": { "tag_name": { "type": "string", "description": "The tag_name must be specified. It can refer to an existing Git tag or can be specified by the user.", "minLength": 1 }, "tag_message": { "type": "string", "description": "Message to use if creating a new annotated tag." }, "description": { "type": "string", "description": "Specifies the longer description of the Release.", "minLength": 1 }, "name": { "type": "string", "description": "The Release name. If omitted, it is populated with the value of release: tag_name." }, "ref": { "type": "string", "description": "If the release: tag_name doesn’t exist yet, the release is created from ref. ref can be a commit SHA, another tag name, or a branch name." }, "milestones": { "type": "array", "description": "The title of each milestone the release is associated with.", "items": { "type": "string" } }, "released_at": { "type": "string", "description": "The date and time when the release is ready. Defaults to the current date and time if not defined. Should be enclosed in quotes and expressed in ISO 8601 format.", "format": "date-time", "pattern": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:Z|[+-][01]\\d:[0-5]\\d)$" }, "assets": { "type": "object", "additionalProperties": false, "properties": { "links": { "type": "array", "description": "Include asset links in the release.", "items": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "The name of the link.", "minLength": 1 }, "url": { "type": "string", "description": "The URL to download a file.", "minLength": 1 }, "filepath": { "type": "string", "description": "The redirect link to the url." }, "link_type": { "type": "string", "description": "The content kind of what users can download via url.", "enum": [ "runbook", "package", "image", "other" ] } }, "required": [ "name", "url" ] }, "minItems": 1 } }, "required": [ "links" ] } }, "required": [ "tag_name", "description" ] }, "coverage": { "type": "string", "description": "Must be a regular expression, optionally but recommended to be quoted, and must be surrounded with '/'. Example: '/Code coverage: \\d+\\.\\d+/'", "format": "regex", "pattern": "^/.+/$" }, "retry": { "$ref": "#/definitions/retry" }, "parallel": { "$ref": "#/definitions/parallel" }, "interruptible": { "$ref": "#/definitions/interruptible" }, "resource_group": { "type": "string", "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/ci/yaml/#trigger).", "oneOf": [ { "type": "object", "markdownDescription": "Trigger a multi-project pipeline. [Learn More](https://docs.gitlab.com/ci/pipelines/downstream_pipelines/#multi-project-pipelines).", "additionalProperties": false, "properties": { "project": { "description": "Path to the project, e.g. `group/project`, or `group/sub-group/project`.", "type": "string", "pattern": "(?:\\S/\\S|\\$\\S+)" }, "branch": { "description": "The branch name that a downstream pipeline will use", "type": "string" }, "strategy": { "description": "You can mirror or depend on the pipeline status from the triggered pipeline to the source bridge job by using strategy: `depend` or `mirror`", "type": "string", "enum": [ "depend", "mirror" ] }, "inputs": { "$ref": "#/definitions/inputs" }, "forward": { "description": "Specify what to forward to the downstream pipeline.", "type": "object", "additionalProperties": false, "properties": { "yaml_variables": { "type": "boolean", "description": "Variables defined in the trigger job are passed to downstream pipelines.", "default": true }, "pipeline_variables": { "type": "boolean", "description": "Variables added for manual pipeline runs and scheduled pipelines are passed to downstream pipelines.", "default": false } } } }, "required": [ "project" ], "dependencies": { "branch": [ "project" ] } }, { "type": "object", "description": "Trigger a child pipeline. [Learn More](https://docs.gitlab.com/ci/pipelines/downstream_pipelines/#parent-child-pipelines).", "additionalProperties": false, "properties": { "include": { "oneOf": [ { "description": "Relative path from local repository root (`/`) to the local YAML file to define the pipeline configuration.", "type": "string", "format": "uri-reference", "pattern": "\\.ya?ml$" }, { "type": "array", "description": "References a local file or an artifact from another job to define the pipeline configuration.", "maxItems": 3, "items": { "oneOf": [ { "type": "object", "additionalProperties": false, "properties": { "local": { "description": "Relative path from local repository root (`/`) to the local YAML file to define the pipeline configuration.", "type": "string", "format": "uri-reference", "pattern": "\\.ya?ml$" }, "inputs": { "$ref": "#/definitions/inputs" } }, "required": [ "local" ] }, { "type": "object", "additionalProperties": false, "properties": { "template": { "description": "Name of the template YAML file to use in the pipeline configuration.", "type": "string", "format": "uri-reference", "pattern": "\\.ya?ml$" }, "inputs": { "$ref": "#/definitions/inputs" } }, "required": [ "template" ] }, { "type": "object", "additionalProperties": false, "properties": { "artifact": { "description": "Relative path to the generated YAML file which is extracted from the artifacts and used as the configuration for triggering the child pipeline.", "type": "string", "format": "uri-reference", "pattern": "\\.ya?ml$" }, "job": { "description": "Job name which generates the artifact", "type": "string" }, "inputs": { "$ref": "#/definitions/inputs" } }, "required": [ "artifact", "job" ] }, { "type": "object", "additionalProperties": false, "properties": { "project": { "description": "Path to another private project under the same GitLab instance, like `group/project` or `group/sub-group/project`.", "type": "string", "pattern": "(?:\\S/\\S|\\$\\S+)" }, "ref": { "description": "Branch/Tag/Commit hash for the target project.", "minLength": 1, "type": "string" }, "file": { "description": "Relative path from repository root (`/`) to the pipeline configuration YAML file.", "type": "string", "format": "uri-reference", "pattern": "\\.ya?ml$" }, "inputs": { "$ref": "#/definitions/inputs" } }, "required": [ "project", "file" ] }, { "type": "object", "additionalProperties": false, "properties": { "component": { "description": "Local path to component directory or full path to external component directory.", "type": "string", "format": "uri-reference" }, "inputs": { "$ref": "#/definitions/inputs" } }, "required": [ "component" ] }, { "type": "object", "additionalProperties": false, "properties": { "remote": { "description": "URL to a `yaml`/`yml` template file using HTTP/HTTPS.", "type": "string", "format": "uri-reference", "pattern": "^https?://.+\\.ya?ml$" }, "inputs": { "$ref": "#/definitions/inputs" } }, "required": [ "remote" ] } ] } } ] }, "strategy": { "description": "You can mirror or depend on the pipeline status from the triggered pipeline to the source bridge job by using strategy: `depend` or `mirror`", "type": "string", "enum": [ "depend", "mirror" ] }, "forward": { "description": "Specify what to forward to the downstream pipeline.", "type": "object", "additionalProperties": false, "properties": { "yaml_variables": { "type": "boolean", "description": "Variables defined in the trigger job are passed to downstream pipelines.", "default": true }, "pipeline_variables": { "type": "boolean", "description": "Variables added for manual pipeline runs and scheduled pipelines are passed to downstream pipelines.", "default": false } } } } }, { "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+)" } ] }, "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/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/ci/yaml/#inheritdefault).", "oneOf": [ { "type": "boolean" }, { "type": "array", "items": { "type": "string", "enum": [ "after_script", "artifacts", "before_script", "cache", "image", "interruptible", "retry", "services", "tags", "timeout" ] } } ] }, "variables": { "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" }, { "type": "array", "items": { "type": "string" } } ] } }, "additionalProperties": false }, "publish": { "description": "Deprecated. Use `pages.publish` instead. A path to a directory that contains the files to be published with Pages.", "type": "string" }, "pages": { "oneOf": [ { "type": "object", "additionalProperties": false, "properties": { "path_prefix": { "type": "string", "markdownDescription": "The GitLab Pages URL path prefix used in this version of pages. The given value is converted to lowercase, shortened to 63 bytes, and everything except alphanumeric characters is replaced with a hyphen. Leading and trailing hyphens are not permitted." }, "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/ci/yaml/#pagesexpire_in)." }, "publish": { "type": "string", "markdownDescription": "A path to a directory that contains the files to be published with Pages." } } }, { "type": "boolean", "markdownDescription": "Whether this job should trigger a Pages deploy (Replaces the need to name the job `pages`)", "default": false } ] } }, "oneOf": [ { "properties": { "when": { "enum": [ "delayed" ] } }, "required": [ "when", "start_in" ] }, { "properties": { "when": { "not": { "enum": [ "delayed" ] } } } } ] }, "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/ci/yaml/#tags).", "items": { "anyOf": [ { "type": "string", "minLength": 1 }, { "type": "array", "minItems": 1, "items": { "type": "string" } } ] } }, "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/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/ci/yaml/#hookspre_get_sources_script)." } }, "additionalProperties": false }, "step": { "description": "Any of these step use cases are valid.", "oneOf": [ { "description": "Run a referenced step.", "type": "object", "additionalProperties": false, "required": [ "name", "step" ], "properties": { "name": { "$ref": "#/definitions/stepName" }, "env": { "$ref": "#/definitions/stepNamedStrings" }, "inputs": { "$ref": "#/definitions/stepNamedValues" }, "step": { "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/stepGitReference" }, { "$ref": "#/definitions/stepOciReference" } ] } } }, { "description": "Run a sequence of steps.", "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "run" ], "properties": { "env": { "$ref": "#/definitions/stepNamedStrings" }, "run": { "type": "array", "items": { "$ref": "#/definitions/step" } }, "outputs": { "$ref": "#/definitions/stepNamedValues" }, "delegate": { "type": "string" } } } ] }, { "description": "Run an action.", "type": "object", "additionalProperties": false, "required": [ "name", "action" ], "properties": { "name": { "$ref": "#/definitions/stepName" }, "env": { "$ref": "#/definitions/stepNamedStrings" }, "inputs": { "$ref": "#/definitions/stepNamedValues" }, "action": { "type": "string", "minLength": 1 } } }, { "description": "Run a script.", "type": "object", "additionalProperties": false, "required": [ "name", "script" ], "properties": { "name": { "$ref": "#/definitions/stepName" }, "env": { "$ref": "#/definitions/stepNamedStrings" }, "script": { "type": "string", "minLength": 1 } } }, { "description": "Exec a binary.", "type": "object", "additionalProperties": false, "required": [ "exec" ], "properties": { "env": { "$ref": "#/definitions/stepNamedStrings" }, "exec": { "description": "Exec is a command to run.", "$ref": "#/definitions/stepExec" } } } ] }, "stepName": { "type": "string", "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$" }, "stepNamedStrings": { "type": "object", "patternProperties": { "^[a-zA-Z_][a-zA-Z0-9_]*$": { "type": "string" } }, "additionalProperties": false }, "stepNamedValues": { "type": "object", "patternProperties": { "^[a-zA-Z_][a-zA-Z0-9_]*$": { "type": [ "string", "number", "boolean", "null", "array", "object" ] } }, "additionalProperties": false }, "stepGitReference": { "type": "object", "description": "GitReference is a reference to a step in a Git repository.", "additionalProperties": false, "required": [ "git" ], "properties": { "git": { "type": "object", "additionalProperties": false, "required": [ "url", "rev" ], "properties": { "url": { "type": "string" }, "dir": { "type": "string" }, "rev": { "type": "string" }, "file": { "type": "string" } } } } }, "stepOciReference": { "type": "object", "description": "OCIReference is a reference to a step hosted in an OCI repository.", "additionalProperties": false, "required": [ "oci" ], "properties": { "oci": { "type": "object", "additionalProperties": false, "required": [ "registry", "repository", "tag" ], "properties": { "registry": { "type": "string", "description": "The [:] of the container registry server.", "examples": [ "registry.gitlab.com" ] }, "repository": { "type": "string", "description": "A path within the registry containing related OCI images. Typically the namespace, project, and image name.", "examples": [ "my_group/my_project/image" ] }, "tag": { "type": "string", "description": "A pointer to the image manifest hosted in the OCI repository.", "examples": [ "latest", "1", "1.5", "1.5.0" ] }, "dir": { "type": "string", "description": "A directory inside the OCI image where the step can be found.", "examples": [ "/my_steps/hello_world" ] }, "file": { "type": "string", "description": "The name of the file that defines the step, defaults to step.yml.", "examples": [ "step.yml" ] } } } } }, "stepExec": { "type": "object", "additionalProperties": false, "required": [ "command" ], "properties": { "command": { "type": "array", "description": "Command are the parameters to the system exec API. It does not invoke a shell.", "items": { "type": "string" }, "minItems": 1 }, "work_dir": { "type": "string", "description": "WorkDir is the working directly in which `command` will be exec'ed." } } } } } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/meltano.json0000644000175100017510000011272415062662115027624 0ustar00runnerrunner{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://meltano.com/meltano.schema.json", "title": "JSON Schema for meltano.yml", "description": "Meltano (https://meltano.com) is an open source platform for building, running & orchestrating ELT pipelines", "type": "object", "additionalProperties": false, "properties": { "version": { "const": 1 }, "annotations": { "$ref": "#/$defs/annotations" }, "default_environment": { "type": "string", "description": "A default environment to be used when one is not present as an argument or as an environment variable." }, "send_anonymous_usage_stats": { "type": "boolean", "description": "Share anonymous usage data with the Meltano team to help them gauge interest and allocate development time", "default": true }, "project_id": { "type": "string", "description": "A globally unique project identifier. Defaults to a Meltano-generated unique GUID for each project." }, "database_uri": { "type": "string", "description": "A database URI for the project system database. Defaults to a SQLite file stored at .meltano/meltano.db", "default": "sqlite:///$MELTANO_PROJECT_ROOT/.meltano/meltano.db" }, "python": { "type": "string", "description": "The python version to use for plugins, specified as a path, as the name of an executable to find within a directory in $PATH, or as a version number (e.g. '3.11'). If not specified, the python executable that was used to run Meltano will be used (within a separate virtual environment). This can be overridden on a per-plugin basis by setting the `python` property for the plugin.", "examples": [ "/usr/bin/python3.10", "python", "python3.11", "3.11" ] }, "state_backend": { "type": "object", "description": "Configuration for state backend.", "properties": { "uri": { "type": "string", "description": "The URI pointing to the backend to use.", "default": "systemdb" }, "lock_timeout_seconds": { "type": "integer", "description": "The number of seconds a lock on a state file is considered valid." }, "lock_retry_seconds": { "type": "integer", "description": "The number of seconds to wait between retrying lock acquisition." }, "azure": { "type": "object", "description": "Configuration for Azure Blob Storage state backend.", "properties": { "connection_string": { "type": "string", "description": "The azure connection string to use for connecting to Azure Blob Storage." } } }, "gcs": { "type": "object", "description": "Configuration for Google Cloud Storage state backend.", "properties": { "application_credentials": { "type": "string", "description": "Path to a Google credentials file to use for authenticating to Google Cloud Storage." } } }, "s3": { "type": "object", "description": "Configuration for AWS S3 state backend.", "properties": { "aws_access_key_id": { "type": "string", "description": "AWS access key ID to use for authenticating to AWS S3." }, "aws_secret_access_key": { "type": "string", "description": "AWS secret access key to use for authenticating to AWS S3." }, "endpoint_url": { "type": "string", "description": "S3 endpoint URL to use." } } } } }, "venv": { "type": "object", "description": "Configuration for plugin virtual environments.", "properties": { "backend": { "type": "string", "description": "The virtual environment backend to use.", "default": "virtualenv", "enum": [ "virtualenv", "uv" ] } } }, "environments": { "type": "array", "description": "An array of environments (i.e. dev, stage, prod) with override configs for plugins based on the environment its run in.", "items": { "$ref": "#/$defs/environments" } }, "include_paths": { "type": "array", "description": "An array of paths (relative to the project directory) of other Meltano config files to include in the configuration.", "items": { "type": "string" } }, "plugins": { "type": "object", "additionalProperties": false, "properties": { "extractors": { "type": "array", "items": { "$ref": "#/$defs/plugins/extractors" } }, "loaders": { "type": "array", "items": { "$ref": "#/$defs/plugins/loaders" } }, "mappers": { "type": "array", "items": { "$ref": "#/$defs/plugins/mappers" } }, "orchestrators": { "type": "array", "items": { "$ref": "#/$defs/plugins/orchestrators" } }, "transformers": { "type": "array", "items": { "$ref": "#/$defs/plugins/transformers" } }, "files": { "type": "array", "items": { "$ref": "#/$defs/plugins/files" } }, "utilities": { "type": "array", "items": { "$ref": "#/$defs/plugins/utilities" } }, "transforms": { "type": "array", "items": { "$ref": "#/$defs/plugins/transforms" } } } }, "schedules": { "type": "array", "items": { "$ref": "#/$defs/schedules" }, "description": "Scheduled ELT jobs, added using 'meltano schedule'" }, "env": { "$ref": "#/$defs/env" }, "jobs": { "type": "array", "items": { "$ref": "#/$defs/jobs" }, "description": "Jobs, added using 'meltano job'" }, "database_max_retries": { "type": "integer", "description": "The number of times to retry connecting to the Meltano database.", "default": 3, "minimum": 0 }, "database_retry_timeout": { "type": "integer", "description": "The time in seconds to wait between Meltano database connection attempts.", "default": 5, "minimum": 0 }, "project_readonly": { "type": "boolean", "description": "Whether the project is read-only.", "default": false }, "cli": { "type": "object", "description": "CLI related settings.", "properties": { "log_config": { "type": "string", "description": "The path to the logging config, relative to the Meltano project root.", "default": "logging.yaml" } } }, "elt": { "type": "object", "description": "ELT related settings", "properties": { "buffer_size": { "type": "integer", "description": "The size of the ELT buffer in bytes.", "default": 10485760 } } }, "experimental": { "type": "boolean", "description": "Whether experimental features should be enabled.", "default": false }, "ff": { "type": "object", "description": "A feature flag, which can be used to enable or disable particular Meltano features.", "properties": { "strict_env_var_mode": { "type": "boolean", "description": "Whether references to undefined environment variables cause Meltano to exit with an error.", "default": false }, "plugin_locks_required": { "type": "boolean", "description": "Whether plugin locks are required to run a job.", "default": false } } }, "hub_api_root": { "type": [ "string", "null" ], "description": "The URL to the root of the Meltano Hub API.", "default": null, "examples": [ "https://hub.meltano.com/meltano/api/v1" ] }, "hub_url": { "type": "string", "description": "The URL for Meltano Hub.", "default": "https://hub.meltano.com" }, "hub_url_auth": { "type": [ "string", "boolean", "null" ], "description": "The value of the `Authorization` header when making requests to Meltano Hub. If null, false, or unset, no `Authorization` header is used.", "default": null, "examples": [ "Bearer $ACCESS_TOKEN" ] }, "snowplow": { "type": "object", "description": "Snowplow related settings.", "properties": { "collector_endpoints": { "type": "array", "description": "Array of Snowplow collector endpoints.", "items": { "type": "string", "description": "A URL to which Snowplow events will be sent if telemetry is enabled." }, "default": [ "https://sp.meltano.com" ] } } }, "auto_install": { "type": "boolean", "description": "Whether to automatically install any required plugins on command invocation. A plugin will be auto-installed when its virtual environment does not already exist or `pip_url` is changed.", "default": true } }, "$defs": { "annotations": { "type": "object", "description": "Arbitrary annotations keyed by tool/vendor name - not processed by the core Meltano library or CLI", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "object" } }, "plugins": { "plugin_generic": { "type": "object", "required": [ "name" ], "properties": { "annotations": { "$ref": "#/$defs/annotations" }, "name": { "type": "string", "description": "The name of the plugin.", "examples": [ "target-jsonl" ] }, "description": { "type": "string", "description": "A description of the plugin." }, "plugin_type": { "type": "string", "description": "The type of the plugin.", "enum": [ "extractors", "loaders", "orchestrators", "transformers", "files", "utilities", "transforms", "mappers" ] }, "repo": { "type": "string", "description": "The URL of the repository containing the source code for the plugin." }, "ext_repo": { "type": "string", "description": "The URL of the repository containing the source code for a Meltano extension plugin that typically wraps some other tool, in which case the 'repo' property is used for the URL of the repository for that tool." }, "inherit_from": { "type": "string", "description": "An existing plugin to inherit from." }, "pip_url": { "type": "string", "description": "The pip hosted package name or URL", "examples": [ "target-jsonl", "git+https://gitlab.com/meltano/tap-facebook.git", "wtforms==2.2.1 apache-airflow==1.10.2" ] }, "variant": { "type": "string", "description": "The variant of the plugin." }, "namespace": { "type": "string", "description": "The namespace of this plugin", "examples": [ "tap_csv", "target_jsonl" ] }, "config": { "type": "object", "description": "Your plugin configuration, type 'meltano config list' for details" }, "label": { "type": "string", "description": "A user friendly label describing the plugin", "examples": [ "Stripe", "Facebook Ads" ] }, "logo_url": { "type": "string", "description": "An optional logo URL for this plugin" }, "python": { "type": "string", "description": "The python version to use for this plugin, specified as a path, as the name of an executable to find within a directory in $PATH, or as a version number (e.g. '3.11'). If not specified, the top-level `python` setting will be used, or if it is not set, the python executable that was used to run Meltano will be used (within a separate virtual environment).", "examples": [ "/usr/bin/python3.10", "python", "python3.11", "3.11" ] }, "executable": { "type": "string", "description": "The plugin's executable name, as defined in setup.py (if a Python based plugin)", "examples": [ "tap-stripe", "tap-covid-19" ] }, "settings": { "type": "array", "items": { "$ref": "#/$defs/base_setting" } }, "docs": { "type": "string", "description": "A URL to the documentation for this plugin" }, "settings_group_validation": { "type": "array", "items": { "type": "array", "description": "A set consisting of one valid combination of required setting names", "items": { "type": "string" } } }, "commands": { "type": "object", "description": "A mapping of command names to either a string command, or an object containing info about the command.", "additionalProperties": { "oneOf": [ { "type": "object", "properties": { "annotations": { "$ref": "#/$defs/annotations" }, "args": { "type": "string", "description": "Command arguments" }, "description": { "type": "string", "description": "Documentation displayed when listing commands" }, "executable": { "type": "string", "description": "Override the plugin's executable for this command" }, "container_spec": { "type": "object", "required": [ "image" ], "description": "Container specification for this command", "properties": { "annotations": { "$ref": "#/$defs/annotations" }, "image": { "type": "string", "description": "Container image", "examples": [ "ghcr.io/dbt-labs/dbt-postgres:latest" ] }, "command": { "type": "string", "description": "Container command", "examples": [ "list", "test", "compile" ] }, "entrypoint": { "type": "string", "description": "Container entrypoint" }, "ports": { "type": "object", "description": "Mapping of host to container ports", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" }, "examples": [ { "5000": "5000" } ] }, "volumes": { "type": "array", "description": "Array of volumes to mount during container execution", "items": { "type": "string", "examples": [ "$MELTANO_PROJECT_ROOT/transform/:/usr/app/" ] } }, "env": { "$ref": "#/$defs/env" } } } } }, { "type": "string", "description": "The command as a string." } ] } }, "requires": { "$ref": "#/$defs/requires" }, "env": { "$ref": "#/$defs/env" } } }, "extractor_shared": { "type": "object", "properties": { "annotations": { "$ref": "#/$defs/annotations" }, "catalog": { "type": "string", "description": "A path to a catalog file (relative to the project directory) to be provided to the extractor when it is run in sync mode." }, "load_schema": { "type": "string", "description": "The name of the database schema extracted data should be loaded into." }, "metadata": { "type": "object", "description": "An object containing Singer stream and property metadata", "default": {} }, "schema": { "type": "object", "description": "An object representing override rules for a Singer stream schema", "default": {} }, "state": { "type": "string", "description": "A path to a state file (relative to the project directory) to be provided to the extractor when it is run as part of a pipeline using meltano el or meltano elt." }, "select": { "type": "array", "default": [ "*.*" ], "description": "An array of entity selection rules in the form '.'", "items": { "type": "string" } }, "select_filter": { "type": "array", "description": "An array of entity selection filter rules that are applied to the extractor's discovered or provided catalog file when the extractor is run.", "items": { "type": "string" }, "default": [] }, "use_cached_catalog": { "type": "boolean", "description": "A boolean that determines if the catalog cache should be used or ignored.", "default": true } } }, "extractors": { "description": "https://docs.meltano.com/concepts/plugins#extractors", "type": "object", "allOf": [ { "$ref": "#/$defs/plugins/plugin_generic" }, { "$ref": "#/$defs/plugins/extractor_shared" }, { "type": "object", "properties": { "capabilities": { "type": "array", "items": { "type": "string", "enum": [ "properties", "catalog", "discover", "state", "about", "stream-maps", "activate-version", "batch", "test", "log-based", "schema-flattening" ] } } } } ], "unevaluatedProperties": false }, "loaders": { "description": "https://docs.meltano.com/concepts/plugins#loaders", "type": "object", "allOf": [ { "$ref": "#/$defs/plugins/plugin_generic" }, { "properties": { "capabilities": { "type": "array", "items": { "type": "string", "enum": [ "about", "stream-maps", "activate-version", "batch", "soft-delete", "hard-delete", "datatype-failsafe", "schema-flattening" ] } }, "dialect": { "type": "string", "description": "The name of the dialect of the target database, so that transformers in the same pipeline can determine the type of database to connect to." } } } ], "unevaluatedProperties": false }, "orchestrators": { "description": "https://docs.meltano.com/concepts/plugins#orchestrators", "type": "object", "$ref": "#/$defs/plugins/plugin_generic", "unevaluatedProperties": false }, "transformers": { "description": "https://docs.meltano.com/concepts/plugins#transforms", "type": "object", "$ref": "#/$defs/plugins/plugin_generic", "unevaluatedProperties": false }, "files": { "description": "https://docs.meltano.com/concepts/plugins#file-bundles", "type": "object", "$ref": "#/$defs/plugins/plugin_generic", "unevaluatedProperties": false }, "utilities": { "description": "https://docs.meltano.com/concepts/plugins#utilities", "type": "object", "$ref": "#/$defs/plugins/plugin_generic", "unevaluatedProperties": false }, "transforms": { "description": "https://docs.meltano.com/concepts/plugins#transforms", "type": "object", "allOf": [ { "$ref": "#/$defs/plugins/plugin_generic" }, { "properties": { "annotations": { "$ref": "#/$defs/annotations" }, "vars": { "type": "object", "description": "An object containing dbt model variables" }, "package_name": { "type": "string", "description": "The name of the dbt package's internal dbt project: the value of name in dbt_project.yml." } } } ], "unevaluatedProperties": false }, "mapper_specific": { "type": "object", "properties": { "annotations": { "$ref": "#/$defs/annotations" }, "mappings": { "description": "Name of the invokable mappings and their associated configs.", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "annotations": { "$ref": "#/$defs/annotations" }, "name": { "type": "string" }, "config": { "type": "object" } } }, "required": [ "config", "name" ] } } }, "mappers": { "description": "https://docs.meltano.com/concepts/plugins#mappers", "type": "object", "allOf": [ { "$ref": "#/$defs/plugins/plugin_generic" }, { "$ref": "#/$defs/plugins/mapper_specific" } ], "unevaluatedProperties": false } }, "base_setting": { "type": "object", "required": [ "name" ], "additionalProperties": false, "properties": { "annotations": { "$ref": "#/$defs/annotations" }, "name": { "type": "string", "description": "The name of the setting", "examples": [ "account_id" ] }, "aliases": { "type": "array", "description": "Alternative setting names that can be used in 'meltano.yml' and 'meltano config set'", "examples": [ "accountId", "account_identifier" ], "items": { "type": "string" } }, "label": { "type": "string", "description": "A user friendly label for the setting", "examples": [ "Account ID" ] }, "value": { "description": "The default value of this setting if not otherwise defined" }, "placeholder": { "type": "string", "description": "A placeholder value for this setting", "examples": [ "Ex. 18161" ] }, "kind": { "type": "string", "description": "The type of value this setting contains", "oneOf": [ { "enum": [ "oauth", "date_iso8601", "file", "email", "integer", "decimal", "options", "object", "array", "boolean", "string" ] }, { "enum": [ "hidden", "password" ], "deprecated": true } ] }, "description": { "type": "string", "description": "A description for what this setting does", "examples": [ "The unique account identifier for your Stripe Account" ] }, "tooltip": { "type": "string", "description": "A phrase to provide additional information on this setting", "examples": [ "Here is some additional info..." ] }, "documentation": { "type": "string", "description": "A link to documentation on this setting", "examples": [ "https://meltano.com/" ] }, "hidden": { "type": "boolean", "description": "A hidden setting should not be user-configurable", "default": false }, "sensitive": { "type": "boolean", "description": "A sensitive setting is redacted in command output", "default": false }, "env": { "type": "string", "description": "An alternative environment variable name to populate with this settings value in the plugin environment. Meltano takes the value of the setting and injects it into the plugin's runtime environment as this environment variable, in addition to the default environment variable (of the form `_`, etc.).", "examples": [ "GITLAB_API_TOKEN", "FACEBOOK_ADS_ACCESS_TOKEN" ] }, "value_processor": { "description": "Use with `kind: object` to pre-process the keys in a particular way.", "enum": [ "nest_object", "upcase_string" ] }, "value_post_processor": { "oneOf": [ { "const": "nest_object", "description": "Convert a flat object with period-delimited keys to a nested object" }, { "const": "upcase_string", "description": "Convert the setting value to uppercase" }, { "const": "stringify", "description": "Convert the JSON object to a string" }, { "const": "parse_date", "description": "Parse the setting value as a date" } ] }, "oauth": { "type": "object", "required": [ "provider" ], "properties": { "provider": { "type": "string", "description": "The name of a Meltano-supported OAuth provider", "examples": [ "google-adwords" ] } } }, "options": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "A user friendly label for the option", "examples": [ "Account ID" ] }, "value": { "description": "The value of this option" } }, "required": [ "label", "value" ], "additionalProperties": false } } } }, "schedules": { "type": "object", "oneOf": [ { "required": [ "name", "job", "interval" ] }, { "required": [ "name", "extractor", "loader", "transform", "interval" ] } ], "description": "https://docs.meltano.com/guide/orchestration", "additionalProperties": false, "properties": { "annotations": { "$ref": "#/$defs/annotations" }, "name": { "type": "string", "description": "The schedule's unique name", "examples": [ "gitlab-to-jsonl" ] }, "job": { "type": "string", "description": "The name of a meltano job", "examples": [ "some-custom-job" ] }, "extractor": { "type": "string", "description": "The name of the extractor plugin", "examples": [ "tap-gitlab" ] }, "env": { "$ref": "#/$defs/env" }, "loader": { "type": "string", "description": "The name of the loader plugin", "examples": [ "target-jsonl" ] }, "interval": { "type": "string", "description": "A UNIX cron expression to represent the frequency the scheduled job should execute", "examples": [ "@hourly", "@daily", "@weekly", "0 0 * * *" ], "pattern": "^((@(hourly|daily|weekly|monthly|yearly|once))|((((\\d+,)+\\d+|(\\d+|\\*)(\\/|-)\\d+|\\d+|\\*) ?){5,6}))$" }, "transform": { "type": "string", "description": "Describes if transforms should run, be skipped, or if only transforms should execute (skip extractors and loaders)", "default": "skip", "enum": [ "run", "skip", "only" ] }, "start_date": { "type": "string", "description": "The date when the schedule should first execute", "examples": [ "2020-08-06 00:00:00" ] } } }, "jobs": { "type": "object", "required": [ "name", "tasks" ], "description": "https://docs.meltano.com/reference/command-line-interface#job", "additionalProperties": false, "properties": { "annotations": { "$ref": "#/$defs/annotations" }, "name": { "type": "string", "description": "This jobs unique name", "examples": [ "gitlab-to-jsonl" ] }, "tasks": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] } } ] } } }, "environments": { "type": "object", "additionalProperties": false, "required": [ "name" ], "properties": { "annotations": { "$ref": "#/$defs/annotations" }, "name": { "type": "string", "description": "The name of the environment." }, "config": { "type": "object", "description": "An object of environment specific configurations.", "additionalProperties": false, "properties": { "plugins": { "type": "object", "description": "An object of environment specific plugin configurations.", "properties": { "extractors": { "type": "array", "items": { "allOf": [ { "$ref": "#/$defs/environments/$defs/plugins" }, { "$ref": "#/$defs/plugins/extractor_shared" } ], "unevaluatedProperties": false } }, "loaders": { "type": "array", "items": { "unevaluatedProperties": false, "$ref": "#/$defs/environments/$defs/plugins" } }, "orchestrators": { "type": "array", "items": { "unevaluatedProperties": false, "$ref": "#/$defs/environments/$defs/plugins" } }, "transformers": { "type": "array", "items": { "unevaluatedProperties": false, "$ref": "#/$defs/environments/$defs/plugins" } }, "files": { "type": "array", "items": { "unevaluatedProperties": false, "$ref": "#/$defs/environments/$defs/plugins" } }, "utilities": { "type": "array", "items": { "unevaluatedProperties": false, "$ref": "#/$defs/environments/$defs/plugins" } }, "transforms": { "type": "array", "items": { "unevaluatedProperties": false, "$ref": "#/$defs/environments/$defs/plugins" } } } } } }, "env": { "$ref": "#/$defs/env" } }, "$defs": { "plugins": { "type": "object", "required": [ "name" ], "properties": { "annotations": { "$ref": "#/$defs/annotations" }, "name": { "type": "string" }, "config": { "type": "object" }, "env": { "$ref": "#/$defs/env" } } } } }, "requires": { "type": "object", "description": "A set of plugin requirements.", "additionalProperties": false, "patternProperties": { "^(extractors|loaders|transforms|orchestrators|transformers|files|utilities|mappers)$": { "type": "array", "items": { "$ref": "#/$defs/plugin_requirement" } } } }, "plugin_requirement": { "type": "object", "description": "A single plugin requirement", "additionalProperties": false, "properties": { "annotations": { "$ref": "#/$defs/annotations" }, "name": { "type": "string", "description": "The name of the required plugin" }, "variant": { "type": "string", "description": "The variant of the required plugin" } } }, "env": { "type": "object", "description": "Mapping of environment variables for use in config.", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" }, "examples": [ { "DBT_PROFILES_DIR": "/usr/app/profile/", "SNOWFLAKE_ACCOUNT": "my.snowflake.account.com" } ] } } } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/mergify.json0000644000175100017510000027654515062662115027643 0ustar00runnerrunner{ "$defs": { "ActionsModel": { "additionalProperties": false, "properties": { "assign": { "anyOf": [ { "$ref": "#/$defs/AssignActionModel" }, { "type": "null" } ], "default": null }, "backport": { "anyOf": [ { "$ref": "#/$defs/BackportActionModel" }, { "type": "null" } ], "default": null }, "close": { "anyOf": [ { "$ref": "#/$defs/CloseActionModel" }, { "type": "null" } ], "default": null }, "comment": { "anyOf": [ { "$ref": "#/$defs/CommentActionModel" }, { "type": "null" } ], "default": null }, "copy": { "anyOf": [ { "$ref": "#/$defs/CopyActionModel" }, { "type": "null" } ], "default": null }, "delete_head_branch": { "anyOf": [ { "$ref": "#/$defs/DeleteHeadBranchActionModel" }, { "type": "null" } ], "default": null }, "dismiss_reviews": { "anyOf": [ { "$ref": "#/$defs/DismissReviewsActionModel" }, { "type": "null" } ], "default": null }, "edit": { "anyOf": [ { "$ref": "#/$defs/EditActionModel" }, { "type": "null" } ], "default": null }, "github_actions": { "anyOf": [ { "$ref": "#/$defs/GhaActionModel" }, { "type": "null" } ], "default": null }, "label": { "anyOf": [ { "$ref": "#/$defs/LabelActionModel" }, { "type": "null" } ], "default": null }, "merge": { "anyOf": [ { "$ref": "#/$defs/MergeActionModel" }, { "type": "null" } ], "default": null }, "post_check": { "anyOf": [ { "$ref": "#/$defs/PostCheckActionModel" }, { "type": "null" } ], "default": null }, "queue": { "anyOf": [ { "$ref": "#/$defs/QueueActionModel" }, { "type": "null" } ], "default": null }, "rebase": { "anyOf": [ { "$ref": "#/$defs/RebaseActionModel" }, { "type": "null" } ], "default": null }, "request_reviews": { "anyOf": [ { "$ref": "#/$defs/RequestReviewsActionModel" }, { "type": "null" } ], "default": null }, "review": { "anyOf": [ { "$ref": "#/$defs/ReviewActionModel" }, { "type": "null" } ], "default": null }, "squash": { "anyOf": [ { "$ref": "#/$defs/SquashActionModel" }, { "type": "null" } ], "default": null }, "update": { "anyOf": [ { "$ref": "#/$defs/UpdateActionModel" }, { "type": "null" } ], "default": null } }, "title": "Actions", "type": "object" }, "AndCondition": { "additionalProperties": false, "properties": { "and": { "$ref": "#/$defs/ListOfRuleConditions" } }, "required": [ "and" ], "title": "AndCondition", "type": "object" }, "AssignActionModel": { "additionalProperties": false, "properties": { "users": { "items": { "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" }, "maxItems": 10, "title": "Users", "type": "array" }, "add_users": { "items": { "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" }, "maxItems": 10, "title": "Add Users", "type": "array" }, "remove_users": { "items": { "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" }, "maxItems": 40, "title": "Remove Users", "type": "array" } }, "title": "AssignActionModel", "type": "object" }, "BackportActionModel": { "additionalProperties": false, "properties": { "bot_account": { "anyOf": [ { "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" }, { "type": "null" } ], "default": null, "description": "Mergify can impersonate a GitHub user to copy a pull request. If no `bot_account` is set, Mergify copies the pull request itself.", "title": "Bot Account" }, "branches": { "description": "The list of branches the pull request should be copied to.", "items": { "$ref": "#/$defs/BranchName" }, "maxItems": 30, "title": "Branches", "type": "array" }, "regexes": { "description": "The list of regexes to find branches the pull request should be copied to.", "items": { "format": "regex", "type": "string" }, "maxItems": 30, "title": "Regexes", "type": "array" }, "ignore_conflicts": { "default": true, "description": "Whether to create the pull requests even if there are conflicts when cherry-picking the commits.", "title": "Ignore Conflicts", "type": "boolean" }, "assignees": { "description": "Users to assign the newly created pull request to. As the type is a data type template, you could use, e.g., `{{author}}` to assign the pull request to its original author.", "items": { "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" }, "maxItems": 10, "title": "Assignees", "type": "array" }, "labels": { "description": "The list of labels to add to the created pull requests.", "items": { "type": "string" }, "maxItems": 30, "title": "Labels", "type": "array" }, "label_conflicts": { "default": "conflicts", "description": "The label to add to the created pull request if it has conflicts and `ignore_conflicts` is set to `true`.", "title": "Label Conflicts", "type": "string" }, "title": { "default": "{{ title }} (backport #{{ number }})", "description": "The pull request's title.", "format": "template", "title": "Template", "type": "string" }, "body": { "default": "{{ body }}
This is an automatic backport of pull request #{{number}} done by [Mergify](https://mergify.com).\n", "description": "The pull request's body.", "format": "template", "title": "Template", "type": "string" }, "report_mode": { "default": [ "check" ], "description": "Reporting modes for the action's result. Check will create a check on the pull request, and comment will post a comment on the pull request.", "items": { "enum": [ "check", "comment" ], "type": "string" }, "minItems": 1, "title": "Report Mode", "type": "array" }, "merge_conflict_style": { "default": "merge", "description": "Style used by git when displaying merge conflicts", "enum": [ "merge", "diff3" ], "title": "Merge Conflict Style", "type": "string" } }, "title": "BackportActionModel", "type": "object" }, "BranchName": { "description": "A Git branch name.", "properties": {}, "title": "Branch Name", "type": "string" }, "CloseActionModel": { "additionalProperties": false, "properties": { "message": { "default": "This pull request has been automatically closed by Mergify.", "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" } }, "title": "CloseActionModel", "type": "object" }, "CommandRestrictionsConditionsModel": { "items": { "anyOf": [ { "$ref": "#/$defs/AndCondition" }, { "$ref": "#/$defs/OrCondition" }, { "$ref": "#/$defs/NegationCondition" }, { "$ref": "#/$defs/RuleConditionModel" } ] }, "maxItems": 500, "title": "List of conditions", "type": "array" }, "CommandRestrictionsModel": { "additionalProperties": false, "properties": { "conditions": { "$ref": "#/$defs/CommandRestrictionsConditionsModel" } }, "title": "Command Restrictions", "type": "object" }, "CommandsRestrictionsRulesModel": { "additionalProperties": false, "properties": { "backport": { "$ref": "#/$defs/CommandRestrictionsModel", "default": { "conditions": [ "sender-permission >= write" ] } }, "copy": { "$ref": "#/$defs/CommandRestrictionsModel", "default": { "conditions": [ "sender-permission >= write" ] } }, "dequeue": { "$ref": "#/$defs/CommandRestrictionsModel", "default": { "conditions": [ "sender-permission >= write" ] } }, "queue": { "$ref": "#/$defs/CommandRestrictionsModel", "default": { "conditions": [ "sender-permission >= write" ] } }, "rebase": { "$ref": "#/$defs/CommandRestrictionsModel", "default": { "conditions": [ { "or": [ "sender-permission >= write", "sender = {{author}}" ] } ] } }, "refresh": { "$ref": "#/$defs/CommandRestrictionsModel", "default": { "conditions": [ { "or": [ "sender-permission >= write", "sender = {{author}}" ] } ] } }, "requeue": { "$ref": "#/$defs/CommandRestrictionsModel", "default": { "conditions": [ "sender-permission >= write" ] } }, "squash": { "$ref": "#/$defs/CommandRestrictionsModel", "default": { "conditions": [ { "or": [ "sender-permission >= write", "sender = {{author}}" ] } ] } }, "unqueue": { "$ref": "#/$defs/CommandRestrictionsModel", "default": { "conditions": [ "sender-permission >= write" ] } }, "update": { "$ref": "#/$defs/CommandRestrictionsModel", "default": { "conditions": [ { "or": [ "sender-permission >= write", "sender = {{author}}" ] } ] } } }, "title": "CommandsRestrictionsRulesModel", "type": "object" }, "CommentActionModel": { "additionalProperties": false, "properties": { "message": { "anyOf": [ { "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" }, { "type": "null" } ], "default": null, "description": "The message to write as a comment.", "title": "Message" }, "bot_account": { "anyOf": [ { "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" }, { "type": "null" } ], "default": null, "description": "Mergify can impersonate a GitHub user to comment a pull request. If no `bot_account` is set, Mergify will comment the pull request itself.", "title": "Bot Account" } }, "title": "CommentActionModel", "type": "object" }, "Commit": { "properties": { "sha": { "title": "Sha", "type": "string" }, "parents": { "items": { "type": "string" }, "title": "Parents", "type": "array" }, "commit_message": { "title": "Commit Message", "type": "string" }, "commit_verification_verified": { "description": "Indicates if the commit has been marked as verified by GitHub", "title": "Commit Verification Verified", "type": "boolean" }, "author": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Name of the author", "title": "Author" }, "committer": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Name of the committer", "title": "Committer" }, "date_author": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Date Author" }, "date_committer": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Date Committer" }, "email_author": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Email Author" }, "email_committer": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Email Committer" }, "gh_author_login": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "GitHub login of the author", "title": "Gh Author Login" } }, "required": [ "sha", "parents", "commit_message", "commit_verification_verified", "author", "committer", "date_author", "date_committer", "email_author", "email_committer", "gh_author_login" ], "title": "Commit", "type": "object" }, "CommitAuthor": { "properties": { "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Name of the author", "title": "Name" }, "email": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Email address of the author", "title": "Email" } }, "required": [ "name", "email" ], "title": "CommitAuthor", "type": "object" }, "CopyActionModel": { "additionalProperties": false, "properties": { "bot_account": { "anyOf": [ { "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" }, { "type": "null" } ], "default": null, "description": "Mergify can impersonate a GitHub user to copy a pull request. If no `bot_account` is set, Mergify copies the pull request itself.", "title": "Bot Account" }, "branches": { "description": "The list of branches the pull request should be copied to.", "items": { "$ref": "#/$defs/BranchName" }, "maxItems": 30, "title": "Branches", "type": "array" }, "regexes": { "description": "The list of regexes to find branches the pull request should be copied to.", "items": { "format": "regex", "type": "string" }, "maxItems": 30, "title": "Regexes", "type": "array" }, "ignore_conflicts": { "default": true, "description": "Whether to create the pull requests even if there are conflicts when cherry-picking the commits.", "title": "Ignore Conflicts", "type": "boolean" }, "assignees": { "description": "Users to assign the newly created pull request to. As the type is a data type template, you could use, e.g., `{{author}}` to assign the pull request to its original author.", "items": { "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" }, "maxItems": 10, "title": "Assignees", "type": "array" }, "labels": { "description": "The list of labels to add to the created pull requests.", "items": { "type": "string" }, "maxItems": 30, "title": "Labels", "type": "array" }, "label_conflicts": { "default": "conflicts", "description": "The label to add to the created pull request if it has conflicts and `ignore_conflicts` is set to `true`.", "title": "Label Conflicts", "type": "string" }, "title": { "default": "{{ title }} (copy #{{ number }})", "description": "The pull request's title.", "format": "template", "title": "Template", "type": "string" }, "body": { "default": "{{ body }}
This is an automatic copy of pull request #{{number}} done by [Mergify](https://mergify.com).\n", "description": "The pull request's body.", "format": "template", "title": "Template", "type": "string" }, "report_mode": { "default": [ "check" ], "description": "Reporting modes for the action's result. Check will create a check on the pull request, and comment will post a comment on the pull request.", "items": { "enum": [ "check", "comment" ], "type": "string" }, "minItems": 1, "title": "Report Mode", "type": "array" }, "merge_conflict_style": { "default": "merge", "description": "Style used by git when displaying merge conflicts", "enum": [ "merge", "diff3" ], "title": "Merge Conflict Style", "type": "string" } }, "title": "CopyActionModel", "type": "object" }, "DefaultsRulesModel": { "additionalProperties": false, "properties": { "actions": { "$ref": "#/$defs/ActionsModel" }, "queue_rule": { "anyOf": [ { "$ref": "#/$defs/QueueRuleModelForDefaults" }, { "type": "null" } ], "default": null } }, "title": "DefaultsRulesModel", "type": "object" }, "DeleteHeadBranchActionModel": { "additionalProperties": false, "properties": { "force": { "default": false, "description": "If set to `true`, the branch will be deleted even if another pull request depends on the head branch. GitHub will therefore close the dependent pull requests.", "title": "Force", "type": "boolean" } }, "title": "DeleteHeadBranchActionModel", "type": "object" }, "DisabledDict": { "properties": { "reason": { "title": "Reason", "type": "string" } }, "required": [ "reason" ], "title": "DisabledDict", "type": "object" }, "DismissReviewsActionModel": { "additionalProperties": false, "properties": { "approved": { "anyOf": [ { "items": { "type": "string" }, "maxItems": 50, "type": "array" }, { "type": "boolean" }, { "const": "from_requested_reviewers", "type": "string" } ], "default": true, "description": "If set to `true`, all the approving reviews will be removed when the pull request is updated. If set to `false`, nothing will be done. If set to a list, each item should be the GitHub login of a user whose review will be removed. If set to `from_requested_reviewers`, the list of requested reviewers will be used to get whose review will be removed.", "title": "Approved" }, "changes_requested": { "anyOf": [ { "items": { "type": "string" }, "maxItems": 50, "type": "array" }, { "type": "boolean" }, { "const": "from_requested_reviewers", "type": "string" } ], "default": true, "description": "If set to `true`, all the reviews requesting changes will be removed when the pull request is updated. If set to false, nothing will be done. If set to a list, each item should be the GitHub login of a user whose review will be removed. If set to `from_requested_reviewers`, the list of requested reviewers will be used to get whose review will be removed.", "title": "Changes Requested" }, "message": { "anyOf": [ { "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" }, { "type": "null" } ], "default": null, "description": "Message to use when dismissing reviews.", "title": "Message" }, "when": { "default": "synchronize", "description": "If set to `synchronize`, the action will run only if the pull request commits changed. Otherwise, it will run each time the rule matches.", "enum": [ "synchronize", "always" ], "title": "When", "type": "string" } }, "title": "DismissReviewsActionModel", "type": "object" }, "EditActionModel": { "additionalProperties": false, "properties": { "bot_account": { "anyOf": [ { "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" }, { "type": "null" } ], "default": null, "title": "Bot Account" }, "draft": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": null, "description": "If the pull request should be a draft (true) or the other way around (false).", "title": "Draft" } }, "title": "EditActionModel", "type": "object" }, "GhaActionModel": { "additionalProperties": false, "properties": { "workflow": { "$ref": "#/$defs/GhaActionModelWorkflow" } }, "required": [ "workflow" ], "title": "GhaActionModel", "type": "object" }, "GhaActionModelDispatch": { "additionalProperties": false, "description": "GitHub Actions workflow dispatch", "properties": { "workflow": { "description": "The name of the .yaml GitHub Workflow file with its extension.", "title": "Workflow", "type": "string" }, "ref": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The reference to use when triggering the job. If none is passed, the default repository branch is used.", "title": "Ref" }, "inputs": { "additionalProperties": { "anyOf": [ { "type": "integer" }, { "type": "boolean" }, { "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" } ] }, "description": "The inputs passed to your workflow execution if any. Values can be either a template, a number or a Boolean.", "maxProperties": 10, "title": "Inputs", "type": "object" } }, "required": [ "workflow" ], "title": "Workflow Action Dispatch", "type": "object" }, "GhaActionModelWorkflow": { "additionalProperties": false, "description": "GitHub Actions workflow action", "properties": { "dispatch": { "description": "The list of workflows to dispatch via the action.", "items": { "$ref": "#/$defs/GhaActionModelDispatch" }, "maxItems": 10, "title": "Dispatch", "type": "array" } }, "title": "Workflow Action", "type": "object" }, "GitHubRepositoryPermission": { "enum": [ "none", "read", "triage", "write", "maintain", "admin" ], "title": "GitHubRepositoryPermission", "type": "string" }, "LabelActionModel": { "additionalProperties": false, "description": "Add or remove labels on a pull request.", "properties": { "add": { "description": "The list of labels to add.", "items": { "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" }, "maxItems": 50, "title": "Add", "type": "array" }, "remove": { "description": "The list of labels to remove.", "items": { "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" }, "maxItems": 50, "title": "Remove", "type": "array" }, "remove_all": { "default": false, "description": "Remove all labels from the pull request.", "title": "Remove All", "type": "boolean" }, "toggle": { "description": "Toggle labels in the list based on the conditions. If all the conditions are a success, all the labels in the list will be added, otherwise, they will all be removed.", "items": { "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" }, "maxItems": 50, "title": "Toggle", "type": "array" } }, "title": "LabelActionModel", "type": "object" }, "ListOfRuleConditions": { "items": { "anyOf": [ { "$ref": "#/$defs/AndCondition" }, { "$ref": "#/$defs/OrCondition" }, { "$ref": "#/$defs/NegationCondition" }, { "$ref": "#/$defs/RuleConditionModel" } ] }, "maxItems": 500, "title": "List of conditions", "type": "array" }, "MergeActionModel": { "additionalProperties": false, "properties": { "method": { "anyOf": [ { "enum": [ "merge", "rebase", "squash", "fast-forward" ], "type": "string" }, { "type": "null" } ], "default": null, "description": "Merge method to use. If no value is set, Mergify uses the first authorized method available in the repository configuration.", "title": "Method" }, "merge_bot_account": { "anyOf": [ { "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" }, { "type": "null" } ], "default": null, "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" }, "commit_message_template": { "anyOf": [ { "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" }, { "type": "null" } ], "default": null, "description": "Template to use as the commit message when using the merge or squash merge method.", "title": "Commit Message Template" } }, "title": "MergeActionModel", "type": "object" }, "MergeProtectionRuleConditionsModel": { "items": { "anyOf": [ { "$ref": "#/$defs/AndCondition" }, { "$ref": "#/$defs/OrCondition" }, { "$ref": "#/$defs/NegationCondition" }, { "$ref": "#/$defs/RuleConditionModel" } ] }, "maxItems": 500, "title": "List of conditions", "type": "array" }, "MergeProtectionRuleModel": { "additionalProperties": false, "properties": { "name": { "description": "The name of the rule", "title": "Name", "type": "string" }, "if": { "$ref": "#/$defs/MergeProtectionRuleConditionsModel", "description": "The conditions to check before applying the rule" }, "success_conditions": { "$ref": "#/$defs/MergeProtectionRuleConditionsModel", "description": "The conditions to check to validate the rule" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "A description of the rule", "title": "Description" } }, "required": [ "name", "if", "success_conditions" ], "title": "MergeProtectionRuleModel", "type": "object" }, "MergeProtectionRulesModel": { "items": { "$ref": "#/$defs/MergeProtectionRuleModel" }, "maxItems": 100, "title": "MergeProtectionRulesModel", "type": "array" }, "MergeProtectionsModel": { "additionalProperties": false, "properties": { "reporting_method": { "default": "check-runs", "description": "The merge protection reporting method", "enum": [ "check-runs", "deployments" ], "title": "Reporting Method", "type": "string" }, "post_comment": { "default": true, "description": "Whether to post merge protection status comments on pull requests", "title": "Post Comment", "type": "boolean" } }, "title": "MergeProtectionsModel", "type": "object" }, "MergeQueueModel": { "additionalProperties": false, "properties": { "max_parallel_checks": { "default": 5, "description": "The maximum number of speculative checks allowed to run at the same time. Setting this value to 1 disables speculative checks.", "maximum": 128, "minimum": 1, "title": "Max Parallel Checks", "type": "integer" }, "reset_on_external_merge": { "default": "always", "description": "Defines the behavior of the merge queue when something is merged outside of the queue.\n\"always\": The queue is reset when an external merge is detected. All queued pull requests are re-evaluated to ensure correctness based on the new base branch state.\n\"never\": The queue remains unchanged. It does not reset or re-evaluate based on the external merge.\n", "enum": [ "never", "always" ], "title": "Reset On External Merge", "type": "string" } }, "title": "MergeQueueModel", "type": "object" }, "NegationCondition": { "additionalProperties": false, "properties": { "not": { "anyOf": [ { "$ref": "#/$defs/AndCondition" }, { "$ref": "#/$defs/OrCondition" }, { "$ref": "#/$defs/RuleConditionModel" } ], "title": "Not" } }, "required": [ "not" ], "title": "NegationCondition", "type": "object" }, "OrCondition": { "additionalProperties": false, "properties": { "or": { "$ref": "#/$defs/ListOfRuleConditions" } }, "required": [ "or" ], "title": "OrCondition", "type": "object" }, "PartitionRuleConditionsModel": { "items": { "anyOf": [ { "$ref": "#/$defs/AndCondition" }, { "$ref": "#/$defs/OrCondition" }, { "$ref": "#/$defs/NegationCondition" }, { "$ref": "#/$defs/RuleConditionModel" } ] }, "maxItems": 500, "title": "List of conditions", "type": "array" }, "PartitionRuleModel": { "additionalProperties": false, "properties": { "name": { "description": "Name of the partition", "title": "Name", "type": "string" }, "conditions": { "$ref": "#/$defs/PartitionRuleConditionsModel", "description": "List of conditions to determine the partition(s) in which the pull request will be queued. If a pull request matches no partition, it is added to the fallback partition if defined. Otherwise it is added to every partition." }, "fallback_partition": { "default": false, "description": "Allow the partition to work as the fallback partition. There can be only one fallback partition.", "title": "Fallback Partition", "type": "boolean" } }, "required": [ "name" ], "title": "PartitionRuleModel", "type": "object" }, "PartitionRulesModel": { "items": { "$ref": "#/$defs/PartitionRuleModel" }, "maxItems": 50, "title": "PartitionRulesModel", "type": "array" }, "PostCheckActionModel": { "additionalProperties": false, "properties": { "title": { "default": "'{{ check_rule_name }}'{% if check_status == 'success' %} succeeded{% elif check_status == 'failure' %} failed{% endif %}", "description": "The title of the check.", "format": "template", "title": "Template", "type": "string" }, "summary": { "default": "{{ check_conditions }}", "description": "The summary of the check.", "format": "template", "title": "Template", "type": "string" }, "success_conditions": { "anyOf": [ { "$ref": "#/$defs/ListOfRuleConditions" }, { "type": "null" } ], "default": null, "description": "List of conditions to match to mark the pull request check as succeeded, otherwise, it will be marked as failing. If unset, the conditions from the rule that triggers this action are used." }, "neutral_conditions": { "anyOf": [ { "$ref": "#/$defs/ListOfRuleConditions" }, { "type": "null" } ], "default": null, "description": "List of conditions to match to mark the pull request check as neutral, otherwise, it will be marked as failing." } }, "title": "PostCheckActionModel", "type": "object" }, "PriorityRuleConditionsModel": { "items": { "anyOf": [ { "$ref": "#/$defs/AndCondition" }, { "$ref": "#/$defs/OrCondition" }, { "$ref": "#/$defs/NegationCondition" }, { "$ref": "#/$defs/RuleConditionModel" } ] }, "maxItems": 500, "title": "List of conditions", "type": "array" }, "PriorityRuleModel": { "additionalProperties": false, "properties": { "name": { "description": "Name of the rule.", "title": "Name", "type": "string" }, "conditions": { "$ref": "#/$defs/PriorityRuleConditionsModel", "description": "The list of conditions that needs to match to assign priority to the pull request." }, "priority": { "anyOf": [ { "enum": [ "high", "medium", "low" ], "type": "string" }, { "type": "integer" } ], "default": "medium", "description": "The priority of the pull request.", "title": "Priority" }, "allow_checks_interruption": { "default": true, "description": "Allow interrupting the ongoing checks when the pull request entering the queue has a higher priority than the queued one(s). If set to false, a pull request with higher priority will be inserted just after the pull requests that have checks running.", "title": "Allow Checks Interruption", "type": "boolean" } }, "required": [ "name", "conditions" ], "title": "PriorityRuleModel", "type": "object" }, "PriorityRulesModel": { "items": { "$ref": "#/$defs/PriorityRuleModel" }, "maxItems": 50, "title": "PriorityRulesModel", "type": "array" }, "PullRequestAttributes": { "properties": { "draft": { "description": "Whether the pull request is in draft state.", "title": "Draft", "type": "boolean" }, "merged": { "description": "Whether the pull request is merged.", "title": "Merged", "type": "boolean" }, "mergify-configuration-changed": { "description": "Whether the pull request contains changes in the configuration file.", "title": "Mergify configuration changed", "type": "boolean" }, "closed": { "description": "Whether the pull request is closed.", "title": "Closed", "type": "boolean" }, "locked": { "description": "Whether the pull request is locked.", "title": "Locked", "type": "boolean" }, "linear-history": { "description": "Whether the pull request commits history is linear (no merge commit).", "title": "Linear history", "type": "boolean" }, "conflict": { "description": "Whether the pull request is conflicting with its base branch.", "title": "Conflict", "type": "boolean" }, "branch-protection-review-decision": { "anyOf": [ { "enum": [ "APPROVED", "CHANGES_REQUESTED", "REVIEW_REQUIRED" ], "type": "string" }, { "type": "null" } ], "description": "The review decision. This indicates if `CODEOWNERS` have reviewed the pull request when the `Require Review from Code Owners` branch protection rule is enabled.", "title": "Branch protection review decision" }, "number": { "description": "The pull request number.", "minimum": 0, "title": "Number", "type": "integer" }, "queue-position": { "description": "The position of the pull request in its queue if queued. The first pull request in the queue has position 0. The value is set to -1 if the pull request is not queued. If you are using partitions, this returns the maximum position of the pull request from all the partitions it is queued in.", "title": "Queue position", "type": "integer" }, "author": { "description": "The GitHub user or team login of the author of the pull request.", "title": "Author", "type": "string" }, "merged-by": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "The GitHub user that merged the pull request.", "title": "Merged by" }, "merge-commit-sha": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "The merge commit SHA of the pull request returned by GitHub.", "title": "Merge commit sha" }, "milestone": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "The milestone title associated to the pull request.", "title": "Milestone" }, "base": { "description": "The name of the branch the pull request should be pulled into.", "title": "Base", "type": "string" }, "head": { "description": "The name of the branch where the pull request changes are implemented.", "title": "Head", "type": "string" }, "head-repo-full-name": { "description": "The head branch repository full name (complete version with the organization name).", "title": "Head repo full name", "type": "string" }, "title": { "description": "The title of the pull request.", "title": "Title", "type": "string" }, "body": { "description": "The content of the pull request description without Markdown/HTML comments.", "title": "Body", "type": "string" }, "body-raw": { "description": "The content of the pull request description.", "title": "Body raw", "type": "string" }, "repository-name": { "description": "The current repository name (short version without the organization name).", "title": "Repository name", "type": "string" }, "repository-full-name": { "description": "The current repository full name (complete version with the organization name).", "title": "Repository full name", "type": "string" }, "queue-dequeue-reason": { "anyOf": [ { "const": "NONE", "type": "string" }, { "const": "PR_MERGED", "type": "string" }, { "enum": [ "PR_DEQUEUED", "PR_DEQUEUED_FROM_PARTITION", "PR_AHEAD_DEQUEUED", "BATCH_AHEAD_FAILED", "PR_WITH_HIGHER_PRIORITY_QUEUED", "PR_QUEUED_TWICE", "SPECULATIVE_CHECK_NUMBER_REDUCED", "CHECKS_TIMEOUT", "CHECKS_FAILED", "QUEUE_RULE_MISSING", "UNEXPECTED_QUEUE_CHANGE", "BASE_BRANCH_MISSING", "BASE_BRANCH_CHANGED", "PR_UNEXPECTEDLY_FAILED_TO_MERGE", "BATCH_MAX_FAILURE_RESOLUTION_ATTEMPTS", "PR_CHECKS_STOPPED_BECAUSE_MERGE_QUEUE_PAUSE", "CONFLICT_WITH_BASE_BRANCH", "CONFLICT_WITH_PULL_AHEAD", "BRANCH_UPDATE_FAILED", "DRAFT_PULL_REQUEST_CHANGED", "PULL_REQUEST_UPDATED", "MERGE_QUEUE_RESET", "INCOMPATIBILITY_WITH_BRANCH_PROTECTIONS", "PR_MANUALLY_MERGED", "DRAFT_PULL_REQUEST_CREATION_FAILED", "CONFIGURATION_CHANGED" ], "type": "string" }, { "type": "null" } ], "description": "A dequeue code for when a pull request has been disembarked from the merge queue.", "title": "Queue dequeue reason" }, "queue-name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "The name of the queue containing the pull request.", "title": "Queue name" }, "queue-partition-name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "The name of the partitions the pull request is queued in.", "title": "Queue partition name" }, "assignee": { "description": "The list of GitHub user or team login that are assigned to the pull request. Team logins are prefixed with the `@` character and must belong to the repository organization.", "items": { "type": "string" }, "title": "Assignee", "type": "array" }, "label": { "description": "The list of labels of the pull request.", "items": { "type": "string" }, "title": "Label", "type": "array" }, "review-requested": { "description": "The list of GitHub user or team login that were requested to review the pull request. Team logins are prefixed with the @ character. This only matches reviewers with `admin`, `write` or `maintain` permission on the repository.", "items": { "type": "string" }, "title": "Review requested", "type": "array" }, "approved-reviews-by": { "description": "The list of GitHub user or team login that approved the pull request. Team logins are prefixed with the `@` character and must belong to the repository organization. This only matches reviewers with `admin`, `write` or `maintain` permission on the repository.", "items": { "type": "string" }, "title": "Approved reviews by", "type": "array" }, "dismissed-reviews-by": { "description": "The list of GitHub user login that have their review dismissed in the pull request.", "items": { "type": "string" }, "title": "Dismissed reviews by", "type": "array" }, "changes-requested-reviews-by": { "description": "The list of GitHub user or team login that have requested changes in a review for the pull request.", "items": { "type": "string" }, "title": "Changes requested reviews by", "type": "array" }, "commented-reviews-by": { "description": "The list of GitHub user that have commented in a review for the pull request. This only matches reviewers with `admin`, `write` or `maintain` permission on the repository.", "items": { "type": "string" }, "title": "Commented reviews by", "type": "array" }, "check-success": { "description": "The list of checks that successfully passed for the pull request.", "items": { "type": "string" }, "title": "Check success", "type": "array" }, "check-failure": { "description": "The list of checks that failed for the pull request. Checks that report being cancelled, timed out, and action required are also considered as failures.", "items": { "type": "string" }, "title": "Check failure", "type": "array" }, "check-neutral": { "description": "The list of checks that are neutral for the pull request. ", "items": { "type": "string" }, "title": "Check neutral", "type": "array" }, "check-timed-out": { "description": "The list of checks that timed out for the pull request.", "items": { "type": "string" }, "title": "Check timed out", "type": "array" }, "check-skipped": { "description": "The list of checks that was skipped for the pull request.", "items": { "type": "string" }, "title": "Check skipped", "type": "array" }, "check-pending": { "description": "The list of checks that are pending for the pull request.", "items": { "type": "string" }, "title": "Check pending", "type": "array" }, "check": { "description": "The list of checks for that pull request.", "items": { "type": "string" }, "title": "Check", "type": "array" }, "check-stale": { "description": "The list of checks that are stale for the pull request.", "items": { "type": "string" }, "title": "Check stale", "type": "array" }, "commits-unverified": { "description": "The list of commit messages that are marked as unverified by GitHub.", "items": { "type": "string" }, "title": "Commits unverified", "type": "array" }, "deployment-success": { "description": "The list of deployments that successfully passed for the pull request.", "items": { "type": "string" }, "title": "Deployment success", "type": "array" }, "deployment-failure": { "description": "The list of deployments that failed for the pull request.", "items": { "type": "string" }, "title": "Deployment failure", "type": "array" }, "review-threads-resolved": { "description": "The list of bodies associated to review threads that are marked as resolved by GitHub.", "items": { "type": "string" }, "title": "Review threads resolved", "type": "array" }, "review-threads-unresolved": { "description": "The list of bodies associated to review threads that are NOT marked as resolved by GitHub.", "items": { "type": "string" }, "title": "Review threads unresolved", "type": "array" }, "files": { "description": "The files that are modified, deleted or added by the pull request.", "items": { "type": "string" }, "title": "Files", "type": "array" }, "added-files": { "description": "The files that are added by the pull request.", "items": { "type": "string" }, "title": "Added files", "type": "array" }, "modified-files": { "description": "The files that are modified by the pull request.", "items": { "type": "string" }, "title": "Modified files", "type": "array" }, "removed-files": { "description": "The files that are removed by the pull request.", "items": { "type": "string" }, "title": "Removed files", "type": "array" }, "added-lines": { "description": "The lines that are added by the pull request. Only usable as `#added-lines` for the number of added lines.", "items": { "type": "string" }, "title": "Added lines", "type": "array" }, "modified-lines": { "description": "The lines that are modified by the pull request. Only usable as `#modified-lines` for the number of modified lines.", "items": { "type": "string" }, "title": "Modified lines", "type": "array" }, "deleted-lines": { "description": "The lines that are deleted by the pull request. Only usable as `#deleted-lines` for the number of deleted lines.", "items": { "type": "string" }, "title": "Deleted lines", "type": "array" }, "co-authors": { "description": "The list of co-authors on the pull request (excluding merge commits and bots).", "items": { "$ref": "#/$defs/CommitAuthor" }, "title": "Co authors", "type": "array" }, "commits-behind": { "description": "The list of commits between the head of the base branch and the base of the pull request. This can only be used with the length operator as `#commits-behind`.", "items": { "type": "string" }, "title": "Commits behind", "type": "array" }, "depends-on": { "description": "The list of dependencies to other pull request in the format `owner/repo#prnumber`.", "items": { "type": "string" }, "title": "Depends on", "type": "array" }, "dependabot-dependency-name": { "description": "The dependency-name value included in the Dependabot commit message.", "items": { "type": "string" }, "title": "Dependabot dependency name", "type": "array" }, "dependabot-dependency-type": { "description": "The dependency-type value included in the Dependabot commit message.", "items": { "type": "string" }, "title": "Dependabot dependency type", "type": "array" }, "dependabot-update-type": { "description": "The update-type value included in the Dependabot commit message.", "items": { "type": "string" }, "title": "Dependabot update type", "type": "array" }, "commits": { "description": "The list of commits of the pull request. The index 0 is the first commit, while -1 is the last commit.", "items": { "$ref": "#/$defs/Commit" }, "title": "Commits", "type": "array" }, "current-datetime": { "description": "The current date and time.", "format": "date-time", "title": "Current datetime", "type": "string" }, "updated-at": { "description": "The time the pull request was updated at.", "format": "date-time", "title": "Updated at", "type": "string" }, "created-at": { "description": "The time the pull request was created at.", "format": "date-time", "title": "Created at", "type": "string" }, "closed-at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "The time the pull request was closed at.", "title": "Closed at" }, "merged-at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "The time the pull request was merged at.", "title": "Merged at" }, "queued-at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "The time the pull request was queued at for merge.", "title": "Queued at" }, "queue-merge-started-at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "The time the pull request mergeability checks have started at. This attribute does not work yet when using partition rules.", "title": "Queue merge started at" }, "schedule": { "description": "The current time will be compared against this schedule to validate this attribute.", "title": "Schedule", "type": "string" }, "sender-permission": { "$ref": "#/$defs/GitHubRepositoryPermission", "description": "The permission of the command author.", "title": "Sender permission" }, "sender": { "description": "The GitHub login of the command author.", "title": "Sender", "type": "string" }, "updates": { "description": "The list of updates done on an opened pull request.", "items": { "$ref": "#/$defs/PullRequestHeadShaHistoryDict" }, "title": "Updates", "type": "array" } }, "required": [ "draft", "merged", "mergify-configuration-changed", "closed", "locked", "linear-history", "conflict", "branch-protection-review-decision", "number", "queue-position", "author", "merged-by", "merge-commit-sha", "milestone", "base", "head", "head-repo-full-name", "title", "body", "body-raw", "repository-name", "repository-full-name", "queue-dequeue-reason", "queue-name", "queue-partition-name", "assignee", "label", "review-requested", "approved-reviews-by", "dismissed-reviews-by", "changes-requested-reviews-by", "commented-reviews-by", "check-success", "check-failure", "check-neutral", "check-timed-out", "check-skipped", "check-pending", "check", "check-stale", "commits-unverified", "deployment-success", "deployment-failure", "review-threads-resolved", "review-threads-unresolved", "files", "added-files", "modified-files", "removed-files", "added-lines", "modified-lines", "deleted-lines", "co-authors", "commits-behind", "depends-on", "dependabot-dependency-name", "dependabot-dependency-type", "dependabot-update-type", "commits", "current-datetime", "updated-at", "created-at", "closed-at", "merged-at", "queued-at", "queue-merge-started-at", "schedule", "sender-permission", "sender", "updates" ], "title": "PullRequestAttributes", "type": "object" }, "PullRequestHeadShaHistoryDict": { "properties": { "head-sha": { "title": "Head sha", "type": "string" }, "timestamp": { "title": "Timestamp", "type": "string" } }, "required": [ "head-sha", "timestamp" ], "title": "PullRequestHeadShaHistoryDict", "type": "object" }, "PullRequestRuleConditionsModel": { "items": { "anyOf": [ { "$ref": "#/$defs/AndCondition" }, { "$ref": "#/$defs/OrCondition" }, { "$ref": "#/$defs/NegationCondition" }, { "$ref": "#/$defs/RuleConditionModel" } ] }, "maxItems": 500, "title": "List of conditions", "type": "array" }, "PullRequestRuleModel": { "additionalProperties": false, "properties": { "name": { "description": "The name of the rule. This is used when reporting information about a rule. It's not possible to have two rules with the same name.", "title": "Name", "type": "string" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "A description of the rule.", "title": "Description" }, "disabled": { "anyOf": [ { "$ref": "#/$defs/DisabledDict" }, { "type": "null" } ], "default": null, "description": "If the rule is disabled, the reason why it's disabled." }, "conditions": { "$ref": "#/$defs/PullRequestRuleConditionsModel", "description": "The conditions that must be met for the rule to be evaluated." }, "actions": { "$ref": "#/$defs/ActionsModel", "description": "The actions to perform when the rule matches." } }, "required": [ "name", "conditions", "actions" ], "title": "Pull Request Rule", "type": "object" }, "PullRequestRulesModel": { "items": { "$ref": "#/$defs/PullRequestRuleModel" }, "maxItems": 200, "title": "PullRequestRulesModel", "type": "array" }, "QueueActionModel": { "additionalProperties": false, "properties": { "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "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" } }, "title": "QueueActionModel", "type": "object" }, "QueueRuleMergeConditionsModel": { "items": { "anyOf": [ { "$ref": "#/$defs/AndCondition" }, { "$ref": "#/$defs/OrCondition" }, { "$ref": "#/$defs/NegationCondition" }, { "$ref": "#/$defs/RuleConditionModel" } ] }, "maxItems": 500, "title": "List of conditions", "type": "array" }, "QueueRuleModel": { "additionalProperties": false, "properties": { "queue_conditions": { "$ref": "#/$defs/QueueRuleMergeConditionsModel", "description": "The list of conditions that needs to match to queue the pull request." }, "merge_conditions": { "$ref": "#/$defs/QueueRuleMergeConditionsModel", "description": "The list of conditions to match to get the queued pull request merged. This automatically includes the `queue_conditions`. In case of speculative merge pull request, the merge conditions starting by check- are evaluated against the temporary pull request instead of the original one." }, "branch_protection_injection_mode": { "default": "queue", "description": "Branch protections conditions injection mode to use.\n\n- `queue` will inject branch protections conditions as required conditions for queuing and merging pull requests.\n- `merge` will inject branch protections conditions as required conditions only for merging pull requests.\n- `none` will disable branch protections. This mode is supported only on queues using a `merge_bot_account` with admin rights.", "enum": [ "queue", "merge", "none" ], "title": "Branch Protection Injection Mode", "type": "string" }, "batch_size": { "default": 1, "description": "The maximum number of pull requests per speculative check in the queue. Must be between 1 and 128.", "maximum": 128, "minimum": 1, "title": "Batch Size", "type": "integer" }, "batch_max_wait_time": { "default": "30 seconds", "description": "The maximum amount of time to wait before creating a batch when the batch is not full.", "format": "duration", "title": "Batch Max Wait Time", "type": "string" }, "allow_inplace_checks": { "default": true, "description": "Allow to update or rebase the original pull request to check its mergeability when first in the queue and not part of a batch (see: `batch_size`) or speculative check (see: `max_parallel_checks`).", "title": "Allow Inplace Checks", "type": "boolean" }, "checks_timeout": { "anyOf": [ { "format": "duration", "type": "string" }, { "type": "null" } ], "default": null, "description": "The amount of time the merge queue waits for pending checks to return before dequeueing pull requests. This cannot be less than 60 seconds.", "title": "Checks Timeout" }, "draft_bot_account": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Mergify can impersonate a GitHub user to create its draft pull requests. If no `draft_bot_account` is set, Mergify creates the draft pull request itself. The user account must have already been logged in Mergify dashboard once and have admin, write or maintain permission.", "title": "Draft Bot Account" }, "queue_branch_merge_method": { "anyOf": [ { "const": "fast-forward", "type": "string" }, { "type": "null" } ], "default": null, "description": "If set to `fast-forward`, Mergify will merge the draft pull request instead of merging the original pull request that has been checked. This only works when `merge_method` is set to `merge`.", "title": "Queue Branch Merge Method" }, "queue_branch_prefix": { "default": "mergify/merge-queue/", "description": "Prefix for the merge queue branch name", "format": "template", "title": "Template", "type": "string" }, "allow_queue_branch_edit": { "default": false, "description": "When creating a branch for a queue, if the commits of this branch are edited by an entity external to Mergify, Mergify dequeues all pull requests embarked in the branch and report the issue as a failure. If set to `true`, Mergify will allow such modifications and trust the content of the branch. Make sure only Mergify and your external application are allowed to edit these branches.", "title": "Allow Queue Branch Edit", "type": "boolean" }, "batch_max_failure_resolution_attempts": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "The number of attempts to resolve a batch failure before dequeueing pull requests. By default, Mergify will attempt to resolve a batch failure by splitting the batch multiple times until it finds the root cause of the failure. You can stop this process earlier by limiting the number of resolution attempts. Setting this to 0 will dequeue all the pull requests from a batch when a batch fails.", "title": "Batch Max Failure Resolution Attempts" }, "merge_method": { "anyOf": [ { "enum": [ "merge", "rebase", "squash", "fast-forward" ], "type": "string" }, { "type": "null" } ], "default": null, "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" }, "autosquash": { "default": false, "description": "This option is relevant only if you do in place checks and if you use the `rebase` option of the update_method. It will automatically squash your commits beginning by `squash!`, `fixup!` or `amend!`, just like the option with the same name when doing a `git rebase`.", "title": "Autosquash", "type": "boolean" }, "autoqueue": { "default": false, "description": "When set to true, automatically add a pull request to the queue when it matches the queue conditions. When false, the pull request must be manually queued.", "title": "Autoqueue", "type": "boolean" }, "update_method": { "anyOf": [ { "enum": [ "rebase", "merge" ], "type": "string" }, { "type": "null" } ], "default": null, "description": "Method to use to update the pull request with its base branch when the check is done in place.\nPossible 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" } ], "default": null, "description": "Template to use as the commit message when using the merge or squash merge method.", "title": "Commit Message Template" }, "merge_bot_account": { "anyOf": [ { "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" }, { "type": "null" } ], "default": null, "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" } ], "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" }, "name": { "title": "Name", "type": "string" } }, "required": [ "name" ], "title": "QueueRuleModel", "type": "object" }, "QueueRuleModelForDefaults": { "additionalProperties": false, "properties": { "queue_conditions": { "$ref": "#/$defs/QueueRuleMergeConditionsModel", "description": "The list of conditions that needs to match to queue the pull request." }, "merge_conditions": { "$ref": "#/$defs/QueueRuleMergeConditionsModel", "description": "The list of conditions to match to get the queued pull request merged. This automatically includes the `queue_conditions`. In case of speculative merge pull request, the merge conditions starting by check- are evaluated against the temporary pull request instead of the original one." }, "branch_protection_injection_mode": { "default": "queue", "description": "Branch protections conditions injection mode to use.\n\n- `queue` will inject branch protections conditions as required conditions for queuing and merging pull requests.\n- `merge` will inject branch protections conditions as required conditions only for merging pull requests.\n- `none` will disable branch protections. This mode is supported only on queues using a `merge_bot_account` with admin rights.", "enum": [ "queue", "merge", "none" ], "title": "Branch Protection Injection Mode", "type": "string" }, "batch_size": { "default": 1, "description": "The maximum number of pull requests per speculative check in the queue. Must be between 1 and 128.", "maximum": 128, "minimum": 1, "title": "Batch Size", "type": "integer" }, "batch_max_wait_time": { "default": "30 seconds", "description": "The maximum amount of time to wait before creating a batch when the batch is not full.", "format": "duration", "title": "Batch Max Wait Time", "type": "string" }, "allow_inplace_checks": { "default": true, "description": "Allow to update or rebase the original pull request to check its mergeability when first in the queue and not part of a batch (see: `batch_size`) or speculative check (see: `max_parallel_checks`).", "title": "Allow Inplace Checks", "type": "boolean" }, "checks_timeout": { "anyOf": [ { "format": "duration", "type": "string" }, { "type": "null" } ], "default": null, "description": "The amount of time the merge queue waits for pending checks to return before dequeueing pull requests. This cannot be less than 60 seconds.", "title": "Checks Timeout" }, "draft_bot_account": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Mergify can impersonate a GitHub user to create its draft pull requests. If no `draft_bot_account` is set, Mergify creates the draft pull request itself. The user account must have already been logged in Mergify dashboard once and have admin, write or maintain permission.", "title": "Draft Bot Account" }, "queue_branch_merge_method": { "anyOf": [ { "const": "fast-forward", "type": "string" }, { "type": "null" } ], "default": null, "description": "If set to `fast-forward`, Mergify will merge the draft pull request instead of merging the original pull request that has been checked. This only works when `merge_method` is set to `merge`.", "title": "Queue Branch Merge Method" }, "queue_branch_prefix": { "default": "mergify/merge-queue/", "description": "Prefix for the merge queue branch name", "format": "template", "title": "Template", "type": "string" }, "allow_queue_branch_edit": { "default": false, "description": "When creating a branch for a queue, if the commits of this branch are edited by an entity external to Mergify, Mergify dequeues all pull requests embarked in the branch and report the issue as a failure. If set to `true`, Mergify will allow such modifications and trust the content of the branch. Make sure only Mergify and your external application are allowed to edit these branches.", "title": "Allow Queue Branch Edit", "type": "boolean" }, "batch_max_failure_resolution_attempts": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "The number of attempts to resolve a batch failure before dequeueing pull requests. By default, Mergify will attempt to resolve a batch failure by splitting the batch multiple times until it finds the root cause of the failure. You can stop this process earlier by limiting the number of resolution attempts. Setting this to 0 will dequeue all the pull requests from a batch when a batch fails.", "title": "Batch Max Failure Resolution Attempts" }, "merge_method": { "anyOf": [ { "enum": [ "merge", "rebase", "squash", "fast-forward" ], "type": "string" }, { "type": "null" } ], "default": null, "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" }, "autosquash": { "default": false, "description": "This option is relevant only if you do in place checks and if you use the `rebase` option of the update_method. It will automatically squash your commits beginning by `squash!`, `fixup!` or `amend!`, just like the option with the same name when doing a `git rebase`.", "title": "Autosquash", "type": "boolean" }, "autoqueue": { "default": false, "description": "When set to true, automatically add a pull request to the queue when it matches the queue conditions. When false, the pull request must be manually queued.", "title": "Autoqueue", "type": "boolean" }, "update_method": { "anyOf": [ { "enum": [ "rebase", "merge" ], "type": "string" }, { "type": "null" } ], "default": null, "description": "Method to use to update the pull request with its base branch when the check is done in place.\nPossible 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" } ], "default": null, "description": "Template to use as the commit message when using the merge or squash merge method.", "title": "Commit Message Template" }, "merge_bot_account": { "anyOf": [ { "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" }, { "type": "null" } ], "default": null, "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" } ], "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" } }, "title": "QueueRuleModelForDefaults", "type": "object" }, "QueueRulesModel": { "items": { "$ref": "#/$defs/QueueRuleModel" }, "maxItems": 50, "title": "QueueRulesModel", "type": "array" }, "RebaseActionModel": { "additionalProperties": false, "properties": { "bot_account": { "anyOf": [ { "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" }, { "type": "null" } ], "default": null, "description": "To rebase, Mergify needs to impersonate a GitHub user. You can specify the account to use with this option. If no `bot_account` is set, Mergify picks the pull request author. The user account must have already been logged in Mergify dashboard once.\n\n**Warning:** Due to security on GitHub side, rebase cannot be performed on pull requests created by bot accounts without explicitly setting the `bot_account` impersonation option.", "title": "Bot Account" }, "autosquash": { "default": true, "description": "When set to `true`, commits starting with `fixup!`, `squash!` and `amend!` are squashed during the rebase.", "title": "Autosquash", "type": "boolean" } }, "title": "RebaseActionModel", "type": "object" }, "RequestReviewsActionModel": { "additionalProperties": false, "properties": { "bot_account": { "anyOf": [ { "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" }, { "type": "null" } ], "default": null, "description": "Mergify can impersonate a GitHub user to request a review on a pull request. If no `bot_account` is set, Mergify will request the review itself.", "title": "Bot Account" }, "random_count": { "anyOf": [ { "maximum": 15, "minimum": 1, "type": "integer" }, { "type": "null" } ], "default": null, "description": "Pick random users and teams from the provided lists. When `random_count` is specified, `users` and `teams` can be a dictionary where the key is the login and the value is the weight to use. Weight must be between 1 and 15 included.", "title": "Random Count" }, "users": { "anyOf": [ { "items": { "type": "string" }, "maxItems": 150, "type": "array" }, { "additionalProperties": { "default": 1, "maximum": 65535, "minimum": 1, "type": "integer" }, "type": "object" } ], "description": "The usernames to request reviews from.", "title": "Users" }, "teams": { "anyOf": [ { "items": { "type": "string" }, "maxItems": 150, "type": "array" }, { "additionalProperties": { "default": 1, "maximum": 65535, "minimum": 1, "type": "integer" }, "type": "object" } ], "description": "The team names to request reviews from.", "title": "Teams" }, "users_from_teams": { "anyOf": [ { "items": { "type": "string" }, "maxItems": 150, "type": "array" }, { "additionalProperties": { "default": 1, "maximum": 65535, "minimum": 1, "type": "integer" }, "type": "object" } ], "description": "The team names to get the list of users to request reviews from.", "title": "Users From Teams" } }, "title": "RequestReviewsActionModel", "type": "object" }, "ReviewActionModel": { "additionalProperties": false, "properties": { "type": { "default": "APPROVE", "description": "The type of review to post", "enum": [ "APPROVE", "REQUEST_CHANGES", "COMMENT" ], "title": "Type", "type": "string" }, "message": { "anyOf": [ { "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" }, { "type": "null" } ], "default": null, "description": "The message to post in the review", "title": "Message" }, "bot_account": { "anyOf": [ { "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" }, { "type": "null" } ], "default": null, "description": "Mergify can impersonate a GitHub user to review a pull request. If no `bot_account` is set, Mergify will review the pull request itself.", "title": "Bot Account" } }, "title": "ReviewActionModel", "type": "object" }, "RuleConditionModel": { "description": "Model defining a single rule condition 'leaf of a condition tree'", "title": "RuleConditionModel", "type": "string" }, "SquashActionModel": { "additionalProperties": false, "properties": { "bot_account": { "anyOf": [ { "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" }, { "type": "null" } ], "default": null, "description": "Mergify can impersonate a GitHub user to squash a pull request. If no `bot_account` is set, Mergify will squash the pull request itself", "title": "Bot Account" }, "commit_message": { "default": "all-commits", "description": "Defines what commit message to use for the squashed commit if no commit message is defined in the pull request body.\nPossible values are:\n\n- `all-commits` to use the same format as GitHub squashed merge commit.\n- `first-commit` to use the message of the first commit of the pull request.\n- `title+body` means to use the title and body from the pull request itself as the commit message. The pull request number will be added to end of the title.", "enum": [ "all-commits", "first-commit", "title+body" ], "title": "Commit Message", "type": "string" } }, "title": "SquashActionModel", "type": "object" }, "UpdateActionModel": { "additionalProperties": false, "properties": { "bot_account": { "anyOf": [ { "description": "A string template using the Jinja2 syntax.", "format": "template", "title": "Template", "type": "string" }, { "type": "null" } ], "default": null, "description": "Mergify can impersonate a GitHub user to update a pull request. If no `bot_account` is set, Mergify will update the pull request itself.", "title": "Bot Account" } }, "title": "UpdateActionModel", "type": "object" } }, "title": "MergifyConfigModel", "type": "object", "properties": { "shared": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "default": null, "title": "Shared" }, "extends": { "anyOf": [ { "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Extends" }, "defaults": { "$ref": "#/$defs/DefaultsRulesModel" }, "commands_restrictions": { "$ref": "#/$defs/CommandsRestrictionsRulesModel" }, "pull_request_rules": { "$ref": "#/$defs/PullRequestRulesModel" }, "queue_rules": { "$ref": "#/$defs/QueueRulesModel" }, "partition_rules": { "$ref": "#/$defs/PartitionRulesModel" }, "merge_protections": { "$ref": "#/$defs/MergeProtectionRulesModel" }, "priority_rules": { "$ref": "#/$defs/PriorityRulesModel" }, "merge_queue": { "$ref": "#/$defs/MergeQueueModel" }, "merge_protections_settings": { "$ref": "#/$defs/MergeProtectionsModel" } }, "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false }././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/readthedocs.json0000644000175100017510000003115715062662115030452 0ustar00runnerrunner{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$comment": "https://docs.readthedocs.io/en/stable/config-file/index.html", "title": "Read the Docs", "description": "Read the Docs configuration file.", "type": "object", "properties": { "version": { "title": "Version", "description": "The version of the spec to use.", "type": "number", "enum": [2] }, "formats": { "title": "Formats", "description": "Formats of the documentation to be built.", "anyOf": [ { "type": "array", "items": { "enum": ["htmlzip", "pdf", "epub"] } }, { "enum": ["all"] } ], "default": [] }, "conda": { "title": "Conda", "description": "Configuration for Conda support.", "type": "object", "properties": { "environment": { "title": "Environment", "description": "The path to the Conda environment file from the root of the project.", "type": "string" } }, "required": ["environment"] }, "build": { "title": "Build", "description": "Configuration for the documentation build process.", "type": "object", "properties": { "os": { "title": "Operating System", "description": "Operating system to be used in the build.", "enum": [ "ubuntu-20.04", "ubuntu-22.04", "ubuntu-24.04", "ubuntu-lts-latest" ] }, "jobs": { "title": "Build jobs", "description": "Run custom commands at any point in the build process", "type": "object", "properties": { "post_checkout": { "type": "array", "items": { "title": "Custom commands", "type": "string" } }, "pre_system_dependencies": { "type": "array", "items": { "title": "Custom commands", "type": "string" } }, "post_system_dependencies": { "type": "array", "items": { "title": "Custom commands", "type": "string" } }, "pre_create_environment": { "type": "array", "items": { "title": "Custom commands", "type": "string" } }, "create_environment": { "description": "Override the default environment creation process.", "type": "array", "items": { "title": "Custom commands", "type": "string" } }, "post_create_environment": { "type": "array", "items": { "title": "Custom commands", "type": "string" } }, "pre_install": { "type": "array", "items": { "title": "Custom commands", "type": "string" } }, "install": { "description": "Override the default installation process.", "type": "array", "items": { "title": "Custom commands", "type": "string" } }, "post_install": { "type": "array", "items": { "title": "Custom commands", "type": "string" } }, "pre_build": { "type": "array", "items": { "title": "Custom commands", "type": "string" } }, "build": { "description": "Override the default build process.", "type": "object", "additionalProperties": false, "properties": { "html": { "type": "array", "items": { "title": "Custom commands", "type": "string" } }, "htmlzip": { "type": "array", "items": { "title": "Custom commands", "type": "string" } }, "pdf": { "type": "array", "items": { "title": "Custom commands", "type": "string" } }, "epub": { "type": "array", "items": { "title": "Custom commands", "type": "string" } } } }, "post_build": { "type": "array", "items": { "title": "Custom commands", "type": "string" } } }, "additionalProperties": false }, "tools": { "title": "Tools", "description": "Tools and their version to be used in the build.", "type": "object", "properties": { "python": { "enum": [ "2.7", "3", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "latest", "miniconda3-4.7", "miniconda3-3.12-24.1", "miniconda3-3.12-24.9", "miniconda-latest", "mambaforge-4.10", "mambaforge-22.9", "mambaforge-23.11", "mambaforge-latest" ] }, "nodejs": { "enum": ["14", "16", "18", "19", "20", "22", "23", "latest"] }, "ruby": { "enum": ["3.3", "3.4", "latest"] }, "rust": { "enum": [ "1.55", "1.61", "1.64", "1.70", "1.75", "1.78", "1.82", "1.86", "latest" ] }, "golang": { "enum": [ "1.17", "1.18", "1.19", "1.20", "1.21", "1.22", "1.23", "1.24", "latest" ] } }, "minProperties": 1, "additionalProperties": false }, "apt_packages": { "title": "APT Packages", "description": "List of packages to be installed with apt-get.", "type": "array", "items": { "title": "APT Package", "type": "string" }, "default": [] }, "commands": { "title": "Build commands", "description": "Override the whole build process with custom commands. When using this option, none of the commands from build.jobs will be executed.", "type": "array", "items": { "title": "Custom commands", "type": "string" } } }, "required": ["os"], "anyOf": [ {"required": ["tools"]}, {"required": ["commands"]} ], "additionalProperties": false }, "python": { "title": "Python", "description": "Configuration of the Python environment to be used.", "type": "object", "properties": { "install": { "title": "Install", "description": "Installation of packages and requirements.", "type": "array", "items": { "anyOf": [ { "properties": { "requirements": { "title": "Requirements", "description": "The path to the requirements file from the root of the project.", "type": "string" } }, "required": ["requirements"] }, { "properties": { "path": { "title": "Path", "description": "The path to the project to be installed", "type": "string" }, "method": { "title": "Method", "description": "Install using python setup.py install or pip.", "enum": ["pip", "setuptools"], "default": "pip" }, "extra_requirements": { "title": "Extra Requirements", "description": "Extra requirements sections to install in addition to the package dependencies.", "type": "array", "items": { "type": "string" }, "default": [] } }, "required": ["path"] } ] } } }, "additionalProperties": false }, "sphinx": { "title": "Sphinx", "description": "Configuration for sphinx documentation.", "type": "object", "properties": { "builder": { "title": "Builder", "description": "The builder type for the sphinx documentation.", "enum": ["html", "dirhtml", "singlehtml"], "default": "html" }, "configuration": { "title": "Configuration", "description": "The path to the conf.py file.", "type": "string" }, "fail_on_warning": { "title": "Fail on Warning", "description": "Add the -W option to sphinx-build.", "type": "boolean", "default": false } }, "additionalProperties": false, "required": ["configuration"] }, "mkdocs": { "title": "mkdocs", "description": "Configuration for mkdocs documentation.", "type": "object", "properties": { "configuration": { "title": "Configuration", "description": "The path to the mkdocs.yml file.", "type": "string" }, "fail_on_warning": { "title": "Fail on Warning", "description": "Add the --strict option to mkdocs build.", "type": "boolean", "default": false } }, "additionalProperties": false, "required": ["configuration"] }, "submodules": { "title": "Submodules", "description": "Submodules configuration.", "type": "object", "properties": { "include": { "title": "Include", "description": "List of submodules to be included.", "anyOf": [ { "type": "array", "items": { "type": "string" } }, { "enum": ["all"] } ], "default": [] }, "exclude": { "title": "Exclude", "description": "List of submodules to be ignored.", "anyOf": [ { "type": "array", "items": { "type": "string" } }, { "enum": ["all"] } ], "default": [] }, "recursive": { "title": "Recursive", "description": "Do a recursive clone?", "type": "boolean", "default": false } }, "additionalProperties": false }, "search": { "title": "search", "type": "object", "properties": { "ranking": { "title": "Ranking", "description": "Map of patterns to ranks.", "additionalProperties": { "type": "number", "minimum": -10, "maximum": 10 } }, "ignore": { "title": "Ignore", "description": "List of patterns.", "type": "array", "items": { "title": "Pattern", "type": "string" }, "default": [ "search.html", "search/index.html", "404.html", "404/index.html" ] } }, "additionalProperties": false } }, "required": ["version"], "additionalProperties": false } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/renovate.json0000644000175100017510000102443715062662115030014 0ustar00runnerrunner{ "title": "JSON schema for Renovate config files (https://renovatebot.com/)", "$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", "items": { "type": "string" } }, "additionalBranchPrefix": { "description": "Additional string value to be appended to `branchPrefix`.", "type": "string", "default": "" }, "additionalReviewers": { "description": "Additional reviewers for Pull Requests (in contrast to `reviewers`, this option adds to the existing reviewer list, rather than replacing it).", "type": "array", "items": { "type": "string" } }, "allowCustomCrateRegistries": { "description": "Set this to `true` to allow custom crate registries.", "type": "boolean", "default": false }, "allowPlugins": { "description": "Set this to `true` if repositories are allowed to run install plugins.", "type": "boolean", "default": false }, "allowScripts": { "description": "Set this to `true` if repositories are allowed to run install scripts.", "type": "boolean", "default": false }, "allowedCommands": { "description": "A list of regular expressions that decide which commands are allowed in post-upgrade tasks.", "type": "array", "items": { "type": "string" }, "default": [] }, "allowedEnv": { "description": "List of allowed patterns for environment variable names in repository env config.", "type": "array", "items": { "type": "string" }, "default": [] }, "allowedHeaders": { "description": "List of allowed patterns for header names in repository hostRules config.", "type": "array", "items": { "type": "string" }, "default": [ "X-*" ] }, "ansible": { "description": "Configuration object for the ansible manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)tasks/[^/]+\\.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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/(^|/)(galaxy|requirements)(\\.ansible)?\\.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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/(^|/)\\.tool-versions$/" ] }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "boolean", "default": false }, "assignees": { "description": "Assignees for Pull Request (either username or email address depending on the platform).", "type": "array", "items": { "type": "string" } }, "assigneesFromCodeOwners": { "description": "Determine assignees based on configured code owners and changes in PR.", "type": "boolean", "default": false }, "assigneesSampleSize": { "description": "Take a random sample of given size from `assignees`.", "type": [ "integer", "null" ], "default": null }, "autoApprove": { "description": "Set to `true` to automatically approve PRs.", "type": "boolean", "default": false }, "autoReplaceGlobalMatch": { "description": "Control whether replacement regular expressions are global matches or only the first match.", "type": "boolean", "default": true }, "autodiscover": { "description": "Autodiscover all repositories.", "type": "boolean", "default": false }, "autodiscoverFilter": { "description": "Filter the list of autodiscovered repositories.", "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ], "default": null, "type": [ "array", "null" ] }, "autodiscoverNamespaces": { "description": "Filter the list of autodiscovered repositories by namespaces.", "type": [ "array", "null" ], "items": { "type": "string" }, "default": null }, "autodiscoverProjects": { "description": "Filter the list of autodiscovered repositories by project names.", "type": [ "array", "null" ], "items": { "type": "string" }, "default": null }, "autodiscoverRepoOrder": { "description": "The order method for autodiscover server side repository search.", "type": [ "string", "null" ], "enum": [ "asc", "desc" ], "default": null }, "autodiscoverRepoSort": { "description": "The sort method for autodiscover server side repository search.", "type": [ "string", "null" ], "enum": [ "alpha", "created", "updated", "size", "id" ], "default": null }, "autodiscoverTopics": { "description": "Filter the list of autodiscovered repositories by topics.", "type": [ "array", "null" ], "items": { "type": "string" }, "default": null }, "automerge": { "description": "Whether to automerge branches/PRs automatically, without human intervention.", "type": "boolean", "default": false }, "automergeComment": { "description": "PR comment to add to trigger automerge. Only used if `automergeType=pr-comment`.", "type": "string", "default": "automergeComment" }, "automergeSchedule": { "description": "Limit automerge to these times of day or week.", "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ], "default": [ "at any time" ] }, "automergeStrategy": { "description": "The merge strategy to use when automerging PRs. Used only if `automergeType=pr`.", "type": "string", "enum": [ "auto", "fast-forward", "merge-commit", "rebase", "rebase-merge", "squash" ], "default": "auto" }, "automergeType": { "description": "How to automerge, if enabled.", "type": "string", "enum": [ "branch", "pr", "pr-comment" ], "default": "pr" }, "azure-pipelines": { "description": "Configuration object for the azure-pipelines manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/).azuredevops/.+\\.ya?ml$/", "/azure.*pipelines?.*\\.ya?ml$/" ], "enabled": 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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "integer", "default": 0 }, "baseBranchPatterns": { "description": "List of one or more custom base branches defined as exact strings and/or via regex expressions.", "type": "array", "items": { "type": "string" } }, "baseDir": { "description": "The base directory for Renovate to store local files, including repository files and cache. If left empty, Renovate will create its own temporary directory to use.", "type": "string" }, "batect": { "description": "Configuration object for the batect manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)batect(-bundle)?\\.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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/(^|/)batect$/" ], "versioning": "semver" }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/(^|/)\\.bazelversion$/" ], "pinDigests": false, "versioning": "semver" }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "boolean", "default": false }, "bbUseDefaultReviewers": { "description": "Use the default reviewers (Bitbucket only).", "type": "boolean", "default": true }, "bbUseDevelopmentBranch": { "description": "Use the repository's [development branch](https://support.atlassian.com/bitbucket-cloud/docs/branch-a-repository/#The-branching-model) as the repository's default branch.", "type": "boolean", "default": false }, "bicep": { "description": "Configuration object for the bicep manager", "type": "object", "default": { "managerFilePatterns": [ "/\\.bicep$/" ] }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "string", "enum": [ "global", "docker", "install", "hermit" ], "default": "install" }, "bitbucket-pipelines": { "description": "Configuration object for the bitbucket-pipelines manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)\\.?bitbucket-pipelines\\.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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/(^|/)bitrise\\.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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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", "default": false }, "branchPrefix": { "description": "Prefix to use for all branch names.", "type": "string", "default": "renovate/" }, "branchPrefixOld": { "description": "Old branchPrefix value to check for existing PRs.", "type": "string", "default": "renovate/" }, "branchTopic": { "description": "Branch topic.", "type": "string", "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": { "managerFilePatterns": [ "/buildkite\\.ya?ml/", "/\\.buildkite/.+\\.ya?ml$/" ], "commitMessageTopic": "buildkite plugin {{depName}}", "commitMessageExtra": "to {{#if isMajor}}{{{prettyNewMajor}}}{{else}}{{{newValue}}}{{/if}}" }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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}}", "managerFilePatterns": [ "/(^|/)project\\.toml$/" ], "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "string", "enum": [ "major", "minor", "patch", "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": { "managerFilePatterns": [ "/(^|/)bun\\.lockb?$/", "/(^|/)package\\.json$/" ], "digest": { "prBodyDefinitions": { "Change": "{{#if displayFrom}}`{{{displayFrom}}}` -> {{else}}{{#if currentValue}}`{{{currentValue}}}` -> {{/if}}{{/if}}{{#if displayTo}}`{{{displayTo}}}`{{else}}`{{{newValue}}}`{{/if}}" } }, "prBodyDefinitions": { "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": "#", "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/(^|/)\\.bun-version$/" ], "versioning": "npm" }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/(^|/)Gemfile$/" ], "versioning": "ruby" }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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", "default": false }, "cacheTtlOverride": { "description": "An object that contains cache namespace TTL override values.", "type": "object", "default": {}, "$ref": "#" }, "cake": { "description": "Configuration object for the cake manager", "type": "object", "default": { "managerFilePatterns": [ "/\\.cake$/" ] }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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}}", "managerFilePatterns": [ "/(^|/)Cargo\\.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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [], "versioning": "semver" }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "array", "items": { "type": "string" }, "default": [] }, "circleci": { "description": "Configuration object for the circleci manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)\\.circleci/.+\\.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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "boolean", "default": false }, "cloneSubmodulesFilter": { "description": "List of submodules names or patterns to clone when cloneSubmodules=true.", "type": "array", "items": { "type": "string" }, "default": [ "*" ] }, "cloudbuild": { "description": "Configuration object for the cloudbuild manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)cloudbuild\\.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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/(^|/)Podfile$/" ], "versioning": "ruby" }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "description": "Extra description used after the commit message topic - typically the version.", "type": "string", "default": "to {{#if isPinDigest}}{{{newDigestShort}}}{{else}}{{#if isMajor}}{{prettyNewMajor}}{{else}}{{#if isSingleVersion}}{{prettyNewVersion}}{{else}}{{#if newValue}}{{{newValue}}}{{else}}{{{newDigestShort}}}{{/if}}{{/if}}{{/if}}{{/if}}" }, "commitMessageLowerCase": { "description": "Lowercase PR- and commit titles.", "type": "string", "enum": [ "auto", "never" ], "default": "auto" }, "commitMessagePrefix": { "description": "Prefix to add to start of commit messages and PR titles. Uses a semantic prefix if `semanticCommits` is enabled.", "type": "string" }, "commitMessageSuffix": { "description": "Suffix to add to end of commit messages and PR titles.", "type": "string" }, "commitMessageTopic": { "description": "The upgrade topic/noun used in commit messages and PR titles.", "type": "string", "default": "dependency {{depName}}" }, "composer": { "description": "Configuration object for the composer manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)([\\w-]*)composer\\.json$/" ], "versioning": "composer" }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "array", "items": { "type": "string" }, "default": [] }, "conan": { "description": "Configuration object for the conan manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)conanfile\\.(txt|py)$/" ], "datasource": "conan", "versioning": "conan", "enabled": 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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "boolean", "default": false }, "configMigration": { "description": "Enable this to get config migration PRs when needed.", "type": "boolean", "default": false }, "configWarningReuseIssue": { "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": false }, "constraints": { "description": "Configuration object to define language or manager version constraints.", "type": "object", "default": {}, "additionalProperties": { "type": "string" } }, "constraintsFiltering": { "description": "Perform release filtering based on language constraints.", "type": "string", "enum": [ "none", "strict" ], "default": "none" }, "containerbaseDir": { "description": "The directory where Renovate stores its containerbase cache. If left empty, Renovate creates a subdirectory within the `cacheDir`.", "type": "string" }, "copier": { "description": "Configuration object for the copier manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)\\.copier-answers(\\..+)?\\.ya?ml/" ], "versioning": "pep440" }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/(^|/)cpanfile$/" ] }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "managerFilePatterns": { "description": "RegEx (`re2`) and glob patterns for matching manager files.", "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] } } } ] } }, "crow": { "description": "Configuration object for the crow manager", "type": "object", "default": { "managerFilePatterns": [ "/^\\.crow(?:/[^/]+)?\\.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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "object", "default": {}, "$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" } ] }, "defaultRegistryUrlTemplate": { "description": "Template for generating a `defaultRegistryUrl` for custom datasource.", "type": "string", "default": "" }, "format": { "description": "Format of the custom datasource.", "type": "string", "enum": [ "json", "plain" ], "default": "json" }, "transformTemplates": { "description": "List of jsonata transformation rules.", "type": "array", "items": { "type": "string" }, "default": [] } } } ] } }, "customEnvVariables": { "description": "Custom environment variables for child processes and sidecar Docker containers.", "type": "object", "default": {}, "$ref": "#" }, "customManagers": { "description": "Custom managers using regex matching.", "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" } ] }, "autoReplaceStringTemplate": { "description": "Optional `extractVersion` for extracted dependencies. Valid only within a `customManagers` object.", "type": "string" }, "currentValueTemplate": { "description": "Optional `currentValue` for extracted dependencies. Valid only within a `customManagers` object.", "type": "string" }, "customType": { "description": "Custom manager to use. Valid only within a `customManagers` object.", "type": "string", "enum": [ "jsonata", "regex" ] }, "datasourceTemplate": { "description": "Optional datasource for extracted dependencies. Valid only within a `customManagers` object.", "type": "string" }, "depNameTemplate": { "description": "Optional depName for extracted dependencies. Valid only within a `customManagers` object.", "type": "string" }, "depTypeTemplate": { "description": "Optional `depType` for extracted dependencies. Valid only within a `customManagers` object.", "type": "string" }, "extractVersionTemplate": { "description": "Optional `extractVersion` for extracted dependencies. Valid only within a `customManagers` object.", "type": "string" }, "fileFormat": { "description": "It specifies the syntax of the package file being managed by the custom JSONata manager.", "type": "string", "enum": [ "json", "toml", "yaml" ] }, "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.", "type": "string", "enum": [ "any", "recursive", "combination" ], "default": "any" }, "packageNameTemplate": { "description": "Optional packageName for extracted dependencies, else defaults to `depName` value. Valid only within a `customManagers` object.", "type": "string" }, "registryUrlTemplate": { "description": "Optional registry URL for extracted dependencies. Valid only within a `customManagers` object.", "type": "string" }, "versioningTemplate": { "description": "Optional versioning for extracted dependencies. Valid only within a `customManagers` object.", "type": "string" } } } ] }, "default": [] }, "customizeDashboard": { "description": "Customize sections in the Dependency Dashboard issue.", "type": "object", "default": {}, "additionalProperties": { "type": "string" } }, "defaultRegistryUrls": { "description": "List of registry URLs to use as the default for a datasource.", "type": [ "array", "null" ], "items": { "type": "string" }, "default": null }, "deleteAdditionalConfigFile": { "description": "If set to `true`, Renovate tries to delete the additional self-hosted config file after reading it.", "type": "boolean", "default": false }, "deleteConfigFile": { "description": "If set to `true`, Renovate tries to delete the self-hosted config file after reading it.", "type": "boolean", "default": false }, "dependencyDashboard": { "description": "Whether to create a \"Dependency Dashboard\" issue in the repository.", "type": "boolean", "default": false }, "dependencyDashboardApproval": { "description": "Controls if updates need manual approval from the Dependency Dashboard issue before PRs are created.", "type": "boolean", "default": false }, "dependencyDashboardAutoclose": { "description": "Set to `true` to let Renovate close the Dependency Dashboard issue if there are no more updates.", "type": "boolean", "default": false }, "dependencyDashboardCategory": { "description": "The category to group branches on the Dependency Dashboard issue.", "type": [ "string", "null" ], "default": null }, "dependencyDashboardFooter": { "description": "Any text added here will be placed last in the Dependency Dashboard issue body, with a divider separator before it.", "type": "string" }, "dependencyDashboardHeader": { "description": "Any text added here will be placed first in the Dependency Dashboard issue body.", "type": "string", "default": "This issue lists Renovate updates and detected dependencies. Read the [Dependency Dashboard](https://docs.renovatebot.com/key-concepts/dashboard/) docs to learn more." }, "dependencyDashboardLabels": { "description": "These labels will always be applied on the Dependency Dashboard issue, even when they have been removed manually.", "type": [ "array", "null" ], "items": { "type": "string" }, "default": null }, "dependencyDashboardOSVVulnerabilitySummary": { "description": "Control if the Dependency Dashboard issue lists CVEs supplied by [osv.dev](https://osv.dev).", "type": "string", "enum": [ "none", "all", "unresolved" ], "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", "default": "Dependency Dashboard" }, "deps-edn": { "description": "Configuration object for the deps-edn manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)(?:deps|bb)\\.edn$/" ], "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] }, "detectGlobalManagerConfig": { "description": "If `true`, Renovate tries to detect global manager configuration from the file system.", "type": "boolean", "default": false }, "detectHostRulesFromEnv": { "description": "If `true`, Renovate tries to detect host rules from environment variables.", "type": "boolean", "default": false }, "devbox": { "description": "Configuration object for the devbox manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)devbox\\.json$/" ] }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/^.devcontainer/devcontainer.json$/", "/^.devcontainer.json$/" ] }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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).", "type": "object", "default": { "branchTopic": "{{{depNameSanitized}}}-digest", "commitMessageExtra": "to {{newDigestShort}}", "commitMessageTopic": "{{{depName}}} digest" }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true } } } ] } }, "docker-compose": { "description": "Configuration object for the docker-compose manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)(?:docker-)?compose[^/]*\\.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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "string", "default": "renovate_" }, "dockerCliOptions": { "description": "Pass CLI flags to `docker run` command when `binarySource=docker`.", "type": "string" }, "dockerMaxPages": { "description": "By default, Renovate fetches up to 20 pages of Docker tags from registries. But you can set your own limit with this config option.", "type": "integer", "default": 20 }, "dockerSidecarImage": { "description": "Change this value to override the default Renovate sidecar image.", "type": "string", "default": "ghcr.io/containerbase/sidecar:13.8.23" }, "dockerUser": { "description": "Set the `UID` and `GID` for Docker-based binaries if you use `binarySource=docker`.", "type": "string" }, "dockerfile": { "description": "Configuration object for the dockerfile manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/|\\.)([Dd]ocker|[Cc]ontainer)file$/", "/(^|/)([Dd]ocker|[Cc]ontainer)file[^/]*$/" ] }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "boolean", "default": false }, "droneci": { "description": "Configuration object for the droneci manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)\\.drone\\.yml$/" ] }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": [ "string", "null" ], "enum": [ "extract", "lookup", "full" ], "default": null }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "enabledManagers": { "description": "A list of package managers to enable. Only managers on the list are enabled.", "type": "array", "items": { "type": "string" } }, "encrypted": { "description": "An object containing configuration encrypted with project key.", "type": [ "object", "null" ], "default": null, "$ref": "#" }, "encryptedWarning": { "description": "Warning text to use if encrypted config is found.", "type": "string" }, "endpoint": { "description": "Custom endpoint to use.", "type": [ "string", "null" ], "default": null }, "env": { "description": "Environment variables that Renovate uses when executing package manager commands.", "type": "object", "default": {}, "$ref": "#" }, "excludeCommitPaths": { "description": "A file matching any of these glob patterns will not be committed, even if the file has been updated.", "type": "array", "items": { "type": "string" }, "default": [] }, "executionTimeout": { "description": "Default execution timeout in minutes for child processes Renovate creates.", "type": "integer", "default": 15 }, "expandCodeOwnersGroups": { "description": "Expand the configured code owner groups into a full list of group members.", "type": "boolean", "default": false }, "exposeAllEnv": { "description": "Set this to `true` to allow passing of all environment variables to package managers.", "type": "boolean", "default": false }, "extends": { "description": "Configuration presets to use or extend.", "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] }, "extractVersion": { "description": "A regex (`re2`) to extract a version from a datasource's raw version string.", "type": "string", "format": "regex" }, "fetchChangeLogs": { "description": "Controls if and when changelogs/release notes are fetched.", "type": "string", "enum": [ "off", "branch", "pr" ], "default": "pr" }, "filterUnavailableUsers": { "description": "Filter reviewers and assignees based on their availability.", "type": "boolean", "default": false }, "fleet": { "description": "Configuration object for the fleet manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)fleet\\.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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/(?:^|/)gotk-components\\.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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "string" }, "force": { "description": "Any configuration set in this object will force override existing settings.", "type": "object", "$ref": "#" }, "forceCli": { "description": "Decides if CLI configuration options are moved to the `force` config section.", "type": "boolean", "default": true }, "forkCreation": { "description": "Whether to create forks as needed at runtime when running in \"fork mode\".", "type": "boolean", "default": true }, "forkModeDisallowMaintainerEdits": { "description": "Disallow maintainers to push to Renovate pull requests when running in fork mode.", "type": "boolean", "default": false }, "forkOrg": { "description": "The preferred organization to create or find forked repositories, when in fork mode.", "type": "string" }, "forkProcessing": { "description": "Whether to process forked repositories. By default, all forked repositories are skipped when in `autodiscover` mode.", "type": "string", "enum": [ "auto", "enabled", "disabled" ], "default": "auto" }, "forkToken": { "description": "Set a personal access token here to enable \"fork mode\".", "type": "string" }, "fvm": { "description": "Configuration object for the fvm manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)\\.fvm/fvm_config\\.json$/", "/(^|/)\\.fvmrc$/" ], "versioning": "semver" }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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", "type": "object", "default": { "enabled": false, "versioning": "git", "managerFilePatterns": [ "/(^|/)\\.gitmodules$/" ] }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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).", "type": "string" }, "gitIgnoredAuthors": { "description": "Git authors which are ignored by Renovate. Must conform to [RFC5322](https://datatracker.ietf.org/doc/html/rfc5322).", "type": "array", "items": { "type": "string" } }, "gitLabIgnoreApprovals": { "description": "Ignore approval rules for MRs created by Renovate, which is useful for automerge.", "type": "boolean", "default": false }, "gitNoVerify": { "description": "Which Git commands will be run with the `--no-verify` option.", "oneOf": [ { "type": "array", "items": { "type": "string", "enum": [ "commit", "push" ] } }, { "type": "string", "enum": [ "commit", "push" ] } ], "default": [ "commit", "push" ] }, "gitPrivateKey": { "description": "PGP key to use for signing Git commits.", "type": "string" }, "gitPrivateKeyPassphrase": { "description": "Passphrase for the `gitPrivateKey`", "type": "string" }, "gitTimeout": { "description": "Configure the timeout with a number of milliseconds to wait for a Git task.", "type": "integer", "default": 0 }, "gitUrl": { "description": "Overrides the default resolution for Git remote, e.g. to switch GitLab from HTTPS to SSH-based.", "type": "string", "enum": [ "default", "ssh", "endpoint" ], "default": "default" }, "github-actions": { "description": "Configuration object for the github-actions manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)(workflow-templates|\\.(?:github|gitea|forgejo)/(?:workflows|actions))/.+\\.ya?ml$/", "/(^|/)action\\.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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "boolean", "default": true }, "gitlabci": { "description": "Configuration object for the gitlabci manager", "type": "object", "default": { "managerFilePatterns": [ "/\\.gitlab-ci\\.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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/\\.gitlab-ci\\.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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "array", "items": { "type": "string" }, "default": [ "./..." ] }, "gomod": { "description": "Configuration object for the gomod manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)go\\.mod$/" ], "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/\\.gradle(\\.kts)?$/", "/(^|/)gradle\\.properties$/", "/(^|/)gradle/.+\\.toml$/", "/(^|/)buildSrc/.+\\.kt$/", "/\\.versions\\.toml$/", "/(^|/)versions.props$/", "/(^|/)versions.lock$/" ], "timeout": 600, "versioning": "gradle" }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/(^|/)gradle/wrapper/gradle-wrapper\\.properties$/" ], "versioning": "gradle" }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "object", "default": { "branchTopic": "{{{groupSlug}}}", "commitMessageTopic": "{{{groupName}}}" }, "$ref": "#" }, "groupName": { "description": "Human understandable name for the dependency group.", "type": [ "string", "null" ], "default": null }, "groupSlug": { "description": "Slug to use for group (e.g. in branch name). Slug is calculated from `groupName` if `null`.", "type": [ "string", "null" ], "default": null }, "hashedBranchLength": { "description": "If enabled, branch names will use a hashing function to ensure each branch has that length.", "type": [ "integer", "null" ], "default": null }, "haskell-cabal": { "description": "Configuration object for the haskell-cabal manager", "type": "object", "default": { "managerFilePatterns": [ "/\\.cabal$/" ], "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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}}", "managerFilePatterns": [ "/(^|/)values\\.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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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", "type": "object", "default": { "registryAliases": { "stable": "https://charts.helm.sh/stable" }, "commitMessageTopic": "helm chart {{depName}}", "managerFilePatterns": [ "/(^|/)helmfile\\.ya?ml(?:\\.gotmpl)?$/", "/(^|/)helmfile\\.d/.+\\.ya?ml(?:\\.gotmpl)?$/" ] }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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", "type": "object", "default": { "registryAliases": { "stable": "https://charts.helm.sh/stable" }, "commitMessageTopic": "helm chart {{depName}}", "managerFilePatterns": [ "/(^|/)Chart\\.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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/(^|/)bin/hermit$/" ], "excludeCommitPaths": [ "**/bin/hermit" ], "versioning": "hermit" }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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" } }, "abortOnError": { "description": "If enabled, Renovate aborts its run when HTTP request errors occur.", "type": "boolean", "default": false }, "artifactAuth": { "description": "A list of package managers to enable artifact auth. Only managers on the list are enabled. All are enabled if `null`.", "type": [ "array", "null" ], "items": { "type": "string", "enum": [ "composer" ] }, "default": null }, "authType": { "description": "Authentication type for HTTP header. e.g. `\"Bearer\"` or `\"Basic\"`. Use `\"Token-Only\"` to use only the token without an authorization type.", "type": "string", "default": "Bearer" }, "concurrentRequestLimit": { "description": "Limit concurrent requests per host.", "type": [ "integer", "null" ], "default": null }, "dnsCache": { "description": "Enable got DNS cache.", "type": "boolean", "default": false }, "enableHttp2": { "description": "Enable got HTTP/2 support.", "type": "boolean", "default": false }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "headers": { "description": "Put fields to be forwarded to the HTTP request headers in the headers config option.", "type": "object", "$ref": "#" }, "hostType": { "description": "hostType for a package rule. Can be a platform name or a datasource name.", "type": "string" }, "httpsCertificate": { "description": "The certificate chains in PEM format.", "type": [ "string", "null" ], "default": null }, "httpsCertificateAuthority": { "description": "The overriding trusted CA certificate.", "type": [ "string", "null" ], "default": null }, "httpsPrivateKey": { "description": "The private key in PEM format.", "type": [ "string", "null" ], "default": null }, "insecureRegistry": { "description": "Explicitly turn on insecure Docker registry access (HTTP).", "type": "boolean", "default": false }, "keepAlive": { "description": "Enable HTTP keep-alive for hosts.", "type": "boolean", "default": false }, "matchHost": { "description": "A domain name, host name or base URL to match against.", "type": "string" }, "maxRequestsPerSecond": { "description": "Limit requests rate per host.", "type": "integer", "default": 0 }, "maxRetryAfter": { "description": "Maximum retry-after header value to wait for before retrying a failed request.", "type": "integer", "default": 60 }, "readOnly": { "description": "Match against requests that only read data and do not mutate anything.", "type": "boolean" }, "timeout": { "description": "Timeout (in milliseconds) for queries to external endpoints.", "type": "integer" } } } ] } }, "html": { "description": "Configuration object for the html manager", "type": "object", "default": { "managerFilePatterns": [ "/\\.html?$/" ], "versioning": "semver", "digest": { "enabled": false }, "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "integer", "default": 90 }, "ignoreDeprecated": { "description": "Avoid upgrading from a non-deprecated version to a deprecated one.", "type": "boolean", "default": true }, "ignoreDeps": { "description": "Dependencies to ignore.", "type": "array", "items": { "type": "string" } }, "ignorePaths": { "description": "Skip any package file whose path matches one of these. Can be a string or glob pattern.", "type": "array", "items": { "type": "string" }, "default": [ "**/node_modules/**", "**/bower_components/**" ] }, "ignorePlugins": { "description": "Set this to `true` if `allowPlugins=true` but you wish to skip running plugins when updating lock files.", "type": "boolean", "default": false }, "ignorePrAuthor": { "description": "Set to `true` to fetch the entire list of PRs instead of only those authored by the Renovate user.", "type": "boolean", "default": false }, "ignorePresets": { "description": "A list of presets to ignore, including any that are nested inside an `extends` array.", "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] }, "ignoreReviewers": { "description": "Reviewers to be ignored in PR reviewers presence (either username or email address depending on the platform).", "type": "array", "items": { "type": "string" } }, "ignoreScripts": { "description": "Set this to `false` if `allowScripts=true` and you wish to run scripts when updating lock files.", "type": "boolean", "default": true }, "ignoreTests": { "description": "Set to `true` to enable automerging without tests.", "type": "boolean", "default": false }, "ignoreUnstable": { "description": "Ignore versions with unstable SemVer.", "type": "boolean", "default": true }, "includeMirrors": { "description": "Whether to process repositories that are mirrors. By default, repositories that are mirrors are skipped.", "type": "boolean", "default": false }, "includePaths": { "description": "Include package files only within these defined paths.", "type": "array", "items": { "type": "string" }, "default": [] }, "inheritConfig": { "description": "If `true`, Renovate will inherit configuration from the `inheritConfigFileName` file in `inheritConfigRepoName`.", "type": "boolean", "default": false }, "inheritConfigFileName": { "description": "Renovate will look for this config file name in the `inheritConfigRepoName`.", "type": "string", "default": "org-inherited-config.json" }, "inheritConfigRepoName": { "description": "Renovate will look in this repo for the `inheritConfigFileName`.", "type": "string", "default": "{{parentOrg}}/renovate-config" }, "inheritConfigStrict": { "description": "If `true`, any `inheritedConfig` fetch error will result in an aborted run.", "type": "boolean", "default": false }, "internalChecksAsSuccess": { "description": "Whether to consider passing internal checks such as `minimumReleaseAge` when determining branch status.", "type": "boolean", "default": false }, "internalChecksFilter": { "description": "When and how to filter based on internal checks.", "type": "string", "enum": [ "strict", "flexible", "none" ], "default": "strict" }, "jenkins": { "description": "Configuration object for the jenkins manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)plugins\\.(txt|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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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", "type": "object", "default": { "pinDigests": false }, "$ref": "#" }, "jsonnet-bundler": { "description": "Configuration object for the jsonnet-bundler manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)jsonnetfile\\.json$/" ], "datasource": "git-tags" }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": "#", "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true } } } ] } }, "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" ] } } } ] } }, "major": { "description": "Configuration to apply when an update type is `major`.", "type": "object", "default": {}, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true } } } ] } }, "maven": { "description": "Configuration object for the maven manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/|\\.)pom\\.xml$/", "/^(((\\.mvn)|(\\.m2))/)?settings\\.xml$/", "/(^|/)\\.mvn/extensions\\.xml$/" ] }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/(^|\\/).mvn/wrapper/maven-wrapper.properties$/", "/(^|\\/)mvnw(.cmd)?$/" ], "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "array", "items": { "type": "string", "enum": [ "go", "maven", "npm", "nuget", "packagist", "pypi", "rubygems" ] }, "default": [ "go", "maven", "npm", "nuget", "packagist", "pypi", "rubygems" ] }, "mergeConfidenceEndpoint": { "description": "If set, Renovate will query this API for Merge Confidence data.", "type": "string", "default": "https://developer.mend.io/" }, "meteor": { "description": "Configuration object for the meteor manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)package\\.js$/" ] }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "object", "default": {}, "additionalProperties": { "type": "string" }, "$ref": "#" }, "milestone": { "description": "The number of a milestone. If set, the milestone will be set when Renovate creates the PR.", "type": [ "integer", "null" ], "default": null }, "minimumGroupSize": { "description": "The minimum number of updates which must be in a group for branches to be created.", "type": "integer", "default": 1 }, "minimumReleaseAge": { "description": "Time required before a new release is considered stable.", "type": [ "string", "null" ], "default": null }, "minor": { "description": "Configuration to apply when an update type is `minor`.", "type": "object", "default": {}, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true } } } ] } }, "mint": { "description": "Configuration object for the mint manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)Mintfile$/" ] }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "managerFilePatterns": { "description": "RegEx (`re2`) and glob patterns for matching manager files.", "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] } } } ] } }, "mix": { "description": "Configuration object for the mix manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)mix\\.exs$/" ] }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "managerFilePatterns": { "description": "RegEx (`re2`) and glob patterns for matching manager files.", "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] } } } ] } }, "mode": { "description": "Mode of operation.", "type": "string", "enum": [ "full", "silent" ], "default": "full" }, "nix": { "description": "Configuration object for the nix manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)flake\\.nix$/" ], "commitMessageTopic": "nix", "commitMessageExtra": "to {{newValue}}", "enabled": 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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/(^|/)\\.node-version$/" ], "versioning": "node" }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/(^|/)package\\.json$/", "/(^|/)pnpm-workspace\\.yaml$/" ], "digest": { "prBodyDefinitions": { "Change": "{{#if displayFrom}}`{{{displayFrom}}}` -> {{else}}{{#if currentValue}}`{{{currentValue}}}` -> {{/if}}{{/if}}{{#if displayTo}}`{{{displayTo}}}`{{else}}`{{{newValue}}}`{{/if}}" } }, "prBodyDefinitions": { "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": "#", "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "string" }, "npmrc": { "description": "String copy of `.npmrc` file. Use `\\n` instead of line breaks.", "type": "string" }, "npmrcMerge": { "description": "Whether to merge `config.npmrc` with repo `.npmrc` content if both are found.", "type": "boolean", "default": false }, "nuget": { "description": "Configuration object for the nuget manager", "type": "object", "default": { "managerFilePatterns": [ "/\\.(?:cs|fs|vb)proj$/", "/\\.(?:props|targets)$/", "/(^|/)dotnet-tools\\.json$/", "/(^|/)global\\.json$/" ] }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/(^|/)\\.nvmrc$/" ], "versioning": "node", "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "boolean" }, "onboardingBranch": { "description": "Change this value to override the default onboarding branch name.", "type": "string", "default": "renovate/configure" }, "onboardingCommitMessage": { "description": "Change this value to override the default onboarding commit message.", "type": [ "string", "null" ], "default": null }, "onboardingConfig": { "description": "Configuration to use for onboarding PRs.", "type": "object", "default": { "$schema": "https://docs.renovatebot.com/renovate-schema.json" }, "$ref": "#" }, "onboardingConfigFileName": { "description": "Change this value to override the default onboarding config file name.", "type": "string", "default": "renovate.json" }, "onboardingNoDeps": { "description": "Onboard the repository even if no dependencies are found.", "type": "string", "enum": [ "auto", "enabled", "disabled" ], "default": "auto" }, "onboardingPrTitle": { "description": "Change this value to override the default onboarding PR title.", "type": "string", "default": "Configure Renovate" }, "onboardingRebaseCheckbox": { "description": "Set to enable rebase/retry markdown checkbox for onboarding PRs.", "type": "boolean", "default": false }, "optimizeForDisabled": { "description": "Set to `true` to perform a check for disabled config prior to cloning.", "type": "boolean", "default": false }, "osgi": { "description": "Configuration object for the osgi manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)src/main/features/.+\\.json$/" ] }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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`.", "type": "boolean", "default": false }, "packageRules": { "description": "Rules for matching packages.", "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" } ] }, "allowedVersions": { "description": "A version range or regex pattern capturing allowed versions for dependencies.", "type": "string" }, "changelogUrl": { "description": "Set a custom URL for the changelog. Renovate will put this URL in the PR body text.", "type": "string" }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "matchBaseBranches": { "description": "List of strings containing exact matches (e.g. `[\"main\"]`) and/or regex expressions (e.g. `[\"/^release/.*/\"]`). Valid only within a `packageRules` object.", "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] }, "matchCategories": { "description": "List of categories to match (for example: `[\"python\"]`). Valid only within a `packageRules` object.", "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] }, "matchConfidence": { "description": "Merge confidence levels to match against (`low`, `neutral`, `high`, `very high`). Valid only within `packageRules` object.", "oneOf": [ { "type": "array", "items": { "type": "string", "enum": [ "low", "neutral", "high", "very high" ] } }, { "type": "string", "enum": [ "low", "neutral", "high", "very high" ] } ] }, "matchCurrentAge": { "description": "Matches the current age of the package derived from its release timestamp. Valid only within a `packageRules` object.", "type": "string" }, "matchCurrentValue": { "description": "A regex or glob pattern to match against the raw `currentValue` string of a dependency. Valid only within a `packageRules` object.", "type": "string" }, "matchCurrentVersion": { "description": "A version, or range of versions, to match against the current version of a package. Valid only within a `packageRules` object.", "type": "string" }, "matchDatasources": { "description": "List of datasources to match (e.g. `[\"orb\"]`). Valid only within a `packageRules` object.", "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] }, "matchDepNames": { "description": "Dep names to match. Valid only within a `packageRules` object.", "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] }, "matchDepTypes": { "description": "List of depTypes to match (e.g. [`peerDependencies`]). Valid only within `packageRules` object.", "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] }, "matchFileNames": { "description": "List of strings to do an exact match against package and lock files with full path. Only works inside a `packageRules` object.", "type": "array", "items": { "type": "string" } }, "matchJsonata": { "description": "A JSONata expression to match against the full config object. Valid only within a `packageRules` object.", "type": "array", "items": { "type": "string" } }, "matchManagers": { "description": "List of package managers to match (e.g. `[\"pipenv\"]`). Valid only within a `packageRules` object.", "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] }, "matchNewValue": { "description": "A regex or glob pattern to match against the raw `newValue` string of a dependency. Valid only within a `packageRules` object.", "type": "string" }, "matchPackageNames": { "description": "Package names to match. Valid only within a `packageRules` object.", "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] }, "matchRepositories": { "description": "List of repositories to match (e.g. `[\"**/*-archived\"]`). Valid only within a `packageRules` object.", "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] }, "matchSourceUrls": { "description": "A list of exact match URLs (or URL patterns) to match sourceUrl against.", "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] }, "matchUpdateTypes": { "description": "Update types to match against (`major`, `minor`, `pin`, `pinDigest`, etc). Valid only within `packageRules` object.", "oneOf": [ { "type": "array", "items": { "type": "string", "enum": [ "major", "minor", "patch", "pin", "pinDigest", "digest", "lockFileMaintenance", "rollback", "bump", "replacement" ] } }, { "type": "string", "enum": [ "major", "minor", "patch", "pin", "pinDigest", "digest", "lockFileMaintenance", "rollback", "bump", "replacement" ] } ] }, "overrideDatasource": { "description": "Override the datasource value.", "type": "string" }, "overrideDepName": { "description": "Override the depName value.", "type": "string" }, "overridePackageName": { "description": "Override the packageName value.", "type": "string" }, "prPriority": { "description": "Set sorting priority for PR creation. PRs with higher priority are created first, negative priority last.", "type": "integer", "default": 0 }, "replacementName": { "description": "The name of the new dependency that replaces the old deprecated dependency.", "type": "string" }, "replacementNameTemplate": { "description": "Controls what the replacement package name.", "type": "string", "default": "{{{packageName}}}" }, "replacementVersion": { "description": "The version of the new dependency that replaces the old deprecated dependency.", "type": "string" }, "replacementVersionTemplate": { "description": "Template field for the version of the new dependency that replaces the old deprecated dependency.", "type": "string" }, "sourceDirectory": { "description": "The source directory in which the package is present at its source.", "type": "string" }, "sourceUrl": { "description": "The source URL of the package.", "type": "string" } } } ] } }, "password": { "description": "Password for authentication.", "type": "string" }, "patch": { "description": "Configuration to apply when an update type is `patch`.", "type": "object", "default": {}, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true } } } ] } }, "pep621": { "description": "Configuration object for the pep621 manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)pyproject\\.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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "boolean", "default": false }, "pin": { "description": "Configuration to apply when an update type is `pin`.", "type": "object", "default": { "rebaseWhen": "behind-base-branch", "groupName": "Pin Dependencies", "groupSlug": "pin-dependencies", "commitMessageAction": "Pin", "group": { "commitMessageTopic": "dependencies", "commitMessageExtra": "" } }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true } } } ] } }, "pinDigest": { "description": "Configuration to apply when pinning a digest (no change in tag/version).", "type": "object", "default": { "groupName": "Pin Dependencies", "groupSlug": "pin-dependencies", "commitMessageAction": "Pin", "group": { "commitMessageTopic": "dependencies", "commitMessageExtra": "" } }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true } } } ] } }, "pinDigests": { "description": "Whether to add digests to Dockerfile source images.", "type": "boolean", "default": false }, "pip-compile": { "description": "Configuration object for the pip-compile manager", "type": "object", "default": { "managerFilePatterns": [], "lockFileMaintenance": { "enabled": true, "branchTopic": "pip-compile-refresh", "commitMessageAction": "Refresh pip-compile outputs" } }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/(^|/)[\\w-]*requirements([-.]\\w+)?\\.(txt|pip)$/" ] }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/(^|/)setup\\.py$/" ] }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "managerFilePatterns": { "description": "RegEx (`re2`) and glob patterns for matching manager files.", "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] } } } ] } }, "pixi": { "description": "Configuration object for the pixi manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)pyproject\\.toml$/", "/(^|/)pixi\\.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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "string", "enum": [ "azure", "bitbucket", "bitbucket-server", "codecommit", "forgejo", "gerrit", "gitea", "github", "gitlab", "local" ], "default": "github" }, "platformAutomerge": { "description": "Controls if platform-native auto-merge is used.", "type": "boolean", "default": true }, "platformCommit": { "description": "Use platform API to perform commits instead of using Git directly.", "type": "string", "enum": [ "auto", "disabled", "enabled" ], "default": "auto" }, "poetry": { "description": "Configuration object for the poetry manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)pyproject\\.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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "array", "items": { "type": "string", "enum": [ "bundlerConservative", "composerWithAll", "dotnetWorkloadRestore", "gomodMassage", "gomodTidy", "gomodTidy1.17", "gomodTidyE", "gomodUpdateImportPaths", "gomodSkipVendor", "gomodVendor", "helmUpdateSubChartArchives", "kustomizeInflateHelmCharts", "npmDedupe", "npmInstallTwice", "pnpmDedupe", "yarnDedupeFewer", "yarnDedupeHighest" ] }, "default": [] }, "postUpgradeTasks": { "description": "Post-upgrade tasks that are executed before a commit is made by Renovate.", "type": "object", "default": { "commands": [], "fileFilters": [], "executionMode": "update" }, "$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" } ] }, "commands": { "description": "A list of post-upgrade commands that are executed before a commit is made by Renovate.", "type": "array", "items": { "type": "string" }, "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", "enum": [ "update", "branch" ], "default": "update" }, "fileFilters": { "description": "Files that match the glob pattern will be committed after running a post-upgrade task.", "type": "array", "items": { "type": "string" }, "default": [ "**/*" ] }, "workingDirTemplate": { "description": "A template describing the working directory in which post-upgrade tasks should be executed.", "type": "string" } } } ] } }, "prBodyColumns": { "description": "List of columns to use in PR bodies.", "type": "array", "items": { "type": "string" }, "default": [ "Package", "Type", "Update", "Change", "Pending" ] }, "prBodyDefinitions": { "description": "Table column definitions to use in PR tables.", "type": "object", "default": { "Package": "{{{depNameLinked}}}{{#if newName}}{{#unless (equals depName newName)}} → {{{newNameLinked}}}{{/unless}}{{/if}}", "Type": "{{{depType}}}", "Update": "{{{updateType}}}", "Current value": "{{{currentValue}}}", "New value": "{{{newValue}}}", "Change": "`{{{displayFrom}}}` -> `{{{displayTo}}}`", "Pending": "{{{displayPending}}}", "References": "{{{references}}}", "Package file": "{{{packageFile}}}", "Age": "{{#if newVersion}}[![age](https://developer.mend.io/api/mc/badges/age/{{datasource}}/{{replace '/' '%2f' packageName}}/{{{newVersion}}}?slim=true)](https://docs.renovatebot.com/merge-confidence/){{/if}}", "Adoption": "{{#if newVersion}}[![adoption](https://developer.mend.io/api/mc/badges/adoption/{{datasource}}/{{replace '/' '%2f' packageName}}/{{{newVersion}}}?slim=true)](https://docs.renovatebot.com/merge-confidence/){{/if}}", "Passing": "{{#if newVersion}}[![passing](https://developer.mend.io/api/mc/badges/compatibility/{{datasource}}/{{replace '/' '%2f' packageName}}/{{{currentVersion}}}/{{{newVersion}}}?slim=true)](https://docs.renovatebot.com/merge-confidence/){{/if}}", "Confidence": "{{#if newVersion}}[![confidence](https://developer.mend.io/api/mc/badges/confidence/{{datasource}}/{{replace '/' '%2f' packageName}}/{{{currentVersion}}}/{{{newVersion}}}?slim=true)](https://docs.renovatebot.com/merge-confidence/){{/if}}" } }, "prBodyNotes": { "description": "List of extra notes or templates to include in the Pull Request body.", "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ], "default": [] }, "prBodyTemplate": { "description": "Pull Request body template. Controls which sections are rendered in the body of the pull request.", "type": "string", "default": "{{{header}}}{{{table}}}{{{warnings}}}{{{notes}}}{{{changelogs}}}{{{configDescription}}}{{{controls}}}{{{footer}}}" }, "prCommitsPerRunLimit": { "description": "Set the maximum number of commits per Renovate run. By default there is no limit.", "type": "integer", "default": 0 }, "prConcurrentLimit": { "description": "Limit to a maximum of x concurrent branches/PRs. 0 means no limit.", "type": "integer", "default": 10 }, "prCreation": { "description": "When to create the PR for a branch.", "type": "string", "enum": [ "immediate", "not-pending", "status-success", "approval" ], "default": "immediate" }, "prFooter": { "description": "Text added here will be placed last in the PR body, with a divider separator before it.", "type": "string", "default": "This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate)." }, "prHeader": { "description": "Text added here will be placed first in the PR body.", "type": "string" }, "prHourlyLimit": { "description": "Rate limit PRs to maximum x created per hour. 0 means no limit.", "type": "integer", "default": 2 }, "prNotPendingHours": { "description": "Timeout in hours for when `prCreation=not-pending`.", "type": "integer", "default": 25 }, "prTitle": { "description": "Pull Request title template. Inherits from `commitMessage` if null.", "type": [ "string", "null" ], "default": null }, "prTitleStrict": { "description": "Whether to bypass appending extra context to the Pull Request title.", "type": "boolean", "default": false }, "pre-commit": { "description": "Configuration object for the pre-commit manager", "type": "object", "default": { "commitMessageTopic": "pre-commit hook {{depName}}", "enabled": false, "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": "#", "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "boolean", "default": false }, "printConfig": { "description": "If enabled, Renovate logs the fully resolved config for each repository, plus the fully resolved presets.", "type": "boolean", "default": false }, "privateKey": { "description": "Server-side private key.", "type": "string" }, "privateKeyOld": { "description": "Secondary or old private key to try.", "type": "string" }, "privateKeyPath": { "description": "Path to the Server-side private key.", "type": "string" }, "privateKeyPathOld": { "description": "Path to the Server-side old private key.", "type": "string" }, "processEnv": { "description": "Environment variables to be used in global config only.", "type": "object", "default": {}, "additionalProperties": { "type": "string" }, "$ref": "#" }, "productLinks": { "description": "Links which are used in PRs, issues and comments.", "type": "object", "default": { "documentation": "https://docs.renovatebot.com/", "help": "https://github.com/renovatebot/renovate/discussions", "homepage": "https://github.com/renovatebot/renovate" }, "additionalProperties": { "type": "string", "format": "uri" }, "$ref": "#" }, "pruneBranchAfterAutomerge": { "description": "Set to `true` to enable branch pruning after automerging.", "type": "boolean", "default": true }, "pruneStaleBranches": { "description": "Set to `false` to disable pruning stale branches.", "type": "boolean", "default": true }, "pub": { "description": "Configuration object for the pub manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)pubspec\\.ya?ml$/" ], "versioning": "npm" }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/(^|/)Puppetfile$/" ] }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/(^|/)\\.python-version$/" ], "versioning": "docker", "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "managerFilePatterns": { "description": "RegEx (`re2`) and glob patterns for matching manager files.", "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] } } } ] } }, "quadlet": { "description": "Configuration object for the quadlet manager", "type": "object", "default": { "managerFilePatterns": [ "/.+\\.container$/", "/.+\\.image$/", "/.+\\.volume$/" ] }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "string", "enum": [ "auto", "pin", "bump", "replace", "widen", "update-lockfile", "in-range-only" ], "default": "auto" }, "rebaseLabel": { "description": "Label to request a rebase from Renovate bot.", "type": "string", "default": "rebase" }, "rebaseWhen": { "description": "Controls when Renovate rebases an existing branch.", "type": "string", "enum": [ "auto", "never", "conflicted", "behind-base-branch", "automerging" ], "default": "auto" }, "recreateWhen": { "description": "Recreate PRs even if same ones were closed previously.", "type": "string", "enum": [ "auto", "always", "never" ], "default": "auto" }, "redisPrefix": { "description": "Key prefix for redis cache entries.", "type": "string" }, "redisUrl": { "description": "If set, this Redis URL will be used for caching instead of the file system.", "type": "string" }, "regex": { "description": "Configuration object for the regex manager", "type": "object", "default": { "pinDigests": false }, "$ref": "#" }, "registryAliases": { "description": "Aliases for registries.", "type": "object", "default": {}, "additionalProperties": { "type": "string" }, "$ref": "#" }, "registryUrls": { "description": "List of URLs to try for dependency lookup. Package manager specific.", "type": [ "array", "null" ], "items": { "type": "string" }, "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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", "default": { "branchTopic": "{{{depNameSanitized}}}-replacement", "commitMessageAction": "Replace", "commitMessageExtra": "with {{newName}} {{#if isMajor}}{{{prettyNewMajor}}}{{else}}{{#if isSingleVersion}}{{{prettyNewVersion}}}{{else}}{{{newValue}}}{{/if}}{{/if}}", "prBodyNotes": [ "This is a special PR that replaces `{{{depName}}}` with the community suggested minimal stable replacement version." ] }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true } } } ] } }, "replacementApproach": { "description": "Select whether to perform a direct replacement or alias replacement.", "type": "string", "enum": [ "replace", "alias" ], "default": "replace" }, "reportPath": { "description": "Path to where the file should be written. In case of `s3` this has to be a full S3 URI.", "type": [ "string", "null" ], "default": null }, "reportType": { "description": "Set how, or if, reports should be generated.", "type": [ "string", "null" ], "enum": [ "logging", "file", "s3" ], "default": null }, "repositories": { "description": "List of Repositories.", "type": "array", "items": { "type": "string" } }, "repositoryCache": { "description": "This option decides if Renovate uses a JSON cache to speed up extractions.", "type": "string", "enum": [ "disabled", "enabled", "reset" ], "default": "disabled" }, "repositoryCacheType": { "description": "Set the type of renovate repository cache if `repositoryCache` is enabled.", "type": "string", "default": "local" }, "requireConfig": { "description": "Controls Renovate's behavior regarding repository config files such as `renovate.json`.", "type": "string", "enum": [ "required", "optional", "ignored" ], "default": "required" }, "respectLatest": { "description": "Ignore versions newer than npm \"latest\" version.", "type": "boolean", "default": true }, "reviewers": { "description": "Requested reviewers for Pull Requests (either username or email address depending on the platform).", "type": "array", "items": { "type": "string" } }, "reviewersFromCodeOwners": { "description": "Determine reviewers based on configured code owners and changes in PR.", "type": "boolean", "default": false }, "reviewersSampleSize": { "description": "Take a random sample of given size from `reviewers`.", "type": [ "integer", "null" ], "default": null }, "rollback": { "description": "Configuration to apply when rolling back a version.", "type": "object", "default": { "branchTopic": "{{{depNameSanitized}}}-rollback", "commitMessageAction": "Roll back", "semanticCommitType": "fix" }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true } } } ] } }, "rollbackPrs": { "description": "Create PRs to roll back versions if the current version is not found in the registry.", "type": "boolean", "default": false }, "ruby-version": { "description": "Configuration object for the ruby-version manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)\\.ruby-version$/" ], "versioning": "ruby" }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/(^|/)runtime.txt$/" ], "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "string" }, "s3PathStyle": { "description": "If set, Renovate will enable `forcePathStyle` when creating the AWS S3 client instance.", "type": "boolean", "default": false }, "sbt": { "description": "Configuration object for the sbt manager", "type": "object", "default": { "managerFilePatterns": [ "/\\.sbt$/", "/project/[^/]*\\.scala$/", "/project/build\\.properties$/", "/(^|/)repositories$/" ], "versioning": "ivy" }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/(^|/)\\.scalafmt.conf$/" ] }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ], "default": [ "at any time" ] }, "secrets": { "description": "Object which holds secret name/value pairs.", "type": "object", "default": {}, "additionalProperties": { "type": "string" }, "$ref": "#" }, "semanticCommitScope": { "description": "Commit scope to use if Semantic Commits are enabled.", "type": "string", "default": "deps" }, "semanticCommitType": { "description": "Commit type to use if Semantic Commits is enabled.", "type": "string", "default": "chore" }, "semanticCommits": { "description": "Enable Semantic Commit prefixes for commits and PR titles.", "type": "string", "enum": [ "auto", "enabled", "disabled" ], "default": "auto" }, "separateMajorMinor": { "description": "If set to `false`, Renovate will upgrade dependencies to their latest release only. Renovate will not separate major or minor branches.", "type": "boolean", "default": true }, "separateMinorPatch": { "description": "If set to `true`, Renovate will separate `minor` and `patch` updates into separate branches.", "type": "boolean", "default": false }, "separateMultipleMajor": { "description": "If set to `true`, PRs will be raised separately for each available `major` upgrade version.", "type": "boolean", "default": false }, "separateMultipleMinor": { "description": "If set to `true`, Renovate creates separate PRs for each `minor` stream.", "type": "boolean", "default": false }, "setup-cfg": { "description": "Configuration object for the setup-cfg manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)setup\\.cfg$/" ], "versioning": "pep440" }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "managerFilePatterns": { "description": "RegEx (`re2`) and glob patterns for matching manager files.", "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] } } } ] } }, "skipArtifactsUpdate": { "description": "Skip Renovate's automatic artifact updating.", "type": "boolean", "default": false }, "skipInstalls": { "description": "Skip installing modules/dependencies if lock file updating is possible without a full install.", "type": [ "boolean", "null" ], "default": null }, "statusCheckNames": { "description": "Custom strings to use as status check names.", "type": "object", "default": { "artifactError": "renovate/artifacts", "configValidation": "renovate/config-validation", "mergeConfidence": "renovate/merge-confidence", "minimumReleaseAge": "renovate/stability-days" }, "$ref": "#" }, "stopUpdatingLabel": { "description": "Label to make Renovate stop updating a PR.", "type": "string", "default": "stop-updating" }, "suppressNotifications": { "description": "Options to suppress various types of warnings and other notifications.", "type": "array", "items": { "type": "string", "enum": [ "artifactErrors", "branchAutomergeFailure", "configErrorIssue", "dependencyLookupWarnings", "lockFileErrors", "missingCredentialsError", "onboardingClose", "prEditedNotification", "prIgnoreNotification" ] }, "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/(^|/)Package\\.swift/" ], "versioning": "swift", "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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}}", "managerFilePatterns": [ "**/*.tf", "**/*.tofu" ], "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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": { "managerFilePatterns": [ "/(^|/)\\.terraform-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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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}}", "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "managerFilePatterns": { "description": "RegEx (`re2`) and glob patterns for matching manager files.", "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] } } } ] } }, "tflint-plugin": { "description": "Configuration object for the tflint-plugin manager", "type": "object", "default": { "commitMessageTopic": "TFLint plugin {{depName}}", "managerFilePatterns": [ "/\\.tflint\\.hcl$/" ], "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "string" }, "token": { "description": "Repository Auth Token.", "type": "string" }, "travis": { "description": "Configuration object for the travis manager", "type": "object", "default": { "managerFilePatterns": [ "/^\\.travis\\.ya?ml$/" ], "major": { "enabled": false }, "versioning": "node" }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "managerFilePatterns": { "description": "RegEx (`re2`) and glob patterns for matching manager files.", "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] } } } ] } }, "typst": { "description": "Configuration object for the typst manager", "type": "object", "default": { "managerFilePatterns": [ "/\\.typ$/" ] }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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", "default": false }, "updateNotScheduled": { "description": "Whether to update branches when not scheduled. Renovate will not create branches outside of the schedule.", "type": "boolean", "default": true }, "updatePinnedDependencies": { "description": "Whether to update pinned (single version) dependencies or not.", "type": "boolean", "default": true }, "useBaseBranchConfig": { "description": "Whether to read configuration from `baseBranches` instead of only the default branch.", "type": "string", "enum": [ "merge", "none" ], "default": "none" }, "useCloudMetadataServices": { "description": "If `false`, Renovate does not try to access cloud metadata services.", "type": "boolean", "default": true }, "userAgent": { "description": "If set to any string, Renovate will use this as the `user-agent` it sends with HTTP requests.", "type": [ "string", "null" ], "default": null }, "userStrings": { "description": "User-facing strings for the Renovate comment when a PR is closed.", "type": "object", "default": { "ignoreTopic": "Renovate Ignore Notification", "ignoreMajor": "Because you closed this PR without merging, Renovate will ignore this update. You will not get PRs for *any* future `{{{newMajor}}}.x` releases. But if you manually upgrade to `{{{newMajor}}}.x` then Renovate will re-enable `minor` and `patch` updates automatically.", "ignoreDigest": "Because you closed this PR without merging, Renovate will ignore this update. You will not get PRs for the `{{{depName}}}` `{{{newDigestShort}}}` update again.", "ignoreOther": "Because you closed this PR without merging, Renovate will ignore this update (`{{{newValue}}}`). You will get a PR once a newer version is released. To ignore this dependency forever, add it to the `ignoreDeps` array of your Renovate config.", "artifactErrorWarning": "You probably do not want to merge this PR as-is." } }, "username": { "description": "Username for authentication.", "type": "string" }, "variables": { "description": "Object which holds variable name/value pairs.", "type": "object", "default": {}, "additionalProperties": { "type": "string" }, "$ref": "#" }, "velaci": { "description": "Configuration object for the velaci manager", "type": "object", "default": { "managerFilePatterns": [ "/(^|/)\\.vela\\.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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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}}", "managerFilePatterns": [ "/(^|/)vendir\\.yml$/" ] }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "string", "format": "regex" }, "versioning": { "description": "Versioning to use for filtering and comparisons.", "type": "string", "oneOf": [ { "enum": [ "aws-eks-addon", "aws-machine-image", "azure-rest-api", "bazel-module", "cargo", "composer", "conan", "conda", "deb", "debian", "devbox", "docker", "git", "glasskube", "go-mod-directive", "gradle", "hashicorp", "helm", "hermit", "hex", "ivy", "kubernetes-api", "lambda-node", "loose", "maven", "nixpkgs", "node", "npm", "nuget", "pep440", "perl", "poetry", "pvp", "python", "redhat", "regex", "rez", "rpm", "ruby", "same-major", "semver", "semver-coerced", "swift", "ubuntu", "unity3d", "unity3d-packages" ] }, { "type": "string", "pattern": "^regex:" } ] }, "vulnerabilityAlerts": { "description": "Config to apply when a PR is needed due to a vulnerability in the existing package version.", "type": "object", "default": { "groupName": null, "schedule": [], "dependencyDashboardApproval": false, "minimumReleaseAge": null, "rangeStrategy": "update-lockfile", "commitMessageSuffix": "[SECURITY]", "branchTopic": "{{{datasource}}}-{{{depNameSanitized}}}-vulnerability", "prCreation": "immediate", "vulnerabilityFixStrategy": "lowest" }, "$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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "vulnerabilityFixStrategy": { "description": "Strategy to use when fixing vulnerabilities. `lowest` will propose the earliest version with a fix, `highest` will always pick the latest version.", "type": "string", "enum": [ "lowest", "highest" ], "default": "lowest" } } } ] } }, "woodpecker": { "description": "Configuration object for the woodpecker manager", "type": "object", "default": { "managerFilePatterns": [ "/^\\.woodpecker(?:/[^/]+)?\\.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" } ] }, "enabled": { "description": "Enable or disable corresponding functionality.", "type": "boolean", "default": true }, "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.", "type": "string" } } } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/snapcraft.json0000644000175100017510000010513315062662115030142 0ustar00runnerrunner{ "$schema": "http://json-schema.org/draft-04/schema#", "definitions": { "grammar-string": { "oneOf": [ { "type": "string", "usage": "" }, { "type": "array", "items": { "minitems": 1, "uniqueItems": true, "oneOf": [ { "type": "object", "usage": "on [,...]:", "additionalProperties": false, "patternProperties": { "^on\\s+.+$": { "$ref": "#/definitions/grammar-string" } } }, { "type": "object", "usage": "to [,...]:", "additionalProperties": false, "patternProperties": { "^to\\s+.+$": { "$ref": "#/definitions/grammar-string" } } }, { "type": "object", "usage": "try:", "additionalProperties": false, "patternProperties": { "^try$": { "$ref": "#/definitions/grammar-string" } } }, { "type": "object", "usage": "else:", "additionalProperties": false, "patternProperties": { "^else$": { "$ref": "#/definitions/grammar-string" } } }, { "type": "string", "pattern": "else fail" } ] } } ] }, "grammar-array": { "type": "array", "minitems": 1, "uniqueItems": true, "items": { "oneOf": [ { "type": "string", "usage": "" }, { "type": "object", "usage": "on [,...]:", "additionalProperties": false, "patternProperties": { "^on\\s+.+$": { "$ref": "#/definitions/grammar-array" } } }, { "type": "object", "usage": "to [,...]:", "additionalProperties": false, "patternProperties": { "^to\\s+.+$": { "$ref": "#/definitions/grammar-array" } } }, { "type": "object", "usage": "try:", "additionalProperties": false, "patternProperties": { "^try$": { "$ref": "#/definitions/grammar-array" } } }, { "type": "object", "usage": "else:", "additionalProperties": false, "patternProperties": { "^else$": { "$ref": "#/definitions/grammar-array" } } } ] } }, "build-environment-grammar": { "type": "array", "minitems": 1, "uniqueItems": true, "items": { "oneOf": [ { "type": "object", "minProperties": 1, "maxProperties": 1, "additionalProperties": { "type": "string" } }, { "type": "object", "usage": "on [,...]:", "additionalProperties": false, "patternProperties": { "^on\\s+.+$": { "$ref": "#/definitions/build-environment-grammar" } } }, { "type": "object", "usage": "to [,...]:", "additionalProperties": false, "patternProperties": { "^to\\s+.+$": { "$ref": "#/definitions/build-environment-grammar" } } }, { "type": "object", "usage": "else:", "additionalProperties": false, "patternProperties": { "^else$": { "$ref": "#/definitions/build-environment-grammar" } } } ] } }, "apt-deb": { "type": "object", "description": "deb repositories", "additionalProperties": false, "properties": { "type": { "type": "string", "enum": ["apt"] }, "architectures": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "description": "Architectures to enable, or restrict to, for this repository. Defaults to host architecture." } }, "formats": { "type": "array", "description": "deb types to enable. Defaults to [deb, deb-src].", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "enum": ["deb", "deb-src"] } }, "components": { "type": "array", "minItems": 0, "uniqueItems": true, "items": { "type": "string", "description": "Deb repository components to enable, e.g. 'main, multiverse, unstable'" } }, "key-id": { "type": "string", "description": "GPG key identifier / fingerprint. May be used to identify key file in /snap/keys/.asc", "pattern": "^[A-Z0-9]{40}$" }, "key-server": { "type": "string", "description": "GPG keyserver to use to fetch GPG , e.g. 'keyserver.ubuntu.com'. Defaults to keyserver.ubuntu.com if key is not found in project." }, "path": { "type": "string", "description": "Exact path to repository (relative to URL). Cannot be used with suites or components." }, "suites": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "description": "Deb repository suites to enable, e.g. 'xenial-updates, xenial-security')." } }, "url": { "type": "string", "description": "Deb repository URL, e.g. 'http://archive.canonical.com/ubuntu'." } }, "required": ["type", "key-id", "url"], "validation-failure": "{!r} is not properly configured deb repository" }, "apt-ppa": { "type": "object", "description": "PPA repository", "additionalProperties": false, "properties": { "type": { "type": "string", "enum": ["apt"] }, "ppa": { "type": "string", "description": "ppa path: e.g. 'canonical-kernel-team/unstable'" } }, "required": ["type", "ppa"], "validation-failure": "{!r} is not properly configured PPA repository" }, "system-username-scope": { "type": "string", "description": "short-form user configuration (: )", "enum": ["shared"], "validation-failure": "{!r} is not a valid user scope. Valid scopes include: 'shared'" }, "environment": { "type": "object", "description": "environment entries", "minItems": 1, "additionalProperties": { "anyOf": [ { "type": "string", "minLength": 1 }, { "type": "number" } ] } } }, "title": "snapcraft schema", "type": "object", "properties": { "build-packages": { "$ref": "#/definitions/grammar-array", "description": "top level build packages." }, "adopt-info": { "type": "string", "description": "name of the part that provides source files that will be parsed to extract snap metadata information" }, "name": { "description": "name of the snap package", "allOf": [ { "$comment": "string, but not too long. the failure message avoids printing repr of the thing, as it could be huge", "type": "string", "validation-failure": "snap names need to be strings.", "maxLength": 40 }, { "pattern": "^[a-z0-9-]*[a-z][a-z0-9-]*$", "validation-failure": "{.instance!r} is not a valid snap name. Snap names can only use ASCII lowercase letters, numbers, and hyphens, and must have at least one letter." }, { "pattern": "^[^-]", "validation-failure": "{.instance!r} is not a valid snap name. Snap names cannot start with a hyphen." }, { "pattern": "[^-]$", "validation-failure": "{.instance!r} is not a valid snap name. Snap names cannot end with a hyphen." }, { "not": { "pattern": "--" }, "validation-failure": "{.instance!r} is not a valid snap name. Snap names cannot have two hyphens in a row." } ] }, "title": { "$comment": "https://forum.snapcraft.io/t/title-length-in-snapcraft-yaml-snap-yaml/8625/10", "description": "title for the snap", "type": "string", "maxLength": 40 }, "architectures": { "description": "architectures on which to build, and on which the resulting snap runs", "type": "array", "minItems": 1, "uniqueItems": true, "format": "architectures", "items": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": false, "required": ["build-on"], "properties": { "build-on": { "anyOf": [ { "type": "string" }, { "type": "array", "minItems": 1, "uniqueItems": true } ] }, "run-on": { "anyOf": [ { "type": "string" }, { "type": "array", "minItems": 1, "uniqueItems": true } ] }, "build-for": { "anyOf": [ { "type": "string" }, { "type": "array", "minItems": 1, "uniqueItems": true } ] } } } ] } }, "version": { "description": "package version", "allOf": [ { "type": "string", "validation-failure": "snap versions need to be strings. They must also be wrapped in quotes when the value will be interpreted by the YAML parser as a non-string. Examples: '1', '1.2', '1.2.3', git (will be replaced by a git describe based version string)." }, { "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9:.+~-]*[a-zA-Z0-9+~])?$", "maxLength": 32, "validation-failure": "{.instance!r} is not a valid snap version string. Snap versions consist of upper- and lower-case alphanumeric characters, as well as periods, colons, plus signs, tildes, and hyphens. They cannot begin with a period, colon, plus sign, tilde, or hyphen. They cannot end with a period, colon, or hyphen." } ] }, "version-script": { "type": "string", "description": "a script that echoes the version to set." }, "license": { "type": "string", "description": "the license the package holds" }, "icon": { "type": "string", "description": "path to a 512x512 icon representing the package.", "format": "icon-path" }, "summary": { "type": "string", "description": "one line summary for the package", "maxLength": 78 }, "description": { "type": "string", "description": "long description of the package", "pattern": ".+", "validation-failure": "{.instance!r} is not a valid description string." }, "assumes": { "type": "array", "description": "featureset the snap requires in order to work.", "minItems": 1, "uniqueItems": true, "items": [ { "type": "string" } ] }, "type": { "type": "string", "description": "the snap type, the implicit type is 'app'", "enum": ["app", "base", "gadget", "kernel", "snapd"] }, "frameworks": { "type": "array", "minItems": 1, "uniqueItems": true, "items": [ { "type": "string" } ] }, "confinement": { "type": "string", "description": "the type of confinement supported by the snap", "default": "strict", "enum": ["classic", "devmode", "strict"] }, "grade": { "type": "string", "description": "the quality grade of the snap", "default": "stable", "enum": ["stable", "devel"] }, "base": { "type": "string", "description": "the base snap to use" }, "build-base": { "type": "string", "description": "force a build environment based on base to create a snap" }, "epoch": { "description": "the snap epoch, used to specify upgrade paths", "format": "epoch" }, "compression": { "description": "compression to use for snap archive - default is otherwise determined by 'snap pack'", "type": "string", "enum": ["lzo", "xz"] }, "environment": { "description": "environment entries for the snap as a whole", "$ref": "#/definitions/environment" }, "passthrough": { "type": "object", "description": "properties to be passed into snap.yaml as-is" }, "layout": { "type": "object", "description": "layout property to be passed into the snap.yaml as-is" }, "package-repositories": { "type": "array", "description": "additional repository configuration.", "minItems": 0, "uniqueItems": true, "items": [ { "oneOf": [ { "$ref": "#/definitions/apt-deb" }, { "$ref": "#/definitions/apt-ppa" } ] } ] }, "system-usernames": { "type": "object", "description": "system username", "additionalProperties": false, "validation-failure": "{!r} is not a valid system-username.", "patternProperties": { "^snap_(daemon|microk8s|aziotedge|aziotdu)$": { "oneOf": [ { "$ref": "#/definitions/system-username-scope" }, { "type": "object", "description": "long-form user configuration", "additionalProperties": false, "properties": { "scope": { "$ref": "#/definitions/system-username-scope" } }, "required": ["scope"] } ] } } }, "donation": { "oneOf": [ { "type": "array", "minItems": 1, "uniqueItems": true, "items": [ { "type": "string" } ] }, { "type": "string" } ] }, "issues": { "oneOf": [ { "type": "array", "minItems": 1, "uniqueItems": true, "items": [ { "type": "string" } ] }, { "type": "string" } ] }, "contact": { "oneOf": [ { "type": "array", "minItems": 1, "uniqueItems": true, "items": [ { "type": "string" } ] }, { "type": "string" } ] }, "source-code": { "type": "string" }, "website": { "type": "string" }, "apps": { "type": "object", "additionalProperties": false, "validation-failure": "{!r} is not a valid app name. App names consist of upper- and lower-case alphanumeric characters and hyphens. They cannot start or end with a hyphen.", "patternProperties": { "^[a-zA-Z0-9](?:-?[a-zA-Z0-9])*$": { "type": "object", "required": ["command"], "dependencies": { "bus-name": ["daemon"], "activates-on": ["daemon"], "refresh-mode": ["daemon"], "stop-mode": ["daemon"], "stop-command": ["daemon"], "start-timeout": ["daemon"], "stop-timeout": ["daemon"], "watchdog-timeout": ["daemon"], "restart-delay": ["daemon"], "post-stop-command": ["daemon"], "reload-command": ["daemon"], "restart-condition": ["daemon"], "before": ["daemon"], "after": ["daemon"], "timer": ["daemon"], "install-mode": ["daemon"] }, "additionalProperties": false, "properties": { "autostart": { "type": "string", "description": "Name of the desktop file placed by the application in $SNAP_USER_DATA/.config/autostart to indicate that application should be started with the user's desktop session.", "pattern": "^[A-Za-z0-9. _#:$-]+\\.desktop$", "validation-failure": "{.instance!r} is not a valid desktop file name (e.g. myapp.desktop)" }, "common-id": { "type": "string", "description": "common identifier across multiple packaging formats" }, "bus-name": { "type": "string", "description": "D-Bus name this service is reachable as", "pattern": "^[A-Za-z0-9/. _#:$-]*$", "validation-failure": "{.instance!r} is not a valid bus name." }, "activates-on": { "type": "array", "description": "dbus interface slots this service activates on", "minitems": 1, "uniqueItems": true, "items": { "type": "string" } }, "desktop": { "type": "string", "description": "path to a desktop file representing the app, relative to the prime directory" }, "command": { "type": "string", "description": "command executed to run the binary" }, "completer": { "type": "string", "description": "bash completion script relative to the prime directory" }, "stop-command": { "type": "string", "description": "command executed to stop a service" }, "post-stop-command": { "type": "string", "description": "command executed after stopping a service" }, "start-timeout": { "type": "string", "pattern": "^[0-9]+(ns|us|ms|s|m)*$", "validation-failure": "{.instance!r} is not a valid timeout value.", "description": "Optional time to wait for daemon to start - ns | us | ms | s | m" }, "stop-timeout": { "type": "string", "pattern": "^[0-9]+(ns|us|ms|s|m)*$", "validation-failure": "{.instance!r} is not a valid timeout value.", "description": "Optional time to wait for daemon to stop - ns | us | ms | s | m" }, "watchdog-timeout": { "type": "string", "pattern": "^[0-9]+(ns|us|ms|s|m)*$", "validation-failure": "{.instance!r} is not a valid timeout value.", "description": "Service watchdog timeout - ns | us | ms | s | m" }, "reload-command": { "type": "string", "description": "Command to use to ask the service to reload its configuration." }, "restart-delay": { "type": "string", "pattern": "^[0-9]+(ns|us|ms|s|m)*$", "validation-failure": "{.instance!r} is not a valid delay value.", "description": "Delay between service restarts - ns | us | ms | s | m. Defaults to unset. See the systemd.service manual on RestartSec for details." }, "timer": { "type": "string", "description": "The service is activated by a timer, app must be a daemon. (systemd.time calendar event string)" }, "daemon": { "type": "string", "description": "signals that the app is a service.", "enum": ["simple", "forking", "oneshot", "notify", "dbus"] }, "after": { "type": "array", "description": "List of applications that are ordered to be started after the current one", "minitems": 1, "uniqueItems": true, "items": { "type": "string" } }, "before": { "type": "array", "description": "List of applications that are ordered to be started before the current one", "minitems": 1, "uniqueItems": true, "items": { "type": "string" } }, "refresh-mode": { "type": "string", "description": "controls if the app should be restarted at all", "enum": ["endure", "restart", "ignore-running"] }, "stop-mode": { "type": "string", "description": "controls how the daemon should be stopped", "enum": ["sigterm", "sigterm-all", "sighup", "sighup-all", "sigusr1", "sigusr1-all", "sigusr2", "sigusr2-all", "sigint", "sigint-all"] }, "restart-condition": { "type": "string", "enum": ["on-success", "on-failure", "on-abnormal", "on-abort", "on-watchdog", "always", "never"] }, "install-mode": { "type": "string", "enum": ["enable", "disable"] }, "slots": { "type": "array", "minitems": 1, "uniqueItems": true, "items": { "type": "string" } }, "plugs": { "type": "array", "minitems": 1, "uniqueItems": true, "items": { "type": "string" } }, "aliases": { "type": "array", "uniqueItems": true, "items": { "type": "string", "pattern": "^[a-zA-Z0-9][-_.a-zA-Z0-9]*$", "validation-failure": "{.instance!r} is not a valid alias. Aliases must be strings, begin with an ASCII alphanumeric character, and can only use ASCII alphanumeric characters and the following special characters: . _ -" } }, "environment": { "description": "environment entries for the specific app.", "$ref": "#/definitions/environment" }, "adapter": { "$comment": "Full should be the default, but it requires command-chain which isn't available in snapd until 2.36, which isn't yet stable. Until 2.36 is generally available, continue with legacy as the default.", "type": "string", "description": "What kind of wrapper to generate for the given command", "enum": ["none", "legacy", "full"], "default": "legacy" }, "command-chain": { "type": "array", "items": { "type": "string", "pattern": "^[A-Za-z0-9/._#:$-]*$", "validation-failure": "{.instance!r} is not a valid command-chain entry. Command chain entries must be strings, and can only use ASCII alphanumeric characters and the following special characters: / . _ # : $ -" } }, "sockets": { "type": "object", "additionalProperties": false, "validation-failure": "{!r} is not a valid socket name. Socket names consist of lower-case alphanumeric characters and hyphens.", "patternProperties": { "^[a-z][a-z0-9_-]*$": { "type": "object", "required": ["listen-stream"], "description": "Sockets for automatic service activation", "additionalProperties": false, "properties": { "listen-stream": { "anyOf": [ { "type": "integer", "usage": "port number, an integer between 1 and 65535", "minimum": 1, "maximum": 65535 }, { "type": "string", "usage": "socket path, a string" } ] }, "socket-mode": { "type": "integer" } } } } }, "passthrough": { "type": "object", "description": "properties to be passed into snap.yaml as-is" }, "extensions": { "type": "array", "minitems": 1, "uniqueItems": true, "items": { "enum": ["env-injector", "flutter-stable", "flutter-beta", "flutter-dev", "flutter-master", "gnome", "gnome-3-28", "gnome-3-34", "gnome-3-38", "kde-neon", "kde-neon-6", "ros1-noetic", "ros1-noetic-desktop", "ros1-noetic-perception", "ros1-noetic-robot", "ros1-noetic-ros-base", "ros1-noetic-ros-core", "ros2-foxy", "ros2-foxy-ros-base", "ros2-foxy-ros-core", "ros2-foxy-desktop", "ros2-humble", "ros2-humble-ros-base", "ros2-humble-ros-core", "ros2-humble-desktop"] } } } } } }, "hooks": { "type": "object", "additionalProperties": false, "validation-failure": "{!r} is not a valid hook name. Hook names consist of lower-case alphanumeric characters and hyphens. They cannot start or end with a hyphen.", "patternProperties": { "^[a-z](?:-?[a-z0-9])*$": { "type": "object", "additionalProperties": false, "properties": { "command-chain": { "type": "array", "items": { "type": "string", "pattern": "^[A-Za-z0-9/._#:$-]*$", "validation-failure": "{.instance!r} is not a valid command-chain entry. Command chain entries must be strings, and can only use ASCII alphanumeric characters and the following special characters: / . _ # : $ -" } }, "environment": { "description": "environment entries for this hook", "$ref": "#/definitions/environment" }, "plugs": { "type": "array", "minitems": 1, "uniqueItems": true, "items": { "type": "string" } }, "passthrough": { "type": "object", "description": "properties to be passed into snap.yaml as-is" } } } } }, "parts": { "type": "object", "minProperties": 1, "additionalProperties": false, "validation-failure": "{!r} is not a valid part name. Part names consist of lower-case alphanumeric characters, hyphens and plus signs. As a special case, 'plugins' is also not a valid part name.", "patternProperties": { "^(?!plugins$)[a-z0-9][a-z0-9+-]*$": { "type": ["object", "null"], "minProperties": 1, "required": ["plugin"], "properties": { "plugin": { "type": "string", "description": "plugin name" }, "source": { "$ref": "#/definitions/grammar-string" }, "source-checksum": { "type": "string", "default": "" }, "source-branch": { "type": "string", "default": "" }, "source-commit": { "type": "string", "default": "" }, "source-depth": { "type": "integer", "default": 0 }, "source-submodules": { "type": "array", "minItems": 0, "uniqueItems": true, "items": { "type": "string", "description": "submodules to fetch, by pathname in source tree" } }, "source-subdir": { "type": "string", "default": "" }, "source-tag": { "type": "string", "default": "" }, "source-type": { "type": "string", "default": "", "enum": ["bzr", "git", "hg", "mercurial", "subversion", "svn", "tar", "zip", "deb", "rpm", "7z", "local"] }, "disable-parallel": { "type": "boolean", "default": false }, "after": { "type": "array", "minitems": 1, "uniqueItems": true, "items": { "type": "string" }, "default": [] }, "stage-snaps": { "$comment": "For some reason 'default' doesn't work if in the ref", "$ref": "#/definitions/grammar-array", "default": [] }, "stage-packages": { "$comment": "For some reason 'default' doesn't work if in the ref", "$ref": "#/definitions/grammar-array", "default": [] }, "build-snaps": { "$comment": "For some reason 'default' doesn't work if in the ref", "$ref": "#/definitions/grammar-array", "default": [] }, "build-packages": { "$comment": "For some reason 'default' doesn't work if in the ref", "$ref": "#/definitions/grammar-array", "default": [] }, "build-environment": { "$ref": "#/definitions/build-environment-grammar", "default": [] }, "build-attributes": { "type": "array", "minitems": 1, "uniqueItems": true, "items": { "type": "string", "enum": ["core22-step-dependencies", "enable-patchelf", "no-patchelf", "no-install", "debug", "keep-execstack"] }, "default": [] }, "organize": { "type": "object", "default": {}, "additionalProperties": { "type": "string", "minLength": 1 } }, "filesets": { "type": "object", "default": {}, "additionalProperties": { "type": "array", "minitems": 1 } }, "stage": { "type": "array", "minitems": 1, "uniqueItems": true, "items": { "type": "string" }, "default": ["*"] }, "prime": { "type": "array", "minitems": 1, "uniqueItems": true, "items": { "type": "string" }, "default": ["*"] }, "override-pull": { "type": "string", "default": "snapcraftctl pull" }, "override-build": { "type": "string", "default": "snapcraftctl build" }, "override-stage": { "type": "string", "default": "snapcraftctl stage" }, "override-prime": { "type": "string", "default": "snapcraftctl prime" }, "parse-info": { "type": "array", "minitems": 1, "uniqueItems": true, "items": { "type": "string" }, "default": [] } } } } }, "plugs": { "type": "object" }, "slots": { "type": "object" }, "ua-services": { "type": "array", "description": "UA services to enable.", "minItems": 1, "uniqueItems": true, "items": [ { "type": "string" } ] } }, "allOf": [ { "anyOf": [ { "usage": "type: (without a base)", "properties": { "type": { "enum": ["base", "kernel", "snapd"] } }, "allOf": [ { "required": ["type"] }, { "not": { "required": ["base"] } } ] }, { "usage": "base: and type: ", "properties": { "type": { "enum": ["app", "gadget"] } }, "allOf": [ { "required": ["base"] } ] }, { "usage": "base: bare (with a build-base)", "properties": { "base": { "enum": ["bare"] } }, "required": ["build-base"] } ] }, { "anyOf": [ { "required": ["summary", "description", "version"] }, { "required": ["adopt-info"] } ] } ], "required": ["name", "parts"], "dependencies": { "license-agreement": ["license"], "license-version": ["license"] }, "additionalProperties": false } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/taskfile.json0000644000175100017510000006015715062662115027771 0ustar00runnerrunner{ "$schema": "http://json-schema.org/draft-07/schema", "title": "Taskfile YAML Schema", "description": "Schema for Taskfile files.", "definitions": { "env": { "$ref": "#/definitions/vars" }, "platforms": { "type": "array", "items": { "type": "string" } }, "tasks": { "type": "object", "patternProperties": { "^.*$": { "anyOf": [ { "type": "string" }, { "type": "array", "items": { "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/task_call" }, { "$ref": "#/definitions/defer_task_call" }, { "$ref": "#/definitions/defer_cmd_call" } ] } }, { "$ref": "#/definitions/task" } ] } } }, "task": { "type": "object", "additionalProperties": false, "properties": { "cmds": { "description": "A list of commands to be executed.", "$ref": "#/definitions/cmds" }, "cmd": { "description": "The command to be executed.", "$ref": "#/definitions/cmd" }, "deps": { "description": "A list of dependencies of this task. Tasks defined here will run in parallel before this task.", "$ref": "#/definitions/deps" }, "label": { "description": "Overrides the name of the task in the output when a task is run. Supports variables.", "type": "string" }, "desc": { "description": "A short description of the task. This is displayed when calling `task --list`.", "type": "string" }, "prompt": { "description": "One or more prompts that will be presented before a task is run. Declining will cancel running the current and any subsequent tasks.", "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "summary": { "description": "A longer description of the task. This is displayed when calling `task --summary [task]`.", "type": "string" }, "aliases": { "description": "A list of alternative names by which the task can be called.", "type": "array", "items": { "type": "string" } }, "sources": { "description": "A list of sources to check before running this task. Relevant for `checksum` and `timestamp` methods. Can be file paths or star globs.", "type": "array", "items": { "$ref": "#/definitions/glob" } }, "generates": { "description": "A list of files meant to be generated by this task. Relevant for `timestamp` method. Can be file paths or star globs.", "type": "array", "items": { "$ref": "#/definitions/glob" } }, "status": { "description": "A list of commands to check if this task should run. The task is skipped otherwise. This overrides `method`, `sources` and `generates`.", "type": "array", "items": { "type": "string" } }, "preconditions": { "description": "A list of commands to check if this task should run. If a condition is not met, the task will error.", "type": "array", "items": { "$ref": "#/definitions/precondition" } }, "dir": { "description": "The directory in which this task should run. Defaults to the current working directory.", "type": "string" }, "set": { "description": "Enables POSIX shell options for all of a task's commands. See https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html", "type": "array", "items": { "$ref": "#/definitions/set" } }, "shopt": { "description": "Enables Bash shell options for all of a task's commands. See https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html", "type": "array", "items": { "$ref": "#/definitions/shopt" } }, "vars": { "description": "A set of variables that can be used in the task.", "$ref": "#/definitions/vars" }, "env": { "description": "A set of environment variables that will be made available to shell commands.", "$ref": "#/definitions/env" }, "dotenv": { "description": "A list of `.env` file paths to be parsed.", "type": "array", "items": { "type": "string" } }, "silent": { "description": "Hides task name and command from output. The command's output will still be redirected to `STDOUT` and `STDERR`. When combined with the `--list` flag, task descriptions will be hidden.", "type": "boolean", "default": false }, "interactive": { "description": "Tells task that the command is interactive.", "type": "boolean", "default": false }, "internal": { "description": "Stops a task from being callable on the command line. It will also be omitted from the output when used with `--list`.", "type": "boolean", "default": false }, "method": { "description": "Defines which method is used to check the task is up-to-date. `timestamp` will compare the timestamp of the sources and generates files. `checksum` will check the checksum (You probably want to ignore the .task folder in your .gitignore file). `none` skips any validation and always run the task.", "type": "string", "enum": ["none", "checksum", "timestamp"], "default": "none" }, "prefix": { "description": "Defines a string to prefix the output of tasks running in parallel. Only used when the output mode is `prefixed`.", "type": "string" }, "ignore_error": { "description": "Continue execution if errors happen while executing commands.", "type": "boolean" }, "run": { "description": "Specifies whether the task should run again or not if called more than once. Available options: `always`, `once` and `when_changed`.", "$ref": "#/definitions/run" }, "platforms": { "description": "Specifies which platforms the task should be run on.", "$ref": "#/definitions/platforms" }, "requires": { "description": "A list of variables which should be set if this task is to run, if any of these variables are unset the task will error and not run", "$ref": "#/definitions/requires_obj" }, "watch": { "description": "Configures a task to run in watch mode automatically.", "type": "boolean", "default": false } } }, "cmds": { "type": "array", "items": { "$ref": "#/definitions/cmd" } }, "cmd": { "anyOf": [ { "type": "string" }, { "$ref": "#/definitions/cmd_call" }, { "$ref": "#/definitions/task_call" }, { "$ref": "#/definitions/defer_task_call" }, { "$ref": "#/definitions/defer_cmd_call" }, { "$ref": "#/definitions/for_cmds_call" } ] }, "deps": { "type": "array", "items": { "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/task_call" }, { "$ref": "#/definitions/for_deps_call" } ] } }, "set": { "type": "string", "enum": [ "allexport", "a", "errexit", "e", "noexec", "n", "noglob", "f", "nounset", "u", "xtrace", "x", "pipefail" ] }, "shopt": { "type": "string", "enum": ["expand_aliases", "globstar", "nullglob"] }, "vars": { "type": "object", "patternProperties": { "^.*$": { "anyOf": [ { "type": [ "boolean", "integer", "null", "number", "string", "array" ] }, { "$ref": "#/definitions/var_subkey" } ] } } }, "var_subkey": { "type": "object", "properties": { "sh": { "type": "string", "description": "The value will be treated as a command and the output assigned to the variable" }, "ref": { "type": "string", "description": "The value will be used to lookup the value of another variable which will then be assigned to this variable" }, "map": { "type": "object", "description": "The value will be treated as a literal map type and stored in the variable" } }, "additionalProperties": false }, "task_call": { "type": "object", "properties": { "task": { "description": "Name of the task to run", "type": "string" }, "vars": { "description": "Values passed to the task called", "$ref": "#/definitions/vars" }, "silent": { "description": "Hides task name and command from output. The command's output will still be redirected to `STDOUT` and `STDERR`.", "type": "boolean" } }, "additionalProperties": false, "required": ["task"] }, "cmd_call": { "type": "object", "properties": { "cmd": { "description": "Command to run", "type": "string" }, "silent": { "description": "Silent mode disables echoing of command before Task runs it", "type": "boolean" }, "set": { "description": "Enables POSIX shell options for this command. See https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html", "type": "array", "items": { "$ref": "#/definitions/set" } }, "shopt": { "description": "Enables Bash shell options for this command. See https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html", "type": "array", "items": { "$ref": "#/definitions/shopt" } }, "ignore_error": { "description": "Prevent command from aborting the execution of task even after receiving a status code of 1", "type": "boolean" }, "platforms": { "description": "Specifies which platforms the command should be run on.", "$ref": "#/definitions/platforms" } }, "additionalProperties": false, "required": ["cmd"] }, "defer_task_call": { "type": "object", "properties": { "defer": { "description": "Run a command when the task completes. This command will run even when the task fails", "anyOf": [ { "$ref": "#/definitions/task_call" } ] } }, "additionalProperties": false, "required": ["defer"] }, "defer_cmd_call": { "type": "object", "properties": { "defer": { "description": "Name of the command to defer", "type": "string" }, "silent": { "description": "Hides task name and command from output. The command's output will still be redirected to `STDOUT` and `STDERR`.", "type": "boolean" } }, "additionalProperties": false, "required": ["defer"] }, "for_cmds_call": { "type": "object", "properties": { "for": { "$ref": "#/definitions/for" }, "cmd": { "description": "Command to run", "type": "string" }, "silent": { "description": "Silent mode disables echoing of command before Task runs it", "type": "boolean" }, "task": { "description": "Task to run", "type": "string" }, "vars": { "description": "Values passed to the task called", "$ref": "#/definitions/vars" }, "platforms": { "description": "Specifies which platforms the command should be run on.", "$ref": "#/definitions/platforms" } }, "oneOf": [{ "required": ["cmd"] }, { "required": ["task"] }], "additionalProperties": false, "required": ["for"] }, "for_deps_call": { "type": "object", "properties": { "for": { "$ref": "#/definitions/for" }, "silent": { "description": "Silent mode disables echoing of command before Task runs it", "type": "boolean" }, "task": { "description": "Task to run", "type": "string" }, "vars": { "description": "Values passed to the task called", "$ref": "#/definitions/vars" } }, "oneOf": [{ "required": ["cmd"] }, { "required": ["task"] }], "additionalProperties": false, "required": ["for"] }, "for": { "anyOf": [ { "$ref": "#/definitions/for_list" }, { "$ref": "#/definitions/for_attribute" }, { "$ref": "#/definitions/for_var" }, { "$ref": "#/definitions/for_matrix" } ] }, "for_list": { "description": "A list of values to iterate over", "type": "array", "items": { "type": "string" } }, "for_attribute": { "description": "The task attribute to iterate over", "type": "string", "enum": ["sources", "generates"] }, "for_var": { "description": "Which variables to iterate over. The variable will be split using any whitespace character by default. This can be changed by using the `split` attribute.", "type": "object", "properties": { "var": { "description": "Name of the variable to iterate over", "type": "string" }, "split": { "description": "String to split the variable on", "type": "string" }, "as": { "description": "What the loop variable should be named", "default": "ITEM", "type": "string" } }, "additionalProperties": false, "required": ["var"] }, "for_matrix": { "description": "A matrix of values to iterate over", "type": "object", "additionalProperties": true, "required": ["matrix"] }, "precondition": { "anyOf": [ { "type": "string" }, { "$ref": "#/definitions/precondition_obj" } ] }, "precondition_obj": { "type": "object", "properties": { "sh": { "description": "Command to run. If that command returns 1, the condition will fail", "type": "string" }, "msg": { "description": "Failure message to display when the condition fails", "type": "string" } }, "additionalProperties": false }, "glob": { "anyOf": [ { "type": "string" }, { "$ref": "#/definitions/glob_obj" } ] }, "glob_obj": { "type": "object", "properties": { "exclude": { "description": "File or glob pattern to exclude from the list", "type": "string" } }, "additionalProperties": false }, "run": { "type": "string", "enum": ["always", "once", "when_changed"] }, "outputString": { "type": "string", "enum": ["interleaved", "prefixed", "group"], "default": "interleaved" }, "outputObject": { "type": "object", "properties": { "group": { "type": "object", "properties": { "begin": { "type": "string" }, "end": { "type": "string" }, "error_only": { "description": "Swallows command output on zero exit code", "type": "boolean", "default": false } } } }, "additionalProperties": false }, "requires_obj": { "type": "object", "properties": { "vars": { "description": "List of variables that must be defined for the task to run", "type": "array", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "name": { "type": "string" }, "enum": { "type": "array", "items": { "type": "string" } } }, "required": ["name", "enum"], "additionalProperties": false } ] } } }, "additionalProperties": false } }, "allOf": [ { "type": "object", "properties": { "version": { "description": "Specify the Taskfile format that this file conforms to.", "oneOf": [ { "type": "string", "pattern": "^(0|[1-9]\\d*)(?:\\.(0|[1-9]\\d*))?(?:\\.(0|[1-9]\\d*))?(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$" }, { "type": "number", "enum": [3] } ] }, "output": { "description": "Defines how the STDOUT and STDERR are printed when running tasks in parallel. The interleaved output prints lines in real time (default). The group output will print the entire output of a command once, after it finishes, so you won't have live feedback for commands that take a long time to run. The prefix output will prefix every line printed by a command with [task-name] as the prefix, but you can customize the prefix for a command with the prefix: attribute.", "anyOf": [ { "$ref": "#/definitions/outputString" }, { "$ref": "#/definitions/outputObject" } ] }, "method": { "description": "Defines which method is used to check the task is up-to-date. (default: checksum)", "type": "string", "enum": ["none", "checksum", "timestamp"], "default": "checksum" }, "includes": { "description": "Imports tasks from the specified taskfiles. The tasks described in the given Taskfiles will be available with the informed namespace.", "type": "object", "patternProperties": { "^.*$": { "anyOf": [ { "type": "string" }, { "type": "object", "properties": { "taskfile": { "description": "The path for the Taskfile or directory to be included. If a directory, Task will look for files named `Taskfile.yml` or `Taskfile.yaml` inside that directory. If a relative path, resolved relative to the directory containing the including Taskfile.", "type": "string" }, "dir": { "description": "The working directory of the included tasks when run.", "type": "string" }, "optional": { "description": "If `true`, no errors will be thrown if the specified file does not exist.", "type": "boolean" }, "flatten": { "description": "If `true`, the tasks from the included Taskfile will be available in the including Taskfile without a namespace. If a task with the same name already exists in the including Taskfile, an error will be thrown.", "type": "boolean" }, "internal": { "description": "Stops any task in the included Taskfile from being callable on the command line. These commands will also be omitted from the output when used with `--list`.", "type": "boolean" }, "aliases": { "description": "Alternative names for the namespace of the included Taskfile.", "type": "array", "items": { "type": "string" } }, "excludes": { "description": "A list of tasks to be excluded from inclusion.", "type": "array", "items": { "type": "string" } }, "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" } } } ] } } }, "vars": { "description": "A set of global variables.", "$ref": "#/definitions/vars" }, "env": { "description": "A set of global environment variables.", "$ref": "#/definitions/env" }, "tasks": { "description": "A set of task definitions.", "$ref": "#/definitions/tasks" }, "silent": { "description": "Default 'silent' options for this Taskfile. If `false`, can be overridden with `true` in a task by task basis.", "type": "boolean" }, "set": { "description": "Enables POSIX shell options for all commands in the Taskfile. See https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html", "type": "array", "items": { "$ref": "#/definitions/set" } }, "shopt": { "description": "Enables Bash shell options for all commands in the Taskfile. See https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html", "type": "array", "items": { "$ref": "#/definitions/shopt" } }, "dotenv": { "type": "array", "description": "A list of `.env` file paths to be parsed.", "items": { "type": "string" } }, "run": { "description": "Default 'run' option for this Taskfile. Available options: `always`, `once` and `when_changed`.", "$ref": "#/definitions/run" }, "interval": { "description": "Sets a different watch interval when using `--watch`, the default being 100 milliseconds. This string should be a valid Go duration: https://pkg.go.dev/time#ParseDuration.", "type": "string", "pattern": "^[0-9]+(?:m|s|ms)$" } }, "additionalProperties": false, "required": ["version"], "anyOf": [ { "required": ["includes"] }, { "required": ["tasks"] }, { "required": ["includes", "tasks"] } ] } ] } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/travis.json0000644000175100017510000017440115062662115027475 0ustar00runnerrunner{ "$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" } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/builtin_schemas/vendor/woodpecker-ci.json0000644000175100017510000007102215062662115030713 0ustar00runnerrunner{ "title": "Woodpecker CI configuration file", "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://raw.githubusercontent.com/woodpecker-ci/woodpecker/main/pipeline/frontend/yaml/linter/schema/schema.json", "description": "Schema of a Woodpecker pipeline file. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax", "type": "object", "required": ["steps"], "additionalProperties": false, "properties": { "$schema": { "type": "string", "format": "uri" }, "variables": { "description": "Use yaml aliases to define variables. Read more: https://woodpecker-ci.org/docs/usage/advanced-usage" }, "clone": { "$ref": "#/definitions/clone" }, "skip_clone": { "type": "boolean" }, "when": { "$ref": "#/definitions/workflow_when" }, "steps": { "$ref": "#/definitions/step_list" }, "services": { "$ref": "#/definitions/services" }, "workspace": { "$ref": "#/definitions/workspace" }, "matrix": { "$ref": "#/definitions/matrix" }, "labels": { "$ref": "#/definitions/labels" }, "depends_on": { "type": "array", "minLength": 1, "items": { "type": "string" } }, "runs_on": { "type": "array", "minLength": 1, "items": { "type": "string" } } }, "definitions": { "string_or_string_slice": { "oneOf": [ { "type": "array", "minLength": 1, "items": { "type": "string" } }, { "type": "string" } ] }, "clone": { "description": "Configures the clone step. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#clone", "oneOf": [ { "type": "object", "additionalProperties": false, "properties": { "git": { "type": "object", "properties": { "image": { "$ref": "#/definitions/step_image" }, "settings": { "$ref": "#/definitions/clone_settings" } } } } }, { "type": "array", "items": { "$ref": "#/definitions/step" }, "minLength": 1 } ] }, "clone_settings": { "description": "Change the settings of your clone plugin. Read more: https://woodpecker-ci.org/plugins/git-clone", "type": "object", "properties": { "depth": { "type": "number", "description": "If specified, uses git's --depth option to create a shallow clone with a limited number of commits, overwritten by partial" }, "recursive": { "type": "boolean", "default": false, "description": "Clones submodules recursively" }, "partial": { "type": "boolean", "description": "Only fetch the one commit and it's blob objects to resolve all files, overwrite depth with 1" }, "lfs": { "type": "boolean", "default": true, "description": "Set this to false to disable retrieval of LFS files" }, "tags": { "type": "boolean", "description": "Fetches tags when set to true, default is false if event is not tag else true" } }, "additionalProperties": { "type": ["boolean", "string", "number", "array", "object"] } }, "step_list": { "description": "The steps section defines a list of steps which will be executed serially, in the order in which they are defined. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#steps", "oneOf": [ { "type": "object", "additionalProperties": { "$ref": "#/definitions/step" }, "minProperties": 1 }, { "type": "array", "items": { "$ref": "#/definitions/step" }, "minLength": 1 } ] }, "workflow_when": { "description": "Whole workflow can be skipped based on conditions. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#when---global-workflow-conditions", "oneOf": [ { "type": "array", "minLength": 1, "items": { "$ref": "#/definitions/workflow_when_condition" } }, { "$ref": "#/definitions/workflow_when_condition" } ] }, "workflow_when_condition": { "type": "object", "additionalProperties": false, "properties": { "repo": { "description": "Execute a step only on a specific repository. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#repo", "$ref": "#/definitions/constraint_list" }, "branch": { "description": "Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#branch", "$ref": "#/definitions/constraint_list" }, "event": { "description": "Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#event", "default": [], "$ref": "#/definitions/event_constraint_list" }, "ref": { "description": "Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#ref", "type": "string" }, "cron": { "description": "filter cron by title. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#cron", "$ref": "#/definitions/constraint_list" }, "platform": { "description": "Execute a step only on a specific platform. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#platform", "$ref": "#/definitions/constraint_list" }, "instance": { "description": "Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#instance", "$ref": "#/definitions/constraint_list" }, "path": { "description": "Execute a step only on commit with certain files added/removed/modified. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#path", "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } }, { "type": "object", "properties": { "include": { "type": "array", "items": { "type": "string" } }, "exclude": { "type": "array", "items": { "type": "string" } }, "ignore_message": { "type": "string" }, "on_empty": { "type": "boolean" } }, "additionalProperties": false } ] }, "evaluate": { "description": "Execute a step only if the expression evaluates to true. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#evaluate", "type": "string" } } }, "step": { "description": "A step of your workflow executes either arbitrary commands or uses a plugin. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#steps", "anyOf": [ { "$ref": "#/definitions/commands_step" }, { "$ref": "#/definitions/plugin_step" } ] }, "commands_step": { "description": "Every step of your pipeline executes arbitrary commands inside a specified docker container. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#steps", "type": "object", "additionalProperties": false, "required": ["image"], "allOf": [ { "if": { "properties": { "detach": { "const": true } } }, "then": {}, "else": { "anyOf": [ { "required": ["commands"] }, { "required": ["entrypoint"] } ] } } ], "properties": { "name": { "description": "The name of the step. Can be used if using the array style steps list.", "type": "string" }, "image": { "$ref": "#/definitions/step_image" }, "privileged": { "$ref": "#/definitions/step_privileged" }, "pull": { "$ref": "#/definitions/step_pull" }, "commands": { "$ref": "#/definitions/step_commands" }, "environment": { "$ref": "#/definitions/step_environment" }, "directory": { "$ref": "#/definitions/step_directory" }, "when": { "$ref": "#/definitions/step_when" }, "volumes": { "$ref": "#/definitions/step_volumes" }, "depends_on": { "description": "Execute a step after another step has finished.", "$ref": "#/definitions/string_or_string_slice" }, "detach": { "description": "Detach a step to run in background until pipeline finishes. Read more: https://woodpecker-ci.org/docs/usage/services#detachment", "type": "boolean" }, "failure": { "description": "How to handle the failure of this step. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#failure", "type": "string", "enum": ["fail", "ignore"], "default": "fail" }, "backend_options": { "$ref": "#/definitions/step_backend_options" }, "entrypoint": { "description": "Defines container entrypoint.", "$ref": "#/definitions/string_or_string_slice" }, "dns": { "description": "Change DNS server for step. Only allowed if 'Trusted Network' option is enabled in repo settings by an admin. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#dns", "$ref": "#/definitions/string_or_string_slice" }, "dns_search": { "description": "Change DNS lookup domain for step. Only allowed if 'Trusted Network' option is enabled in repo settings by an admin. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#dns", "$ref": "#/definitions/string_or_string_slice" } } }, "plugin_step": { "description": "Plugins let you execute predefined functions in a more secure context. Read more: https://woodpecker-ci.org/docs/usage/plugins/overview", "type": "object", "additionalProperties": false, "required": ["image"], "properties": { "name": { "description": "The name of the step. Can be used if using the array style steps list.", "type": "string" }, "image": { "$ref": "#/definitions/step_image" }, "privileged": { "$ref": "#/definitions/step_privileged" }, "pull": { "$ref": "#/definitions/step_pull" }, "directory": { "$ref": "#/definitions/step_directory" }, "settings": { "$ref": "#/definitions/step_settings" }, "when": { "$ref": "#/definitions/step_when" }, "volumes": { "$ref": "#/definitions/step_volumes" }, "depends_on": { "description": "Execute a step after another step has finished.", "$ref": "#/definitions/string_or_string_slice" }, "detach": { "description": "Detach a step to run in background until pipeline finishes. Read more: https://woodpecker-ci.org/docs/usage/services#detachment", "type": "boolean" }, "failure": { "description": "How to handle the failure of this step. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#failure", "type": "string", "enum": ["fail", "ignore"], "default": "fail" }, "backend_options": { "$ref": "#/definitions/step_backend_options" } } }, "step_when": { "description": "Steps can be skipped based on conditions. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#when---conditional-execution", "oneOf": [ { "type": "array", "minLength": 1, "items": { "$ref": "#/definitions/step_when_condition" } }, { "$ref": "#/definitions/step_when_condition" } ] }, "step_when_condition": { "type": "object", "additionalProperties": false, "properties": { "repo": { "description": "Execute a step only on a specific repository. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#repo", "$ref": "#/definitions/constraint_list" }, "branch": { "description": "Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#branch", "$ref": "#/definitions/constraint_list" }, "event": { "description": "Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#event", "$ref": "#/definitions/event_constraint_list" }, "ref": { "description": "Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#ref", "type": "string" }, "cron": { "description": "filter cron by title. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#cron", "$ref": "#/definitions/constraint_list" }, "status": { "description": "Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#status", "oneOf": [ { "type": "array", "minLength": 1, "items": { "type": "string", "enum": ["success", "failure"] } }, { "type": "string", "enum": ["success", "failure"] } ] }, "platform": { "description": "Execute a step only on a specific platform. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#platform", "$ref": "#/definitions/constraint_list" }, "matrix": { "description": "Read more: https://woodpecker-ci.org/docs/usage/matrix-workflows", "type": "object", "additionalProperties": { "type": ["boolean", "string", "number"] } }, "instance": { "description": "Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#instance", "$ref": "#/definitions/constraint_list" }, "path": { "description": "Execute a step only on commit with certain files added/removed/modified. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#path", "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } }, { "type": "object", "properties": { "include": { "type": "array", "items": { "type": "string" } }, "exclude": { "type": "array", "items": { "type": "string" } }, "ignore_message": { "type": "string" }, "on_empty": { "type": "boolean" } }, "additionalProperties": false } ] }, "evaluate": { "description": "Execute a step only if the expression evaluates to true. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#evaluate", "type": "string" } } }, "event_enum": { "enum": ["push", "pull_request", "pull_request_closed", "tag", "deployment", "cron", "manual", "release"] }, "event_constraint_list": { "oneOf": [ { "$ref": "#/definitions/event_enum" }, { "type": "array", "minLength": 1, "items": { "$ref": "#/definitions/event_enum" } } ] }, "constraint_list": { "oneOf": [ { "type": "string" }, { "type": "array", "minLength": 1, "items": { "type": "string" } }, { "type": "object", "additionalProperties": false, "properties": { "include": { "oneOf": [ { "type": "string" }, { "type": "array", "minLength": 1, "items": { "type": "string" } } ] }, "exclude": { "oneOf": [ { "type": "string" }, { "type": "array", "minLength": 1, "items": { "type": "string" } } ] } } } ] }, "step_image": { "description": "Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#image", "type": "string" }, "step_privileged": { "description": "Run the step in privileged mode. Read more: https://woodpecker-ci.org/docs/next/usage/workflow-syntax#privileged-mode", "type": "boolean", "default": false }, "step_pull": { "description": "Always pull the latest image on pipeline execution Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#image", "type": "boolean" }, "step_commands": { "description": "Commands of every pipeline step are executed serially as if you would enter them into your local shell. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#commands", "oneOf": [ { "type": "array", "items": { "type": "string" }, "minLength": 1 }, { "type": "string" } ] }, "step_environment": { "description": "Pass environment variables to a pipeline step. Read more: https://woodpecker-ci.org/docs/usage/environment", "type": "object", "additionalProperties": { "type": ["boolean", "string", "number", "array", "object"] } }, "step_settings": { "description": "Change the settings of your plugin. Read more: https://woodpecker-ci.org/docs/usage/plugins/overview", "type": "object", "additionalProperties": { "type": ["boolean", "string", "number", "array", "object"] } }, "step_volumes": { "description": "Mount files or folders from the host machine into your step container. Read more: https://woodpecker-ci.org/docs/usage/volumes", "type": "array", "items": { "type": "string" }, "minLength": 1 }, "step_directory": { "description": "Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#directory", "type": "string" }, "step_backend_options": { "description": "Advanced options for the different agent backends", "type": "object", "properties": { "kubernetes": { "$ref": "#/definitions/step_backend_kubernetes" } } }, "step_backend_kubernetes": { "description": "Advanced options for the kubernetes agent backends", "type": "object", "properties": { "labels": { "type": "object", "additionalProperties": { "type": ["boolean", "string", "number"] } }, "annotations": { "type": "object", "additionalProperties": { "type": ["boolean", "string", "number"] } }, "tolerations": { "description": "The tolerations section defines a list of references to the native Kubernetes tolerations. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#tolerations", "type": "array", "items": { "$ref": "#/definitions/step_backend_kubernetes_toleration_object" }, "minLength": 1 }, "securityContext": { "$ref": "#/definitions/step_backend_kubernetes_security_context" }, "runtimeClassName": { "description": "Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#runtimeclassname", "type": "string" }, "secrets": { "description": "The secrets section defines a list of references to the native Kubernetes secrets", "type": "array", "items": { "$ref": "#/definitions/step_kubernetes_secret" }, "minLength": 1 } } }, "step_backend_kubernetes_resources": { "description": "Resources for the kubernetes backend. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#step-specific-configuration", "type": "object", "properties": { "requests": { "$ref": "#/definitions/step_kubernetes_resources_object" }, "limits": { "$ref": "#/definitions/step_kubernetes_resources_object" } } }, "step_backend_kubernetes_security_context": { "description": "Pods / containers security context. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#security-context", "type": "object", "properties": { "privileged": { "type": "boolean" }, "runAsNonRoot": { "type": "boolean" }, "runAsUser": { "type": "number" }, "runAsGroup": { "type": "number" }, "fsGroup": { "type": "number" }, "seccompProfile": { "$ref": "#/definitions/step_backend_kubernetes_secprofile" }, "apparmorProfile": { "$ref": "#/definitions/step_backend_kubernetes_secprofile" } } }, "step_backend_kubernetes_secprofile": { "description": "Pods / containers security profile. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#step-specific-configuration", "type": "object", "properties": { "type": { "type": "string" }, "localhostProfile": { "type": "string" } } }, "step_kubernetes_resources_object": { "description": "A list of kubernetes resource mappings", "type": "object", "additionalProperties": { "type": "string" } }, "step_backend_kubernetes_service_account": { "description": "serviceAccountName to be use by job. Read more: https://woodpecker-ci.org/docs/administration/configuration/backends/kubernetes#service-account", "type": "object", "properties": { "requests": { "$ref": "#/definitions/step_kubernetes_service_account_object" }, "limits": { "$ref": "#/definitions/step_kubernetes_service_account_object" } } }, "step_kubernetes_service_account_object": { "description": "A list of kubernetes resource mappings", "type": "object", "additionalProperties": { "type": "string" } }, "step_kubernetes_secret": { "description": "A reference to a native Kubernetes secret", "type": "object", "additionalProperties": false, "properties": { "name": { "description": "The name of the secret. Can be used if using the array style secrets list.", "type": "string" }, "key": { "description": "The key of the secret to select from.", "type": "string" }, "target": { "$ref": "#/definitions/step_kubernetes_secret_target" } } }, "step_kubernetes_secret_target": { "description": "A target which a native Kubernetes secret maps to.", "oneOf": [ { "type": "object", "additionalProperties": false, "properties": { "env": { "description": "The name of the environment variable which secret maps to.", "type": "string" } } }, { "type": "object", "additionalProperties": false, "properties": { "file": { "description": "The filename (path) which secret maps to.", "type": "string" } } } ] }, "step_backend_kubernetes_toleration_object": { "description": "Toleration entry for the kubernetes backend.", "type": "object", "properties": { "key": { "type": "string" }, "operator": { "type": "string" }, "value": { "type": "string" }, "effect": { "type": "string" }, "tolerationSeconds": { "type": "integer" } } }, "services": { "description": "Read more: https://woodpecker-ci.org/docs/usage/services", "oneOf": [ { "type": "object", "additionalProperties": { "$ref": "#/definitions/service" }, "minProperties": 1 }, { "type": "array", "items": { "$ref": "#/definitions/service" }, "minLength": 1 } ] }, "service": { "description": "Read more: https://woodpecker-ci.org/docs/usage/services", "type": "object", "additionalProperties": false, "minProperties": 1, "required": ["image"], "properties": { "name": { "description": "The name of the service. Can be used if using the array style services list", "type": "string" }, "image": { "$ref": "#/definitions/step_image" }, "privileged": { "$ref": "#/definitions/step_privileged" }, "pull": { "$ref": "#/definitions/step_pull" }, "commands": { "$ref": "#/definitions/step_commands" }, "environment": { "$ref": "#/definitions/step_environment" }, "directory": { "$ref": "#/definitions/step_directory" }, "settings": { "$ref": "#/definitions/step_settings" }, "when": { "$ref": "#/definitions/step_when" }, "volumes": { "$ref": "#/definitions/step_volumes" }, "backend_options": { "$ref": "#/definitions/step_backend_options" }, "ports": { "description": "expose ports to which other steps can connect to", "type": "array", "items": { "oneOf": [ { "type": "number" }, { "type": "string" } ] }, "minLength": 1 } } }, "workspace": { "description": "Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#workspace", "type": "object", "additionalProperties": true }, "matrix": { "description": "Execute pipeline for each matrix combination. Read more: https://woodpecker-ci.org/docs/usage/matrix-workflows", "type": "object", "properties": { "include": { "type": "array", "items": { "type": "object" }, "minLength": 1 } }, "additionalProperties": { "type": "array", "items": { "type": ["boolean", "string", "number"] }, "minLength": 1 } }, "labels": { "description": "Configures the labels used for the agent selection. Read more: https://woodpecker-ci.org/docs/usage/workflow-syntax#labels", "type": "object", "additionalProperties": { "type": ["boolean", "string", "number"] } } } } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/cachedownloader.py0000644000175100017510000001544215062662115024317 0ustar00runnerrunnerfrom __future__ import annotations import calendar import contextlib import hashlib import io import os import platform import shutil import tempfile import time import typing as t import requests _LASTMOD_FMT = "%a, %d %b %Y %H:%M:%S %Z" def _base_cache_dir() -> str | None: sysname = platform.system() # on windows, try to get the appdata env var # this *could* result in cache_dir=None, which is fine, just skip caching in # that case if sysname == "Windows": cache_dir = os.getenv("LOCALAPPDATA", os.getenv("APPDATA")) # macOS -> app support dir elif sysname == "Darwin": cache_dir = os.path.expanduser("~/Library/Caches") # default for unknown platforms, namely linux behavior # use XDG env var and default to ~/.cache/ else: cache_dir = os.getenv("XDG_CACHE_HOME", os.path.expanduser("~/.cache")) return cache_dir def _resolve_cache_dir(dirname: str) -> str | None: cache_dir = _base_cache_dir() if cache_dir: cache_dir = os.path.join(cache_dir, "check_jsonschema", dirname) return cache_dir def _lastmod_from_response(response: requests.Response) -> float: try: return calendar.timegm( time.strptime(response.headers["last-modified"], _LASTMOD_FMT) ) # OverflowError: time outside of platform-specific bounds # ValueError: malformed/unparseable # LookupError: no such header except (OverflowError, ValueError, LookupError): return 0.0 def _get_request( file_url: str, *, response_ok: t.Callable[[requests.Response], bool] ) -> requests.Response: num_retries = 2 r: requests.Response | None = None for _attempt in range(num_retries + 1): try: r = requests.get(file_url, stream=True) except requests.RequestException as e: if _attempt == num_retries: raise FailedDownloadError("encountered error during download") from e continue if r.ok and response_ok(r): return r assert r is not None raise FailedDownloadError( f"got response with status={r.status_code}, retries exhausted" ) def _atomic_write(dest: str, content: bytes) -> None: # download to a temp file and then move to the dest # this makes the download safe if run in parallel (parallel runs # won't create a new empty file for writing and cause failures) fp = tempfile.NamedTemporaryFile(mode="wb", delete=False) fp.write(content) fp.close() shutil.copy(fp.name, dest) os.remove(fp.name) def _cache_hit(cachefile: str, response: requests.Response) -> bool: # no file? miss if not os.path.exists(cachefile): return False # compare mtime on any cached file against the remote last-modified time # it is considered a hit if the local file is at least as new as the remote file local_mtime = os.path.getmtime(cachefile) remote_mtime = _lastmod_from_response(response) return local_mtime >= remote_mtime def url_to_cache_filename(ref_url: str) -> str: """ Given a schema URL, convert it to a filename for caching in a cache dir. Rules are as follows: - the base filename is an sha256 hash of the URL - if the filename ends in an extension (.json, .yaml, etc) that extension is appended to the hash Preserving file extensions preserves the extension-based logic used for parsing, and it also helps a local editor (browsing the cache) identify filetypes. """ filename = hashlib.sha256(ref_url.encode()).hexdigest() if "." in (last_part := ref_url.rpartition("/")[-1]): _, _, extension = last_part.rpartition(".") filename = f"{filename}.{extension}" return filename class FailedDownloadError(Exception): pass class CacheDownloader: def __init__(self, cache_dir: str, *, disable_cache: bool = False) -> None: self._cache_dir = _resolve_cache_dir(cache_dir) self._disable_cache = disable_cache def _download( self, file_url: str, filename: str, response_ok: t.Callable[[requests.Response], bool], ) -> str: assert self._cache_dir is not None os.makedirs(self._cache_dir, exist_ok=True) dest = os.path.join(self._cache_dir, filename) def check_response_for_download(r: requests.Response) -> bool: # if the response indicates a cache hit, treat it as valid # this ensures that we short-circuit any further evaluation immediately on # a hit if _cache_hit(dest, r): return True # we now know it's not a hit, so validate the content (forces download) return response_ok(r) response = _get_request(file_url, response_ok=check_response_for_download) # check to see if we have a file which matches the connection # only download if we do not (cache miss, vs hit) if not _cache_hit(dest, response): _atomic_write(dest, response.content) return dest @contextlib.contextmanager def open( self, file_url: str, filename: str, validate_response: t.Callable[[requests.Response], bool], ) -> t.Iterator[t.IO[bytes]]: if (not self._cache_dir) or self._disable_cache: yield io.BytesIO( _get_request(file_url, response_ok=validate_response).content ) else: with open( self._download(file_url, filename, response_ok=validate_response), "rb" ) as fp: yield fp def bind( self, file_url: str, filename: str | None = None, validation_callback: t.Callable[[bytes], t.Any] | None = None, ) -> BoundCacheDownloader: return BoundCacheDownloader( file_url, self, filename=filename, validation_callback=validation_callback ) class BoundCacheDownloader: def __init__( self, file_url: str, downloader: CacheDownloader, *, filename: str | None = None, validation_callback: t.Callable[[bytes], t.Any] | None = None, ) -> None: self._file_url = file_url self._filename = filename or url_to_cache_filename(file_url) self._downloader = downloader self._validation_callback = validation_callback @contextlib.contextmanager def open(self) -> t.Iterator[t.IO[bytes]]: with self._downloader.open( self._file_url, self._filename, validate_response=self._validate_response, ) as fp: yield fp def _validate_response(self, response: requests.Response) -> bool: if not self._validation_callback: return True try: self._validation_callback(response.content) return True except ValueError: return False ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/catalog.py0000644000175100017510000002403115062662115022601 0ustar00runnerrunnerfrom __future__ import annotations import typing as t def _bitbucket_pipelines_url() -> str: return "https://api.bitbucket.org/schemas/pipelines-configuration" def _githubusercontent_url(owner: str, repo: str, ref: str, path: str) -> str: return f"https://raw.githubusercontent.com/{owner}/{repo}/{ref}/{path}" # this lists custom schemas which are *not* part of the catalog CUSTOM_SCHEMA_NAMES = [ "github-workflows-require-timeout", ] # Known configs. The SchemaCatalog lists known schema URLs with their names. # kept in alphabetical order by name # # Additional config could be associated with the schemas in the future. SCHEMA_CATALOG: dict[str, dict[str, t.Any]] = { "azure-pipelines": { "url": _githubusercontent_url( "microsoft", "azure-pipelines-vscode", "main", "service-schema.json" ), "hook_config": { "name": "Validate Azure Pipelines", "description": ( "Validate Azure Pipelines config against the schema provided " "by Microsoft" ), "add_args": [ "--data-transform", "azure-pipelines", "--regex-variant", "nonunicode", ], "files": r"^(\.)?azure-pipelines\.(yml|yaml)$", "types": "yaml", }, }, "bamboo-spec": { "url": "https://json.schemastore.org/bamboo-spec.json", "hook_config": { "name": "Validate Bamboo Specs", "files": r"^bamboo-specs/.*\.(yml|yaml)$", "types": "yaml", }, }, "bitbucket-pipelines": { "url": _bitbucket_pipelines_url(), "hook_config": { "name": "Validate Bitbucket Pipelines", "files": r"bitbucket-pipelines\.(yml|yaml)$", "types": "yaml", }, }, "buildkite": { "url": _githubusercontent_url( "buildkite", "pipeline-schema", "main", "schema.json" ), "hook_config": { "name": "Validate Buildkite Pipelines", "description": ( "Validate Buildkite Pipelines against the schema provided by Buildkite" ), "files": [ r"buildkite\.(yml|yaml|json)", r"buildkite\.(.+)\.(yml|yaml|json)", r"(.*/)?\.buildkite/pipeline\.(yml|yaml|json)", r"(.*/)?\.buildkite/pipeline\.(.+)\.(yml|yaml|json)", ], "types_or": ["json", "yaml"], }, }, "circle-ci": { "url": "https://json.schemastore.org/circleciconfig.json", "hook_config": { "name": "Validate CircleCI config", "description": ( "Validate CircleCI config against the schema provided by SchemaStore" ), "files": r"^\.circleci/config\.(yml|yaml)$", "type": "yaml", }, }, "cloudbuild": { "url": "https://json.schemastore.org/cloudbuild.json", "hook_config": { "name": "Validate Google Cloud Build config", "description": ( "Validate Google Cloud Build config against the schema provided " "by SchemaStore" ), "files": r"^cloudbuild\.(yml|yaml|json)$", "types_or": ["json", "yaml"], }, }, "codecov": { "url": "https://www.schemastore.org/codecov.json", "hook_config": { "name": "Validate Codecov config", "files": [ r"^((\.github|dev)/)?\.?codecov\.ya?ml$", ], "types": "yaml", }, }, "compose-spec": { "url": _githubusercontent_url( "compose-spec", "compose-spec", "master", "schema/compose-spec.json", ), "hook_config": { "name": "Validate Docker Compose files", "files": [ r"([^/]*/)*docker-compose(\.[\.a-zA-Z0-9_-]*)*\.(yml|yaml)", r"([^/]*/)*compose(\.[\.a-zA-Z0-9_-]*)*\.(yml|yaml)", ], "types": "yaml", }, }, "dependabot": { "url": "https://json.schemastore.org/dependabot-2.0.json", "hook_config": { "name": "Validate Dependabot Config (v2)", "files": r"^\.github/dependabot\.(yml|yaml)$", "types": "yaml", }, }, "drone-ci": { "url": "https://json.schemastore.org/drone.json", "hook_config": { "name": "Validate Drone-CI Config", "files": r"^\.drone\.yml$", "types": "yaml", }, }, "github-actions": { "url": "https://json.schemastore.org/github-action", "hook_config": { "name": "Validate GitHub Actions", "files": [ r"action\.(yml|yaml)", r"\.github/actions/(.+/)?action\.(yml|yaml)", ], "types": "yaml", }, }, "github-issue-config": { "url": "https://www.schemastore.org/github-issue-config.json", "hook_config": { "name": "Validate GitHub issue config", "files": [ r"^\.github/ISSUE_TEMPLATE/config\.yml$", ], "types": "yaml", }, }, "github-issue-forms": { "url": "https://www.schemastore.org/github-issue-forms.json", "hook_config": { "name": "Validate GitHub issue forms", "files": [ r"^\.github/ISSUE_TEMPLATE/(?!config\.ya?ml$).+$", ], "types": "yaml", }, }, "github-workflows": { "url": "https://json.schemastore.org/github-workflow", "hook_config": { "name": "Validate GitHub Workflows", "files": r"^\.github/workflows/[^/]+$", "types": "yaml", }, }, "gitlab-ci": { "url": ( "https://gitlab.com/gitlab-org/gitlab/-/raw/master/app/assets/javascripts" "/editor/schema/ci.json" ), "hook_config": { "name": "Validate GitLab CI config", "add_args": [ "--data-transform", "gitlab-ci", "--regex-variant", "nonunicode", ], "files": r"^.*\.gitlab-ci\.yml$", "types": "yaml", }, }, "meltano": { "url": _githubusercontent_url( "meltano", "meltano", "main", "src/meltano/schemas/meltano.schema.json", ), "hook_config": { "name": "Validate Meltano Config", "description": ( "Validate Meltano config against the schema provided by Meltano" ), "files": [ r".*meltano\.yml", r"meltano-manifest\.json", r"meltano-manifest\..+\.json", ], "types_or": ["json", "yaml"], }, }, "mergify": { "url": "https://docs.mergify.com/mergify-configuration-schema.json", "hook_config": { "name": "Validate Mergify config", "files": [ r"\.mergify\.yml", r"\.mergify/config\.yml", r"\.github/mergify\.yml", ], "types": "yaml", }, }, "readthedocs": { "url": _githubusercontent_url( "readthedocs", "readthedocs.org", "main", "readthedocs/rtd_tests/fixtures/spec/v2/schema.json", ), "hook_config": { "name": "Validate ReadTheDocs Config", "description": ( "Validate ReadTheDocs config against the schema " "provided by ReadTheDocs" ), "files": r"^\.readthedocs\.(yml|yaml)$", "types": "yaml", }, }, "renovate": { "url": "https://docs.renovatebot.com/renovate-schema.json", "hook_config": { "name": "Validate Renovate Config", "description": ( "Validate Renovate config against the schema provided by " "Renovate (does not support renovate config in package.json)" ), "add_args": ["--regex-variant", "nonunicode"], "files": [ r"renovate\.(json|json5)", r"\.(github|gitlab)/renovate\.(json|json5)", r"\.renovaterc", r"\.renovaterc\.(json|json5)", ], }, }, "snapcraft": { "url": _githubusercontent_url( "canonical", "snapcraft", "main", "schema/snapcraft.json" ), "hook_config": { "name": "Validate snapcraft files", "description": ( "Validate snapcraft files against the schema provided by Canonical" ), "files": r"^(.+/)?snapcraft\.yaml$", "types": "yaml", }, }, "taskfile": { "url": "https://taskfile.dev/schema.json", "hook_config": { "name": "Validate Taskfile Config", "description": ( "Validate Taskfile config against the schema provided by Task" ), "files": [ r"Taskfile\.(yml|yaml)", r"taskfile\.(yml|yaml)", r"Taskfile\.dist\.(yml|yaml)", r"taskfile\.dist\.(yml|yaml)", ], "types": "yaml", }, }, "travis": { "url": "https://json.schemastore.org/travis", "hook_config": { "name": "Validate Travis Config", "files": r"^\.travis\.(yml|yaml)$", "types": "yaml", }, }, "woodpecker-ci": { "url": ( "https://raw.githubusercontent.com/woodpecker-ci/woodpecker/main/pipeline" "/frontend/yaml/linter/schema/schema.json" ), "hook_config": { "name": "Validate Woodpecker Config", "files": [ r"^\.woodpecker\.(yml|yaml)$", r"^\.woodpecker/.+\.(yml|yaml)$", ], "types": "yaml", }, }, } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/checker.py0000644000175100017510000000634715062662115022605 0ustar00runnerrunnerfrom __future__ import annotations import pathlib import typing as t import click import jsonschema import referencing.exceptions from . import utils from .formats import FormatOptions from .instance_loader import InstanceLoader from .parsers import ParseError from .regex_variants import RegexImplementation from .reporter import Reporter from .result import CheckResult from .schema_loader import SchemaLoaderBase, SchemaParseError, UnsupportedUrlScheme class _Exit(Exception): def __init__(self, code: int) -> None: self.code = code class SchemaChecker: def __init__( self, schema_loader: SchemaLoaderBase, instance_loader: InstanceLoader, reporter: Reporter, *, format_opts: FormatOptions, regex_impl: RegexImplementation, traceback_mode: str = "short", fill_defaults: bool = False, ) -> None: self._schema_loader = schema_loader self._instance_loader = instance_loader self._reporter = reporter self._format_opts = format_opts self._regex_impl = regex_impl self._traceback_mode = traceback_mode self._fill_defaults = fill_defaults def _fail(self, msg: str, err: Exception | None = None) -> t.NoReturn: click.echo(msg, err=True) if err is not None: utils.print_error(err, mode=self._traceback_mode) raise _Exit(1) def get_validator( self, path: pathlib.Path | str, doc: dict[str, t.Any] ) -> jsonschema.protocols.Validator: try: return self._schema_loader.get_validator( path, doc, self._format_opts, self._regex_impl, self._fill_defaults ) except SchemaParseError as e: self._fail("Error: schemafile could not be parsed as JSON", e) except jsonschema.SchemaError as e: self._fail("Error: schemafile was not valid\n", e) except UnsupportedUrlScheme as e: self._fail(f"Error: {e}\n", e) except Exception as e: self._fail("Error: Unexpected Error building schema validator", e) def _build_result(self) -> CheckResult: result = CheckResult() for path, data in self._instance_loader.iter_files(): if isinstance(data, ParseError): result.record_parse_error(path, data) else: validator = self.get_validator(path, data) passing = True for err in validator.iter_errors(data): result.record_validation_error(path, err) passing = False if passing: result.record_validation_success(path) return result def _run(self) -> None: try: result = self._build_result() except ( referencing.exceptions.NoSuchResource, referencing.exceptions.Unretrievable, referencing.exceptions.Unresolvable, ) as e: self._fail("Failure resolving $ref within schema\n", e) self._reporter.report_result(result) if not result.success: raise _Exit(1) def run(self) -> int: try: self._run() except _Exit as e: return e.code return 0 ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.899612 check_jsonschema-0.34.0/src/check_jsonschema/cli/0000755000175100017510000000000015062662127021367 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/cli/__init__.py0000644000175100017510000000006415062662115023475 0ustar00runnerrunnerfrom .main_command import main __all__ = ("main",) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/cli/main_command.py0000644000175100017510000002447715062662115024376 0ustar00runnerrunnerfrom __future__ import annotations import os import textwrap import typing as t import click import jsonschema from ..catalog import CUSTOM_SCHEMA_NAMES, SCHEMA_CATALOG from ..checker import SchemaChecker from ..formats import KNOWN_FORMATS from ..instance_loader import InstanceLoader from ..parsers import SUPPORTED_FILE_FORMATS from ..regex_variants import RegexImplementation, RegexVariantName from ..reporter import REPORTER_BY_NAME, Reporter from ..schema_loader import ( BuiltinSchemaLoader, MetaSchemaLoader, SchemaLoader, SchemaLoaderBase, ) from ..transforms import TRANSFORM_LIBRARY from .param_types import CommaDelimitedList, LazyBinaryReadFile, ValidatorClassName from .parse_result import ParseResult, SchemaLoadingMode BUILTIN_SCHEMA_NAMES = [f"vendor.{k}" for k in SCHEMA_CATALOG.keys()] + [ f"custom.{k}" for k in CUSTOM_SCHEMA_NAMES ] BUILTIN_SCHEMA_CHOICES = ( BUILTIN_SCHEMA_NAMES + list(SCHEMA_CATALOG.keys()) + CUSTOM_SCHEMA_NAMES ) def set_color_mode(ctx: click.Context, param: str, value: str) -> None: if "NO_COLOR" in os.environ: ctx.color = False else: ctx.color = { "auto": None, "always": True, "never": False, }[value] def pretty_helptext_list(values: list[str] | tuple[str, ...]) -> str: return textwrap.indent( "\n".join( textwrap.wrap( ", ".join(values), width=75, break_long_words=False, break_on_hyphens=False, ), ), " ", ) @click.command( "check-jsonschema", help="""\ Check JSON and YAML files against a JSON Schema. The schema is specified either with '--schemafile' or with '--builtin-schema'. 'check-jsonschema' supports format checks with appropriate libraries installed, including the following formats by default: date, date-time, email, ipv4, ipv6, regex, uuid \b For handling of regexes, there are multiple modes which can be specified with '--regex-variant': default | use ECMAScript regex syntax (via regress) nonunicode | use ECMAScript regex syntax, but in non-unicode mode (via regress) python | use python regex syntax \b The '--builtin-schema' flag supports the following schema names: """ + pretty_helptext_list(BUILTIN_SCHEMA_NAMES) + """\ \b The '--disable-formats' flag supports the following formats: """ + pretty_helptext_list(KNOWN_FORMATS), ) @click.help_option("-h", "--help") @click.version_option() @click.option( "--schemafile", help=( "The path to a file containing the JSON Schema to use or an " "HTTP(S) URI for the schema. If a remote file is used, " "it will be downloaded and cached locally based on mtime. " "Use '-' for stdin." ), metavar="[PATH|URI]", ) @click.option( "--base-uri", help=( "Override the base URI for the schema. The default behavior is to " "follow the behavior specified by the JSON Schema spec, which is to " "prefer an explicit '$id' and failover to the retrieval URI." ), ) @click.option( "--builtin-schema", help="The name of an internal schema to use for '--schemafile'", type=click.Choice(BUILTIN_SCHEMA_CHOICES, case_sensitive=False), metavar="BUILTIN_SCHEMA_NAME", ) @click.option( "--check-metaschema", is_flag=True, help=( "Instead of validating the instances against a schema, treat each file as a " "schema and validate them under their matching metaschemas." ), ) @click.option( "--no-cache", is_flag=True, help="Disable schema caching. Always download remote schemas.", ) @click.option( "--cache-filename", help="Deprecated. This option no longer has any effect." ) @click.option( "--disable-formats", multiple=True, help=( "Disable specific format checks in the schema. " "Pass '*' to disable all format checks." ), type=CommaDelimitedList(choices=("*", *KNOWN_FORMATS)), metavar="{*|FORMAT,FORMAT,...}", ) @click.option( "--format-regex", hidden=True, help="Legacy name for `--regex-variant`.", default=None, type=click.Choice([x.value for x in RegexVariantName], case_sensitive=False), ) @click.option( "--regex-variant", help=( "Name of which regex dialect should be used for format checking " "and 'pattern' matching." ), default=None, type=click.Choice([x.value for x in RegexVariantName], case_sensitive=False), ) @click.option( "--default-filetype", help="A default filetype to assume when a file's type is not detected", default="json", show_default=True, type=click.Choice(SUPPORTED_FILE_FORMATS, case_sensitive=True), ) @click.option( "--force-filetype", help="Force a file type to use when parsing instance files", type=click.Choice(SUPPORTED_FILE_FORMATS, case_sensitive=True), ) @click.option( "--traceback-mode", help=( "Set the mode of presentation for error traces. " "Defaults to shortened tracebacks." ), type=click.Choice(("full", "short")), default="short", ) @click.option( "--data-transform", help=( "Select a builtin transform which should be applied to instancefiles before " "they are checked." ), type=click.Choice(tuple(TRANSFORM_LIBRARY.keys())), ) @click.option( "--fill-defaults", help=( "Autofill 'default' values prior to validation. " "This may conflict with certain third-party validators used with " "'--validator-class'" ), is_flag=True, ) @click.option( "--validator-class", help=( "The fully qualified name of a python validator to use in place of " "the 'jsonschema' library validators, in the form of ':'. " "The validator must be importable in the same environment where " "'check-jsonschema' is run." ), type=ValidatorClassName(), ) @click.option( "-o", "--output-format", help="Which output format to use.", type=click.Choice(tuple(REPORTER_BY_NAME.keys()), case_sensitive=False), default="text", ) @click.option( "--color", help="Force or disable colorized output. Defaults to autodetection.", default="auto", type=click.Choice(("auto", "always", "never")), callback=set_color_mode, expose_value=False, ) @click.option( "-v", "--verbose", help=( "Increase output verbosity. On validation errors, this may be especially " "useful when oneOf or anyOf is used in the schema." ), count=True, ) @click.option( "-q", "--quiet", help="Reduce output verbosity", count=True, ) @click.argument( "instancefiles", required=True, nargs=-1, type=LazyBinaryReadFile("rb", lazy=True) ) def main( *, schemafile: str | None, builtin_schema: str | None, base_uri: str | None, check_metaschema: bool, no_cache: bool, cache_filename: str | None, disable_formats: tuple[list[str], ...], format_regex: t.Literal["python", "nonunicode", "default"] | None, regex_variant: t.Literal["python", "nonunicode", "default"] | None, default_filetype: t.Literal["json", "yaml", "toml", "json5"], force_filetype: t.Literal["json", "yaml", "toml", "json5"] | None, traceback_mode: t.Literal["full", "short"], data_transform: t.Literal["azure-pipelines", "gitlab-ci"] | None, fill_defaults: bool, validator_class: type[jsonschema.protocols.Validator] | None, output_format: t.Literal["text", "json"], verbose: int, quiet: int, instancefiles: tuple[t.IO[bytes], ...], ) -> None: args = ParseResult() args.set_regex_variant(regex_variant, legacy_opt=format_regex) args.set_schema(schemafile, builtin_schema, check_metaschema) args.set_validator(validator_class) args.base_uri = base_uri args.instancefiles = instancefiles normalized_disable_formats: tuple[str, ...] = tuple( f for sublist in disable_formats for f in sublist ) if "*" in normalized_disable_formats: args.disable_all_formats = True else: args.disable_formats = normalized_disable_formats args.disable_cache = no_cache args.default_filetype = default_filetype args.force_filetype = force_filetype args.fill_defaults = fill_defaults if data_transform is not None: args.data_transform = TRANSFORM_LIBRARY[data_transform] # verbosity behavior: # - default is 1 # - count '-v' # - subtract count of '-q' args.verbosity = 1 + verbose - quiet args.traceback_mode = traceback_mode args.output_format = output_format execute(args) # separate parsing from execution for simpler mocking for unit tests def build_schema_loader(args: ParseResult) -> SchemaLoaderBase: if args.schema_mode == SchemaLoadingMode.metaschema: return MetaSchemaLoader(base_uri=args.base_uri) elif args.schema_mode == SchemaLoadingMode.builtin: assert args.schema_path is not None return BuiltinSchemaLoader(args.schema_path, base_uri=args.base_uri) elif args.schema_mode == SchemaLoadingMode.filepath: assert args.schema_path is not None return SchemaLoader( args.schema_path, disable_cache=args.disable_cache, base_uri=args.base_uri, validator_class=args.validator_class, ) else: raise NotImplementedError("no valid schema option provided") def build_instance_loader(args: ParseResult) -> InstanceLoader: return InstanceLoader( args.instancefiles, default_filetype=args.default_filetype, force_filetype=args.force_filetype, data_transform=args.data_transform, ) def build_reporter(args: ParseResult) -> Reporter: cls = REPORTER_BY_NAME[args.output_format] return cls(verbosity=args.verbosity) def build_checker(args: ParseResult) -> SchemaChecker: schema_loader = build_schema_loader(args) instance_loader = build_instance_loader(args) reporter = build_reporter(args) return SchemaChecker( schema_loader, instance_loader, reporter, format_opts=args.format_opts, regex_impl=RegexImplementation(args.regex_variant), traceback_mode=args.traceback_mode, fill_defaults=args.fill_defaults, ) def execute(args: ParseResult) -> None: checker = build_checker(args) ret = checker.run() click.get_current_context().exit(ret) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/cli/param_types.py0000644000175100017510000001274115062662115024267 0ustar00runnerrunnerfrom __future__ import annotations import functools import importlib import os import re import stat import typing as t import click 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" def __init__( self, *, convert_values: t.Callable[[str], str] | None = None, choices: t.Iterable[str] | None = None, ) -> None: super().__init__() self.convert_values = convert_values self.choices = list(choices) if choices is not None else None @_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,..." def convert( self, value: str, param: click.Parameter | None, ctx: click.Context | None ) -> list[str]: value = super().convert(value, param, ctx) # if `--foo` is a comma delimited list and someone passes # `--foo ""`, take that as `foo=[]` rather than foo=[""] resolved = value.split(",") if value else [] if self.convert_values is not None: resolved = [self.convert_values(x) for x in resolved] if self.choices is not None: bad_values = [x for x in resolved if x not in self.choices] if bad_values: self.fail( f"the values {bad_values} were not valid choices", param=param, ctx=ctx, ) return resolved class ValidatorClassName(click.ParamType): name = "validator" def convert( self, value: str, param: click.Parameter | None, ctx: click.Context | None ) -> type[jsonschema.protocols.Validator]: """ Use a colon-based parse to split this up and do the import with importlib. This method is inspired by pkgutil.resolve_name and uses the newer syntax documented there. pkgutil supports both W(.W)* and W(.W)*:(W(.W)*)? as patterns, but notes that the first one is for backwards compatibility only. The second form is preferred because it clarifies the division between the importable name and any namespaced path to an object or class. As a result, only one import is needed, rather than iterative imports over the list of names. """ value = super().convert(value, param, ctx) pattern = re.compile( r"^(?P(?!\d)(\w+)(\.(?!\d)(\w+))*):" r"(?P(?!\d)(\w+)(\.(?!\d)(\w+))*)$" ) m = pattern.match(value) if m is None: self.fail( f"'{value}' is not a valid specifier in ':' form", param, ctx, ) pkg = m.group("pkg") classname = m.group("cls") try: result: t.Any = importlib.import_module(pkg) except ImportError as e: self.fail(f"'{pkg}' was not an importable module. {str(e)}", param, ctx) try: for part in classname.split("."): result = getattr(result, part) except AttributeError as e: self.fail( f"'{classname}' was not resolvable to a class in '{pkg}'. {str(e)}", param, ctx, ) if not isinstance(result, type): self.fail(f"'{classname}' in '{pkg}' is not a class", param, ctx) return t.cast(t.Type[jsonschema.protocols.Validator], result) class CustomLazyFile(click.utils.LazyFile): def __init__( self, filename: str | os.PathLike[str], mode: str = "r", encoding: str | None = None, errors: str | None = "strict", atomic: bool = False, ) -> None: self.name: str = os.fspath(filename) self.mode = mode self.encoding = encoding self.errors = errors self.atomic = atomic self._f: t.IO[t.Any] | None self.should_close: bool if self.name == "-": self._f, self.should_close = open_stream(filename, mode, encoding, errors) else: if "r" in mode and not stat.S_ISFIFO(os.stat(filename).st_mode): # Open and close the file in case we're opening it for # reading so that we can catch at least some errors in # some cases early. open(filename, mode).close() self._f = None self.should_close = True class LazyBinaryReadFile(click.File): def convert( self, value: str | os.PathLike[str] | t.IO[t.Any], param: click.Parameter | None, ctx: click.Context | None, ) -> t.IO[bytes]: if hasattr(value, "read") or hasattr(value, "write"): return t.cast(t.IO[bytes], value) value_: str | os.PathLike[str] = t.cast("str | os.PathLike[str]", value) lf = CustomLazyFile(value_, mode="rb") if ctx is not None: ctx.call_on_close(lf.close_intelligently) return t.cast(t.IO[bytes], lf) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/cli/parse_result.py0000644000175100017510000000712215062662115024450 0ustar00runnerrunnerfrom __future__ import annotations import enum import typing as t import click import jsonschema from ..formats import FormatOptions from ..regex_variants import RegexImplementation, RegexVariantName from ..transforms import Transform class SchemaLoadingMode(enum.Enum): filepath = "filepath" builtin = "builtin" metaschema = "metaschema" class ParseResult: def __init__(self) -> None: # primary options: schema + instances self.schema_mode: SchemaLoadingMode = SchemaLoadingMode.filepath self.schema_path: str | None = None self.base_uri: str | None = None self.instancefiles: tuple[t.IO[bytes], ...] = () # cache controls self.disable_cache: bool = False self.cache_filename: str | None = None # filetype detection (JSON, YAML, TOML, etc) self.default_filetype: str = "json" self.force_filetype: str | None = None # data-transform (for Azure Pipelines and potentially future transforms) self.data_transform: Transform | None = None # validation behavioral controls self.validator_class: type[jsonschema.protocols.Validator] | None = None self.fill_defaults: bool = False # regex format options self.disable_all_formats: bool = False self.disable_formats: tuple[str, ...] = () self.regex_variant: RegexVariantName = RegexVariantName.default # error and output controls self.verbosity: int = 1 self.traceback_mode: str = "short" self.output_format: str = "text" def set_regex_variant( self, variant_opt: t.Literal["python", "nonunicode", "default"] | None, *, legacy_opt: t.Literal["python", "nonunicode", "default"] | None = None, ) -> None: variant_name: t.Literal["python", "nonunicode", "default"] | None = ( variant_opt or legacy_opt ) if variant_name: self.regex_variant = RegexVariantName(variant_name) def set_schema( self, schemafile: str | None, builtin_schema: str | None, check_metaschema: bool ) -> None: mutex_arg_count = sum( 1 if x else 0 for x in (schemafile, builtin_schema, check_metaschema) ) if mutex_arg_count == 0: raise click.UsageError( "Either --schemafile, --builtin-schema, or --check-metaschema " "must be provided" ) if mutex_arg_count > 1: raise click.UsageError( "--schemafile, --builtin-schema, and --check-metaschema " "are mutually exclusive" ) if schemafile: self.schema_mode = SchemaLoadingMode.filepath self.schema_path = schemafile elif builtin_schema: self.schema_mode = SchemaLoadingMode.builtin self.schema_path = builtin_schema else: self.schema_mode = SchemaLoadingMode.metaschema def set_validator( self, validator_class: type[jsonschema.protocols.Validator] | None ) -> None: if validator_class is None: return if self.schema_mode != SchemaLoadingMode.filepath: raise click.UsageError( "--validator-class can only be used with --schemafile for schema loading" ) self.validator_class = validator_class @property def format_opts(self) -> FormatOptions: return FormatOptions( regex_impl=RegexImplementation(self.regex_variant), enabled=not self.disable_all_formats, disabled_formats=self.disable_formats, ) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/cli/warnings.py0000644000175100017510000000141015062662115023562 0ustar00runnerrunnerfrom __future__ import annotations import typing as t import warnings import click def deprecation_warning_callback( optstring: str, *, is_flag: bool = False, append_message: str | None = None ) -> t.Callable[[click.Context, click.Parameter, t.Any], t.Any]: def callback(ctx: click.Context, param: click.Parameter, value: t.Any) -> t.Any: if not value: return value if (is_flag and bool(value) is True) or (value is not None): message = ( f"'{optstring}' is deprecated and will be removed in a future release." ) if append_message is not None: message += f" {append_message}" warnings.warn(message, stacklevel=2) return value return callback ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1758159958.9006119 check_jsonschema-0.34.0/src/check_jsonschema/formats/0000755000175100017510000000000015062662127022273 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/formats/__init__.py0000644000175100017510000000535215062662115024406 0ustar00runnerrunnerfrom __future__ import annotations import copy import jsonschema import jsonschema.validators from ..regex_variants import RegexImplementation from .implementations import validate_rfc3339, validate_time # all known format strings except for a selection from draft3 which have either # been renamed or removed: # - color # - host-name # - ip-address KNOWN_FORMATS: tuple[str, ...] = ( "date", "date-time", "duration", "email", "hostname", "idn-email", "idn-hostname", "ipv4", "ipv6", "iri", "iri-reference", "json-pointer", "regex", "relative-json-pointer", "time", "uri", "uri-reference", "uri-template", "uuid", ) class FormatOptions: def __init__( self, *, regex_impl: RegexImplementation, enabled: bool = True, disabled_formats: tuple[str, ...] = (), ) -> None: self.enabled = enabled self.regex_impl = regex_impl self.disabled_formats = disabled_formats 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=default_validator_cls, ) return validator_class.FORMAT_CHECKER def make_format_checker( opts: FormatOptions, schema_dialect: str | None = None, ) -> jsonschema.FormatChecker | None: if not opts.enabled: return None # customize around regex checking first checker = format_checker_for_regex_impl(opts.regex_impl) # add other custom format checks checker.checks("date-time")(validate_rfc3339) checker.checks("time")(validate_time) # remove the disabled checks, which may include the regex check for checkname in opts.disabled_formats: if checkname not in checker.checkers: continue del checker.checkers[checkname] return checker def format_checker_for_regex_impl( regex_impl: RegexImplementation, schema_dialect: str | None = None ) -> jsonschema.FormatChecker: # convert to a schema-derived format checker, and copy it # for safe modification base_checker = get_base_format_checker(schema_dialect) checker = copy.deepcopy(base_checker) # replace the regex check del checker.checkers["regex"] checker.checks("regex")(regex_impl.check_format) return checker ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1758159958.9006119 check_jsonschema-0.34.0/src/check_jsonschema/formats/implementations/0000755000175100017510000000000015062662127025503 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/formats/implementations/__init__.py0000644000175100017510000000022715062662115027612 0ustar00runnerrunnerfrom .iso8601_time import validate as validate_time from .rfc3339 import validate as validate_rfc3339 __all__ = ("validate_rfc3339", "validate_time") ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/formats/implementations/iso8601_time.py0000644000175100017510000000156215062662115030205 0ustar00runnerrunnerimport re TIME_REGEX = re.compile( r""" ^ (?:[01]\d|2[0123]) : (?:[0-5]\d) : (?:[0-5]\d) # (optional) fractional seconds (?:(\.|,)\d+)? # UTC or offset (?: Z | z | [+-](?:[01]\d|2[0123]):[0-5]\d ) $ """, re.VERBOSE | re.ASCII, ) def validate(time_str: object) -> bool: if not isinstance(time_str, str): return False return bool(TIME_REGEX.match(time_str)) if __name__ == "__main__": import timeit N = 100_000 tests = ( ("basic", "23:59:59Z"), ("long_fracsec", "23:59:59.8446519776713Z"), ) print("benchmarking") for name, val in tests: all_times = timeit.repeat( f"validate({val!r})", globals=globals(), repeat=3, number=N ) print(f"{name} (valid={validate(val)}): {int(min(all_times) / N * 10**9)}ns") ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/formats/implementations/rfc3339.py0000644000175100017510000000560115062662115027150 0ustar00runnerrunnerimport re # this regex is based on the one from the rfc3339-validator package # credit to the original author # original license: # # MIT License # # Copyright (c) 2019, Nicolas Aimetti # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in all # copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. # # modifications have been made for additional corner cases and speed RFC3339_REGEX = re.compile( r""" ^ (?:\d{4}) - (?:0[1-9]|1[0-2]) - (?:[0-3]\d) (?:[Tt]) (?:[01]\d|2[0123]) : (?:[0-5]\d) : (?:[0-5]\d) # (optional) fractional seconds (?:[\.,]\d+)? # UTC or offset (?: [Zz] | [+-](?:[01]\d|2[0123]):[0-5]\d ) $ """, re.VERBOSE | re.ASCII, ) def validate(date_str: object) -> bool: """Validate a string as a RFC3339 date-time.""" if not isinstance(date_str, str): return True if not RFC3339_REGEX.match(date_str): return False year, month, day = int(date_str[:4]), int(date_str[5:7]), int(date_str[8:10]) if month in {4, 6, 9, 11}: max_day = 30 elif month == 2: max_day = 29 if year % 4 == 0 and (year % 100 != 0 or year % 400 == 0) else 28 else: max_day = 31 if not 1 <= day <= max_day: return False return True if __name__ == "__main__": import timeit N = 100_000 tests = ( ("long_fracsec", "2018-12-31T23:59:59.8446519776713Z"), ("basic", "2018-12-31T23:59:59Z"), ("in_february", "2018-02-12T23:59:59Z"), ("in_february_invalid", "2018-02-29T23:59:59Z"), ("missing_t", "2018-12-31 23:59:59Z"), ("invalid_day", "2018-12-41T23:59:59Z"), ) print("benchmarking") for name, val in tests: all_times = timeit.repeat( f"validate({val!r})", globals=globals(), repeat=3, number=N ) print(f"{name} (valid={validate(val)}): {int(min(all_times) / N * 10**9)}ns") ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/identify_filetype.py0000644000175100017510000000112115062662115024676 0ustar00runnerrunner""" Identify filetypes by extension """ from __future__ import annotations import pathlib _EXTENSION_MAP = { "json": "json", "jsonld": "json", "geojson": "json", "yaml": "yaml", "yml": "yaml", "ymlld": "yaml", "eyaml": "yaml", "json5": "json5", "toml": "toml", } def path_to_type(path: str | pathlib.Path, *, default_type: str = "json") -> str: if isinstance(path, str): ext = path.rpartition(".")[2] else: ext = path.suffix.lstrip(".") if ext in _EXTENSION_MAP: return _EXTENSION_MAP[ext] return default_type ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/instance_loader.py0000644000175100017510000000375115062662115024327 0ustar00runnerrunnerfrom __future__ import annotations import io import typing as t from check_jsonschema.cli.param_types import CustomLazyFile from .parsers import ParseError, ParserSet from .transforms import Transform class InstanceLoader: def __init__( self, files: t.Sequence[t.IO[bytes] | CustomLazyFile], default_filetype: str = "json", force_filetype: str | None = None, data_transform: Transform | None = None, ) -> None: self._files = files self._default_filetype = default_filetype self._force_filetype = force_filetype self._data_transform = ( data_transform if data_transform is not None else Transform() ) self._parsers = ParserSet( modify_yaml_implementation=self._data_transform.modify_yaml_implementation ) def iter_files(self) -> t.Iterator[tuple[str, ParseError | t.Any]]: for file in self._files: if hasattr(file, "name"): name = file.name # allowing for BytesIO to be special-cased here is useful for # simpler test setup, since this is what tests will pass and we naturally # support it here elif isinstance(file, io.BytesIO) or file.fileno() == 0: name = "" else: raise ValueError(f"File {file} has no name attribute") try: if isinstance(file, CustomLazyFile): stream: t.IO[bytes] = t.cast(t.IO[bytes], file.open()) else: stream = file try: data: t.Any = self._parsers.parse_data_with_path( stream, name, self._default_filetype, self._force_filetype ) except ParseError as err: data = err else: data = self._data_transform(data) finally: file.close() yield (name, data) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.901612 check_jsonschema-0.34.0/src/check_jsonschema/parsers/0000755000175100017510000000000015062662127022277 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/parsers/__init__.py0000644000175100017510000000652415062662115024414 0ustar00runnerrunnerfrom __future__ import annotations import io import pathlib import typing as t import ruamel.yaml from ..identify_filetype import path_to_type from . import json5, json_, toml, yaml _PARSER_ERRORS: set[type[Exception]] = { json_.JSONDecodeError, yaml.ParseError, toml.ParseError, } DEFAULT_LOAD_FUNC_BY_TAG: dict[str, t.Callable[[t.IO[bytes]], t.Any]] = { "json": json_.load, "toml": toml.load, } SUPPORTED_FILE_FORMATS = ["json", "toml", "yaml"] if json5.ENABLED: SUPPORTED_FILE_FORMATS.append("json5") DEFAULT_LOAD_FUNC_BY_TAG["json5"] = json5.load _PARSER_ERRORS.add(json5.ParseError) MISSING_SUPPORT_MESSAGES: dict[str, str] = { "json5": json5.MISSING_SUPPORT_MESSAGE, } LOADING_FAILURE_ERROR_TYPES: tuple[type[Exception], ...] = tuple(_PARSER_ERRORS) class ParseError(ValueError): pass class BadFileTypeError(ParseError): pass class FailedFileLoadError(ParseError): pass class ParserSet: def __init__( self, *, modify_yaml_implementation: t.Callable[[ruamel.yaml.YAML], None] | None = None, supported_formats: t.Sequence[str] | None = None, ) -> None: yaml_impl = yaml.construct_yaml_implementation() failover_yaml_impl = yaml.construct_yaml_implementation(pure=True) if modify_yaml_implementation: modify_yaml_implementation(yaml_impl) modify_yaml_implementation(failover_yaml_impl) base_by_tag = { "yaml": yaml.impl2loader(yaml_impl, failover_yaml_impl), **DEFAULT_LOAD_FUNC_BY_TAG, } if supported_formats is None: self._by_tag = base_by_tag else: self._by_tag = { k: v for k, v in base_by_tag.items() if k in supported_formats } def get( self, path: pathlib.Path | str, default_filetype: str, force_filetype: str | None = None, ) -> t.Callable[[t.IO[bytes]], t.Any]: if force_filetype: filetype = force_filetype else: filetype = path_to_type(path, default_type=default_filetype) if filetype in self._by_tag: return self._by_tag[filetype] if filetype in MISSING_SUPPORT_MESSAGES: raise BadFileTypeError( f"cannot parse {path} because support is missing for {filetype}\n" + MISSING_SUPPORT_MESSAGES[filetype] ) raise BadFileTypeError( f"cannot parse {path} as it is not one of the supported filetypes: " + ",".join(self._by_tag.keys()) ) def parse_data_with_path( self, data: t.IO[bytes] | bytes, path: pathlib.Path | str, default_filetype: str, force_filetype: str | None = None, ) -> t.Any: loadfunc = self.get(path, default_filetype, force_filetype) try: if isinstance(data, bytes): data = io.BytesIO(data) return loadfunc(data) except LOADING_FAILURE_ERROR_TYPES as e: raise FailedFileLoadError(f"Failed to parse {path}") from e def parse_file( self, path: pathlib.Path | str, default_filetype: str, force_filetype: str | None = None, ) -> t.Any: with open(path, "rb") as fp: return self.parse_data_with_path(fp, path, default_filetype, force_filetype) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/parsers/json5.py0000644000175100017510000000245515062662115023712 0ustar00runnerrunnerfrom __future__ import annotations import typing as t # try to import pyjson5 first # this is the CPython implementation and therefore preferred for its speec try: import pyjson5 ParseError: type[Exception] = pyjson5.Json5DecoderException _load: t.Callable | None = pyjson5.load except ImportError: # if pyjson5 was not available, try to import 'json5', the pure-python implementation try: import json5 # json5 doesn't define a custom decoding error class ParseError = ValueError _load = json5.load except ImportError: ParseError = ValueError _load = None # present a bool for detecting that it's enabled ENABLED = _load is not None if _load is not None: _load_concrete: t.Callable = _load def load(stream: t.IO[bytes]) -> t.Any: return _load_concrete(stream) else: def load(stream: t.IO[bytes]) -> t.Any: raise NotImplementedError MISSING_SUPPORT_MESSAGE = """ check-jsonschema can only parse json5 files when a json5 parser is installed If you are running check-jsonschema as an installed python package, either pip install json5 or pip install pyjson5 If you are running check-jsonschema as a pre-commit hook, set additional_dependencies: ['json5'] or additional_dependencies: ['pyjson5'] """ ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/parsers/json_.py0000644000175100017510000000151615062662115023761 0ustar00runnerrunnerfrom __future__ import annotations import json import typing as t try: import orjson has_orjson = True except ImportError: has_orjson = False JSONDecodeError = json.JSONDecodeError def load(stream: t.IO[bytes]) -> t.Any: bin_data = stream.read() # if orjson is available, try it first if has_orjson: # in the event of a decode error, it may be that the data contains # `Infinity`, `-Infinity`, or `NaN` # # however, do not failover to stdlib JSON -- it is not obvious that there's any # need for check-jsonschema to support these invalid JSON datatypes # if users encounter issues with this behavior in the future, we can revisit how # JSON loading is handled return orjson.loads(bin_data) # failover to stdlib json return json.loads(bin_data) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/parsers/toml.py0000644000175100017510000000405715062662115023627 0ustar00runnerrunnerfrom __future__ import annotations import datetime import sys import typing as t if sys.version_info < (3, 11): import tomli as toml_implementation else: import tomllib as toml_implementation def _normalize(data: t.Any) -> t.Any: """ Normalize TOML data to fit the requirements to be JSON-encodeable. Currently this applies the following transformations: offset-aware datetime.datetime values are converted to strings using isoformat() naive datetime.datetime values are converted to strings using isoformat() + "Z" offset-aware datetime.time values are converted to strings using isoformat() naive datetime.time values are converted to strings using isoformat() + "Z" datetime.date values are converted to strings using isoformat() """ if isinstance(data, dict): return {k: _normalize(v) for k, v in data.items()} elif isinstance(data, list): return [_normalize(x) for x in data] else: # python's datetime will format to an ISO partial time when handling a naive # time/datetime , but JSON Schema format validation specifies that date-time is # taken from RFC3339, which defines "date-time" as including 'Z|offset' # the specification for "time" is less clear because JSON Schema does not specify # which RFC3339 definition should be used, and the RFC has no format named "time", # only "full-time" (with Z|offset) and "partial-time" (no offset) # # rfc3339_validator (used by 'jsonschema') requires the offset, so we will do the # same if isinstance(data, datetime.datetime) or isinstance(data, datetime.time): if data.tzinfo is None: return data.isoformat() + "Z" return data.isoformat() elif isinstance(data, datetime.date): return data.isoformat() return data ParseError: type[Exception] = toml_implementation.TOMLDecodeError def load(stream: t.IO[bytes]) -> t.Any: data = toml_implementation.load(stream) return _normalize(data) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/parsers/yaml.py0000644000175100017510000000441415062662115023613 0ustar00runnerrunnerfrom __future__ import annotations import typing as t import warnings import ruamel.yaml ParseError = ruamel.yaml.YAMLError def construct_yaml_implementation( typ: str = "safe", pure: bool = False ) -> ruamel.yaml.YAML: implementation = ruamel.yaml.YAML(typ=typ, pure=pure) # workaround global state # see: https://sourceforge.net/p/ruamel-yaml/tickets/341/ class GeneratedSafeConstructor(ruamel.yaml.SafeConstructor): pass implementation.Constructor = GeneratedSafeConstructor # ruamel.yaml parses timestamp values into datetime.datetime values # however, JSON does not support native datetimes, so JSON Schema formats for # dates apply to strings # Turn off this feature, instructing the parser to load datetimes as strings implementation.constructor.yaml_constructors["tag:yaml.org,2002:timestamp"] = ( implementation.constructor.yaml_constructors["tag:yaml.org,2002:str"] ) return implementation def _normalize(data: t.Any) -> t.Any: """ Normalize YAML data to fit the requirements to be JSON-encodeable. Currently this applies the following transformation: dict keys are converted to strings Additional tweaks can be added in this layer in the future if necessary. """ if isinstance(data, dict): return {str(k): _normalize(v) for k, v in data.items()} elif isinstance(data, list): return [_normalize(x) for x in data] else: return data _data_sentinel = object() def impl2loader( primary: ruamel.yaml.YAML, *fallbacks: ruamel.yaml.YAML ) -> t.Callable[[t.IO[bytes]], t.Any]: def load(stream: t.IO[bytes]) -> t.Any: stream_bytes = stream.read() lasterr: ruamel.yaml.YAMLError | None = None data: t.Any = _data_sentinel with warnings.catch_warnings(): warnings.simplefilter("ignore", ruamel.yaml.error.ReusedAnchorWarning) for impl in [primary] + list(fallbacks): try: data = impl.load(stream_bytes) except ruamel.yaml.YAMLError as e: lasterr = e else: break if data is _data_sentinel and lasterr is not None: raise lasterr return _normalize(data) return load ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/regex_variants.py0000644000175100017510000001061215062662115024210 0ustar00runnerrunnerimport enum import re import typing as t import jsonschema import regress class RegexVariantName(enum.Enum): default = "default" nonunicode = "nonunicode" python = "python" class RegexImplementation: """ A high-level interface for getting at the different possible implementations of regex behaviors. """ _concrete: "_ConcreteImplementation" def __init__(self, variant: RegexVariantName) -> None: self.variant = variant if self.variant == RegexVariantName.default: self._concrete = _RegressImplementation() elif self.variant == RegexVariantName.nonunicode: self._concrete = _NonunicodeRegressImplementation() else: self._concrete = _PythonImplementation() self.check_format = self._concrete.check_format self.pattern_keyword = self._concrete.pattern_keyword self.patternProperties_keyword = self._concrete.patternProperties_keyword class _ConcreteImplementation(t.Protocol): def check_format(self, instance: t.Any) -> bool: ... def pattern_keyword( self, validator: t.Any, pattern: str, instance: str, schema: t.Any ) -> t.Iterator[jsonschema.ValidationError]: ... def patternProperties_keyword( self, validator: t.Any, patternProperties: dict[str, t.Any], instance: dict[str, t.Any], schema: t.Any, ) -> t.Iterator[jsonschema.ValidationError]: ... class _RegressImplementation: def _compile_pattern(self, pattern: str) -> regress.Regex: return regress.Regex(pattern, flags="u") def check_format(self, instance: t.Any) -> bool: if not isinstance(instance, str): return True try: self._compile_pattern(instance) except regress.RegressError: return False return True def pattern_keyword( self, validator: t.Any, pattern: str, instance: str, schema: t.Any ) -> t.Iterator[jsonschema.ValidationError]: if not validator.is_type(instance, "string"): return regress_pattern = self._compile_pattern(pattern) if not regress_pattern.find(instance): yield jsonschema.ValidationError(f"{instance!r} does not match {pattern!r}") def patternProperties_keyword( self, validator: t.Any, patternProperties: dict[str, t.Any], instance: dict[str, t.Any], schema: t.Any, ) -> t.Iterator[jsonschema.ValidationError]: if not validator.is_type(instance, "object"): return for pattern, subschema in patternProperties.items(): regress_pattern = self._compile_pattern(pattern) for k, v in instance.items(): if regress_pattern.find(k): yield from validator.descend( v, subschema, path=k, schema_path=pattern, ) class _NonunicodeRegressImplementation(_RegressImplementation): def _compile_pattern(self, pattern: str) -> regress.Regex: return regress.Regex(pattern) class _PythonImplementation: def check_format(self, instance: t.Any) -> bool: if not isinstance(instance, str): return True try: re.compile(instance) except re.error: return False return True def pattern_keyword( self, validator: t.Any, pattern: str, instance: str, schema: t.Any ) -> t.Iterator[jsonschema.ValidationError]: if not validator.is_type(instance, "string"): return re_pattern = re.compile(pattern) if not re_pattern.search(instance): yield jsonschema.ValidationError(f"{instance!r} does not match {pattern!r}") def patternProperties_keyword( self, validator: t.Any, patternProperties: dict[str, t.Any], instance: dict[str, t.Any], schema: t.Any, ) -> t.Iterator[jsonschema.ValidationError]: if not validator.is_type(instance, "object"): return for pattern, subschema in patternProperties.items(): for k, v in instance.items(): if re.search(pattern, k): yield from validator.descend( v, subschema, path=k, schema_path=pattern, ) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/reporter.py0000644000175100017510000002005715062662115023035 0ustar00runnerrunner""" Output formatters are called "reporters" because they take the result of validation and report it back to the user. """ from __future__ import annotations import abc import json import textwrap import typing as t import click import jsonschema from .parsers import ParseError from .result import CheckResult from .utils import format_error, iter_validation_error class Reporter(abc.ABC): def __init__(self, *, verbosity: int, **kwargs: t.Any) -> None: self.verbosity = verbosity super().__init__(**kwargs) @abc.abstractmethod def report_success(self, result: CheckResult) -> None: raise NotImplementedError @abc.abstractmethod def report_errors(self, result: CheckResult) -> None: raise NotImplementedError def report_result(self, result: CheckResult) -> None: if result.success: self.report_success(result) else: self.report_errors(result) class TextReporter(Reporter): def __init__( self, *, verbosity: int, stream: t.TextIO | None = None, # default stream is stdout (None) ) -> None: super().__init__(verbosity=verbosity) self.stream = stream def _echo(self, s: str, *, indent: int = 0) -> None: click.echo(" " * indent + s, file=self.stream) def report_success(self, result: CheckResult) -> None: if self.verbosity < 1: return ok = click.style("ok", fg="green") self._echo(f"{ok} -- validation done") if self.verbosity > 1: self._echo("The following files were checked:") for filename in result.successes: self._echo(f" {filename}") def _format_validation_error_message( self, err: jsonschema.ValidationError, filename: str | None = None ) -> str: error_loc = err.json_path if filename: error_loc = f"{filename}::{error_loc}" error_loc = click.style(error_loc, fg="yellow") return f"{error_loc}: {err.message}" def _show_validation_error( self, filename: str, err: jsonschema.ValidationError, ) -> None: self._echo( self._format_validation_error_message(err, filename=filename), indent=2 ) if err.context: best_match = jsonschema.exceptions.best_match(err.context) self._echo("Underlying errors caused this.", indent=2) self._echo("") self._echo("Best Match:", indent=2) self._echo(self._format_validation_error_message(best_match), indent=4) best_deep_match = find_best_deep_match(err) if best_deep_match != best_match: self._echo("Best Deep Match:", indent=2) self._echo( self._format_validation_error_message(best_deep_match), indent=4 ) if self.verbosity > 1: self._echo("All Errors:", indent=2) for e in iter_validation_error(err): self._echo(self._format_validation_error_message(e), indent=4) else: num_other_errors = len(list(iter_validation_error(err))) - 1 if best_deep_match != best_match: num_other_errors -= 1 if num_other_errors > 0: self._echo("") self._echo( f"{click.style(str(num_other_errors), fg='yellow')} other " "errors were produced. " "Use '--verbose' to see all errors.", indent=2, ) def _show_parse_error(self, filename: str, err: ParseError) -> None: if self.verbosity < 2: self._echo(click.style(str(err), fg="yellow"), indent=2) elif self.verbosity < 3: self._echo(textwrap.indent(format_error(err, mode="short"), " ")) else: self._echo(textwrap.indent(format_error(err, mode="full"), " ")) def report_errors(self, result: CheckResult) -> None: if self.verbosity < 1: return if result.parse_errors: self._echo("Several files failed to parse.") for filename, errors in result.parse_errors.items(): for err in errors: self._show_parse_error(filename, err) if result.validation_errors: self._echo("Schema validation errors were encountered.") for filename, parse_errors in result.validation_errors.items(): for parse_err in parse_errors: self._show_validation_error(filename, parse_err) class JsonReporter(Reporter): def __init__(self, *, verbosity: int, pretty: bool = True) -> None: super().__init__(verbosity=verbosity) # default to pretty output, can add a switch to disable this in the future self.pretty = pretty def _dump(self, data: t.Any) -> None: if self.pretty: click.echo(json.dumps(data, indent=2, separators=(",", ": "))) else: click.echo(json.dumps(data, separators=(",", ":"))) def report_success(self, result: CheckResult) -> None: report_obj: dict[str, t.Any] = {"status": "ok"} if self.verbosity > 0: report_obj["errors"] = [] if self.verbosity > 1: report_obj["checked_paths"] = list(result.successes) self._dump(report_obj) def _dump_error_map( self, error_map: dict[str, list[jsonschema.ValidationError]], ) -> t.Iterator[dict]: for filename, errors in error_map.items(): for err in errors: item = { "filename": filename, "path": err.json_path, "message": err.message, "has_sub_errors": bool(err.context), } if err.context: best_match = jsonschema.exceptions.best_match(err.context) best_deep_match = find_best_deep_match(err) item["best_match"] = { "path": best_match.json_path, "message": best_match.message, } item["best_deep_match"] = { "path": best_deep_match.json_path, "message": best_deep_match.message, } num_sub_errors = len(list(iter_validation_error(err))) - 1 item["num_sub_errors"] = num_sub_errors if self.verbosity > 1: item["sub_errors"] = [ {"path": suberr.json_path, "message": suberr.message} for suberr in iter_validation_error(err) ] yield item def _dump_parse_errors( self, error_map: dict[str, list[ParseError]], ) -> t.Iterator[dict]: for filename, errors in error_map.items(): for err in errors: yield { "filename": filename, "message": str(err), } def report_errors(self, result: CheckResult) -> None: report_obj: dict[str, t.Any] = {"status": "fail"} if self.verbosity > 1: report_obj["successes"] = list(result.successes) if self.verbosity > 0: report_obj["errors"] = list(self._dump_error_map(result.validation_errors)) report_obj["parse_errors"] = list( self._dump_parse_errors(result.parse_errors) ) self._dump(report_obj) REPORTER_BY_NAME: dict[str, type[Reporter]] = { "text": TextReporter, "json": JsonReporter, } def _deep_match_relevance(error: jsonschema.ValidationError) -> tuple[bool | int, ...]: validator = error.validator return ( validator not in ("anyOf", "oneOf"), len(error.absolute_path), -len(error.path), ) def find_best_deep_match( errors: jsonschema.ValidationError, ) -> jsonschema.ValidationError: return max(iter_validation_error(errors), key=_deep_match_relevance) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/result.py0000644000175100017510000000215615062662115022511 0ustar00runnerrunnerfrom __future__ import annotations import pathlib import jsonschema from .parsers import ParseError class CheckResult: def __init__(self) -> None: self.validation_errors: dict[str, list[jsonschema.ValidationError]] = {} self.parse_errors: dict[str, list[ParseError]] = {} self.successes: list[str] = [] @property def success(self) -> bool: return not (bool(self.parse_errors) or bool(self.validation_errors)) def record_validation_success(self, path: pathlib.Path | str) -> None: self.successes.append(str(path)) def record_validation_error( self, path: pathlib.Path | str, err: jsonschema.ValidationError ) -> None: filename = str(path) if filename not in self.validation_errors: self.validation_errors[filename] = [] self.validation_errors[filename].append(err) def record_parse_error(self, path: pathlib.Path | str, err: ParseError) -> None: filename = str(path) if filename not in self.parse_errors: self.parse_errors[filename] = [] self.parse_errors[filename].append(err) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.902612 check_jsonschema-0.34.0/src/check_jsonschema/schema_loader/0000755000175100017510000000000015062662127023406 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/schema_loader/__init__.py0000644000175100017510000000046515062662115025521 0ustar00runnerrunnerfrom .errors import SchemaParseError, UnsupportedUrlScheme from .main import BuiltinSchemaLoader, MetaSchemaLoader, SchemaLoader, SchemaLoaderBase __all__ = ( "SchemaParseError", "UnsupportedUrlScheme", "BuiltinSchemaLoader", "MetaSchemaLoader", "SchemaLoader", "SchemaLoaderBase", ) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/schema_loader/errors.py0000644000175100017510000000014015062662115025264 0ustar00runnerrunnerclass SchemaParseError(ValueError): pass class UnsupportedUrlScheme(ValueError): pass ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/schema_loader/main.py0000644000175100017510000002400615062662115024703 0ustar00runnerrunnerfrom __future__ import annotations import functools import pathlib import typing as t import urllib.error import urllib.parse import jsonschema from referencing import Registry from ..builtin_schemas import get_builtin_schema from ..formats import FormatOptions, format_checker_for_regex_impl, make_format_checker from ..parsers import ParserSet from ..regex_variants import RegexImplementation from ..utils import is_url_ish from .errors import UnsupportedUrlScheme from .readers import HttpSchemaReader, LocalSchemaReader, StdinSchemaReader from .resolver import make_reference_registry def _extend_with_default( validator_class: type[jsonschema.protocols.Validator], ) -> type[jsonschema.Validator]: validate_properties = validator_class.VALIDATORS["properties"] def set_defaults_then_validate( validator: jsonschema.Validator, properties: dict[str, dict[str, t.Any]], instance: dict[str, t.Any], schema: dict[str, t.Any], ) -> t.Iterator[jsonschema.ValidationError]: for property_name, subschema in properties.items(): if "default" in subschema and property_name not in instance: instance[property_name] = subschema["default"] yield from validate_properties( validator, properties, instance, schema, ) return jsonschema.validators.extend( validator_class, {"properties": set_defaults_then_validate}, ) def _extend_with_pattern_implementation( validator_class: type[jsonschema.protocols.Validator], regex_impl: RegexImplementation, ) -> type[jsonschema.Validator]: return jsonschema.validators.extend( validator_class, { "pattern": regex_impl.pattern_keyword, "patternProperties": regex_impl.patternProperties_keyword, }, ) class SchemaLoaderBase: def get_validator( self, path: pathlib.Path | str, instance_doc: dict[str, t.Any], format_opts: FormatOptions, regex_impl: RegexImplementation, fill_defaults: bool, ) -> jsonschema.protocols.Validator: raise NotImplementedError class SchemaLoader(SchemaLoaderBase): validator_class: type[jsonschema.protocols.Validator] | None = None disable_cache: bool = True def __init__( self, schemafile: str, *, base_uri: str | None = None, validator_class: type[jsonschema.protocols.Validator] | None = None, disable_cache: bool = True, ) -> None: # record input parameters (these are not to be modified) self.schemafile = schemafile self.disable_cache = disable_cache self.base_uri = base_uri self.validator_class = validator_class # if the schema location is a URL, which may include a file:// URL, parse it self.url_info = None if is_url_ish(self.schemafile): self.url_info = urllib.parse.urlparse(self.schemafile) # setup a parser collection self._parsers = ParserSet() # setup a schema reader lazily, when needed self._reader: ( LocalSchemaReader | HttpSchemaReader | StdinSchemaReader | None ) = None @property def reader(self) -> LocalSchemaReader | HttpSchemaReader | StdinSchemaReader: if self._reader is None: self._reader = self._get_schema_reader() return self._reader def _get_schema_reader( self, ) -> LocalSchemaReader | HttpSchemaReader | StdinSchemaReader: if self.schemafile == "-": return StdinSchemaReader() if self.url_info is None or self.url_info.scheme in ("file", ""): return LocalSchemaReader(self.schemafile) if self.url_info.scheme in ("http", "https"): return HttpSchemaReader(self.schemafile, self.disable_cache) else: raise UnsupportedUrlScheme( "check-jsonschema only supports http, https, and local files. " f"detected parsed URL had an unrecognized scheme: {self.url_info}" ) def get_schema_retrieval_uri(self) -> str | None: return self.reader.get_retrieval_uri() def get_schema(self) -> dict[str, t.Any]: data = self.reader.read_schema() if self.base_uri is not None: data["$id"] = self.base_uri return data def get_validator( self, path: pathlib.Path | str, instance_doc: dict[str, t.Any], format_opts: FormatOptions, regex_impl: RegexImplementation, fill_defaults: bool, ) -> jsonschema.protocols.Validator: return self._get_validator(format_opts, regex_impl, fill_defaults) @functools.lru_cache def _get_validator( self, format_opts: FormatOptions, regex_impl: RegexImplementation, fill_defaults: bool, ) -> jsonschema.protocols.Validator: retrieval_uri = self.get_schema_retrieval_uri() schema = self.get_schema() schema_dialect = _dialect_of_schema(schema) # format checker (which may be None) format_checker = make_format_checker(format_opts, schema_dialect) # reference resolution # with support for YAML, TOML, and other formats from the parsers reference_registry = make_reference_registry( self._parsers, retrieval_uri, schema, self.disable_cache ) if self.validator_class is None: # get the correct validator class and check the schema under its metaschema validator_cls = jsonschema.validators.validator_for(schema) _check_schema(validator_cls, schema, regex_impl=regex_impl) else: # for a user-provided validator class, don't check_schema # on the grounds that it might *not* be valid but the user wants to use # their custom validator anyway # # in fact, there's no real guarantee that a user-provided # validator_class properly conforms to the jsonschema.Validator protocol # we *hope* that it does, but we can't be fully sure validator_cls = self.validator_class # extend the validator class with default-filling behavior if appropriate if fill_defaults: validator_cls = _extend_with_default(validator_cls) # set the regex variant for 'pattern' keywords 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 # # 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, ) return t.cast(jsonschema.protocols.Validator, validator) def _check_schema( validator_cls: type[jsonschema.protocols.Validator], schema: dict[str, t.Any], *, regex_impl: RegexImplementation, ) -> None: """A variant definition of Validator.check_schema which uses the regex implementation and format checker specified.""" # construct the metaschema validator class (with customized regex impl) schema_validator_cls = jsonschema.validators.validator_for( validator_cls.META_SCHEMA, default=validator_cls ) schema_validator_cls = _extend_with_pattern_implementation( schema_validator_cls, regex_impl ) # construct a specialized format checker (again, customized regex impl) metaschema_dialect = _dialect_of_schema(validator_cls.META_SCHEMA) format_checker = format_checker_for_regex_impl(regex_impl, metaschema_dialect) # now, construct and apply the actual validator schema_validator = schema_validator_cls( validator_cls.META_SCHEMA, registry=Registry(), format_checker=format_checker, ) for error in schema_validator.iter_errors(schema): raise jsonschema.exceptions.SchemaError.create_from(error) def _dialect_of_schema(schema: dict[str, t.Any] | bool) -> str | None: if not isinstance(schema, dict): return None schema_dialect = schema.get("$schema") if schema_dialect is not None and not isinstance(schema_dialect, str): schema_dialect = None return schema_dialect class BuiltinSchemaLoader(SchemaLoader): def __init__(self, schema_name: str, *, base_uri: str | None = None) -> None: self.schema_name = schema_name self.base_uri = base_uri self._parsers = ParserSet() def get_schema_retrieval_uri(self) -> str | None: return None def get_schema(self) -> dict[str, t.Any]: data = get_builtin_schema(self.schema_name) if self.base_uri is not None: data["$id"] = self.base_uri return data class MetaSchemaLoader(SchemaLoaderBase): def __init__(self, *, base_uri: str | None = None) -> None: if base_uri is not None: raise NotImplementedError( "'--base-uri' was used with '--metaschema'. " "This combination is not supported." ) def get_validator( self, path: pathlib.Path | str, instance_doc: dict[str, t.Any], format_opts: FormatOptions, regex_impl: RegexImplementation, fill_defaults: bool, ) -> jsonschema.protocols.Validator: schema_validator = jsonschema.validators.validator_for(instance_doc) meta_validator_class = jsonschema.validators.validator_for( schema_validator.META_SCHEMA, default=schema_validator ) # format checker (which may be None) meta_schema_dialect = schema_validator.META_SCHEMA.get("$schema") format_checker = make_format_checker(format_opts, meta_schema_dialect) meta_validator = meta_validator_class( schema_validator.META_SCHEMA, registry=Registry(), format_checker=format_checker, ) return meta_validator ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/schema_loader/readers.py0000644000175100017510000000556315062662115025413 0ustar00runnerrunnerfrom __future__ import annotations import io import json import sys import typing as t import ruamel.yaml from ..cachedownloader import CacheDownloader from ..parsers import ParseError, ParserSet from ..utils import filename2path from .errors import SchemaParseError yaml = ruamel.yaml.YAML(typ="safe") class _UnsetType: pass _UNSET = _UnsetType() def _run_load_callback(schema_location: str, callback: t.Callable) -> dict: try: schema = callback() # only local loads can raise the YAMLError, but catch for both cases for simplicity except (ValueError, ruamel.yaml.error.YAMLError) as e: raise SchemaParseError(schema_location) from e if not isinstance(schema, dict): raise SchemaParseError(schema_location) return schema class LocalSchemaReader: def __init__(self, filename: str) -> None: self.path = filename2path(filename) self.filename = str(self.path) self.parsers = ParserSet() self._parsed_schema: dict | _UnsetType = _UNSET def get_retrieval_uri(self) -> str | None: return self.path.as_uri() def _read_impl(self) -> t.Any: return self.parsers.parse_file(self.path, default_filetype="json") def read_schema(self) -> dict: if self._parsed_schema is _UNSET: self._parsed_schema = _run_load_callback(self.filename, self._read_impl) return t.cast(dict, self._parsed_schema) class StdinSchemaReader: def __init__(self) -> None: self.parsers = ParserSet() self._parsed_schema: dict | _UnsetType = _UNSET def get_retrieval_uri(self) -> str | None: return None def read_schema(self) -> dict: if self._parsed_schema is _UNSET: try: self._parsed_schema = json.load(sys.stdin) except ValueError as e: raise ParseError("Failed to parse JSON from stdin") from e return t.cast(dict, self._parsed_schema) class HttpSchemaReader: def __init__( self, url: str, disable_cache: bool, ) -> None: self.url = url self.parsers = ParserSet() self.downloader = CacheDownloader("schemas", disable_cache=disable_cache).bind( url, validation_callback=self._parse ) self._parsed_schema: dict | _UnsetType = _UNSET def _parse(self, schema_bytes: bytes) -> t.Any: return self.parsers.parse_data_with_path( io.BytesIO(schema_bytes), self.url, default_filetype="json" ) def get_retrieval_uri(self) -> str | None: return self.url def _read_impl(self) -> t.Any: with self.downloader.open() as fp: return self._parse(fp.read()) def read_schema(self) -> dict: if self._parsed_schema is _UNSET: self._parsed_schema = _run_load_callback(self.url, self._read_impl) return t.cast(dict, self._parsed_schema) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/schema_loader/resolver.py0000644000175100017510000000654415062662115025627 0ustar00runnerrunnerfrom __future__ import annotations import typing as t import urllib.parse import referencing from referencing.jsonschema import DRAFT202012, Schema from ..cachedownloader import CacheDownloader from ..parsers import ParserSet from ..utils import filename2path def make_reference_registry( parsers: ParserSet, retrieval_uri: str | None, schema: dict, disable_cache: bool ) -> referencing.Registry: id_attribute_: t.Any = schema.get("$id") if isinstance(id_attribute_, str): id_attribute: str | None = id_attribute_ else: id_attribute = None schema_resource = referencing.Resource.from_contents( schema, default_specification=DRAFT202012 ) # mypy does not recognize that Registry is an `attrs` class and has `retrieve` as an # argument to its implicit initializer registry: referencing.Registry = referencing.Registry( # type: ignore[call-arg] retrieve=create_retrieve_callable( parsers, retrieval_uri, id_attribute, disable_cache ) ) if retrieval_uri is not None: registry = registry.with_resource(uri=retrieval_uri, resource=schema_resource) if id_attribute is not None: registry = registry.with_resource(uri=id_attribute, resource=schema_resource) return registry def create_retrieve_callable( parser_set: ParserSet, retrieval_uri: str | None, id_attribute: str | None, disable_cache: bool, ) -> t.Callable[[str], referencing.Resource[Schema]]: base_uri = id_attribute if base_uri is None: base_uri = retrieval_uri cache = ResourceCache() downloader = CacheDownloader("refs", disable_cache=disable_cache) def get_local_file(uri: str) -> t.Any: path = filename2path(uri) return parser_set.parse_file(path, "json") def retrieve_reference(uri: str) -> referencing.Resource[Schema]: scheme = urllib.parse.urlsplit(uri).scheme if scheme == "" and base_uri is not None: full_uri = urllib.parse.urljoin(base_uri, uri) else: full_uri = uri if full_uri in cache: return cache[full_uri] full_uri_scheme = urllib.parse.urlsplit(full_uri).scheme if full_uri_scheme in ("http", "https"): def validation_callback(content: bytes) -> None: parser_set.parse_data_with_path(content, full_uri, "json") bound_downloader = downloader.bind( full_uri, validation_callback=validation_callback ) with bound_downloader.open() as fp: data = fp.read() parsed_object = parser_set.parse_data_with_path(data, full_uri, "json") else: parsed_object = get_local_file(full_uri) cache[full_uri] = parsed_object return cache[full_uri] return retrieve_reference class ResourceCache: def __init__(self) -> None: self._cache: t.Dict[str, referencing.Resource[Schema]] = {} def __setitem__(self, uri: str, data: t.Any) -> referencing.Resource[Schema]: resource = referencing.Resource.from_contents( data, default_specification=DRAFT202012 ) self._cache[uri] = resource return resource def __getitem__(self, uri: str) -> referencing.Resource[Schema]: return self._cache[uri] def __contains__(self, uri: str) -> bool: return uri in self._cache ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.902612 check_jsonschema-0.34.0/src/check_jsonschema/transforms/0000755000175100017510000000000015062662127023016 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/transforms/__init__.py0000644000175100017510000000045615062662115025131 0ustar00runnerrunnerfrom __future__ import annotations from .azure_pipelines import AZURE_TRANSFORM from .base import Transform from .gitlab import GITLAB_TRANSFORM TRANSFORM_LIBRARY: dict[str, Transform] = { "azure-pipelines": AZURE_TRANSFORM, "gitlab-ci": GITLAB_TRANSFORM, } __all__ = ("TRANSFORM_LIBRARY",) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/transforms/azure_pipelines.py0000644000175100017510000000775315062662115026577 0ustar00runnerrunner""" A data transform which unpacks "compile-time expressions" from Azure Pipelines files. For the original source which inspired this transform, see the YAML parser used in the Azure Pipelines Language Server: https://github.com/microsoft/azure-pipelines-language-server/blob/71b20f92874c02dfe82ad2cc2dcc7fa64996be91/language-service/src/parser/yamlParser.ts#L182 That source is licensed under the MIT License. The original license can be found in src/check_jsonschema/builtin_schemas/vendor/licenses/LICENSE.azure-pipelines The transform does not deeply interpret the expressions. It just "unnests" them. It will turn this input jobs: - ${{ each val in parameter.vals }}: - job: foo steps: - bash: echo ${{ val }} into jobs: - job: foo steps: - bash: echo ${{ val }} """ from __future__ import annotations import typing as t from .base import Transform class AzurePipelinesDataError(ValueError): def __init__(self, message: str) -> None: super().__init__(f"azure-pipelines transform: {message}") def is_expression(s: str) -> bool: return s.startswith("${{") and s.endswith("}}") def traverse_data(data: t.Any) -> t.Any: if isinstance(data, dict): return traverse_dict(data) if isinstance(data, list): return traverse_list(data) return data def traverse_list(data: list) -> list: ret = [] for item in data: # is the current item a single-value dict with an expression as its key? item_is_expr = ( isinstance(item, dict) and len(item) == 1 and is_expression(tuple(item)[0]) # tuple() gets keys ) if item_is_expr: # unpack the expression item and recurse over the value item_key, item_value = list(item.items())[0] item_value = traverse_data(item_value) if isinstance(item_value, list): ret.extend(item_value) else: ret.append(item_value) # not expression? process the item and append else: ret.append(traverse_data(item)) return ret def traverse_dict(data: dict) -> dict: newdata = {} for key, value in data.items(): newvalue = traverse_data(value) if is_expression(key): # WARNING -- correctness unclear # # "lift" any dict by moving its attributes up into the object being evaluated # # e.g. # parent: # ${{ each x in xs }}: # - k: v-${{ x }} # # becomes # # parent: # - k: v-${{ x }} if isinstance(newvalue, dict): for add_k, add_v in newvalue.items(): newdata[add_k] = add_v # In all other cases, drop the content from the data. This is based on the # azure-pipelines-language server behavior: # https://github.com/microsoft/azure-pipelines-language-server/blob/71b20f92874c02dfe82ad2cc2dcc7fa64996be91/language-service/src/parser/yamlParser.ts#L185 # # earlier versions would raise an error here, but this caused issues with # data in which expressions were mapped to simple strings # # e.g. # # parent: # ${{ x }}: ${{ y }} # # which occurs naturally *after* a lifting operation, as in # # parent: # ${{ each x, y in attrs }}: # ${{ x }}: ${{ y }} else: continue else: newdata[key] = newvalue return newdata def azure_main(data: dict | list) -> dict | list: if isinstance(data, list): raise AzurePipelinesDataError( "this transform requires that the data be an object, got list" ) return traverse_dict(data) AZURE_TRANSFORM = Transform(on_data=azure_main) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/transforms/base.py0000644000175100017510000000077215062662115024305 0ustar00runnerrunnerfrom __future__ import annotations import typing as t import ruamel.yaml class Transform: def __init__( self, *, on_data: t.Callable[[list | dict], list | dict] | None = None, ) -> None: self.on_data = on_data def modify_yaml_implementation(self, implementation: ruamel.yaml.YAML) -> None: pass def __call__(self, data: list | dict) -> list | dict: if self.on_data is not None: return self.on_data(data) return data ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/transforms/gitlab.py0000644000175100017510000000202715062662115024630 0ustar00runnerrunnerfrom __future__ import annotations import typing as t import ruamel.yaml from .base import Transform class GitLabReferenceExpectationViolation(ValueError): def __init__(self, msg: str, data: t.Any) -> None: super().__init__( f"check-jsonschema rejects this gitlab !reference tag: {msg}\n{data!r}" ) class GitLabReference: yaml_tag = "!reference" @classmethod def from_yaml( cls, constructor: ruamel.yaml.BaseConstructor, node: ruamel.yaml.Node ) -> list[str]: if not isinstance(node.value, list): raise GitLabReferenceExpectationViolation("non-list value", node) return [item.value for item in node.value] # this "transform" is actually a no-op on the data, but it registers the GitLab !reference # tag with the instance YAML loader class GitLabDataTransform(Transform): def modify_yaml_implementation(self, implementation: ruamel.yaml.YAML) -> None: implementation.register_class(GitLabReference) GITLAB_TRANSFORM = GitLabDataTransform() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/src/check_jsonschema/utils.py0000644000175100017510000001027715062662115022336 0ustar00runnerrunnerfrom __future__ import annotations import linecache import os import pathlib import re import textwrap import traceback import typing as t import urllib.parse import urllib.request import click import jsonschema WINDOWS = os.name == "nt" PROC_FD_PATH_PATTERN = re.compile(r"/proc/(self|\d+)/fd/\d+") # this is a short list of schemes which will be recognized as being # schemes at all; anything else will not even be reported as an # unsupported scheme KNOWN_URL_SCHEMES = [ "", "ftp", "gopher", "http", "file", "https", "shttp", "rsync", "svn", "svn+ssh", "sftp", "nfs", "git", "git+ssh", "ws", "wss", ] def is_url_ish(path: str) -> bool: r""" Returns true if the input path looks like a URL. NB: This needs to be done carefully to avoid mishandling of Windows paths starting with 'C:\' (and so forth) as URLs. urlparse from urllib will treat 'C' as a scheme if asked to parse a Windows path. """ if ":" not in path: return False scheme = path.split(":", 1)[0].lower() return scheme in KNOWN_URL_SCHEMES def filename2path(filename: str) -> pathlib.Path: """ Convert a filename which may be a local file URI to a pathlib.Path object This implementation was influenced strongly by how pip handles this problem: https://github.com/pypa/pip/blob/bf91a079791f2daf4339115fb39ce7d7e33a9312/src/pip/_internal/utils/urls.py#L26 """ if not filename.startswith("file://"): # for local paths, support use of `~` p = pathlib.Path(filename).expanduser() else: urlinfo = urllib.parse.urlsplit(filename) # local (vs UNC paths) is_local_path = urlinfo.netloc in (None, "", "localhost") if is_local_path: netloc = "" elif WINDOWS: netloc = "\\\\" + urlinfo.netloc else: netloc = urlinfo.netloc filename = urllib.request.url2pathname(netloc + urlinfo.path) # url2pathname on windows local paths can produce paths like # /C:/Users/foo/... # the leading slash messes up a lot of logic for pathlib and similar functions # so strip the leading slash in this case if WINDOWS and is_local_path and filename.startswith("/"): filename = filename[1:] p = pathlib.Path(filename) # if passed a file descriptor object, do not try to resolve it # the resolution behavior when using zsh `<()` redirection seems to result in # an incorrect path being used if PROC_FD_PATH_PATTERN.fullmatch(filename): return p return p.resolve() def format_shortened_error(err: Exception, *, indent: int = 0) -> str: lines = [] lines.append(textwrap.indent(f"{type(err).__name__}: {err}", indent * " ")) if err.__traceback__ is not None: lineno = err.__traceback__.tb_lineno tb_frame = err.__traceback__.tb_frame filename = tb_frame.f_code.co_filename line = linecache.getline(filename, lineno) lines.append((indent + 2) * " " + f'in "{filename}", line {lineno}') lines.append((indent + 2) * " " + ">>> " + line.strip()) return "\n".join(lines) def format_shortened_trace(caught_err: Exception) -> str: err_stack: list[Exception] = [caught_err] while err_stack[-1].__context__ is not None: err_stack.append(err_stack[-1].__context__) # type: ignore[arg-type] parts = [format_shortened_error(caught_err)] indent = 0 for err in err_stack[1:]: indent += 2 parts.append("\n" + indent * " " + "caused by\n") parts.append(format_shortened_error(err, indent=indent)) return "\n".join(parts) def format_error(err: Exception, mode: str = "short") -> str: if mode == "short": return format_shortened_trace(err) else: return "".join(traceback.format_exception(type(err), err, err.__traceback__)) def print_error(err: Exception, mode: str = "short") -> None: click.echo(format_error(err, mode=mode), err=True) def iter_validation_error( err: jsonschema.ValidationError, ) -> t.Iterator[jsonschema.ValidationError]: if err.context: for e in err.context: yield e yield from iter_validation_error(e) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.919612 check_jsonschema-0.34.0/src/check_jsonschema.egg-info/0000755000175100017510000000000015062662127022312 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159958.0 check_jsonschema-0.34.0/src/check_jsonschema.egg-info/PKG-INFO0000644000175100017510000000475615062662126023422 0ustar00runnerrunnerMetadata-Version: 2.4 Name: check-jsonschema Version: 0.34.0 Summary: A jsonschema CLI and pre-commit hook Author-email: Stephen Rosen Project-URL: Homepage, https://github.com/python-jsonschema/check-jsonschema Classifier: Development Status :: 4 - Beta Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: Apache Software License Classifier: Programming Language :: Python :: 3 Requires-Python: >=3.9 Description-Content-Type: text/markdown License-File: LICENSE Requires-Dist: tomli>=2.0; python_version < "3.11" Requires-Dist: ruamel.yaml<0.19.0,>=0.18.10 Requires-Dist: jsonschema<5.0,>=4.18.0 Requires-Dist: regress>=2024.11.1 Requires-Dist: requests<3.0 Requires-Dist: click<9,>=8 Dynamic: license-file [![pypi version](https://img.shields.io/pypi/v/check-jsonschema.svg)](https://pypi.org/project/check-jsonschema/) [![supported pythons](https://img.shields.io/pypi/pyversions/check-jsonschema.svg)](https://pypi.org/project/check-jsonschema/) [![build](https://github.com/python-jsonschema/check-jsonschema/actions/workflows/build.yaml/badge.svg)](https://github.com/python-jsonschema/check-jsonschema/actions/workflows/build.yaml) [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/python-jsonschema/check-jsonschema/main.svg)](https://results.pre-commit.ci/latest/github/python-jsonschema/check-jsonschema/main) [![readthedocs documentation](https://readthedocs.org/projects/check-jsonschema/badge/?version=stable&style=flat)](https://check-jsonschema.readthedocs.io/en/stable) # check-jsonschema A JSON Schema CLI and [pre-commit](https://pre-commit.com/) hook built on [jsonschema](https://github.com/python-jsonschema/jsonschema/). The schema may be specified as a local or remote (HTTP or HTTPS) file. Remote files are automatically downloaded and cached if possible. ## Usage `check-jsonschema` can be installed and run as a CLI tool, or via pre-commit. ### Example pre-commit config The following configuration uses `check-jsonschema` to validate Github Workflow files. ```yaml - repo: https://github.com/python-jsonschema/check-jsonschema rev: 0.34.0 hooks: - id: check-github-workflows args: ["--verbose"] ``` ### Installing and Running as a CLI Tool Install with `pipx` or `brew`: pipx install check-jsonschema or brew install check-jsonschema Then run, as in check-jsonschema --schemafile schema.json instance.json ## Documentation Full documentation can be found at https://check-jsonschema.readthedocs.io/ ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159958.0 check_jsonschema-0.34.0/src/check_jsonschema.egg-info/SOURCES.txt0000644000175100017510000002176315062662126024206 0ustar00runnerrunner.pre-commit-hooks.yaml LICENSE MANIFEST.in README.md pyproject.toml setup.py tox.ini src/check_jsonschema/__init__.py src/check_jsonschema/__main__.py src/check_jsonschema/cachedownloader.py src/check_jsonschema/catalog.py src/check_jsonschema/checker.py src/check_jsonschema/identify_filetype.py src/check_jsonschema/instance_loader.py src/check_jsonschema/regex_variants.py src/check_jsonschema/reporter.py src/check_jsonschema/result.py src/check_jsonschema/utils.py src/check_jsonschema.egg-info/PKG-INFO src/check_jsonschema.egg-info/SOURCES.txt src/check_jsonschema.egg-info/dependency_links.txt src/check_jsonschema.egg-info/entry_points.txt src/check_jsonschema.egg-info/requires.txt src/check_jsonschema.egg-info/top_level.txt src/check_jsonschema/builtin_schemas/__init__.py src/check_jsonschema/builtin_schemas/custom/__init__.py src/check_jsonschema/builtin_schemas/custom/github-workflows-require-timeout.json src/check_jsonschema/builtin_schemas/vendor/README.md src/check_jsonschema/builtin_schemas/vendor/__init__.py src/check_jsonschema/builtin_schemas/vendor/azure-pipelines.json src/check_jsonschema/builtin_schemas/vendor/bamboo-spec.json src/check_jsonschema/builtin_schemas/vendor/bitbucket-pipelines.json src/check_jsonschema/builtin_schemas/vendor/buildkite.json src/check_jsonschema/builtin_schemas/vendor/circle-ci.json src/check_jsonschema/builtin_schemas/vendor/cloudbuild.json src/check_jsonschema/builtin_schemas/vendor/codecov.json src/check_jsonschema/builtin_schemas/vendor/compose-spec.json src/check_jsonschema/builtin_schemas/vendor/dependabot.json src/check_jsonschema/builtin_schemas/vendor/drone-ci.json src/check_jsonschema/builtin_schemas/vendor/github-actions.json src/check_jsonschema/builtin_schemas/vendor/github-issue-config.json src/check_jsonschema/builtin_schemas/vendor/github-issue-forms.json src/check_jsonschema/builtin_schemas/vendor/github-workflows.json src/check_jsonschema/builtin_schemas/vendor/gitlab-ci.json src/check_jsonschema/builtin_schemas/vendor/meltano.json src/check_jsonschema/builtin_schemas/vendor/mergify.json src/check_jsonschema/builtin_schemas/vendor/readthedocs.json src/check_jsonschema/builtin_schemas/vendor/renovate.json src/check_jsonschema/builtin_schemas/vendor/snapcraft.json src/check_jsonschema/builtin_schemas/vendor/taskfile.json src/check_jsonschema/builtin_schemas/vendor/travis.json src/check_jsonschema/builtin_schemas/vendor/woodpecker-ci.json src/check_jsonschema/cli/__init__.py src/check_jsonschema/cli/main_command.py src/check_jsonschema/cli/param_types.py src/check_jsonschema/cli/parse_result.py src/check_jsonschema/cli/warnings.py src/check_jsonschema/formats/__init__.py src/check_jsonschema/formats/implementations/__init__.py src/check_jsonschema/formats/implementations/iso8601_time.py src/check_jsonschema/formats/implementations/rfc3339.py src/check_jsonschema/parsers/__init__.py src/check_jsonschema/parsers/json5.py src/check_jsonschema/parsers/json_.py src/check_jsonschema/parsers/toml.py src/check_jsonschema/parsers/yaml.py src/check_jsonschema/schema_loader/__init__.py src/check_jsonschema/schema_loader/errors.py src/check_jsonschema/schema_loader/main.py src/check_jsonschema/schema_loader/readers.py src/check_jsonschema/schema_loader/resolver.py src/check_jsonschema/transforms/__init__.py src/check_jsonschema/transforms/azure_pipelines.py src/check_jsonschema/transforms/base.py src/check_jsonschema/transforms/gitlab.py tests/conftest.py tests/acceptance/conftest.py tests/acceptance/test_custom_validator_class.py tests/acceptance/test_example_files.py tests/acceptance/test_fill_defaults.py tests/acceptance/test_format_failure.py tests/acceptance/test_format_regex_opts.py tests/acceptance/test_gitlab_reference_handling.py tests/acceptance/test_hook_file_matches.py tests/acceptance/test_invalid_schema_files.py tests/acceptance/test_local_relative_ref.py tests/acceptance/test_malformed_instances.py tests/acceptance/test_nonjson_instance_files.py tests/acceptance/test_nonjson_schema_handling.py tests/acceptance/test_remote_ref_resolution.py tests/acceptance/test_special_filetypes.py tests/acceptance/custom_schemas/test_github_workflow_require_explicit_timeout.py tests/example-files/config_schema.json tests/example-files/explicit-schema/negative/unicode_pattern/instance.json tests/example-files/explicit-schema/negative/unicode_pattern/schema.json tests/example-files/explicit-schema/positive/2020-meta/instance.json tests/example-files/explicit-schema/positive/2020-meta/schema.json tests/example-files/explicit-schema/positive/complex-toml/instance.toml tests/example-files/explicit-schema/positive/complex-toml/schema.json tests/example-files/explicit-schema/positive/complex-yaml/instance.yaml tests/example-files/explicit-schema/positive/complex-yaml/schema.json tests/example-files/explicit-schema/positive/date-format/instance.json tests/example-files/explicit-schema/positive/date-format/schema.json tests/example-files/explicit-schema/positive/integer-keys-yaml/instance.yaml tests/example-files/explicit-schema/positive/integer-keys-yaml/schema.json tests/example-files/explicit-schema/positive/simple-toml/instance.toml tests/example-files/explicit-schema/positive/simple-toml/schema.json tests/example-files/explicit-schema/positive/unicode_pattern/instance.json tests/example-files/explicit-schema/positive/unicode_pattern/schema.json tests/example-files/hooks/negative/cloudbuild/empty.yaml tests/example-files/hooks/negative/drone-ci/unkown-type-pipeline.yml tests/example-files/hooks/negative/github-workflows/empty.json tests/example-files/hooks/negative/jsonschema/_config.yaml tests/example-files/hooks/negative/jsonschema/github-workflow-timeout-minutes-expression.yaml tests/example-files/hooks/negative/mergify/example-pr-rules.yaml tests/example-files/hooks/negative/metaschema/2020_invalid_format_value.json tests/example-files/hooks/negative/metaschema/_config.yaml tests/example-files/hooks/negative/metaschema/draft7_title_array.json tests/example-files/hooks/negative/metaschema/draft7_title_array.yaml tests/example-files/hooks/negative/readthedocs/pyversion-float.yml tests/example-files/hooks/negative/snapcraft/snapcraft.yaml tests/example-files/hooks/negative/woodpecker-ci/empty.yaml tests/example-files/hooks/positive/azure-pipelines/expression-from-lang-server.yaml tests/example-files/hooks/positive/azure-pipelines/expression-transform.yaml tests/example-files/hooks/positive/azure-pipelines/marshmallow.yaml tests/example-files/hooks/positive/azure-pipelines/object-defined-by-expression-map.yaml tests/example-files/hooks/positive/bitbucket-pipelines/bitbucket-pipelines.yml tests/example-files/hooks/positive/buildkite/matrix.yml tests/example-files/hooks/positive/cloudbuild/hello_world.yaml tests/example-files/hooks/positive/codecov/.codecov.yml tests/example-files/hooks/positive/codecov/codecov.yml tests/example-files/hooks/positive/drone-ci/digitalocean-pipeline.yml tests/example-files/hooks/positive/drone-ci/docker-pipeline.yml tests/example-files/hooks/positive/drone-ci/exec-pipeline.yaml tests/example-files/hooks/positive/drone-ci/kubernetes-pipeline.yml tests/example-files/hooks/positive/drone-ci/macstadium-pipeline.yml tests/example-files/hooks/positive/drone-ci/ssh-pipeline.yml tests/example-files/hooks/positive/github-actions/redis-simple.yml tests/example-files/hooks/positive/github-issue-config/config.yml tests/example-files/hooks/positive/github-issue-forms/bug.yml tests/example-files/hooks/positive/github-issue-forms/feature.yml tests/example-files/hooks/positive/github-issue-forms/task.yaml tests/example-files/hooks/positive/github-workflows/has-unicode.yaml tests/example-files/hooks/positive/github-workflows/self-build.yaml tests/example-files/hooks/positive/gitlab-ci/reference-tag.yaml tests/example-files/hooks/positive/jsonschema/_config.yaml tests/example-files/hooks/positive/jsonschema/github-workflow-timeout-minutes-expression.yaml tests/example-files/hooks/positive/meltano/multiple-plugins.yml tests/example-files/hooks/positive/mergify/example-pr-rules.yaml tests/example-files/hooks/positive/metaschema/2020_invalid_format_value.json tests/example-files/hooks/positive/metaschema/_config.yaml tests/example-files/hooks/positive/metaschema/almost_empty.yaml tests/example-files/hooks/positive/metaschema/draft3.json tests/example-files/hooks/positive/metaschema/draft7.json tests/example-files/hooks/positive/readthedocs/simple.yaml tests/example-files/hooks/positive/renovate/starter-config.json tests/example-files/hooks/positive/renovate/starter-config.json5 tests/example-files/hooks/positive/snapcraft/snapcraft.yaml tests/example-files/hooks/positive/travis/python-build.yaml tests/example-files/hooks/positive/woodpecker-ci/pipeline-clone.yaml tests/unit/test_cachedownloader.py tests/unit/test_catalog.py tests/unit/test_gitlab_data_transform.py tests/unit/test_instance_loader.py tests/unit/test_lazy_file_handling.py tests/unit/test_reporters.py tests/unit/test_schema_loader.py tests/unit/test_utils.py tests/unit/cli/test_annotations.py tests/unit/cli/test_callbacks.py tests/unit/cli/test_parse.py tests/unit/formats/test_rfc3339.py tests/unit/formats/test_time.py././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159958.0 check_jsonschema-0.34.0/src/check_jsonschema.egg-info/dependency_links.txt0000644000175100017510000000000115062662126026357 0ustar00runnerrunner ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159958.0 check_jsonschema-0.34.0/src/check_jsonschema.egg-info/entry_points.txt0000644000175100017510000000007315062662126025607 0ustar00runnerrunner[console_scripts] check-jsonschema = check_jsonschema:main ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159958.0 check_jsonschema-0.34.0/src/check_jsonschema.egg-info/requires.txt0000644000175100017510000000021015062662126024702 0ustar00runnerrunnerruamel.yaml<0.19.0,>=0.18.10 jsonschema<5.0,>=4.18.0 regress>=2024.11.1 requests<3.0 click<9,>=8 [:python_version < "3.11"] tomli>=2.0 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159958.0 check_jsonschema-0.34.0/src/check_jsonschema.egg-info/top_level.txt0000644000175100017510000000002115062662126025034 0ustar00runnerrunnercheck_jsonschema ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.903612 check_jsonschema-0.34.0/tests/0000755000175100017510000000000015062662127015704 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.905612 check_jsonschema-0.34.0/tests/acceptance/0000755000175100017510000000000015062662127017772 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/acceptance/conftest.py0000644000175100017510000000164615062662115022175 0ustar00runnerrunnerimport textwrap import pytest from check_jsonschema import main as cli_main def _render_result(result): return f""" output: {textwrap.indent(result.output, " ")} stderr: {textwrap.indent(result.stderr, " ")} """ @pytest.fixture def run_line(cli_runner): def func(cli_args, *args, **kwargs): assert cli_args[0] == "check-jsonschema" if "catch_exceptions" not in kwargs: kwargs["catch_exceptions"] = False return cli_runner.invoke(cli_main, cli_args[1:], *args, **kwargs) return func @pytest.fixture def run_line_simple(run_line): def func(cli_args, *args, full_traceback: bool = True, **kwargs): res = run_line( ["check-jsonschema"] + (["--traceback-mode", "full"] if full_traceback else []) + cli_args, *args, **kwargs, ) assert res.exit_code == 0, _render_result(res) return func ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.905612 check_jsonschema-0.34.0/tests/acceptance/custom_schemas/0000755000175100017510000000000015062662127023007 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000021000000000000010206 xustar00114 path=check_jsonschema-0.34.0/tests/acceptance/custom_schemas/test_github_workflow_require_explicit_timeout.py 22 mtime=1758159949.0 check_jsonschema-0.34.0/tests/acceptance/custom_schemas/test_github_workflow_require_explicit_timeou0000644000175100017510000000373315062662115034227 0ustar00runnerrunnerimport pytest PASSING_WORKFLOW = """\ name: build on: push: jobs: test: timeout-minutes: 60 runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 - name: install requirements run: python -m pip install tox - name: test run: python -m tox -e py """ FAILING_WORKFLOW = """\ name: build on: push: jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 - name: install requirements run: python -m pip install tox - name: test run: python -m tox -e py """ @pytest.mark.parametrize( "schemaname", ["github-workflows-require-timeout", "custom.github-workflows-require-timeout"], ) @pytest.mark.parametrize( "vendor_schemaname", ["github-workflows", "vendor.github-workflows"], ) def test_github_require_timeouts_passing( run_line_simple, tmp_path, schemaname, vendor_schemaname ): workflow = tmp_path / "doc.yaml" workflow.write_text(PASSING_WORKFLOW) # vendored github workflow schema passes on it run_line_simple(["--builtin-schema", vendor_schemaname, str(workflow)]) run_line_simple(["--builtin-schema", schemaname, str(workflow)]) @pytest.mark.parametrize( "schemaname", ["github-workflows-require-timeout", "custom.github-workflows-require-timeout"], ) @pytest.mark.parametrize( "vendor_schemaname", ["github-workflows", "vendor.github-workflows"], ) def test_github_require_timeouts_failing( run_line, tmp_path, schemaname, vendor_schemaname ): workflow = tmp_path / "doc.yaml" workflow.write_text(FAILING_WORKFLOW) # vendored github workflow schema passes on it res1 = run_line( ["check-jsonschema", "--builtin-schema", vendor_schemaname, str(workflow)] ) assert res1.exit_code == 0 res2 = run_line( ["check-jsonschema", "--builtin-schema", schemaname, str(workflow)], ) assert res2.exit_code == 1 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/acceptance/test_custom_validator_class.py0000644000175100017510000001126015062662115026144 0ustar00runnerrunnerimport json import pytest # define a calendar event schema and then use a custom validator to validate that there # are no events with "Occult" in their names SCHEMA = { "$schema": "http://json-schema.org/draft-07/schema", "definitions": { "calendar-event": { "type": "object", "properties": { "title": {"type": "string"}, "start": {"type": "string", "format": "date-time"}, "end": {"type": "string", "format": "date-time"}, }, } }, "properties": { "events": { "type": "array", "items": {"$ref": "#/definitions/calendar-event"}, }, }, "required": ["events"], } VALID_DOC = { "events": [ { "title": "Weekly Production Meeting", "start": "2019-06-24T09:00:00-05:00", "end": "2019-06-24T10:00:00-05:00", }, { "title": "Catch Up", "start": "2019-06-24T10:00:00-05:00", "end": "2019-06-24T10:30:00-05:00", }, ] } INVALID_DOC = { "events": [ { "title": "Weekly Production Meeting", "start": "2019-06-24T09:00:00-05:00", "end": "2019-06-24T10:00:00-05:00", }, { "title": "Catch Up", "start": "2019-06-24T10:00:00-05:00", "end": "2019-06-24T10:30:00-05:00", }, { "title": "Occult Study Session", "start": "2019-06-24T10:00:00-05:00", "end": "2019-06-24T12:00:00-05:00", }, ] } @pytest.fixture(autouse=True) def _foo_module(mock_module): mock_module( "foo.py", """\ import jsonschema def check_occult_properties(validator, properties, instance, schema): if not validator.is_type(instance, "object"): return for property, subschema in properties.items(): if property in instance: if property == "title" and "Occult" in instance["title"]: yield jsonschema.exceptions.ValidationError( "Error! Occult event detected! Run!", validator=validator, validator_value=None, instance=instance, schema=schema, ) yield from validator.descend( instance[property], subschema, path=property, schema_path=property, ) MyValidator = jsonschema.validators.extend( jsonschema.validators.Draft7Validator, {"properties": check_occult_properties}, ) """, ) def test_custom_validator_class_can_detect_custom_conditions(run_line, tmp_path): doc = tmp_path / "invalid.json" doc.write_text(json.dumps(INVALID_DOC)) schema = tmp_path / "schema.json" schema.write_text(json.dumps(SCHEMA)) result = run_line( [ "check-jsonschema", "--schemafile", str(schema), str(doc), ] ) assert result.exit_code == 0, result.stdout # pass result = run_line( [ "check-jsonschema", "--schemafile", str(schema), "--validator-class", "foo:MyValidator", str(doc), ], ) assert result.exit_code == 1, result.stdout # fail assert "Occult event detected" in result.stdout, result.stdout def test_custom_validator_class_can_pass_when_valid(run_line, tmp_path): doc = tmp_path / "valid.json" doc.write_text(json.dumps(VALID_DOC)) schema = tmp_path / "schema.json" schema.write_text(json.dumps(SCHEMA)) result = run_line( [ "check-jsonschema", "--schemafile", str(schema), str(doc), ] ) assert result.exit_code == 0, result.stdout # pass result = run_line( [ "check-jsonschema", "--schemafile", str(schema), "--validator-class", "foo:MyValidator", str(doc), ], ) assert result.exit_code == 0 # pass @pytest.mark.parametrize( "add_opts", ( ["--builtin-schema", "vendor.github-workflows"], ["--check-metaschema"], ), ) def test_custom_validator_class_is_incompatible_with_schema_opts( run_line, tmp_path, add_opts ): doc = tmp_path / "instance.json" doc.write_text("{}") result = run_line( [ "check-jsonschema", "--validator-class", "foo:MyValidator", str(doc), ] + add_opts ) assert result.exit_code == 2 assert "--validator-class can only be used with --schemafile" in result.stderr ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/acceptance/test_example_files.py0000644000175100017510000001440115062662115024215 0ustar00runnerrunnerfrom __future__ import annotations import dataclasses import importlib.util import shlex from pathlib import Path import pytest import ruamel.yaml from check_jsonschema.parsers.json5 import ENABLED as JSON5_ENABLED yaml = ruamel.yaml.YAML(typ="safe") HERE = Path(__file__).parent EXAMPLE_FILES = HERE.parent / "example-files" EXAMPLE_HOOK_FILES = HERE.parent / "example-files" / "hooks" EXAMPLE_EXPLICIT_FILES = HERE.parent / "example-files" / "explicit-schema" def _iter_hook_config(): config_file = HERE.parent.parent / ".pre-commit-hooks.yaml" with open(config_file) as fp: for hook in yaml.load(fp): hookid = hook["id"] if not hookid.startswith("check-"): continue hookid = hookid[len("check-") :] entry = shlex.split(hook["entry"]) yield (hookid, entry) HOOK_CONFIG = dict(_iter_hook_config()) def _build_hook_cases(category): res = {} for hookid in HOOK_CONFIG: example_dir = EXAMPLE_HOOK_FILES / category / hookid if example_dir.exists(): for example in example_dir.iterdir(): if example.name == "_config.yaml": continue res[str(example.relative_to(EXAMPLE_HOOK_FILES / category))] = hookid return res def _get_explicit_cases(category): res = [] example_dir = EXAMPLE_EXPLICIT_FILES / category for example in example_dir.iterdir(): res.append(str(example.relative_to(EXAMPLE_EXPLICIT_FILES / category))) return res POSITIVE_HOOK_CASES = _build_hook_cases("positive") NEGATIVE_HOOK_CASES = _build_hook_cases("negative") @pytest.mark.parametrize("case_name", POSITIVE_HOOK_CASES.keys()) def test_hook_positive_examples(case_name, run_line): rcase = ResolvedCase.load_positive(case_name) hook_id = POSITIVE_HOOK_CASES[case_name] ret = run_line(HOOK_CONFIG[hook_id] + [rcase.path] + rcase.add_args) assert ret.exit_code == 0, _format_cli_result(ret, rcase) @pytest.mark.parametrize("case_name", NEGATIVE_HOOK_CASES.keys()) def test_hook_negative_examples(case_name, run_line): rcase = ResolvedCase.load_negative(case_name) hook_id = NEGATIVE_HOOK_CASES[case_name] ret = run_line(HOOK_CONFIG[hook_id] + [rcase.path] + rcase.add_args) assert ret.exit_code == 1, _format_cli_result(ret, rcase) @pytest.mark.parametrize("case_name", _get_explicit_cases("positive")) def test_explicit_positive_examples(case_name, run_line): _check_file_format_skip(case_name) casedir = EXAMPLE_EXPLICIT_FILES / "positive" / case_name instance = casedir / "instance.json" if not instance.exists(): instance = casedir / "instance.yaml" if not instance.exists(): instance = casedir / "instance.toml" if not instance.exists(): raise Exception("could not find an instance file for test case") schema = casedir / "schema.json" if not schema.exists(): schema = casedir / "schema.yaml" if not schema.exists(): raise Exception("could not find a schema file for test case") ret = run_line( [ "check-jsonschema", "--schemafile", str(schema), str(instance), ] ) assert ret.exit_code == 0, _format_cli_result(ret) @pytest.mark.parametrize("case_name", _get_explicit_cases("negative")) def test_explicit_negative_examples(case_name, run_line): _check_file_format_skip(case_name) casedir = EXAMPLE_EXPLICIT_FILES / "negative" / case_name instance = casedir / "instance.json" if not instance.exists(): instance = casedir / "instance.yaml" if not instance.exists(): instance = casedir / "instance.toml" if not instance.exists(): raise Exception("could not find an instance file for test case") schema = casedir / "schema.json" if not schema.exists(): schema = casedir / "schema.yaml" if not schema.exists(): raise Exception("could not find a schema file for test case") ret = run_line( [ "check-jsonschema", "--schemafile", str(schema), str(instance), ] ) assert ret.exit_code == 1, _format_cli_result(ret) def _check_file_format_skip(case_name): if case_name.endswith("json5") and not JSON5_ENABLED: pytest.skip("cannot check json5 support without json5 enabled") @dataclasses.dataclass class ResolvedCase: category: str path: str add_args: list[str] config: dict def check_skip(self) -> None: if "requires_packages" in self.config: for pkg in self.config["requires_packages"]: if _package_is_installed(pkg): continue pytest.skip(f"cannot check because '{pkg}' is not installed") def __post_init__(self) -> None: self.check_skip() @classmethod def load_positive(cls: type[ResolvedCase], case_name: str) -> ResolvedCase: return cls._load("positive", case_name) @classmethod def load_negative(cls: type[ResolvedCase], case_name: str) -> ResolvedCase: return cls._load("negative", case_name) @classmethod def _load(cls: type[ResolvedCase], category: str, case_name: str) -> ResolvedCase: _check_file_format_skip(case_name) path = EXAMPLE_HOOK_FILES / category / case_name config = cls._load_file_config(path.parent / "_config.yaml", path.name) return cls( category=category, path=str(path), add_args=config.get("add_args", []), config=config, ) @staticmethod def _load_file_config(config_path, name): if not config_path.is_file(): return {} with open(config_path) as fp: loaded_conf = yaml.load(fp) files_section = loaded_conf.get("files", {}) return files_section.get(name, {}) def _package_is_installed(pkg: str) -> bool: spec = importlib.util.find_spec(pkg) if spec is None: return False return True def _format_cli_result(result, rcase: ResolvedCase | None = None) -> str: prefix = "" if rcase is not None: prefix = f"config.add_args={rcase.add_args}\n" return ( f"\n{prefix}" f"{result.exit_code=}\n" f"result.stdout={result.output}\n" f"{result.stderr=}" ) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/acceptance/test_fill_defaults.py0000644000175100017510000000377415062662115024230 0ustar00runnerrunnerimport json SCHEMA = { "$schema": "http://json-schema.org/draft-07/schema", "properties": { "title": { "type": "string", "default": "Untitled", }, }, "required": ["title"], } VALID_DOC = { "title": "doc one", } INVALID_DOC = {"title": {"foo": "bar"}} MISSING_FIELD_DOC = {} def test_run_with_fill_defaults_does_not_make_valid_doc_invalid( run_line_simple, tmp_path ): schemafile = tmp_path / "schema.json" schemafile.write_text(json.dumps(SCHEMA)) doc = tmp_path / "instance.json" doc.write_text(json.dumps(VALID_DOC)) run_line_simple(["--fill-defaults", "--schemafile", str(schemafile), str(doc)]) def test_run_with_fill_defaults_does_not_make_invalid_doc_valid(run_line, tmp_path): schemafile = tmp_path / "schema.json" schemafile.write_text(json.dumps(SCHEMA)) doc = tmp_path / "instance.json" doc.write_text(json.dumps(INVALID_DOC)) res = run_line( [ "check-jsonschema", "--fill-defaults", "--schemafile", str(schemafile), str(doc), ] ) assert res.exit_code == 1 def test_run_with_fill_defaults_adds_required_field(run_line, tmp_path): schemafile = tmp_path / "schema.json" schemafile.write_text(json.dumps(SCHEMA)) doc = tmp_path / "instance.json" doc.write_text(json.dumps(MISSING_FIELD_DOC)) # step 1: run without '--fill-defaults' and confirm failure result_without_fill_defaults = run_line( [ "check-jsonschema", "--schemafile", str(schemafile), str(doc), ] ) assert result_without_fill_defaults.exit_code == 1 # step 2: run with '--fill-defaults' and confirm success result_with_fill_defaults = run_line( [ "check-jsonschema", "--fill-defaults", "--schemafile", str(schemafile), str(doc), ] ) assert result_with_fill_defaults.exit_code == 0 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/acceptance/test_format_failure.py0000644000175100017510000000374715062662115024412 0ustar00runnerrunnerimport json FORMAT_SCHEMA = { "$schema": "http://json-schema.org/draft-07/schema", "properties": { "title": { "type": "string", }, "date": { "type": "string", "format": "date", }, }, } PASSING_DOCUMENT = { "title": "doc one", "date": "2021-10-28", } FAILING_DOCUMENT = { "title": "doc one", "date": "foo", } def test_format_check_passing(run_line_simple, tmp_path): schemafile = tmp_path / "schema.json" schemafile.write_text(json.dumps(FORMAT_SCHEMA)) doc1 = tmp_path / "doc1.json" doc1.write_text(json.dumps(PASSING_DOCUMENT)) run_line_simple(["--schemafile", str(schemafile), str(doc1)]) def test_format_failure_exit_error(run_line, tmp_path): schemafile = tmp_path / "schema.json" schemafile.write_text(json.dumps(FORMAT_SCHEMA)) doc1 = tmp_path / "doc1.json" doc1.write_text(json.dumps(FAILING_DOCUMENT)) res = run_line(["check-jsonschema", "--schemafile", str(schemafile), str(doc1)]) assert res.exit_code == 1 def test_format_failure_ignore(run_line_simple, tmp_path): schemafile = tmp_path / "schema.json" schemafile.write_text(json.dumps(FORMAT_SCHEMA)) doc1 = tmp_path / "doc1.json" doc1.write_text(json.dumps(FAILING_DOCUMENT)) run_line_simple( [ "--disable-formats", "*", "--schemafile", str(schemafile), str(doc1), ] ) def test_format_failure_ignore_multidoc(run_line_simple, tmp_path): schemafile = tmp_path / "schema.json" schemafile.write_text(json.dumps(FORMAT_SCHEMA)) doc1 = tmp_path / "doc1.json" doc1.write_text(json.dumps(FAILING_DOCUMENT)) doc2 = tmp_path / "doc2.json" doc2.write_text(json.dumps(PASSING_DOCUMENT)) run_line_simple( [ "--disable-formats", "*", "--schemafile", str(schemafile), str(doc1), str(doc2), ] ) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/acceptance/test_format_regex_opts.py0000644000175100017510000000755415062662115025142 0ustar00runnerrunner# test on a JavaScript regex which is not a valid python regex # `--regex-variant=default` should accept it # `--regex-variant=python` should reject it # # check these options against documents with invalid and valid python regexes to confirm # that they are behaving as expected import json import pytest FORMAT_SCHEMA = { "$schema": "http://json-schema.org/draft-07/schema", "properties": {"pattern": {"type": "string", "format": "regex"}}, } ALWAYS_PASSING_DOCUMENT = { "pattern": "ab*c", } ALWAYS_FAILING_DOCUMENT = { "pattern": "a(b*c", } JS_REGEX_DOCUMENT = { "pattern": "a(?)bc", } # taken from https://github.com/python-jsonschema/check-jsonschema/issues/25 RENOVATE_DOCUMENT = { "regexManagers": [ { "fileMatch": ["^Dockerfile$"], "matchStrings": ["ENV YARN_VERSION=(?.*?)\n"], "depNameTemplate": "yarn", "datasourceTemplate": "npm", } ] } @pytest.fixture( params=[ ("--disable-formats", "regex"), ("--format-regex", "default"), ("--format-regex", "python"), ("--regex-variant", "python"), ("--regex-variant", "default"), ("--regex-variant", "default", "--format-regex", "python"), ("--regex-variant", "python", "--format-regex", "default"), ] ) def regexopts(request): return request.param def test_regex_format_good(run_line_simple, tmp_path, regexopts): schemafile = tmp_path / "schema.json" schemafile.write_text(json.dumps(FORMAT_SCHEMA)) doc = tmp_path / "doc.json" doc.write_text(json.dumps(ALWAYS_PASSING_DOCUMENT)) run_line_simple([*regexopts, "--schemafile", str(schemafile), str(doc)]) def test_regex_format_accepts_non_str_inputs(run_line_simple, tmp_path, regexopts): # potentially confusing, but a format checker is allowed to check non-str instances # validate the format checker behavior on such a case schemafile = tmp_path / "schema.json" schemafile.write_text( json.dumps( { "$schema": "http://json-schema.org/draft-07/schema", "properties": {"pattern": {"type": "integer", "format": "regex"}}, } ) ) doc = tmp_path / "doc.json" doc.write_text(json.dumps({"pattern": 0})) run_line_simple([*regexopts, "--schemafile", str(schemafile), str(doc)]) def test_regex_format_bad(run_line, tmp_path, regexopts): schemafile = tmp_path / "schema.json" schemafile.write_text(json.dumps(FORMAT_SCHEMA)) doc = tmp_path / "doc.json" doc.write_text(json.dumps(ALWAYS_FAILING_DOCUMENT)) expect_ok = regexopts == ("--disable-formats", "regex") res = run_line( [ "check-jsonschema", *regexopts, "--schemafile", str(schemafile), str(doc), ], ) if expect_ok: assert res.exit_code == 0 else: assert res.exit_code == 1 assert "is not a 'regex'" in res.stdout def test_regex_format_js_specific(run_line, tmp_path, regexopts): schemafile = tmp_path / "schema.json" schemafile.write_text(json.dumps(FORMAT_SCHEMA)) doc = tmp_path / "doc.json" doc.write_text(json.dumps(JS_REGEX_DOCUMENT)) expect_ok = regexopts[:2] not in ( ("--format-regex", "python"), ("--regex-variant", "python"), ) res = run_line( [ "check-jsonschema", *regexopts, "--schemafile", str(schemafile), str(doc), ], ) if expect_ok: assert res.exit_code == 0 else: assert res.exit_code == 1 assert "is not a 'regex'" in res.stdout def test_regex_format_in_renovate_config(run_line_simple, tmp_path): doc = tmp_path / "doc.json" doc.write_text(json.dumps(RENOVATE_DOCUMENT)) run_line_simple(["--builtin-schema", "vendor.renovate", str(doc)]) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/acceptance/test_gitlab_reference_handling.py0000644000175100017510000000106015062662115026521 0ustar00runnerrunnerdef test_gitlab_reference_handling_on_bad_data(run_line, tmp_path): doc = tmp_path / "data.yml" doc.write_text( """\ include: - local: setup.yml test: script: # !reference not a list, error - !reference .setup - echo running my own command """ ) res = run_line( [ "check-jsonschema", "--builtin-schema", "gitlab-ci", "--data-transform", "gitlab-ci", str(doc), ], catch_exceptions=True, ) assert res.exit_code == 1 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/acceptance/test_hook_file_matches.py0000644000175100017510000001474115062662115025052 0ustar00runnerrunnerfrom __future__ import annotations import pathlib import re import pytest import ruamel.yaml from identify.identify import tags_from_filename yaml = ruamel.yaml.YAML(typ="safe") HERE = pathlib.Path(__file__).parent def check_pattern_match( pattern: str | re.Pattern, value: str, *, should_match: bool = True ) -> None: __tracebackhide__ = True if not isinstance(pattern, re.Pattern): pattern = re.compile(pattern) matches = bool(pattern.fullmatch(value)) if matches == should_match: return if should_match: pytest.fail(f"'{pattern}' did not match '{value}' (expected match)") else: pytest.fail(f"'{pattern}' matched '{value}' (expected no match)") def check_types_match( types: list[str], types_or: list[str], path: str, ) -> None: __tracebackhide__ = True tags = tags_from_filename(path) if types and not tags.issuperset(types): pytest.fail(f"types={types} did not match '{path}' (expected match)") if types_or and not tags.intersection(types_or): pytest.fail(f"types_or={types_or} did not match '{path}' (expected match)") def get_hook_config(hookid): config_file = HERE.parent.parent / ".pre-commit-hooks.yaml" with open(config_file) as fp: for hook in yaml.load(fp): if hook["id"] == hookid: return hook else: raise LookupError(f"could not find hook with id={hookid}") _HOOKID_PATH_MAP = { "check-azure-pipelines": { "good": ( "azure-pipelines.yml", "azure-pipelines.yaml", ".azure-pipelines.yml", ".azure-pipelines.yaml", ), "bad": ( "foo.yml", "foo/azure-pipelines.yaml", ), }, "check-bamboo-spec": { "good": ( "bamboo-specs/foo.yml", "bamboo-specs/foo.yaml", ), "bad": ( "bamboo-specs.yaml", "bamboo-spec/foo.yml", "bamboo-specs/README.md", ), }, "check-codecov": { "good": ( "codecov.yml", "codecov.yaml", ".codecov.yml", ".codecov.yaml", ".github/codecov.yml", ".github/codecov.yaml", ".github/.codecov.yml", ".github/.codecov.yaml", "dev/codecov.yml", "dev/codecov.yaml", "dev/.codecov.yml", "dev/.codecov.yaml", ), "bad": (".gitlab/codecov.yml",), }, "check-compose-spec": { "good": ( "compose.yml", "compose.yaml", "docker-compose.yml", "docker-compose.yaml", "compose.override.yml", "docker-compose.override.yml", "path/to/compose.yml", ), "bad": ( "docker.compose.yml", "docker.md", "Dockerfile", ), }, "check-meltano": { "good": ( "meltano.yml", "data/meltano.yml", "extractors.meltano.yml", "meltano-manifest.json", "meltano-manifest.prod.json", ), "bad": ( "meltano.yaml", "meltano.yml.md", "meltano-manifest.yml", ), }, "check-dependabot": { "good": (".github/dependabot.yml", ".github/dependabot.yaml"), "bad": (".dependabot.yaml", ".dependabot.yml"), }, "check-github-actions": { "good": ( "action.yaml", ".github/actions/action.yml", ".github/actions/foo/bar/action.yaml", ".github/actions/path with spaces/action.yml", ), "bad": (".github/actions/foo/other.yaml",), }, "check-github-issue-config": { "good": (".github/ISSUE_TEMPLATE/config.yml",), "bad": ( ".github/ISSUE_TEMPLATE/config.yaml", ".github/ISSUE_TEMPLATE/bug.yml", ), }, "check-github-issue-forms": { "good": ( ".github/ISSUE_TEMPLATE/feature.yaml", ".github/ISSUE_TEMPLATE/bug.yml", ), "bad": ( ".github/ISSUE_TEMPLATE/config.yaml", ".github/ISSUE_TEMPLATE/config.yml", ), }, "check-github-workflows": { "good": ( ".github/workflows/build.yml", ".github/workflows/build.yaml", ), "bad": ( ".github/workflows.yaml", ".github/workflows/foo/bar.yaml", ), }, "check-gitlab-ci": { "good": ( ".gitlab-ci.yml", ".gitlab/.gitlab-ci.yml", "gitlab/.gitlab-ci.yml", ), "bad": ( ".gitlab-ci.yaml", "gitlab-ci.yml", ".gitlab/gitlab-ci.yml", "gitlab/gitlab-ci.yml", ), }, "check-readthedocs": { "good": ( ".readthedocs.yml", ".readthedocs.yaml", ), "bad": ( "readthedocs.yml", "readthedocs.yaml", ), }, "check-renovate": { "good": ( "renovate.json", "renovate.json5", ".github/renovate.json", ".gitlab/renovate.json5", ".renovaterc", ".renovaterc.json", ), "bad": ( ".github/renovaterc", ".renovate", ".renovate.json", ), }, "check-snapcraft": { "good": ("snapcraft.yaml", "snap/snapcraft.yaml", "foo/bar/snapcraft.yaml"), "bad": ("snapcraft.yml", "snap.yaml", "snapcraft"), }, "check-travis": { "good": ( ".travis.yml", ".travis.yaml", ), "bad": ( "travis.yml", ".travis", ), }, } @pytest.mark.parametrize( "hookid, filepath", [ (hookid, path) for (hookid, pathlist) in _HOOKID_PATH_MAP.items() for path in pathlist.get("good", ()) ], ) def test_hook_matches_known_good_paths(hookid, filepath): config = get_hook_config(hookid) check_pattern_match(config["files"], filepath) check_types_match(config.get("types", []), config.get("types_or", []), filepath) @pytest.mark.parametrize( "hookid, filepath", [ (hookid, path) for (hookid, pathlist) in _HOOKID_PATH_MAP.items() for path in pathlist.get("bad", ()) ], ) def test_hook_does_not_matches_known_bad_paths(hookid, filepath): config = get_hook_config(hookid) check_pattern_match(config["files"], filepath, should_match=False) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/acceptance/test_invalid_schema_files.py0000644000175100017510000000353015062662115025531 0ustar00runnerrunnerimport pytest def test_checker_non_json_schemafile(run_line, tmp_path): foo = tmp_path / "foo.json" bar = tmp_path / "bar.json" foo.write_text("{") bar.write_text("{}") res = run_line(["check-jsonschema", "--schemafile", str(foo), str(bar)]) assert res.exit_code == 1 assert "schemafile could not be parsed" in res.stderr def test_checker_invalid_schemafile(run_line, tmp_path): foo = tmp_path / "foo.json" bar = tmp_path / "bar.json" foo.write_text('{"title": {"foo": "bar"}}') bar.write_text("{}") res = run_line(["check-jsonschema", "--schemafile", str(foo), str(bar)]) assert res.exit_code == 1 assert "schemafile was not valid" in res.stderr def test_checker_invalid_schemafile_scheme(run_line, tmp_path): foo = tmp_path / "foo.json" bar = tmp_path / "bar.json" foo.write_text('{"title": "foo"}') bar.write_text("{}") res = run_line(["check-jsonschema", "--schemafile", f"ftp://{foo}", str(bar)]) assert res.exit_code == 1 assert "only supports http, https" in res.stderr @pytest.mark.parametrize( "add_args", [ pytest.param([], id="noargs"), # ensure that this works even when regex checking is disabled pytest.param(["--disable-formats", "*"], id="all-formats-disabled"), pytest.param(["--disable-formats", "regex"], id="regex-format-disabled"), ], ) def test_checker_invalid_schemafile_due_to_bad_regex(run_line, tmp_path, add_args): foo = tmp_path / "foo.json" bar = tmp_path / "bar.json" # too many backslash escapes -- not a valid Unicode-mode regex foo.write_text(r'{"properties": {"foo": {"pattern": "\\\\p{N}"}}}') bar.write_text("{}") res = run_line(["check-jsonschema", "--schemafile", str(foo), str(bar), *add_args]) assert res.exit_code == 1 assert "schemafile was not valid" in res.stderr ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/acceptance/test_local_relative_ref.py0000644000175100017510000000611315062662115025222 0ustar00runnerrunnerimport json import pytest CASE1_MAIN_SCHEMA = { "$schema": "http://json-schema.org/draft-07/schema", "properties": { "title": {"$ref": "./title_schema.json"}, }, "additionalProperties": False, } CASE1_TITLE_SCHEMA = { "type": "string", } CASE1_PASSING_DOCUMENT = {"title": "doc one"} CASE1_FAILING_DOCUMENT = {"title": 2} CASE2_MAIN_SCHEMA = { "$schema": "http://json-schema.org/draft-07/schema", "type": "object", "required": ["test"], "properties": {"test": {"$ref": "./values.json#/$defs/test"}}, } CASE2_VALUES_SCHEMA = { "$schema": "http://json-schema.org/draft-07/schema", "$defs": {"test": {"type": "string"}}, } CASE2_PASSING_DOCUMENT = {"test": "some data"} CASE2_FAILING_DOCUMENT = {"test": {"foo": "bar"}} def _prep_files(tmp_path, main_schema, other_schema_data, instance): main_schemafile = tmp_path / "main_schema.json" main_schemafile.write_text(json.dumps(main_schema)) for k, v in other_schema_data.items(): schemafile = tmp_path / k schemafile.write_text(json.dumps(v)) doc = tmp_path / "doc.json" doc.write_text(json.dumps(instance)) return main_schemafile, doc @pytest.mark.parametrize( "main_schema, other_schema_data, instance", [ ( CASE1_MAIN_SCHEMA, {"title_schema.json": CASE1_TITLE_SCHEMA}, CASE1_PASSING_DOCUMENT, ), ( CASE2_MAIN_SCHEMA, {"values.json": CASE2_VALUES_SCHEMA}, CASE2_PASSING_DOCUMENT, ), ], ) @pytest.mark.parametrize("with_file_scheme", [True, False]) def test_local_ref_schema( run_line_simple, tmp_path, main_schema, other_schema_data, instance, with_file_scheme, ): main_schemafile, doc = _prep_files( tmp_path, main_schema, other_schema_data, instance ) if with_file_scheme: schemafile = main_schemafile.resolve().as_uri() else: schemafile = str(main_schemafile) run_line_simple(["--schemafile", schemafile, str(doc)]) @pytest.mark.parametrize( "main_schema, other_schema_data, instance, expect_err", [ ( CASE1_MAIN_SCHEMA, {"title_schema.json": CASE1_TITLE_SCHEMA}, CASE1_FAILING_DOCUMENT, None, ), ( CASE2_MAIN_SCHEMA, {"values.json": CASE2_VALUES_SCHEMA}, CASE2_FAILING_DOCUMENT, "{'foo': 'bar'} is not of type 'string'", ), ], ) @pytest.mark.parametrize("with_file_scheme", [True, False]) def test_local_ref_schema_failure_case( run_line, tmp_path, main_schema, other_schema_data, instance, expect_err, with_file_scheme, ): main_schemafile, doc = _prep_files( tmp_path, main_schema, other_schema_data, instance ) if with_file_scheme: schemafile = main_schemafile.resolve().as_uri() else: schemafile = str(main_schemafile) res = run_line(["check-jsonschema", "--schemafile", schemafile, str(doc)]) assert res.exit_code == 1 if expect_err is not None: assert expect_err in res.stdout ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/acceptance/test_malformed_instances.py0000644000175100017510000000636215062662115025424 0ustar00runnerrunnerimport json import pytest TITLE_SCHEMA = { "$schema": "http://json-schema.org/draft-07/schema", "properties": {"title": {"type": "string"}}, "required": ["title"], } def test_non_json_instance(run_line, tmp_path): schema = tmp_path / "schema.json" instance = tmp_path / "instance.json" schema.write_text("{}") instance.write_text("{") res = run_line(["check-jsonschema", "--schemafile", str(schema), str(instance)]) assert res.exit_code == 1 assert f"Failed to parse {str(instance)}" in res.stdout @pytest.mark.parametrize("outformat", ["TEXT", "JSON"]) def test_non_json_instance_mixed_with_valid_data(run_line, tmp_path, outformat): schema = tmp_path / "schema.json" malformed_instance = tmp_path / "malformed_instance.json" good_instance = tmp_path / "good_instance.json" schema.write_text(json.dumps(TITLE_SCHEMA)) malformed_instance.write_text("{") good_instance.write_text('{"title": "ohai"}') res = run_line( [ "check-jsonschema", "-o", outformat, "--schemafile", str(schema), str(malformed_instance), str(good_instance), ] ) assert res.exit_code == 1 if outformat == "TEXT": assert f"Failed to parse {str(malformed_instance)}" in res.stdout else: report = json.loads(res.stdout) assert report["status"] == "fail" assert "errors" in report assert report["errors"] == [] assert "parse_errors" in report assert len(report["parse_errors"]) == 1 error_item = report["parse_errors"][0] assert error_item["filename"] == str(malformed_instance) assert f"Failed to parse {str(malformed_instance)}" in error_item["message"] @pytest.mark.parametrize("outformat", ["TEXT", "JSON"]) def test_non_json_instance_mixed_with_valid_and_invalid_data( run_line, tmp_path, outformat ): schema = tmp_path / "schema.json" malformed_instance = tmp_path / "malformed_instance.json" good_instance = tmp_path / "good_instance.json" bad_instance = tmp_path / "bad_instance.json" schema.write_text(json.dumps(TITLE_SCHEMA)) malformed_instance.write_text("{") good_instance.write_text('{"title": "ohai"}') bad_instance.write_text('{"title": false}') res = run_line( [ "check-jsonschema", "-o", outformat, "--schemafile", str(schema), str(good_instance), str(malformed_instance), str(bad_instance), ] ) assert res.exit_code == 1 if outformat == "TEXT": assert f"Failed to parse {str(malformed_instance)}" in res.stdout assert ( f"{str(bad_instance)}::$.title: False is not of type 'string'" in res.stdout ) else: report = json.loads(res.stdout) assert report["status"] == "fail" assert "errors" in report assert len(report["errors"]) == 1 assert "parse_errors" in report assert len(report["parse_errors"]) == 1 error_item = report["parse_errors"][0] assert error_item["filename"] == str(malformed_instance) assert f"Failed to parse {str(malformed_instance)}" in error_item["message"] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/acceptance/test_nonjson_instance_files.py0000644000175100017510000000271715062662115026141 0ustar00runnerrunnerimport json import pytest from check_jsonschema.parsers.json5 import ENABLED as JSON5_ENABLED SIMPLE_SCHEMA = { "$schema": "http://json-schema.org/draft-07/schema", "properties": { "title": {"type": "string"}, }, "additionalProperties": False, } PASSING_DOCUMENT = """ // a comment {"title": "doc one"} """ FAILING_DOCUMENT = """ // a comment {"title": 2} """ @pytest.mark.skipif(not JSON5_ENABLED, reason="test requires json5") @pytest.mark.parametrize("passing_data", [True, False]) def test_json5_filetype_forced_on_json_suffixed_instance( run_line, tmp_path, passing_data ): schemafile = tmp_path / "schema.json" schemafile.write_text(json.dumps(SIMPLE_SCHEMA)) doc = tmp_path / "doc.json" if passing_data: doc.write_text(PASSING_DOCUMENT) else: doc.write_text(FAILING_DOCUMENT) result = run_line( [ "check-jsonschema", "--force-filetype", "json5", "--schemafile", str(schemafile), str(doc), ] ) assert result.exit_code == (0 if passing_data else 1) # but even in the passing case, a rerun without the force flag will fail if passing_data: result_without_filetype = run_line( [ "check-jsonschema", "--schemafile", str(schemafile), str(doc), ] ) assert result_without_filetype.exit_code == 1 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/acceptance/test_nonjson_schema_handling.py0000644000175100017510000001236615062662115026260 0ustar00runnerrunnerimport json import pytest import responses from check_jsonschema.parsers.json5 import ENABLED as JSON5_ENABLED SIMPLE_SCHEMA = { "$schema": "http://json-schema.org/draft-07/schema", "properties": { "title": {"type": "string"}, }, "additionalProperties": False, } YAML_REF_MAIN_SCHEMA = { "$schema": "http://json-schema.org/draft-07/schema", "properties": { "title": {"$ref": "./title_schema.yaml"}, }, "additionalProperties": False, } JSON5_REF_MAIN_SCHEMA = { "$schema": "http://json-schema.org/draft-07/schema", "properties": { "title": {"$ref": "./title_schema.json5"}, }, "additionalProperties": False, } TITLE_SCHEMA = {"type": "string"} PASSING_DOCUMENT = {"title": "doc one"} FAILING_DOCUMENT = {"title": 2} @pytest.mark.parametrize("passing_data", [True, False]) def test_yaml_reference(run_line, tmp_path, passing_data): main_schemafile = tmp_path / "main_schema.json" main_schemafile.write_text(json.dumps(YAML_REF_MAIN_SCHEMA)) # JSON is a subset of YAML, so this works for generated YAML ref_schema = tmp_path / "title_schema.yaml" ref_schema.write_text(json.dumps(TITLE_SCHEMA)) doc = tmp_path / "doc.json" if passing_data: doc.write_text(json.dumps(PASSING_DOCUMENT)) else: doc.write_text(json.dumps(FAILING_DOCUMENT)) result = run_line( ["check-jsonschema", "--schemafile", str(main_schemafile), str(doc)] ) assert result.exit_code == (0 if passing_data else 1) @pytest.mark.skipif(not JSON5_ENABLED, reason="test requires json5") @pytest.mark.parametrize("passing_data", [True, False]) def test_json5_reference(run_line, tmp_path, passing_data): main_schemafile = tmp_path / "main_schema.json" main_schemafile.write_text(json.dumps(JSON5_REF_MAIN_SCHEMA)) ref_schema = tmp_path / "title_schema.json5" ref_schema.write_text(json.dumps(TITLE_SCHEMA)) doc = tmp_path / "doc.json" if passing_data: doc.write_text(json.dumps(PASSING_DOCUMENT)) else: doc.write_text(json.dumps(FAILING_DOCUMENT)) result = run_line( ["check-jsonschema", "--schemafile", str(main_schemafile), str(doc)] ) assert result.exit_code == (0 if passing_data else 1) @pytest.mark.skipif(not JSON5_ENABLED, reason="test requires json5") @pytest.mark.parametrize("passing_data", [True, False]) def test_can_load_json5_schema(run_line, tmp_path, passing_data): # dump JSON to the JSON5 file, this is fine main_schemafile = tmp_path / "main_schema.json5" main_schemafile.write_text(json.dumps(SIMPLE_SCHEMA)) doc = tmp_path / "doc.json" if passing_data: doc.write_text(json.dumps(PASSING_DOCUMENT)) else: doc.write_text(json.dumps(FAILING_DOCUMENT)) result = run_line( ["check-jsonschema", "--schemafile", str(main_schemafile), str(doc)] ) assert result.exit_code == (0 if passing_data else 1) @pytest.mark.parametrize("passing_data", [True, False]) def test_can_load_remote_yaml_schema(run_line, tmp_path, passing_data): retrieval_uri = "https://example.org/retrieval/schemas/main.yaml" responses.add( "GET", retrieval_uri, body="""\ "$schema": "http://json-schema.org/draft-07/schema" properties: title: {"type": "string"} additionalProperties: false """, ) doc = tmp_path / "doc.json" doc.write_text(json.dumps(PASSING_DOCUMENT if passing_data else FAILING_DOCUMENT)) result = run_line(["check-jsonschema", "--schemafile", retrieval_uri, str(doc)]) assert result.exit_code == (0 if passing_data else 1) @pytest.mark.parametrize("passing_data", [True, False]) def test_can_load_remote_yaml_schema_ref(run_line, tmp_path, passing_data): retrieval_uri = "https://example.org/retrieval/schemas/main.yaml" responses.add( "GET", retrieval_uri, body="""\ "$schema": "http://json-schema.org/draft-07/schema" properties: "title": {"$ref": "./title_schema.yaml"} additionalProperties: false """, ) responses.add( "GET", "https://example.org/retrieval/schemas/title_schema.yaml", body="type: string", ) doc = tmp_path / "doc.json" doc.write_text(json.dumps(PASSING_DOCUMENT if passing_data else FAILING_DOCUMENT)) result = run_line(["check-jsonschema", "--schemafile", retrieval_uri, str(doc)]) assert result.exit_code == (0 if passing_data else 1) def test_can_load_remote_yaml_schema_ref_from_cache( run_line, inject_cached_ref, tmp_path ): retrieval_uri = "https://example.org/retrieval/schemas/main.yaml" responses.add( "GET", retrieval_uri, body="""\ "$schema": "http://json-schema.org/draft-07/schema" properties: "title": {"$ref": "./title_schema.yaml"} additionalProperties: false """, ) ref_loc = "https://example.org/retrieval/schemas/title_schema.yaml" # populate a bad schema, but then "override" that with a good cache value # this can only pass (in the success case) if the cache loading really works responses.add("GET", ref_loc, body="false") inject_cached_ref(ref_loc, "type: string") doc = tmp_path / "doc.json" doc.write_text(json.dumps(PASSING_DOCUMENT)) result = run_line(["check-jsonschema", "--schemafile", retrieval_uri, str(doc)]) assert result.exit_code == 0 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/acceptance/test_remote_ref_resolution.py0000644000175100017510000002514315062662115026017 0ustar00runnerrunnerimport json import pytest import responses CASES = { "case1": { "main_schema": { "$schema": "http://json-schema.org/draft-07/schema", "properties": { "title": {"$ref": "./title_schema.json"}, }, "additionalProperties": False, }, "other_schemas": {"title_schema": {"type": "string"}}, "passing_document": {"title": "doc one"}, "failing_document": {"title": 2}, }, "case2": { "main_schema": { "$schema": "http://json-schema.org/draft-07/schema", "type": "object", "required": ["test"], "properties": {"test": {"$ref": "./values.json#/$defs/test"}}, }, "other_schemas": { "values": { "$schema": "http://json-schema.org/draft-07/schema", "$defs": {"test": {"type": "string"}}, } }, "passing_document": {"test": "some data"}, "failing_document": {"test": {"foo": "bar"}}, }, } @pytest.mark.parametrize("check_passes", (True, False)) @pytest.mark.parametrize("casename", ("case1", "case2")) def test_remote_ref_resolution_simple_case(run_line, check_passes, casename, tmp_path): main_schema_loc = "https://example.com/main.json" responses.add("GET", main_schema_loc, json=CASES[casename]["main_schema"]) for name, subschema in CASES[casename]["other_schemas"].items(): other_schema_loc = f"https://example.com/{name}.json" responses.add("GET", other_schema_loc, json=subschema) instance_path = tmp_path / "instance.json" instance_path.write_text( json.dumps( CASES[casename]["passing_document"] if check_passes else CASES[casename]["failing_document"] ) ) result = run_line( ["check-jsonschema", "--schemafile", main_schema_loc, str(instance_path)] ) output = f"\nstdout:\n{result.stdout}\n\nstderr:\n{result.stderr}" if check_passes: assert result.exit_code == 0, output else: assert result.exit_code == 1, output @pytest.mark.parametrize("casename", ("case1", "case2")) @pytest.mark.parametrize("disable_cache", (True, False)) def test_remote_ref_resolution_cache_control( run_line, tmp_path, get_ref_cache_loc, casename, disable_cache ): main_schema_loc = "https://example.com/main.json" responses.add("GET", main_schema_loc, json=CASES[casename]["main_schema"]) ref_locs = [] for name, subschema in CASES[casename]["other_schemas"].items(): other_schema_loc = f"https://example.com/{name}.json" responses.add("GET", other_schema_loc, json=subschema) ref_locs.append(other_schema_loc) instance_path = tmp_path / "instance.json" instance_path.write_text(json.dumps(CASES[casename]["passing_document"])) # run the command result = run_line( ["check-jsonschema", "--schemafile", main_schema_loc, str(instance_path)] + (["--no-cache"] if disable_cache else []) ) output = f"\nstdout:\n{result.stdout}\n\nstderr:\n{result.stderr}" assert result.exit_code == 0, output cache_locs = [] for ref_loc in ref_locs: cache_locs.append(get_ref_cache_loc(ref_loc)) assert cache_locs # sanity check if disable_cache: for loc in cache_locs: assert not loc.exists() else: for loc in cache_locs: assert loc.exists() @pytest.mark.parametrize("casename", ("case1", "case2")) @pytest.mark.parametrize("check_passes", (True, False)) def test_remote_ref_resolution_loads_from_cache( run_line, tmp_path, get_ref_cache_loc, inject_cached_ref, casename, check_passes ): main_schema_loc = "https://example.com/main.json" responses.add("GET", main_schema_loc, json=CASES[casename]["main_schema"]) ref_locs = [] cache_locs = [] for name, subschema in CASES[casename]["other_schemas"].items(): other_schema_loc = f"https://example.com/{name}.json" # intentionally populate the HTTP location with "bad data" responses.add("GET", other_schema_loc, json="{}") ref_locs.append(other_schema_loc) # but populate the cache with "good data" inject_cached_ref(other_schema_loc, json.dumps(subschema)) cache_locs.append(get_ref_cache_loc(other_schema_loc)) instance_path = tmp_path / "instance.json" instance_path.write_text( json.dumps( CASES[casename]["passing_document"] if check_passes else CASES[casename]["failing_document"] ) ) # run the command result = run_line( ["check-jsonschema", "--schemafile", main_schema_loc, str(instance_path)] ) output = f"\nstdout:\n{result.stdout}\n\nstderr:\n{result.stderr}" if check_passes: assert result.exit_code == 0, output else: assert result.exit_code == 1, output # this test ensures that `$id` is preferred for the base URI over # the retrieval URI @pytest.mark.parametrize("check_passes", (True, False)) def test_ref_resolution_prefers_id_over_retrieval_uri(run_line, tmp_path, check_passes): main_schema = { "$id": "https://example.org/schemas/main.json", "$schema": "http://json-schema.org/draft-07/schema", "properties": { "title": {"$ref": "./title_schema.json"}, }, "additionalProperties": False, } title_schema = {"type": "string"} retrieval_uri = "https://example.org/alternate-path-retrieval-only/schemas/main" responses.add("GET", retrieval_uri, json=main_schema) responses.add( "GET", "https://example.org/schemas/title_schema.json", json=title_schema ) instance_path = tmp_path / "instance.json" instance_path.write_text(json.dumps({"title": "doc one" if check_passes else 2})) result = run_line( ["check-jsonschema", "--schemafile", retrieval_uri, str(instance_path)] ) output = f"\nstdout:\n{result.stdout}\n\nstderr:\n{result.stderr}" if check_passes: assert result.exit_code == 0, output else: assert result.exit_code == 1, output @pytest.mark.parametrize("check_passes", (True, False)) def test_ref_resolution_does_not_callout_for_absolute_ref_to_retrieval_uri( run_line, tmp_path, check_passes ): retrieval_uri = "https://example.net/schemas/main" main_schema = { "$id": "https://example.net/schemas/some-uri-which-will-never-be-used/main.json", "$schema": "http://json-schema.org/draft-07/schema", "$defs": {"title": {"type": "string"}}, "properties": { "title": {"$ref": f"{retrieval_uri}#/$defs/title"}, }, "additionalProperties": False, } # exactly one GET to the retrieval URI will work responses.add("GET", retrieval_uri, json=main_schema) responses.add("GET", retrieval_uri, json={"error": "permafrost melted"}, status=500) instance_path = tmp_path / "instance.json" instance_path.write_text(json.dumps({"title": "doc one" if check_passes else 2})) result = run_line( ["check-jsonschema", "--schemafile", retrieval_uri, str(instance_path)] ) output = f"\nstdout:\n{result.stdout}\n\nstderr:\n{result.stderr}" if check_passes: assert result.exit_code == 0, output else: assert result.exit_code == 1, output # this test ensures that `$id` is overwritten when `--base-uri` is used @pytest.mark.parametrize("check_passes", (True, False)) def test_ref_resolution_with_custom_base_uri(run_line, tmp_path, check_passes): retrieval_uri = "https://example.org/retrieval-and-in-schema-only/schemas/main" explicit_base_uri = "https://example.org/schemas/main" main_schema = { "$id": retrieval_uri, "$schema": "http://json-schema.org/draft-07/schema", "properties": { "title": {"$ref": "./title_schema.json"}, }, "additionalProperties": False, } title_schema = {"type": "string"} responses.add("GET", retrieval_uri, json=main_schema) responses.add( "GET", "https://example.org/schemas/title_schema.json", json=title_schema ) instance_path = tmp_path / "instance.json" instance_path.write_text(json.dumps({"title": "doc one" if check_passes else 2})) result = run_line( [ "check-jsonschema", "--schemafile", retrieval_uri, "--base-uri", explicit_base_uri, str(instance_path), ] ) output = f"\nstdout:\n{result.stdout}\n\nstderr:\n{result.stderr}" if check_passes: assert result.exit_code == 0, output else: assert result.exit_code == 1, output @pytest.mark.parametrize("num_instances", (1, 2, 10)) @pytest.mark.parametrize("check_passes", (True, False)) def test_remote_ref_resolution_callout_count_is_scale_free_in_instancefiles( run_line, tmp_path, num_instances, check_passes ): """ Test that for any N > 1, validation of a schema with a ref against N instance files has exactly the same number of callouts as validation when N=1 This proves that the validator and caching are working correctly, and we aren't repeating callouts to rebuild state. """ schema_uri = "https://example.org/schemas/main.json" ref_uri = "https://example.org/schemas/title_schema.json" main_schema = { "$id": schema_uri, "$schema": "http://json-schema.org/draft-07/schema", "properties": { "title": {"$ref": "./title_schema.json"}, }, "additionalProperties": False, } title_schema = {"type": "string"} responses.add("GET", schema_uri, json=main_schema) responses.add("GET", ref_uri, json=title_schema) # write N documents instance_doc = {"title": "doc one" if check_passes else 2} instance_paths = [] for i in range(num_instances): instance_path = tmp_path / f"instance{i}.json" instance_path.write_text(json.dumps(instance_doc)) instance_paths.append(str(instance_path)) result = run_line( [ "check-jsonschema", "--schemafile", schema_uri, ] + instance_paths ) output = f"\nstdout:\n{result.stdout}\n\nstderr:\n{result.stderr}" if check_passes: assert result.exit_code == 0, output else: assert result.exit_code == 1, output # this is the moment of the "real" test run here: # no matter how many instances there were, there should only have been two calls # (one for the schema and one for the $ref) assert len(responses.calls) == 2 assert len([c for c in responses.calls if c.request.url == schema_uri]) == 1 assert len([c for c in responses.calls if c.request.url == ref_uri]) == 1 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/acceptance/test_special_filetypes.py0000644000175100017510000001055415062662115025111 0ustar00runnerrunnerimport multiprocessing import os import platform import sys import pytest import responses @pytest.mark.skipif( platform.system() != "Linux", reason="test requires /proc/self/ mechanism" ) @pytest.mark.skipif(sys.version_info < (3, 8), reason="test uses os.memfd_create") def test_schema_and_instance_in_memfds(run_line_simple): """ create memory file descriptors and write schema and instance data into those ensure the result works when the paths to those fds are passed on the CLI """ schemafd = os.memfd_create("test_memfd_schema") instancefd = os.memfd_create("test_memfd_instance") try: os.write(schemafd, b'{"type": "integer"}') os.write(instancefd, b"42") schema_path = f"/proc/self/fd/{schemafd}" instance_path = f"/proc/self/fd/{instancefd}" run_line_simple(["--schemafile", schema_path, instance_path]) finally: os.close(schemafd) os.close(instancefd) # helper (in global scope) for multiprocessing "spawn" to be able to use to launch # background writers def _fifo_write(path, data): fd = os.open(path, os.O_WRONLY) try: os.write(fd, data) finally: os.close(fd) @pytest.mark.skipif(os.name != "posix", reason="test requires mkfifo") @pytest.mark.parametrize("check_succeeds", (True, False)) def test_schema_and_instance_in_fifos(tmp_path, run_line, check_succeeds): """ create fifos and write schema and instance data into those ensure the result works when the paths to those fds are passed on the CLI """ schema_path = tmp_path / "schema" instance_path = tmp_path / "instance" os.mkfifo(schema_path) os.mkfifo(instance_path) spawn_ctx = multiprocessing.get_context("spawn") schema_proc = spawn_ctx.Process( target=_fifo_write, args=(schema_path, b'{"type": "integer"}') ) schema_proc.start() instance_data = b"42" if check_succeeds else b'"foo"' instance_proc = spawn_ctx.Process( target=_fifo_write, args=(instance_path, instance_data) ) instance_proc.start() try: result = run_line( ["check-jsonschema", "--schemafile", str(schema_path), str(instance_path)] ) if check_succeeds: assert result.exit_code == 0 else: assert result.exit_code == 1 finally: schema_proc.terminate() instance_proc.terminate() @pytest.mark.parametrize("check_passes", (True, False)) def test_remote_schema_requiring_retry(run_line, check_passes, tmp_path): """ a "remote schema" (meaning HTTPS) with bad data, therefore requiring that a retry fires in order to parse """ schema_loc = "https://example.com/schema1.json" responses.add("GET", schema_loc, body="", match_querystring=None) responses.add( "GET", schema_loc, headers={"Last-Modified": "Sun, 01 Jan 2000 00:00:01 GMT"}, json={"type": "integer"}, match_querystring=None, ) instance_path = tmp_path / "instance.json" instance_path.write_text("42" if check_passes else '"foo"') result = run_line( ["check-jsonschema", "--schemafile", schema_loc, str(instance_path)] ) if check_passes: assert result.exit_code == 0 else: assert result.exit_code == 1 @pytest.mark.parametrize("check_passes", (True, False)) @pytest.mark.parametrize("using_stdin", ("schema", "instance")) def test_schema_or_instance_from_stdin( run_line, check_passes, tmp_path, monkeypatch, using_stdin ): """ a "remote schema" (meaning HTTPS) with bad data, therefore requiring that a retry fires in order to parse """ if using_stdin == "schema": instance_path = tmp_path / "instance.json" instance_path.write_text("42" if check_passes else '"foo"') result = run_line( ["check-jsonschema", "--schemafile", "-", str(instance_path)], input='{"type": "integer"}', ) elif using_stdin == "instance": schema_path = tmp_path / "schema.json" schema_path.write_text('{"type": "integer"}') instance = "42" if check_passes else '"foo"' result = run_line( ["check-jsonschema", "--schemafile", schema_path, "-"], input=instance, ) else: raise NotImplementedError if check_passes: assert result.exit_code == 0 else: assert result.exit_code == 1 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/conftest.py0000644000175100017510000000573615062662115020113 0ustar00runnerrunnerimport 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) def mocked_responses(): responses.start() yield responses.stop() responses.reset() @pytest.fixture def mock_module(tmp_path, monkeypatch): monkeypatch.syspath_prepend(tmp_path) all_names_to_clear = [] def func(path, text): path = pathlib.Path(path) mod_dir = tmp_path / path.parent mod_dir.mkdir(parents=True, exist_ok=True) for part in path.parts[:-1]: (tmp_path / part / "__init__.py").touch() (tmp_path / path).write_text(text) for i in range(len(path.parts)): modname = ".".join(path.parts[: i + 1]) if modname.endswith(".py"): modname = modname[:-3] all_names_to_clear.append(modname) yield func for name in all_names_to_clear: if name in sys.modules: del sys.modules[name] @pytest.fixture def in_tmp_dir(request, tmp_path): os.chdir(str(tmp_path)) yield os.chdir(request.config.invocation_dir) @pytest.fixture def cache_dir(tmp_path): return tmp_path / ".cache" @pytest.fixture(autouse=True) def patch_cache_dir(monkeypatch, cache_dir): with monkeypatch.context() as m: m.setattr( "check_jsonschema.cachedownloader._base_cache_dir", lambda: str(cache_dir) ) yield m @pytest.fixture def url2cachepath(): from check_jsonschema.cachedownloader import url_to_cache_filename def _get(cache_dir, url): return cache_dir / url_to_cache_filename(url) return _get @pytest.fixture def downloads_cache_dir(tmp_path): return tmp_path / ".cache" / "check_jsonschema" / "downloads" @pytest.fixture def get_download_cache_loc(downloads_cache_dir, url2cachepath): def _get(url): return url2cachepath(downloads_cache_dir, url) return _get @pytest.fixture def inject_cached_download(downloads_cache_dir, get_download_cache_loc): def _write(uri, content): downloads_cache_dir.mkdir(parents=True) path = get_download_cache_loc(uri) if isinstance(content, str): path.write_text(content) else: path.write_bytes(content) return _write @pytest.fixture def refs_cache_dir(tmp_path): return tmp_path / ".cache" / "check_jsonschema" / "refs" @pytest.fixture def get_ref_cache_loc(refs_cache_dir, url2cachepath): def _get(url): return url2cachepath(refs_cache_dir, url) return _get @pytest.fixture def inject_cached_ref(refs_cache_dir, get_ref_cache_loc): def _write(uri, content): refs_cache_dir.mkdir(parents=True) get_ref_cache_loc(uri).write_text(content) return _write ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.905612 check_jsonschema-0.34.0/tests/example-files/0000755000175100017510000000000015062662127020437 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/config_schema.json0000644000175100017510000000145615062662115024122 0ustar00runnerrunner{ "$comment": "An internal schema used to check the testsuite _config.yaml files.", "$schema": "https://json-schema.org/draft/2020-12/schema", "$defs": { "spec": { "type": "object", "properties": { "requires_packages": { "type": "array", "items": { "type": "string" } }, "add_args": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false } }, "type": "object", "properties": { "files": { "type": "object", "patternProperties": { "^.+\\.(json|yml|yaml|json5|toml)$": { "$ref": "#/$defs/spec" } }, "additionalProperties": false } }, "additionalProperties": false } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1758159958.8826118 check_jsonschema-0.34.0/tests/example-files/explicit-schema/0000755000175100017510000000000015062662127023516 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1758159958.8826118 check_jsonschema-0.34.0/tests/example-files/explicit-schema/negative/0000755000175100017510000000000015062662127025320 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.906612 check_jsonschema-0.34.0/tests/example-files/explicit-schema/negative/unicode_pattern/0000755000175100017510000000000015062662127030503 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/explicit-schema/negative/unicode_pattern/instance.json0000644000175100017510000000005115062662115033173 0ustar00runnerrunner{ "key": "foo 1", "value": "bar 2" } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/explicit-schema/negative/unicode_pattern/schema.json0000644000175100017510000000063015062662115032632 0ustar00runnerrunner{ "additionalProperties": false, "properties": { "key": { "description": "some key", "maxLength": 128, "minLength": 1, "pattern": "^\\p{L}\\p{Z}\\p{N}$", "type": "string" }, "value": { "description": "some value", "maxLength": 256, "minLength": 0, "pattern": "^\\p{L}\\p{Z}\\p{N}$", "type": "string" } }, "type": "object" } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.883612 check_jsonschema-0.34.0/tests/example-files/explicit-schema/positive/0000755000175100017510000000000015062662127025360 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.906612 check_jsonschema-0.34.0/tests/example-files/explicit-schema/positive/2020-meta/0000755000175100017510000000000015062662127026667 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/explicit-schema/positive/2020-meta/instance.json0000644000175100017510000000000315062662115031354 0ustar00runnerrunner{} ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/explicit-schema/positive/2020-meta/schema.json0000644000175100017510000000446315062662115031026 0ustar00runnerrunner{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://json-schema.org/draft/2020-12/schema", "$vocabulary": { "https://json-schema.org/draft/2020-12/vocab/core": true, "https://json-schema.org/draft/2020-12/vocab/applicator": true, "https://json-schema.org/draft/2020-12/vocab/unevaluated": true, "https://json-schema.org/draft/2020-12/vocab/validation": true, "https://json-schema.org/draft/2020-12/vocab/meta-data": true, "https://json-schema.org/draft/2020-12/vocab/format-annotation": true, "https://json-schema.org/draft/2020-12/vocab/content": true }, "$dynamicAnchor": "meta", "title": "Core and Validation specifications meta-schema", "allOf": [ { "$ref": "meta/core" }, { "$ref": "meta/applicator" }, { "$ref": "meta/unevaluated" }, { "$ref": "meta/validation" }, { "$ref": "meta/meta-data" }, { "$ref": "meta/format-annotation" }, { "$ref": "meta/content" } ], "type": [ "object", "boolean" ], "$comment": "This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.", "properties": { "definitions": { "$comment": "\"definitions\" has been replaced by \"$defs\".", "type": "object", "additionalProperties": { "$dynamicRef": "#meta" }, "deprecated": true, "default": {} }, "dependencies": { "$comment": "\"dependencies\" has been split and replaced by \"dependentSchemas\" and \"dependentRequired\" in order to serve their differing semantics.", "type": "object", "additionalProperties": { "anyOf": [ { "$dynamicRef": "#meta" }, { "$ref": "meta/validation#/$defs/stringArray" } ] }, "deprecated": true, "default": {} }, "$recursiveAnchor": { "$comment": "\"$recursiveAnchor\" has been replaced by \"$dynamicAnchor\".", "$ref": "meta/core#/$defs/anchorString", "deprecated": true }, "$recursiveRef": { "$comment": "\"$recursiveRef\" has been replaced by \"$dynamicRef\".", "$ref": "meta/core#/$defs/uriReferenceString", "deprecated": true } } } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.906612 check_jsonschema-0.34.0/tests/example-files/explicit-schema/positive/complex-toml/0000755000175100017510000000000015062662127030000 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/explicit-schema/positive/complex-toml/instance.toml0000644000175100017510000000437415062662115032506 0ustar00runnerrunner[object] # Comment string = "I'm a string." multiline_string = '''I\'m a multiline string''' integer_1 = 1 integer_2 = +1 integer_3 = -1 float_1 = +1.0 float_2 = 3.1415 float_3 = -0.01 float_4 = 5e+22 float_5 = 1e06 float_6 = -2E-2 float_7 = 6.626e-34 float_8 = 224_617.445_991_228 infinite_1 = inf infinite_2 = +inf infinite_3 = -inf not_a_number_1 = nan not_a_number_2 = +nan not_a_number_3 = -nan hexadecimal_1 = 0xDEADBEEF hexadecimal_2 = 0xdeadbeef hexadecimal_3 = 0xdead_beef octal_1 = 0o01234567 octal_2 = 0o755 binary = 0b11010110 # The null doesn't exists in TOML, but getting a value from an object # using a non existent key will be validated against the "null" type # null = Nil # https://github.com/toml-lang/toml/issues/30 boolean_1 = true boolean_2 = false # tomli converts dates to datetime objects, so check-jsonschema must convert # back to strings to check against date-time -- similar for date and time types # See https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.7.3.1 offset_datetime_1 = 1979-05-27T07:32:00Z offset_datetime_2 = 1979-05-27T00:32:00-07:00 offset_datetime_3 = 1979-05-27T00:32:00.999999-07:00 offset_datetime_4 = '1979-05-27T07:32:00Z' offset_datetime_5 = '1979-05-27T00:32:00-07:00' offset_datetime_6 = '1979-05-27T00:32:00.999999-07:00' naive_datetime_1 = 1979-05-27T07:32:00 local_datetime_2 = 1979-05-27T00:32:00.999999 # these are invalid strings under the RFC because they lack the offset|Z # local_datetime_3 = '1979-05-27T07:32:00' # local_datetime_4 = '1979-05-27T00:32:00.999999' local_date_1 = 1979-05-27 local_date_2 = '1979-05-27' local_time_1 = 07:32:00 local_time_2 = 00:32:00.999999 # these are invalid strings under the RFC because they lack the offset|Z # local_time_3 = '07:32:00' # local_time_4 = '00:32:00.999999' # TOML does not have a native duration type which translates to # datetime.timedelta under tomli # so ISO durations can only be represented as strings duration_1 = "P1D" array_1 = ["a", 2, true] array_2 = [ "b", 3.1, false, ] [nested_object_1] foo = "bar" nested_object_2 = { foo = "bar" } [[array_of_objects_1]] foo = "bar" [[array_of_objects_1]] foo = "bar" [[nested_array_of_objects_1]] foo = "bar" [[nested_array_of_objects_1]] foo = "bar" ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/explicit-schema/positive/complex-toml/schema.json0000644000175100017510000000633415062662115032136 0ustar00runnerrunner{ "$schema": "http://json-schema.org/draft-07/schema", "type": "object", "properties": { "object": { "type": "object", "properties": { "string": { "type": "string" }, "multiline_string": { "type": "string" }, "integer_1": { "type": "integer" }, "integer_2": { "type": "integer" }, "integer_3": { "type": "integer" }, "float_1": { "type": "number" }, "float_2": { "type": "number" }, "float_3": { "type": "number" }, "float_4": { "type": "number" }, "float_5": { "type": "number" }, "float_6": { "type": "number" }, "float_7": { "type": "number" }, "float_8": { "type": "number" }, "infinite_1": { "type": "number" }, "infinite_2": { "type": "number" }, "infinite_3": { "type": "number" }, "not_a_number_1": { "type": "number" }, "not_a_number_2": { "type": "number" }, "not_a_number_3": { "type": "number" }, "hexadecimal_1": { "type": "number" }, "hexadecimal_2": { "type": "number" }, "hexadecimal_3": { "type": "number" }, "octal_1": { "type": "number" }, "octal_2": { "type": "number" }, "binary": { "type": "number" }, "null": { "type": "null" }, "boolean_1": { "type": "boolean" }, "boolean_2": { "type": "boolean" }, "offset_datetime_1": { "type": "string", "format": "date-time" }, "offset_datetime_2": { "type": "string", "format": "date-time" }, "offset_datetime_3": { "type": "string", "format": "date-time" }, "offset_datetime_4": { "type": "string", "format": "date-time" }, "offset_datetime_5": { "type": "string", "format": "date-time" }, "offset_datetime_6": { "type": "string", "format": "date-time" }, "local_datetime_1": { "type": "string", "format": "date-time" }, "local_datetime_2": { "type": "string", "format": "date-time" }, "local_datetime_3": { "type": "string", "format": "date-time" }, "local_datetime_4": { "type": "string", "format": "date-time" }, "local_date_1": { "type": "string", "format": "date" }, "local_date_2": { "type": "string", "format": "date" }, "local_time_1": { "type": "string", "format": "time" }, "local_time_2": { "type": "string", "format": "time" }, "local_time_3": { "type": "string", "format": "time" }, "local_time_4": { "type": "string", "format": "time" }, "duration_1": { "type": "string", "format": "duration" }, "array_1": { "type": "array" }, "array_2": { "type": "array" }, "nested_object_1": { "type": "object", "properties": { "foo": { "type": "string" } } }, "nested_object_2": { "type": "object", "properties": { "foo": { "type": "string" } } }, "array_of_objects_1": { "type": "array", "items": { "type": "object", "properties": { "foo": { "type": "string" } } } }, "nested_array_of_objects_1": { "type": "array", "items": { "type": "object", "properties": { "foo": { "type": "string" } } } } } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1758159958.9076118 check_jsonschema-0.34.0/tests/example-files/explicit-schema/positive/complex-yaml/0000755000175100017510000000000015062662127027767 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/explicit-schema/positive/complex-yaml/instance.yaml0000644000175100017510000000333015062662115032453 0ustar00runnerrunner# Comment object: string: "I'm a string." multiline_string: | I'm a multiline string integer_1: 1 integer_2: +1 integer_3: -1 float_1: +1.0 float_2: 3.1415 float_3: -0.01 float_4: 5e+22 float_5: 1e06 float_6: -2E-2 float_7: 6.626e-34 float_8: 224_617.445_991_228 infinite_1: .inf infinite_2: +.inf infinite_3: -.inf not_a_number_1: .nan not_a_number_2: .NaN not_a_number_3: .NAN hexadecimal_1: 0xDEADBEEF hexadecimal_2: 0xdeadbeef hexadecimal_3: 0xdead_beef octal_1: 0o01234567 octal_2: 0o755 binary: 0b11010110 null_1: null null_2: ~ boolean_1: true boolean_2: false boolean_3: True boolean_4: False boolean_5: TRUE boolean_6: FALSE # ruamel.yaml by default converts dates to datetime objects, so check-jsonschema parses # as strings offset_datetime_1: 1979-05-27T07:32:00Z offset_datetime_2: 1979-05-27T00:32:00-07:00 offset_datetime_3: 1979-05-27T00:32:00.999999-07:00 offset_datetime_4: '1979-05-27T07:32:00Z' offset_datetime_5: '1979-05-27T00:32:00-07:00' offset_datetime_6: '1979-05-27T00:32:00.999999-07:00' datetime_1: 1979-05-27T07:32:00Z datetime_2: 1979-05-27T00:32:00.999999z local_date_1: 1979-05-27 local_date_2: '1979-05-27' time_1: 07:32:00Z time_2: 00:32:00.999999z # YAML does not have a native duration type which translates to # datetime.timedelta under ruamel.yaml # so ISO durations can only be represented as strings duration_1: "P1D" array_1: ["a", 2, true] array_2: [ "b", 3.1, false, ] nested_object_1: foo: "bar" nested_object_2: { foo: "bar" } array_of_objects_1: - foo: "bar" - foo: "bar" nested_array_of_objects_1: - foo: "bar" - foo: "bar" ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/explicit-schema/positive/complex-yaml/schema.json0000644000175100017510000000621215062662115032120 0ustar00runnerrunner{ "$schema": "http://json-schema.org/draft-07/schema", "type": "object", "properties": { "object": { "type": "object", "properties": { "string": { "type": "string" }, "multiline_string": { "type": "string" }, "integer_1": { "type": "integer" }, "integer_2": { "type": "integer" }, "integer_3": { "type": "integer" }, "float_1": { "type": "number" }, "float_2": { "type": "number" }, "float_3": { "type": "number" }, "float_4": { "type": "number" }, "float_5": { "type": "number" }, "float_6": { "type": "number" }, "float_7": { "type": "number" }, "float_8": { "type": "number" }, "infinite_1": { "type": "number" }, "infinite_2": { "type": "number" }, "infinite_3": { "type": "number" }, "not_a_number_1": { "type": "number" }, "not_a_number_2": { "type": "number" }, "not_a_number_3": { "type": "number" }, "hexadecimal_1": { "type": "number" }, "hexadecimal_2": { "type": "number" }, "hexadecimal_3": { "type": "number" }, "octal_1": { "type": "number" }, "octal_2": { "type": "number" }, "binary": { "type": "number" }, "null_1": { "type": "null" }, "null_2": { "type": "null" }, "boolean_1": { "type": "boolean" }, "boolean_2": { "type": "boolean" }, "boolean_3": { "type": "boolean" }, "boolean_4": { "type": "boolean" }, "boolean_5": { "type": "boolean" }, "boolean_6": { "type": "boolean" }, "offset_datetime_1": { "type": "string", "format": "date-time" }, "offset_datetime_2": { "type": "string", "format": "date-time" }, "offset_datetime_3": { "type": "string", "format": "date-time" }, "offset_datetime_4": { "type": "string", "format": "date-time" }, "offset_datetime_5": { "type": "string", "format": "date-time" }, "offset_datetime_6": { "type": "string", "format": "date-time" }, "datetime_1": { "type": "string", "format": "date-time" }, "datetime_2": { "type": "string", "format": "date-time" }, "local_date_1": { "type": "string", "format": "date" }, "local_date_2": { "type": "string", "format": "date" }, "time_1": { "type": "string", "format": "time" }, "time_2": { "type": "string", "format": "time" }, "duration_1": { "type": "string", "format": "duration" }, "array_1": { "type": "array" }, "array_2": { "type": "array" }, "nested_object_1": { "type": "object", "properties": { "foo": { "type": "string" } } }, "nested_object_2": { "type": "object", "properties": { "foo": { "type": "string" } } }, "array_of_objects_1": { "type": "array", "items": { "type": "object", "properties": { "foo": { "type": "string" } } } }, "nested_array_of_objects_1": { "type": "array", "items": { "type": "object", "properties": { "foo": { "type": "string" } } } } } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1758159958.9076118 check_jsonschema-0.34.0/tests/example-files/explicit-schema/positive/date-format/0000755000175100017510000000000015062662127027563 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/explicit-schema/positive/date-format/instance.json0000644000175100017510000000002415062662115032253 0ustar00runnerrunner{"some_date": null} ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/explicit-schema/positive/date-format/schema.json0000644000175100017510000000044015062662115031711 0ustar00runnerrunner{ "$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 } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1758159958.9076118 check_jsonschema-0.34.0/tests/example-files/explicit-schema/positive/integer-keys-yaml/0000755000175100017510000000000015062662127030726 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/explicit-schema/positive/integer-keys-yaml/instance.yaml0000644000175100017510000000006115062662115033410 0ustar00runnerrunneritems: 1: name: "one" 2: name: "two" ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/explicit-schema/positive/integer-keys-yaml/schema.json0000644000175100017510000000051415062662115033056 0ustar00runnerrunner{ "$schema": "http://json-schema.org/draft-07/schema", "type": "object", "properties": { "items": { "patternProperties": { "^[a-zA-Z0-9_-]*$": { "type": "object", "properties": { "name": { "type": "string" } } } } } } } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.908612 check_jsonschema-0.34.0/tests/example-files/explicit-schema/positive/simple-toml/0000755000175100017510000000000015062662127027622 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/explicit-schema/positive/simple-toml/instance.toml0000644000175100017510000000003115062662115032312 0ustar00runnerrunner[item] title = "an item" ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/explicit-schema/positive/simple-toml/schema.json0000644000175100017510000000032415062662115031751 0ustar00runnerrunner{ "$schema": "http://json-schema.org/draft-07/schema", "type": "object", "properties": { "item": { "type": "object", "properties": { "title": { "type": "string"} } } } } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.908612 check_jsonschema-0.34.0/tests/example-files/explicit-schema/positive/unicode_pattern/0000755000175100017510000000000015062662127030543 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/explicit-schema/positive/unicode_pattern/instance.json0000644000175100017510000000004515062662115033236 0ustar00runnerrunner{ "key": "a 1", "value": "b 2" } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/explicit-schema/positive/unicode_pattern/schema.json0000644000175100017510000000063015062662115032672 0ustar00runnerrunner{ "additionalProperties": false, "properties": { "key": { "description": "some key", "maxLength": 128, "minLength": 1, "pattern": "^\\p{L}\\p{Z}\\p{N}$", "type": "string" }, "value": { "description": "some value", "maxLength": 256, "minLength": 0, "pattern": "^\\p{L}\\p{Z}\\p{N}$", "type": "string" } }, "type": "object" } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1758159958.8856118 check_jsonschema-0.34.0/tests/example-files/hooks/0000755000175100017510000000000015062662127021562 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1758159958.8856118 check_jsonschema-0.34.0/tests/example-files/hooks/negative/0000755000175100017510000000000015062662127023364 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.908612 check_jsonschema-0.34.0/tests/example-files/hooks/negative/cloudbuild/0000755000175100017510000000000015062662127025512 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/negative/cloudbuild/empty.yaml0000644000175100017510000000001315062662115027523 0ustar00runnerrunner# empty {} ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.908612 check_jsonschema-0.34.0/tests/example-files/hooks/negative/drone-ci/0000755000175100017510000000000015062662127025064 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/negative/drone-ci/unkown-type-pipeline.yml0000644000175100017510000000022115062662115031702 0ustar00runnerrunnerkind: pipeline type: unknown-type name: default steps: - name: greeting image: alpine commands: - echo hello - echo world ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.908612 check_jsonschema-0.34.0/tests/example-files/hooks/negative/github-workflows/0000755000175100017510000000000015062662127026701 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/negative/github-workflows/empty.json0000644000175100017510000000000315062662115030720 0ustar00runnerrunner{} ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.909612 check_jsonschema-0.34.0/tests/example-files/hooks/negative/jsonschema/0000755000175100017510000000000015062662127025516 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/negative/jsonschema/_config.yaml0000644000175100017510000000021015062662115027774 0ustar00runnerrunnerfiles: github-workflow-timeout-minutes-expression.yaml: add_args: ["--builtin-schema", "custom.github-workflows-require-timeout"] ././@PaxHeader0000000000000000000000000000022500000000000010214 xustar00127 path=check_jsonschema-0.34.0/tests/example-files/hooks/negative/jsonschema/github-workflow-timeout-minutes-expression.yaml 22 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/negative/jsonschema/github-workflow-timeout-minute0000644000175100017510000000033315062662115033552 0ustar00runnerrunneron: workflow-call: inputs: qemu: default: '' required: false jobs: job-id: runs-on: ubuntu-latest # missing trailing '}' timeout-minutes: ${{ inputs.qemu && '60' || '20' } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.909612 check_jsonschema-0.34.0/tests/example-files/hooks/negative/mergify/0000755000175100017510000000000015062662127025026 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/negative/mergify/example-pr-rules.yaml0000644000175100017510000000027415062662115031114 0ustar00runnerrunnerpull_request_rules: name: add label when author is jd description: jd needs his own label because reasons conditions: - author = jd actions: label: add: - jd ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1758159958.9106119 check_jsonschema-0.34.0/tests/example-files/hooks/negative/metaschema/0000755000175100017510000000000015062662127025473 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/negative/metaschema/2020_invalid_format_value.json0000644000175100017510000000411515062662115033221 0ustar00runnerrunner{ "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "Meta-schema defining a ref with invalid URI reference", "$defs": { "prop<(str|list)>": { "oneOf": [ { "type": "string" }, { "type": "array", "items": true } ] }, "anchorString": { "type": "string", "pattern": "^[A-Za-z_][-A-Za-z0-9._]*$" }, "uriString": { "type": "string", "format": "uri" }, "uriReferenceString": { "type": "string", "format": "uri-reference" }, "original2020metaschema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$vocabulary": { "https://json-schema.org/draft/2020-12/vocab/core": true }, "$dynamicAnchor": "meta", "title": "Core vocabulary meta-schema", "type": [ "object", "boolean" ], "properties": { "$id": { "$ref": "#/$defs/uriReferenceString", "$comment": "Non-empty fragments not allowed.", "pattern": "^[^#]*#?$" }, "$schema": { "$ref": "#/$defs/uriString" }, "$ref": { "$ref": "#/$defs/uriReferenceString" }, "$anchor": { "$ref": "#/$defs/anchorString" }, "$dynamicRef": { "$ref": "#/$defs/uriReferenceString" }, "$dynamicAnchor": { "$ref": "#/$defs/anchorString" }, "$vocabulary": { "type": "object", "propertyNames": { "$ref": "#/$defs/uriString" }, "additionalProperties": { "type": "boolean" } }, "$comment": { "type": "string" }, "$defs": { "type": "object", "additionalProperties": { "$dynamicRef": "#meta" } } } } }, "allOf": [ { "$ref": "#/$defs/original2020metaschema" }, { "properties": { "title": { "$ref": "#/$defs/prop<(str|list)>" } } } ] } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/negative/metaschema/_config.yaml0000644000175100017510000000012015062662115027751 0ustar00runnerrunnerfiles: 2020_invalid_format_value.json: requires_packages: - rfc3987 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/negative/metaschema/draft7_title_array.json0000644000175100017510000000015315062662115032150 0ustar00runnerrunner{ "$schema": "http://json-schema.org/draft-07/schema#", "title": [ "Core schema meta-schema" ] } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/negative/metaschema/draft7_title_array.yaml0000644000175100017510000000010515062662115032136 0ustar00runnerrunner$schema: "http://json-schema.org/draft-07/schema#" title: - "ohai" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1758159958.9106119 check_jsonschema-0.34.0/tests/example-files/hooks/negative/readthedocs/0000755000175100017510000000000015062662127025651 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/negative/readthedocs/pyversion-float.yml0000644000175100017510000000040715062662115031533 0ustar00runnerrunnerversion: 2 sphinx: configuration: docs/conf.py build: os: ubuntu-20.04 tools: # this will fail because the version is a float (should be str) python: 3.10 python: install: - method: pip path: . extra_requirements: - dev ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1758159958.9106119 check_jsonschema-0.34.0/tests/example-files/hooks/negative/snapcraft/0000755000175100017510000000000015062662127025345 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/negative/snapcraft/snapcraft.yaml0000644000175100017510000000020515062662115030204 0ustar00runnerrunnername: broken base: core22 version: '1.2' summary: Broken snap file description: | Broken snap file which is missing a parts block. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1758159958.9106119 check_jsonschema-0.34.0/tests/example-files/hooks/negative/woodpecker-ci/0000755000175100017510000000000015062662127026117 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/negative/woodpecker-ci/empty.yaml0000644000175100017510000000000315062662115030127 0ustar00runnerrunner{} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1758159958.8886118 check_jsonschema-0.34.0/tests/example-files/hooks/positive/0000755000175100017510000000000015062662127023424 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.911612 check_jsonschema-0.34.0/tests/example-files/hooks/positive/azure-pipelines/0000755000175100017510000000000015062662127026540 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000021300000000000010211 xustar00117 path=check_jsonschema-0.34.0/tests/example-files/hooks/positive/azure-pipelines/expression-from-lang-server.yaml 22 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/azure-pipelines/expression-from-lang-serv0000644000175100017510000000114615062662115033516 0ustar00runnerrunner# this data was taken from the azure-pipelines-language-server # https://github.com/microsoft/azure-pipelines-language-server/blob/71b20f92874c02dfe82ad2cc2dcc7fa64996be91/language-service/test/pipelinesTests/yamlvalidation.test.ts#L50 # # original license can be found in # src/check_jsonschema/builtin_schemas/vendor/licenses/LICENSE.azure-pipelines # steps: - ${{ if succeeded() }}: - task: npmAuthenticate@0 inputs: ${{ if ne(variables['Build.Reason'], 'PullRequest') }}: workingFile: .npmrc ${{ if eq(variables['Build.Reason'], 'PullRequest') }}: workingFile: .other_npmrc ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/azure-pipelines/expression-transform.yaml0000644000175100017510000000020715062662115033630 0ustar00runnerrunnerparameters: - name: vals default: "" jobs: - ${{ each val in parameter.vals }}: - job: foo steps: - bash: echo ${{ val }} ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/azure-pipelines/marshmallow.yaml0000644000175100017510000000077615062662115031761 0ustar00runnerrunner# config pulled from marshmallow-code/marshmallow 2022-01 trigger: branches: include: [dev, 2.x-line, test-me-*] tags: include: ['*'] resources: repositories: - repository: sloria type: github endpoint: github name: sloria/azure-pipeline-templates ref: refs/heads/sloria jobs: - template: job--python-tox.yml@sloria parameters: toxenvs: [lint, py37, py310] os: linux - template: job--pypi-release.yml@sloria parameters: dependsOn: - tox_linux ././@PaxHeader0000000000000000000000000000022000000000000010207 xustar00122 path=check_jsonschema-0.34.0/tests/example-files/hooks/positive/azure-pipelines/object-defined-by-expression-map.yaml 22 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/azure-pipelines/object-defined-by-express0000644000175100017510000000044215062662115033421 0ustar00runnerrunnerparameters: - name: env default: - key: FOO value: foo - key: BAR value: bar jobs: - job: echo-foo-bar steps: - bash: 'echo "$FOO-$BAR"' env: ${{ each pair in parameters.env }}: ${{ pair.key }}: ${{ pair.value }} ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.911612 check_jsonschema-0.34.0/tests/example-files/hooks/positive/bitbucket-pipelines/0000755000175100017510000000000015062662127027366 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000020600000000000010213 xustar00112 path=check_jsonschema-0.34.0/tests/example-files/hooks/positive/bitbucket-pipelines/bitbucket-pipelines.yml 22 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/bitbucket-pipelines/bitbucket-pipelines.y0000644000175100017510000000025015062662115033514 0ustar00runnerrunneroptions: max-time: 30 docker: true size: 2x pipelines: default: - step: name: Hello world example script: - echo "Hello, World!" ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.911612 check_jsonschema-0.34.0/tests/example-files/hooks/positive/buildkite/0000755000175100017510000000000015062662127025400 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/buildkite/matrix.yml0000644000175100017510000000252515062662115027430 0ustar00runnerrunner# this example copied from the buildkite pipeline-schema repo # it is therefore licensed under the existing buildkite MIT license # see src/check_jsonschema/builtin_schemas/vendor/licenses for license details steps: - command: "echo {{matrix}}" label: "{{matrix}}" matrix: - one - two - command: "echo {{matrix}}" label: "{{matrix}}" matrix: setup: - one - two adjustments: - with: ["three"] skip: true - command: "echo {{matrix.color}} {{matrix.shape}}" label: "{{matrix.color}} {{matrix.shape}}" matrix: setup: color: - green - blue shape: - triangle - hexagon adjustments: - with: {color: blue, shape: triangle} skip: true - with: {color: green, shape: triangle} skip: "look, hexagons are just better" - with: {color: purple, shape: octagon} - group: matrices steps: - command: "echo {{matrix}}" label: "{{matrix}}" matrix: - one - two - command: "echo {{matrix.color}} {{matrix.shape}}" label: "{{matrix.color}} {{matrix.shape}}" matrix: setup: color: - green - blue shape: - triangle - hexagon ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.911612 check_jsonschema-0.34.0/tests/example-files/hooks/positive/cloudbuild/0000755000175100017510000000000015062662127025552 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/cloudbuild/hello_world.yaml0000644000175100017510000000015515062662115030746 0ustar00runnerrunnersteps: - name: 'gcr.io/cloud-builders/docker' entrypoint: "/bin/bash" args: ['-c', '"echo hello"'] ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.912612 check_jsonschema-0.34.0/tests/example-files/hooks/positive/codecov/0000755000175100017510000000000015062662127025046 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/codecov/.codecov.yml0000644000175100017510000000074115062662115027270 0ustar00runnerrunnercodecov: branch: master notify: after_n_builds: 13 coverage: range: "95..100" status: project: no flags: library: paths: - aiohttp/ configs: paths: - requirements/ - ".git*" - "*.toml" - "*.yml" changelog: paths: - CHANGES/ - CHANGES.rst docs: paths: - docs/ - "*.md" - "*.rst" - "*.txt" tests: paths: - tests/ tools: paths: - tools/ third-party: paths: - vendor/ ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/codecov/codecov.yml0000644000175100017510000000042115062662115027205 0ustar00runnerrunnercodecov: notify: after_n_builds: 13 coverage: status: patch: default: target: 100% informational: true # Once the project achieves high code coverage, consider making it a mandatory check. project: default: target: auto ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.913612 check_jsonschema-0.34.0/tests/example-files/hooks/positive/drone-ci/0000755000175100017510000000000015062662127025124 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/drone-ci/digitalocean-pipeline.yml0000644000175100017510000000021715062662115032072 0ustar00runnerrunnerkind: pipeline type: digitalocean name: default token: from_secret: token steps: - name: greeting commands: - echo hello world ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/drone-ci/docker-pipeline.yml0000644000175100017510000000017515062662115030721 0ustar00runnerrunnerkind: pipeline type: docker name: default steps: - name: greeting image: alpine commands: - echo hello - echo world ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/drone-ci/exec-pipeline.yaml0000644000175100017510000000021715062662115030534 0ustar00runnerrunnerkind: pipeline type: exec name: default platform: os: linux arch: amd64 steps: - name: greeting commands: - echo hello world ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/drone-ci/kubernetes-pipeline.yml0000644000175100017510000000020115062662115031607 0ustar00runnerrunnerkind: pipeline type: kubernetes name: default steps: - name: greeting image: alpine commands: - echo hello - echo world ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/drone-ci/macstadium-pipeline.yml0000644000175100017510000000016015062662115031573 0ustar00runnerrunnerkind: pipeline type: macstadium name: default steps: - name: greeting commands: - echo hello world ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/drone-ci/ssh-pipeline.yml0000644000175100017510000000026515062662115030247 0ustar00runnerrunnerkind: pipeline type: ssh name: default server: host: 1.2.3.4 user: root password: from_secret: password steps: - name: greeting commands: - echo hello world ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.913612 check_jsonschema-0.34.0/tests/example-files/hooks/positive/github-actions/0000755000175100017510000000000015062662127026344 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/github-actions/redis-simple.yml0000644000175100017510000000057615062662115031471 0ustar00runnerrunnername: Run Redis description: 'This action spins up a Redis instance that can be accessed and used in subsequent steps.' branding: icon: 'database' color: 'green' inputs: redis-version: description: 'The version of Redis to use' required: false default: '6.2.5' runs: using: 'docker' image: 'Dockerfile' env: REDIS_VERSION: ${{ inputs.redis-version }} ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.913612 check_jsonschema-0.34.0/tests/example-files/hooks/positive/github-issue-config/0000755000175100017510000000000015062662127027277 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/github-issue-config/config.yml0000644000175100017510000000061215062662115031263 0ustar00runnerrunnerblank_issues_enabled: false contact_links: - name: Questions & Discussions url: https://github.com/Flexget/Flexget/discussions about: Use GitHub discussions for message-board style questions and discussions - name: Report an issue with Web UI url: https://github.com/Flexget/webui/issues/new/choose about: Please report issues for our Web UI in the Flexget/webui repository ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.913612 check_jsonschema-0.34.0/tests/example-files/hooks/positive/github-issue-forms/0000755000175100017510000000000015062662127027160 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/github-issue-forms/bug.yml0000644000175100017510000000237315062662115030462 0ustar00runnerrunnername: Bug report description: Report an unexpected problem or behavior type: Bug body: - type: markdown attributes: value: | **Before You Start...** - Read the [issue guidelines](https://github.com/Flexget/Flexget/blob/develop/.github/CONTRIBUTING.md#issues) - Check if there is already an issue about the problem - Be aware that you should check the [upgrade actions](https://flexget.com/UpgradeActions) after updating to a major or minor version - type: textarea attributes: label: Summary description: > Provide a clear and concise description of the bug. validations: required: true - type: textarea attributes: label: Minimal reproducible config description: | Paste minimal reproducible config and make sure to redact any personal information (passwords, api keys, etc) render: yaml - type: textarea attributes: label: Log placeholder: | paste the debug-level log output here render: text - type: textarea attributes: label: Additional information value: | **FlexGet Version:** **Python Version:** **OS Version:** **Installation Method:** **Using Daemon (yes/no):** ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/github-issue-forms/feature.yml0000644000175100017510000000102115062662115031325 0ustar00runnerrunnername: Feature request description: Suggest a request, idea, or new functionality type: Feature body: - type: markdown attributes: value: | **Before You Start...** - Read the [issue guidelines](https://github.com/Flexget/Flexget/blob/develop/.github/CONTRIBUTING.md#issues) - Check if there is already an issue about the feature request - type: textarea attributes: label: Summary description: > Describe the feature you'd like. validations: required: true ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/github-issue-forms/task.yaml0000644000175100017510000000100015062662115030772 0ustar00runnerrunnername: Task description: Describe a specific piece of work type: Task body: - type: markdown attributes: value: | **Before You Start...** - Read the [issue guidelines](https://github.com/Flexget/Flexget/blob/develop/.github/CONTRIBUTING.md#issues) - Check if there is already an issue about the task - type: textarea attributes: label: Summary description: > Provide a clear and concise description of the task. validations: required: true ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.914612 check_jsonschema-0.34.0/tests/example-files/hooks/positive/github-workflows/0000755000175100017510000000000015062662127026741 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/github-workflows/has-unicode.yaml0000644000175100017510000000041515062662115032021 0ustar00runnerrunnername: test on: push: pull_request: jobs: test: name: "Всё хорошо?" runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 - run: python -m pip install tox - run: python -m tox -e py ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/github-workflows/self-build.yaml0000644000175100017510000000232715062662115031654 0ustar00runnerrunnername: build on: push: pull_request: jobs: test: strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] py: ['3.6', '3.10'] name: "Run Tests on ${{ matrix.os }}, py${{ matrix.py }}" runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: ${{ matrix.py }} - name: install requirements run: python -m pip install tox - name: test run: python -m tox -e py - name: twine-check run: python -m tox -e twine-check self-check: name: "Self-Check" runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: 3.9 - name: install from source run: | python -m pip install -U pip setuptools python -m pip install . - name: run on own workflows via HTTPS schema run: check-jsonschema --schemafile "https://json.schemastore.org/github-workflow" .github/workflows/*.yaml - name: run on own workflows via vendored schema run: check-jsonschema --builtin-schema vendor.github-workflow .github/workflows/*.yaml ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.914612 check_jsonschema-0.34.0/tests/example-files/hooks/positive/gitlab-ci/0000755000175100017510000000000015062662127025257 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/gitlab-ci/reference-tag.yaml0000644000175100017510000000035215062662115030647 0ustar00runnerrunnerinclude: - local: setup.yml .teardown: after_script: - echo deleting environment test: script: - !reference [.setup, script] - echo running my own command after_script: - !reference [.teardown, after_script] ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.914612 check_jsonschema-0.34.0/tests/example-files/hooks/positive/jsonschema/0000755000175100017510000000000015062662127025556 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/jsonschema/_config.yaml0000644000175100017510000000021015062662115030034 0ustar00runnerrunnerfiles: github-workflow-timeout-minutes-expression.yaml: add_args: ["--builtin-schema", "custom.github-workflows-require-timeout"] ././@PaxHeader0000000000000000000000000000022500000000000010214 xustar00127 path=check_jsonschema-0.34.0/tests/example-files/hooks/positive/jsonschema/github-workflow-timeout-minutes-expression.yaml 22 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/jsonschema/github-workflow-timeout-minute0000644000175100017510000000030115062662115033605 0ustar00runnerrunneron: workflow-call: inputs: qemu: default: '' required: false jobs: job-id: runs-on: ubuntu-latest timeout-minutes: ${{ inputs.qemu && '60' || '20' }} ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.914612 check_jsonschema-0.34.0/tests/example-files/hooks/positive/meltano/0000755000175100017510000000000015062662127025063 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/meltano/multiple-plugins.yml0000644000175100017510000000245615062662115031124 0ustar00runnerrunnerversion: 1 env: DBT_CLEAN_PROJECT_FILES_ONLY: 'false' venv: backend: uv default_environment: dev project_id: 90f75496-2018-4b3a-97ac-9662e11c0094 send_anonymous_usage_stats: false plugins: extractors: - name: tap-gitlab variant: meltanolabs pip_url: git+https://github.com/MeltanoLabs/tap-gitlab.git loaders: - name: target-postgres variant: transferwise pip_url: > git+https://github.com/transferwise/pipelinewise.git#subdirectory=singer-connectors/target-postgres utilities: - name: dbt-postgres variant: dbt-labs pip_url: dbt-core dbt-postgres meltano-dbt-ext~=0.3.0 environments: - name: dev config: plugins: extractors: - name: tap-gitlab config: projects: meltano/meltano start_date: '2022-04-25T00:00:00' select: - commits.* - '!commits.stats.commits.stats*' loaders: - name: target-postgres config: user: postgres dbname: warehouse default_target_schema: public utilities: - name: dbt-postgres config: host: localhost user: postgres port: 5432 dbname: warehouse schema: analytics - name: staging - name: prod jobs: - name: gitlab-to-postgres tasks: - tap-gitlab target-postgres ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.915612 check_jsonschema-0.34.0/tests/example-files/hooks/positive/mergify/0000755000175100017510000000000015062662127025066 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/mergify/example-pr-rules.yaml0000644000175100017510000000031415062662115031147 0ustar00runnerrunnerpull_request_rules: - name: add label when author is jd description: jd needs his own label because reasons conditions: - author = jd actions: label: add: - jd ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.915612 check_jsonschema-0.34.0/tests/example-files/hooks/positive/metaschema/0000755000175100017510000000000015062662127025533 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/metaschema/2020_invalid_format_value.json0000644000175100017510000000411515062662115033261 0ustar00runnerrunner{ "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "Meta-schema defining a ref with invalid URI reference", "$defs": { "prop<(str|list)>": { "oneOf": [ { "type": "string" }, { "type": "array", "items": true } ] }, "anchorString": { "type": "string", "pattern": "^[A-Za-z_][-A-Za-z0-9._]*$" }, "uriString": { "type": "string", "format": "uri" }, "uriReferenceString": { "type": "string", "format": "uri-reference" }, "original2020metaschema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "$vocabulary": { "https://json-schema.org/draft/2020-12/vocab/core": true }, "$dynamicAnchor": "meta", "title": "Core vocabulary meta-schema", "type": [ "object", "boolean" ], "properties": { "$id": { "$ref": "#/$defs/uriReferenceString", "$comment": "Non-empty fragments not allowed.", "pattern": "^[^#]*#?$" }, "$schema": { "$ref": "#/$defs/uriString" }, "$ref": { "$ref": "#/$defs/uriReferenceString" }, "$anchor": { "$ref": "#/$defs/anchorString" }, "$dynamicRef": { "$ref": "#/$defs/uriReferenceString" }, "$dynamicAnchor": { "$ref": "#/$defs/anchorString" }, "$vocabulary": { "type": "object", "propertyNames": { "$ref": "#/$defs/uriString" }, "additionalProperties": { "type": "boolean" } }, "$comment": { "type": "string" }, "$defs": { "type": "object", "additionalProperties": { "$dynamicRef": "#meta" } } } } }, "allOf": [ { "$ref": "#/$defs/original2020metaschema" }, { "properties": { "title": { "$ref": "#/$defs/prop<(str|list)>" } } } ] } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/metaschema/_config.yaml0000644000175100017510000000012215062662115030013 0ustar00runnerrunnerfiles: 2020_invalid_format_value.json: add_args: ["--disable-formats", "*"] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/metaschema/almost_empty.yaml0000644000175100017510000000012115062662115031123 0ustar00runnerrunner$schema: http://json-schema.org/draft-07/schema# title: "an almost empty schema" ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/metaschema/draft3.json0000644000175100017510000000521315062662115027607 0ustar00runnerrunner{ "$schema" : "http://json-schema.org/draft-03/schema#", "id" : "http://json-schema.org/draft-03/schema#", "type" : "object", "properties" : { "type" : { "type" : ["string", "array"], "items" : { "type" : ["string", {"$ref" : "#"}] }, "uniqueItems" : true, "default" : "any" }, "properties" : { "type" : "object", "additionalProperties" : {"$ref" : "#", "type" : "object"}, "default" : {} }, "patternProperties" : { "type" : "object", "additionalProperties" : {"$ref" : "#"}, "default" : {} }, "additionalProperties" : { "type" : [{"$ref" : "#"}, "boolean"], "default" : {} }, "items" : { "type" : [{"$ref" : "#"}, "array"], "items" : {"$ref" : "#"}, "default" : {} }, "additionalItems" : { "type" : [{"$ref" : "#"}, "boolean"], "default" : {} }, "required" : { "type" : "boolean", "default" : false }, "dependencies" : { "type" : ["string", "array", "object"], "additionalProperties" : { "type" : ["string", "array", {"$ref" : "#"}], "items" : { "type" : "string" } }, "default" : {} }, "minimum" : { "type" : "number" }, "maximum" : { "type" : "number" }, "exclusiveMinimum" : { "type" : "boolean", "default" : false }, "exclusiveMaximum" : { "type" : "boolean", "default" : false }, "maxDecimal": { "minimum": 0, "type": "number" }, "minItems" : { "type" : "integer", "minimum" : 0, "default" : 0 }, "maxItems" : { "type" : "integer", "minimum" : 0 }, "uniqueItems" : { "type" : "boolean", "default" : false }, "pattern" : { "type" : "string", "format" : "regex" }, "minLength" : { "type" : "integer", "minimum" : 0, "default" : 0 }, "maxLength" : { "type" : "integer" }, "enum" : { "type" : "array" }, "default" : { "type" : "any" }, "title" : { "type" : "string" }, "description" : { "type" : "string" }, "format" : { "type" : "string" }, "divisibleBy" : { "type" : "number", "minimum" : 0, "exclusiveMinimum" : true, "default" : 1 }, "disallow" : { "type" : ["string", "array"], "items" : { "type" : ["string", {"$ref" : "#"}] }, "uniqueItems" : true }, "extends" : { "type" : [{"$ref" : "#"}, "array"], "items" : {"$ref" : "#"}, "default" : {} }, "id" : { "type" : "string", "format" : "uri" }, "$ref" : { "type" : "string", "format" : "uri" }, "$schema" : { "type" : "string", "format" : "uri" } }, "dependencies" : { "exclusiveMinimum" : "minimum", "exclusiveMaximum" : "maximum" }, "default" : {} } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/metaschema/draft7.json0000644000175100017510000001132315062662115027612 0ustar00runnerrunner{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "http://json-schema.org/draft-07/schema#", "title": "Core schema meta-schema", "definitions": { "schemaArray": { "type": "array", "minItems": 1, "items": { "$ref": "#" } }, "nonNegativeInteger": { "type": "integer", "minimum": 0 }, "nonNegativeIntegerDefault0": { "allOf": [ { "$ref": "#/definitions/nonNegativeInteger" }, { "default": 0 } ] }, "simpleTypes": { "enum": [ "array", "boolean", "integer", "null", "number", "object", "string" ] }, "stringArray": { "type": "array", "items": { "type": "string" }, "uniqueItems": true, "default": [] } }, "type": ["object", "boolean"], "properties": { "$id": { "type": "string", "format": "uri-reference" }, "$schema": { "type": "string", "format": "uri" }, "$ref": { "type": "string", "format": "uri-reference" }, "$comment": { "type": "string" }, "title": { "type": "string" }, "description": { "type": "string" }, "default": true, "readOnly": { "type": "boolean", "default": false }, "examples": { "type": "array", "items": true }, "multipleOf": { "type": "number", "exclusiveMinimum": 0 }, "maximum": { "type": "number" }, "exclusiveMaximum": { "type": "number" }, "minimum": { "type": "number" }, "exclusiveMinimum": { "type": "number" }, "maxLength": { "$ref": "#/definitions/nonNegativeInteger" }, "minLength": { "$ref": "#/definitions/nonNegativeIntegerDefault0" }, "pattern": { "type": "string", "format": "regex" }, "additionalItems": { "$ref": "#" }, "items": { "anyOf": [ { "$ref": "#" }, { "$ref": "#/definitions/schemaArray" } ], "default": true }, "maxItems": { "$ref": "#/definitions/nonNegativeInteger" }, "minItems": { "$ref": "#/definitions/nonNegativeIntegerDefault0" }, "uniqueItems": { "type": "boolean", "default": false }, "contains": { "$ref": "#" }, "maxProperties": { "$ref": "#/definitions/nonNegativeInteger" }, "minProperties": { "$ref": "#/definitions/nonNegativeIntegerDefault0" }, "required": { "$ref": "#/definitions/stringArray" }, "additionalProperties": { "$ref": "#" }, "definitions": { "type": "object", "additionalProperties": { "$ref": "#" }, "default": {} }, "properties": { "type": "object", "additionalProperties": { "$ref": "#" }, "default": {} }, "patternProperties": { "type": "object", "additionalProperties": { "$ref": "#" }, "propertyNames": { "format": "regex" }, "default": {} }, "dependencies": { "type": "object", "additionalProperties": { "anyOf": [ { "$ref": "#" }, { "$ref": "#/definitions/stringArray" } ] } }, "propertyNames": { "$ref": "#" }, "const": true, "enum": { "type": "array", "items": true }, "type": { "anyOf": [ { "$ref": "#/definitions/simpleTypes" }, { "type": "array", "items": { "$ref": "#/definitions/simpleTypes" }, "minItems": 1, "uniqueItems": true } ] }, "format": { "type": "string" }, "contentMediaType": { "type": "string" }, "contentEncoding": { "type": "string" }, "if": {"$ref": "#"}, "then": {"$ref": "#"}, "else": {"$ref": "#"}, "allOf": { "$ref": "#/definitions/schemaArray" }, "anyOf": { "$ref": "#/definitions/schemaArray" }, "oneOf": { "$ref": "#/definitions/schemaArray" }, "not": { "$ref": "#" } }, "default": true } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.916612 check_jsonschema-0.34.0/tests/example-files/hooks/positive/readthedocs/0000755000175100017510000000000015062662127025711 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/readthedocs/simple.yaml0000644000175100017510000000030515062662115030061 0ustar00runnerrunnerversion: 2 sphinx: configuration: docs/conf.py build: os: ubuntu-20.04 tools: python: "3.10" python: install: - method: pip path: . extra_requirements: - dev ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.916612 check_jsonschema-0.34.0/tests/example-files/hooks/positive/renovate/0000755000175100017510000000000015062662127025247 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/renovate/starter-config.json0000644000175100017510000000007415062662115031067 0ustar00runnerrunner{ "extends": ["config:base", "schedule:nonOfficeHours"] } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/renovate/starter-config.json50000644000175100017510000000007415062662115031154 0ustar00runnerrunner{ "extends": ["config:base", "schedule:nonOfficeHours"] } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.916612 check_jsonschema-0.34.0/tests/example-files/hooks/positive/snapcraft/0000755000175100017510000000000015062662127025405 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/snapcraft/snapcraft.yaml0000644000175100017510000000047015062662115030250 0ustar00runnerrunnername: hello base: core22 version: '2.10' summary: GNU Hello, the "hello world" snap description: | GNU hello prints a friendly greeting. grade: stable confinement: strict apps: hello: command: bin/hello parts: gnu-hello: source: http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz plugin: autotools ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.916612 check_jsonschema-0.34.0/tests/example-files/hooks/positive/travis/0000755000175100017510000000000015062662127024734 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/travis/python-build.yaml0000644000175100017510000000225415062662115030236 0ustar00runnerrunnersudo: false dist: xenial language: python matrix: include: - name: "lint" python: "3.6" env: TOXENV=lint - python: "2.7" env: TOXENV=py - python: "3.5" env: TOXENV=py - python: "3.6" env: TOXENV=py - python: "3.7" env: TOXENV=py - python: "3.8" env: TOXENV=py # non-Linux testing # https://docs.travis-ci.com/user/languages/python/#running-python-tests-on-multiple-operating-systems # # Windows - name: "py2 + windows" os: windows language: shell env: TOXENV=py PATH=/c/Python27:/c/Python27/Scripts:$PATH before_install: - choco install python2 - python -m pip install --upgrade pip wheel - name: "py3.8 + windows" os: windows language: shell env: TOXENV=py PATH=/c/Python38:/c/Python38/Scripts:$PATH before_install: - choco install python3 - python -m pip install --upgrade pip wheel # macOS - name: "py3 + macOS" os: osx osx_image: xcode10.2 # py3.7 on macOS 10.14 language: shell env: TOXENV=py3 cache: pip install: - pip install -U pip setuptools - pip install tox script: - tox ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.916612 check_jsonschema-0.34.0/tests/example-files/hooks/positive/woodpecker-ci/0000755000175100017510000000000015062662127026157 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/example-files/hooks/positive/woodpecker-ci/pipeline-clone.yaml0000644000175100017510000000223015062662115031740 0ustar00runnerrunner# # this file is copied from the woodpecker repo and therefore licensed under the # Woodpecker Apache 2.0 license: # # Copyright 2018 Drone.IO Inc. # Copyright 2020 Woodpecker Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # see: # https://github.com/woodpecker-ci/woodpecker/blob/f529b609c3356c671270db9f0a78191ef8b93590/pipeline/frontend/yaml/linter/schema/.woodpecker/test-clone.yaml clone: git: image: plugins/git:next depth: 50 path: bitbucket.org/foo/bar recursive: true submodule_override: my-module: https://github.com/octocat/my-module.git steps: test: image: alpine commands: - echo "test" ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.918612 check_jsonschema-0.34.0/tests/unit/0000755000175100017510000000000015062662127016663 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.918612 check_jsonschema-0.34.0/tests/unit/cli/0000755000175100017510000000000015062662127017432 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/unit/cli/test_annotations.py0000644000175100017510000000140315062662115023373 0ustar00runnerrunnerimport typing as t import pytest from check_jsonschema.cli import main as cli_main click_type_test = pytest.importorskip( "click_type_test", reason="tests require 'click-type-test'" ) def test_annotations_match_click_params(): click_type_test.check_param_annotations( cli_main, overrides={ # don't bother with a Literal for this, since it's relatively dynamic data "builtin_schema": str | None, # force default_filetype to be a Literal including `json5`, which is only # included in the choices if a parser is installed "default_filetype": t.Literal["json", "yaml", "toml", "json5"], "force_filetype": t.Literal["json", "yaml", "toml", "json5"] | None, }, ) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/unit/cli/test_callbacks.py0000644000175100017510000000257315062662115022766 0ustar00runnerrunnerimport click import pytest from check_jsonschema.cli.warnings import deprecation_warning_callback @click.command("foo") @click.option( "--bar", is_flag=True, callback=deprecation_warning_callback("--bar", is_flag=True), ) @click.option( "--baz", callback=deprecation_warning_callback( "--baz", append_message="Use --frob instead!" ), ) def mycli(bar, baz): print(bar) if baz: print(baz) 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(cli_runner): with pytest.warns( UserWarning, match="'--bar' is deprecated and will be removed in a future release", ): 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(cli_runner): with pytest.warns( UserWarning, match=( "'--baz' is deprecated and will be removed in a future release. " "Use --frob instead!" ), ): result = cli_runner.invoke(mycli, ["--baz", "ok"], catch_exceptions=False) assert result.exit_code == 0, result.stdout assert result.stdout == "False\nok\n" ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/unit/cli/test_parse.py0000644000175100017510000002317215062662115022157 0ustar00runnerrunnerfrom __future__ import annotations from unittest import mock import click import pytest from check_jsonschema import main as cli_main from check_jsonschema.cli.parse_result import ParseResult, SchemaLoadingMode class BoxedContext: ref = None def touch_files(dirpath, *filenames): for fname in filenames: (dirpath / fname).touch() @pytest.fixture def boxed_context(): return BoxedContext() @pytest.fixture def mock_parse_result(): args = ParseResult() with mock.patch("check_jsonschema.cli.main_command.ParseResult") as m: m.return_value = args yield args @pytest.fixture(autouse=True) def mock_cli_exec(boxed_context): def get_ctx(*args): boxed_context.ref = click.get_current_context() with mock.patch( "check_jsonschema.cli.main_command.execute", side_effect=get_ctx ) as m: yield m @pytest.mark.parametrize( "schemafile,builtin_schema,check_metaschema,expect_mode", [ ("foo.json", None, False, SchemaLoadingMode.filepath), (None, "foo", False, SchemaLoadingMode.builtin), (None, None, True, SchemaLoadingMode.metaschema), ], ) def test_parse_result_set_schema( schemafile, builtin_schema, check_metaschema, expect_mode ): args = ParseResult() # starts as None (always) assert args.schema_path is None args.set_schema(schemafile, builtin_schema, check_metaschema) assert args.schema_mode == expect_mode if schemafile: assert args.schema_path == schemafile if builtin_schema: assert args.schema_path == builtin_schema if check_metaschema: assert args.schema_path is None def test_requires_some_args(cli_runner): result = cli_runner.invoke(cli_main, []) assert result.exit_code == 2 def test_schemafile_and_instancefile( cli_runner, mock_parse_result, in_tmp_dir, tmp_path ): touch_files(tmp_path, "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) for f in mock_parse_result.instancefiles: assert isinstance(f, click.utils.LazyFile) assert tuple(f.name for f in mock_parse_result.instancefiles) == ("foo.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(cli_runner, in_tmp_dir, tmp_path): touch_files(tmp_path, "foo.json") result = cli_runner.invoke(cli_main, ["foo.json"]) assert result.exit_code == 2 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(cli_runner, mock_parse_result, in_tmp_dir, tmp_path): touch_files(tmp_path, "foo.json") cli_runner.invoke( cli_main, ["--schemafile", "schema.json", "foo.json", "--no-cache"] ) assert mock_parse_result.disable_cache is True @pytest.mark.parametrize( "cmd_args", [ [ "--schemafile", "x.json", "--builtin-schema", "vendor.travis", ], [ "--schemafile", "x.json", "--builtin-schema", "vendor.travis", "--check-metaschema", ], [ "--schemafile", "x.json", "--check-metaschema", ], [ "--builtin-schema", "vendor.travis", "--check-metaschema", ], ], ) def test_mutex_schema_opts(cli_runner, cmd_args, in_tmp_dir, tmp_path): touch_files(tmp_path, "foo.json") result = cli_runner.invoke(cli_main, cmd_args + ["foo.json"]) assert result.exit_code == 2 assert "are mutually exclusive" in result.stderr @pytest.mark.parametrize( "cmd_args", [ ["--version"], ["--help"], ["-h"], ], ) def test_supports_common_option(cli_runner, cmd_args): result = cli_runner.invoke(cli_main, cmd_args) assert result.exit_code == 0 @pytest.mark.parametrize( "setting,expect_value", [(None, None), ("1", False), ("0", False)] ) def test_no_color_env_var( cli_runner, monkeypatch, setting, expect_value, boxed_context, in_tmp_dir, tmp_path ): if setting is None: monkeypatch.delenv("NO_COLOR", raising=False) else: monkeypatch.setenv("NO_COLOR", setting) touch_files(tmp_path, "foo.json") cli_runner.invoke(cli_main, ["--schemafile", "schema.json", "foo.json"]) assert boxed_context.ref.color == expect_value @pytest.mark.parametrize( "setting,expected_value", [(None, None), ("auto", None), ("always", True), ("never", False)], ) def test_color_cli_option( 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") cli_runner.invoke(cli_main, args) assert boxed_context.ref.color == expected_value def test_no_color_env_var_overrides_cli_option( cli_runner, monkeypatch, mock_cli_exec, boxed_context, in_tmp_dir, tmp_path ): monkeypatch.setenv("NO_COLOR", "1") touch_files(tmp_path, "foo.json") cli_runner.invoke( cli_main, ["--color=always", "--schemafile", "schema.json", "foo.json"] ) assert boxed_context.ref.color is False @pytest.mark.parametrize( "setting,expected_value", [("auto", 0), ("always", 0), ("never", 0), ("anything_else", 2)], ) def test_color_cli_option_is_choice( cli_runner, setting, expected_value, in_tmp_dir, tmp_path ): touch_files(tmp_path, "foo.json") assert ( cli_runner.invoke( cli_main, ["--color", setting, "--schemafile", "schema.json", "foo.json"], ).exit_code == expected_value ) def test_formats_default_to_enabled( cli_runner, mock_parse_result, in_tmp_dir, tmp_path ): touch_files(tmp_path, "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 == () @pytest.mark.parametrize( "addargs", ( [ "--disable-formats", "uri-reference", "--disable-formats", "date-time", ], ["--disable-formats", "uri-reference,date-time"], ), ) def test_disable_selected_formats( cli_runner, mock_parse_result, addargs, in_tmp_dir, tmp_path ): touch_files(tmp_path, "foo.json") cli_runner.invoke( cli_main, [ "--schemafile", "schema.json", "foo.json", ] + addargs, ) assert mock_parse_result.disable_all_formats is False assert set(mock_parse_result.disable_formats) == {"uri-reference", "date-time"} @pytest.mark.parametrize( "addargs", ( [ "--disable-formats", "uri-reference", "--disable-formats", "date-time", "--disable-formats", "*", ], ["--disable-formats", "*"], ["--disable-formats", "*,email"], ), ) 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 cli_runner.invoke( cli_main, [ "--schemafile", "schema.json", "foo.json", ] + addargs, ) assert mock_parse_result.disable_all_formats is True def test_can_specify_custom_validator_class( 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 = cli_runner.invoke( cli_main, [ "--schemafile", "schema.json", "foo.json", "--validator-class", "foo:MyValidator", ], ) assert result.exit_code == 0 assert mock_parse_result.validator_class == foo.MyValidator @pytest.mark.parametrize( "failmode", ("syntax", "import", "attr", "function", "non_callable") ) def test_custom_validator_class_fails( cli_runner, mock_parse_result, mock_module, failmode, in_tmp_dir, tmp_path ): mock_module( "foo.py", """\ class MyValidator: pass def validator_func(*args, **kwargs): return MyValidator(*args, **kwargs) other_thing = 100 """, ) if failmode == "syntax": arg = "foo.MyValidator" elif failmode == "import": arg = "foo.bar:MyValidator" elif failmode == "attr": arg = "foo:no_such_attr" elif failmode == "function": arg = "foo:validator_func" elif failmode == "non_callable": arg = "foo:other_thing" else: raise NotImplementedError touch_files(tmp_path, "foo.json") result = cli_runner.invoke( cli_main, ["--schemafile", "schema.json", "foo.json", "--validator-class", arg], ) assert result.exit_code == 2 if failmode == "syntax": assert "is not a valid specifier" in result.stderr elif failmode == "import": assert "was not an importable module" in result.stderr elif failmode == "attr": assert "was not resolvable to a class" in result.stderr elif failmode in ("function", "non_callable"): assert "is not a class" in result.stderr else: raise NotImplementedError ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1758159958.919612 check_jsonschema-0.34.0/tests/unit/formats/0000755000175100017510000000000015062662127020336 5ustar00runnerrunner././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/unit/formats/test_rfc3339.py0000644000175100017510000000407115062662115023042 0ustar00runnerrunnerimport random import pytest from check_jsonschema.formats.implementations.rfc3339 import validate @pytest.mark.parametrize( "datestr", ( "2018-12-31T23:59:59Z", "2018-12-31t23:59:59Z", "2018-12-31t23:59:59z", "2018-12-31T23:59:59+00:00", "2018-12-31T23:59:59-00:00", ), ) def test_simple_positive_cases(datestr): assert validate(datestr) @pytest.mark.parametrize( "datestr", ( "2018-12-31T23:59:59", "2018-12-31T23:59:59+00:00Z", "2018-12-31 23:59:59", ), ) def test_simple_negative_case(datestr): assert not validate(datestr) @pytest.mark.parametrize("precision", list(range(20))) @pytest.mark.parametrize( "offsetstr", ( "Z", "+00:00", "-00:00", "+23:59", ), ) def test_allows_fracsec(precision, offsetstr): fracsec = random.randint(0, 10**precision) assert validate(f"2018-12-31T23:59:59.{fracsec}{offsetstr}") @pytest.mark.parametrize( "datestr", ( # no such month "2020-13-01T00:00:00Z", "2020-00-01T00:00:00Z", # no such day "2020-01-00T00:00:00Z", "2020-01-32T00:00:00Z", ), ) def test_basic_bounds_validated(datestr): assert not validate(datestr) @pytest.mark.parametrize( "month, maxday", ( (1, 31), (3, 31), (4, 30), (5, 31), (6, 30), (7, 31), (8, 31), (9, 30), (10, 31), (11, 30), ), ) def test_day_bounds_by_month(month, maxday): good_date = f"2020-{month:02}-{maxday:02}T00:00:00Z" bad_date = f"2020-{month:02}-{(maxday + 1):02}T00:00:00Z" assert validate(good_date) assert not validate(bad_date) @pytest.mark.parametrize( "year, maxday", ( (2018, 28), (2016, 29), (2400, 29), (2500, 28), ), ) def test_day_bounds_for_february(year, maxday): good_date = f"{year}-02-{maxday:02}T00:00:00Z" bad_date = f"{year}-02-{(maxday + 1):02}T00:00:00Z" assert validate(good_date) assert not validate(bad_date) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/unit/formats/test_time.py0000644000175100017510000000163615062662115022710 0ustar00runnerrunnerimport random import pytest from check_jsonschema.formats.implementations.iso8601_time import validate @pytest.mark.parametrize( "timestr", ( "12:34:56Z", "23:59:59z", "23:59:59+00:00", "01:59:59-00:00", ), ) def test_simple_positive_cases(timestr): assert validate(timestr) @pytest.mark.parametrize( "timestr", ( object(), "12:34:56", "23:59:60Z", "23:59:59+24:00", "01:59:59-00:60", "01:01:00:00:60", ), ) def test_simple_negative_cases(timestr): assert not validate(timestr) @pytest.mark.parametrize("precision", list(range(20))) @pytest.mark.parametrize( "offsetstr", ( "Z", "+00:00", "-00:00", "+23:59", ), ) def test_allows_fracsec(precision, offsetstr): fracsec = random.randint(0, 10**precision) assert validate(f"23:59:59.{fracsec}{offsetstr}") ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/unit/test_cachedownloader.py0000644000175100017510000002602115062662115023414 0ustar00runnerrunnerimport json import os import platform import time import pytest import requests import responses from check_jsonschema.cachedownloader import ( 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": DEFAULT_LASTMOD}, json={}, match_querystring=None, ) @pytest.fixture def default_response(): add_default_response() def test_default_filename_from_uri(default_response): cd = CacheDownloader("downloads").bind(DEFAULT_RESPONSE_URL) assert cd._filename == url_to_cache_filename(DEFAULT_RESPONSE_URL) @pytest.mark.parametrize( "sysname, fakeenv, expect_value", [ ("Windows", {}, None), ( "Windows", {"LOCALAPPDATA": "localappdata", "APPDATA": "appdata"}, "localappdata", ), ("Windows", {"LOCALAPPDATA": "localappdata"}, "localappdata"), ("Windows", {"APPDATA": "appdata"}, "appdata"), ("Darwin", {}, ""), ("Linux", {}, ""), ("Linux", {"XDG_CACHE_HOME": "xdg-cache"}, "xdg-cache"), ], ) def test_default_cache_dir( patch_cache_dir, monkeypatch, default_response, sysname, fakeenv, expect_value ): # undo the patch which typically overrides resolution of the cache dir patch_cache_dir.undo() for var in ["LOCALAPPDATA", "APPDATA", "XDG_CACHE_HOME"]: monkeypatch.delenv(var, raising=False) for k, v in fakeenv.items(): monkeypatch.setenv(k, v) if expect_value is not None: expect_value = os.path.join(expect_value, "check_jsonschema", "downloads") def fakesystem(): return sysname expanduser_path = None def fake_expanduser(path): nonlocal expanduser_path expanduser_path = path return "" monkeypatch.setattr(platform, "system", fakesystem) monkeypatch.setattr(os.path, "expanduser", fake_expanduser) cd = CacheDownloader("downloads") assert cd._cache_dir == expect_value if sysname == "Darwin": assert expanduser_path == "~/Library/Caches" elif sysname == "Linux": assert expanduser_path == "~/.cache" else: assert expanduser_path is None def test_cache_hit_by_mtime(monkeypatch, default_response): monkeypatch.setattr(os.path, "exists", lambda x: True) # local mtime = NOW, cache hit monkeypatch.setattr(os.path, "getmtime", lambda x: time.time()) assert _cache_hit( "/tmp/schema1.json", requests.get(DEFAULT_RESPONSE_URL, stream=True), ) # local mtime = 0, cache miss monkeypatch.setattr(os.path, "getmtime", lambda x: 0) assert ( _cache_hit( "/tmp/schema1.json", requests.get(DEFAULT_RESPONSE_URL, stream=True), ) is False ) def test_cachedownloader_cached_file(tmp_path, monkeypatch, default_response): # create a file f = tmp_path / "foo.json" f.write_text("{}") # set the cache_dir to the tmp dir (so that cache_dir will always be set) cd = CacheDownloader(tmp_path).bind(str(f), filename="foo.json") # patch the downloader to skip any download "work" monkeypatch.setattr( cd._downloader, "_download", lambda file_uri, filename, response_ok: str(f) ) with cd.open() as fp: assert fp.read() == b"{}" @pytest.mark.parametrize("disable_cache", (True, False)) def test_cachedownloader_on_success( get_download_cache_loc, disable_cache, default_response ): f = get_download_cache_loc(DEFAULT_RESPONSE_URL) cd = CacheDownloader("downloads", disable_cache=disable_cache).bind( DEFAULT_RESPONSE_URL ) with cd.open() as fp: assert fp.read() == b"{}" if disable_cache: assert not f.exists() else: assert f.exists() def test_cachedownloader_using_alternate_target_dir( cache_dir, default_response, url2cachepath ): cache_dir = cache_dir / "check_jsonschema" / "otherdir" f = url2cachepath(cache_dir, DEFAULT_RESPONSE_URL) cd = CacheDownloader("otherdir").bind(DEFAULT_RESPONSE_URL) with cd.open() as fp: assert fp.read() == b"{}" assert f.exists() @pytest.mark.parametrize("disable_cache", (True, False)) @pytest.mark.parametrize("failures", (1, 2, requests.ConnectionError)) def test_cachedownloader_succeeds_after_few_errors( get_download_cache_loc, disable_cache, failures ): if isinstance(failures, int): for _i in range(failures): responses.add( "GET", DEFAULT_RESPONSE_URL, status=500, match_querystring=None, ) else: responses.add( "GET", DEFAULT_RESPONSE_URL, body=failures(), match_querystring=None, ) add_default_response() f = get_download_cache_loc(DEFAULT_RESPONSE_URL) cd = CacheDownloader("downloads", disable_cache=disable_cache).bind( DEFAULT_RESPONSE_URL ) with cd.open() as fp: assert fp.read() == b"{}" if disable_cache: assert not f.exists() else: assert f.exists() @pytest.mark.parametrize("disable_cache", (True, False)) @pytest.mark.parametrize("connection_error", (True, False)) def test_cachedownloader_fails_after_many_errors( get_download_cache_loc, disable_cache, connection_error ): for _i in range(10): if connection_error: responses.add( "GET", DEFAULT_RESPONSE_URL, body=requests.ConnectionError(), match_querystring=None, ) else: responses.add( "GET", DEFAULT_RESPONSE_URL, status=500, match_querystring=None, ) add_default_response() # never reached, the 11th response f = get_download_cache_loc(DEFAULT_RESPONSE_URL) cd = CacheDownloader("downloads", disable_cache=disable_cache).bind( DEFAULT_RESPONSE_URL ) with pytest.raises(FailedDownloadError): with cd.open(): pass assert not f.exists() @pytest.mark.parametrize("disable_cache", (True, False)) def test_cachedownloader_retries_on_bad_data(get_download_cache_loc, disable_cache): responses.add( "GET", DEFAULT_RESPONSE_URL, status=200, body="{", match_querystring=None, ) add_default_response() f = get_download_cache_loc(DEFAULT_RESPONSE_URL) cd = CacheDownloader( "downloads", disable_cache=disable_cache, ).bind( DEFAULT_RESPONSE_URL, validation_callback=json.loads, ) with cd.open() as fp: assert fp.read() == b"{}" if disable_cache: assert not f.exists() else: assert f.exists() @pytest.mark.parametrize("file_exists", (True, False)) @pytest.mark.parametrize( "failure_mode", ("header_missing", "header_malformed", "time_overflow") ) def test_cachedownloader_handles_bad_lastmod_header( monkeypatch, get_download_cache_loc, inject_cached_download, file_exists, failure_mode, ): if failure_mode == "header_missing": responses.add( "GET", DEFAULT_RESPONSE_URL, headers={}, json={}, match_querystring=None ) elif failure_mode == "header_malformed": responses.add( "GET", DEFAULT_RESPONSE_URL, headers={"Last-Modified": "Jan 2000 00:00:01"}, json={}, match_querystring=None, ) elif failure_mode == "time_overflow": add_default_response() def fake_timegm(*args): raise OverflowError("uh-oh") monkeypatch.setattr("calendar.timegm", fake_timegm) else: raise NotImplementedError original_file_contents = b'{"foo": "bar"}' file_path = get_download_cache_loc(DEFAULT_RESPONSE_URL) assert not file_path.exists() if file_exists: inject_cached_download(DEFAULT_RESPONSE_URL, original_file_contents) cd = CacheDownloader("downloads").bind(DEFAULT_RESPONSE_URL) # if the file already existed, it will not be overwritten by the cachedownloader # so the returned value for both the downloader and a direct file read should be the # original contents if file_exists: with cd.open() as fp: assert fp.read() == original_file_contents assert file_path.read_bytes() == original_file_contents # otherwise, the file will have been created with new content # both reads will show that new content else: with cd.open() as fp: assert fp.read() == b"{}" assert file_path.read_bytes() == b"{}" # at the end, the file always exists on disk assert file_path.exists() def test_cachedownloader_validation_is_not_invoked_on_hit( monkeypatch, default_response, inject_cached_download ): """ Regression test for https://github.com/python-jsonschema/check-jsonschema/issues/453 This was a bug in which the validation callback was invoked eagerly, even on a cache hit. As a result, cache hits did not demonstrate their expected performance gain. """ # 1: construct some perfectly good data (it doesn't really matter what it is) # <> # 2: put equivalent data on disk inject_cached_download(DEFAULT_RESPONSE_URL, "{}") # 3: construct a validator which marks that it ran in a variable validator_ran = False def dummy_validate_bytes(data): nonlocal validator_ran validator_ran = True # construct a downloader pointed at the schema and file, expecting a cache hit # and use the above validation method cd = CacheDownloader("downloads").bind( DEFAULT_RESPONSE_URL, validation_callback=dummy_validate_bytes, ) # read data from the downloader with cd.open() as fp: 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 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/unit/test_catalog.py0000644000175100017510000000122615062662115021704 0ustar00runnerrunnerfrom pathlib import Path import ruamel.yaml from check_jsonschema.catalog import SCHEMA_CATALOG yaml = ruamel.yaml.YAML(typ="safe") HERE = Path(__file__).parent CONFIG_FILE = HERE.parent.parent / ".pre-commit-hooks.yaml" def test_schema_catalog_is_alphabetized(): catalog_keys = list(SCHEMA_CATALOG.keys()) sorted_keys = sorted(catalog_keys) assert catalog_keys == sorted_keys def test_hooks_cover_catalog(): with open(CONFIG_FILE, "rb") as fp: config = yaml.load(fp) config_hook_ids = {x["id"] for x in config} catalog_hook_ids = {f"check-{name}" for name in SCHEMA_CATALOG} assert catalog_hook_ids <= config_hook_ids ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/unit/test_gitlab_data_transform.py0000644000175100017510000000245415062662115024624 0ustar00runnerrunnerimport pytest from check_jsonschema.parsers.yaml import ParseError, construct_yaml_implementation from check_jsonschema.transforms.gitlab import ( GITLAB_TRANSFORM, GitLabReferenceExpectationViolation, ) def test_can_parse_yaml_with_transform(): rawdata = """\ a: b c: d """ impl = construct_yaml_implementation() data = impl.load(rawdata) assert data == {"a": "b", "c": "d"} GITLAB_TRANSFORM.modify_yaml_implementation(impl) data = impl.load(rawdata) assert data == {"a": "b", "c": "d"} def test_can_parse_ok_gitlab_yaml_with_transform(): rawdata = """\ foo: - !reference [bar, baz] """ impl = construct_yaml_implementation() with pytest.raises(ParseError): data = impl.load(rawdata) GITLAB_TRANSFORM.modify_yaml_implementation(impl) data = impl.load(rawdata) assert data == {"foo": [["bar", "baz"]]} def test_cannot_parse_bad_gitlab_yaml_with_transform(): rawdata = """\ foo: - !reference true """ impl = construct_yaml_implementation() with pytest.raises(ParseError): impl.load(rawdata) GITLAB_TRANSFORM.modify_yaml_implementation(impl) with pytest.raises( GitLabReferenceExpectationViolation, match=r"check-jsonschema rejects this gitlab \!reference tag: .*", ): impl.load(rawdata) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/unit/test_instance_loader.py0000644000175100017510000002024015062662115023421 0ustar00runnerrunnerimport pytest from check_jsonschema.instance_loader import InstanceLoader from check_jsonschema.parsers import BadFileTypeError, FailedFileLoadError from check_jsonschema.parsers.json5 import ENABLED as JSON5_ENABLED # handy helper for opening multiple files for InstanceLoader @pytest.fixture def open_wide(): track_paths = [] def func(*paths): open_paths = [open(p, "rb") for p in paths] track_paths.extend(open_paths) return open_paths yield func for p in track_paths: p.close() @pytest.mark.parametrize( "filename, default_filetype", [ ("foo.json", "notarealfiletype"), ("foo.json", "json"), ("foo.json", "yaml"), ("foo", "json"), # YAML is a superset of JSON, so using the YAML loader should be safe when the # data is JSON ("foo", "yaml"), ], ) def test_instanceloader_json_data(tmp_path, filename, default_filetype, open_wide): f = tmp_path / filename f.write_text("{}") loader = InstanceLoader(open_wide(f), default_filetype=default_filetype) data = list(loader.iter_files()) assert data == [(str(f), {})] @pytest.mark.parametrize( "filename, default_filetype", [ ("foo.yaml", "notarealfiletype"), ("foo.yml", "notarealfiletype"), ("foo.yaml", "json"), ("foo.yml", "json"), ("foo.yaml", "yaml"), ("foo.yml", "yaml"), ("foo", "yaml"), ], ) def test_instanceloader_yaml_data(tmp_path, filename, default_filetype, open_wide): f = tmp_path / filename f.write_text( """\ a: b: - 1 - 2 c: d """ ) loader = InstanceLoader(open_wide(f), default_filetype=default_filetype) data = list(loader.iter_files()) assert data == [(str(f), {"a": {"b": [1, 2], "c": "d"}})] @pytest.mark.parametrize( "filename, default_filetype", [ ("foo.toml", "notarealfiletype"), ("foo.toml", "json"), ("foo.toml", "yaml"), ("foo", "toml"), ], ) def test_instanceloader_toml_data(tmp_path, filename, default_filetype, open_wide): f = tmp_path / filename f.write_text('[foo]\nbar = "baz"\n') loader = InstanceLoader(open_wide(f), default_filetype=default_filetype) data = list(loader.iter_files()) assert data == [(str(f), {"foo": {"bar": "baz"}})] @pytest.mark.parametrize( "filename, force_filetype", [ ("foo.test", "toml"), ("foo", "toml"), ], ) def test_instanceloader_force_filetype_toml( tmp_path, filename, force_filetype, open_wide ): f = tmp_path / filename f.write_text('[foo]\nbar = "baz"\n') loader = InstanceLoader(open_wide(f), force_filetype=force_filetype) data = list(loader.iter_files()) assert data == [(str(f), {"foo": {"bar": "baz"}})] @pytest.mark.skipif(not JSON5_ENABLED, reason="test requires json5") @pytest.mark.parametrize( "filename, force_filetype", [ ("foo.test", "json5"), ("foo.json", "json5"), ], ) def test_instanceloader_force_filetype_json( tmp_path, filename, force_filetype, open_wide ): f = tmp_path / filename f.write_text("// a comment\n{}") loader = InstanceLoader(open_wide(f), force_filetype=force_filetype) data = list(loader.iter_files()) print(data) assert data == [(str(f), {})] def test_instanceloader_unknown_type_nonjson_content(tmp_path, open_wide): f = tmp_path / "foo" # no extension here f.write_text("a:b") # non-json data (cannot be detected as JSON) loader = InstanceLoader(open_wide(f), default_filetype="unknown") # at iteration time, the file should error and be reported as such data = list(loader.iter_files()) assert len(data) == 1 assert isinstance(data[0], tuple) assert len(data[0]) == 2 assert data[0][0] == str(f) assert isinstance(data[0][1], BadFileTypeError) @pytest.mark.parametrize( "enabled_flag, extension, file_content, expect_data, expect_error_message", [ ( JSON5_ENABLED, "json5", "{}", {}, "pip install json5", ), ], ) def test_instanceloader_optional_format_handling( tmp_path, enabled_flag, extension, file_content, expect_data, expect_error_message, open_wide, ): f = tmp_path / f"foo.{extension}" f.write_text(file_content) loader = InstanceLoader(open_wide(f)) if enabled_flag: # at iteration time, the file should load fine data = list(loader.iter_files()) assert data == [(str(f), expect_data)] else: # at iteration time, an error should be raised data = list(loader.iter_files()) assert len(data) == 1 assert isinstance(data[0], tuple) assert len(data[0]) == 2 assert data[0][0] == str(f) assert isinstance(data[0][1], BadFileTypeError) # error message should be instructive assert expect_error_message in str(data[0]) def test_instanceloader_yaml_dup_anchor(tmp_path, open_wide): f = tmp_path / "foo.yaml" f.write_text( """\ a: b: &anchor - 1 - 2 c: &anchor d """ ) loader = InstanceLoader(open_wide(f)) data = list(loader.iter_files()) assert data == [(str(f), {"a": {"b": [1, 2], "c": "d"}})] @pytest.mark.parametrize( "file_format, filename, content", [ ("json", "foo.json", '{"a":\n'), ("yaml", "foo.yaml", "a: {b\n"), ("yaml", "foo.yaml", "a: b\nc\n"), ("json5", "foo.json5", '{"a":\n'), ("toml", "foo.toml", "abc\n"), ], ) def test_instanceloader_invalid_data( tmp_path, file_format, filename, content, open_wide ): if file_format == "json5" and not JSON5_ENABLED: pytest.skip("test requires 'json5' support") f = tmp_path / filename f.write_text(content) loader = InstanceLoader(open_wide(f)) data = list(loader.iter_files()) assert len(data) == 1 assert isinstance(data[0], tuple) assert len(data[0]) == 2 assert data[0][0] == str(f) assert isinstance(data[0][1], FailedFileLoadError) def test_instanceloader_invalid_data_mixed_with_valid_data(tmp_path, open_wide): a = tmp_path / "a.json" b = tmp_path / "b.json" c = tmp_path / "c.json" a.write_text("{}") b.write_text("{") c.write_text('{"c":true}') loader = InstanceLoader(open_wide(a, b, c)) data = list(loader.iter_files()) assert len(data) == 3 assert data[0] == (str(a), {}) assert isinstance(data[1], tuple) assert len(data[1]) == 2 assert data[1][0] == str(b) assert isinstance(data[1][1], FailedFileLoadError) assert data[2] == (str(c), {"c": True}) @pytest.mark.parametrize( "filetypes", ( ("json", "yaml"), ("json", "json5"), ("yaml", "toml"), ("json", "yaml", "toml", "json5"), ), ) def test_instanceloader_mixed_filetypes(tmp_path, filetypes, open_wide): if not JSON5_ENABLED and "json5" in filetypes: pytest.skip("test requires json5") files = {} file_order = [] if "json" in filetypes: files["json"] = tmp_path / "F.json" files["json"].write_text("{}") file_order.append("json") if "yaml" in filetypes: files["yaml"] = tmp_path / "F.yaml" files["yaml"].write_text("foo: bar") file_order.append("yaml") if "json5" in filetypes: files["json5"] = tmp_path / "F.json5" files["json5"].write_text('{//hi\n"c": 1}') file_order.append("json5") if "toml" in filetypes: files["toml"] = tmp_path / "F.toml" files["toml"].write_text('[foo] # bar\nname = "value"\n') file_order.append("toml") loader = InstanceLoader(open_wide(*files.values())) data = list(loader.iter_files()) assert len(data) == len(files) for i, filetype in enumerate(file_order): assert isinstance(data[i], tuple) assert len(data[i]) == 2 path, value = data[i] assert path == str(files[filetype]) if filetype == "json": assert value == {} elif filetype == "yaml": assert value == {"foo": "bar"} elif filetype == "json5": assert value == {"c": 1} elif filetype == "toml": assert value == {"foo": {"name": "value"}} ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/unit/test_lazy_file_handling.py0000644000175100017510000000215715062662115024120 0ustar00runnerrunnerimport os import platform import pytest from check_jsonschema.cli.main_command import build_checker from check_jsonschema.cli.main_command import main as cli_main @pytest.mark.skipif( platform.system() != "Linux", reason="test requires /proc/self/ mechanism" ) def test_open_file_usage_never_exceeds_1000(cli_runner, monkeypatch, tmp_path): schema_path = tmp_path / "schema.json" schema_path.write_text("{}") args = [ "--schemafile", str(schema_path), ] for i in range(2000): instance_path = tmp_path / f"file{i}.json" instance_path.write_text("{}") args.append(str(instance_path)) checker = None def fake_execute(argv): nonlocal checker checker = build_checker(argv) monkeypatch.setattr("check_jsonschema.cli.main_command.execute", fake_execute) res = cli_runner.invoke(cli_main, args) assert res.exit_code == 0, res.stderr assert checker is not None assert len(os.listdir("/proc/self/fd")) < 2000 for _fname, _data in checker._instance_loader.iter_files(): assert len(os.listdir("/proc/self/fd")), 2000 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/unit/test_reporters.py0000644000175100017510000001743615062662115022331 0ustar00runnerrunnerimport json import textwrap import pytest from jsonschema import Draft7Validator from check_jsonschema.reporter import JsonReporter, TextReporter from check_jsonschema.result import CheckResult def _make_success_result(): res = CheckResult() res.successes.append("foo.json") return res @pytest.mark.parametrize("verbosity", (0, 1, 2)) @pytest.mark.parametrize("use_report_result_path", (False, True)) def test_text_format_success(capsys, verbosity, use_report_result_path): reporter = TextReporter(verbosity=verbosity) if use_report_result_path: reporter.report_result(_make_success_result()) else: reporter.report_success(_make_success_result()) captured = capsys.readouterr() assert captured.err == "" if verbosity == 0: assert captured.out == "" elif verbosity == 1: assert captured.out == "ok -- validation done\n" else: assert captured.out == textwrap.dedent( """\ ok -- validation done The following files were checked: foo.json """ ) @pytest.mark.parametrize("verbosity", (0, 1, 2)) @pytest.mark.parametrize("use_report_result_path", (False, True)) def test_json_format_success(capsys, verbosity, use_report_result_path): reporter = JsonReporter(verbosity=verbosity, pretty=False) if use_report_result_path: reporter.report_result(_make_success_result()) else: reporter.report_success(_make_success_result()) captured = capsys.readouterr() assert captured.err == "" if verbosity == 0: assert captured.out == '{"status":"ok"}\n' elif verbosity == 1: assert captured.out == '{"status":"ok","errors":[]}\n' else: assert ( captured.out == '{"status":"ok","errors":[],"checked_paths":["foo.json"]}\n' ) def test_text_format_validation_error_message_simple(): validator = Draft7Validator( { "properties": { "foo": { "anyOf": [ {"type": "string"}, {"properties": {"bar": {"type": "array"}}}, ], }, }, }, ) err = next(validator.iter_errors({"foo": {"bar": 1}})) text_reporter = TextReporter(verbosity=1) s1 = text_reporter._format_validation_error_message(err, filename="foo.json") assert s1 == ( "\x1b[33mfoo.json::$.foo\x1b[0m: {'bar': 1} " "is not valid under any of the given schemas" ) s2 = text_reporter._format_validation_error_message(err) assert s2 == ( "\x1b[33m$.foo\x1b[0m: {'bar': 1} " "is not valid under any of the given schemas" ) @pytest.mark.parametrize("verbosity", (0, 1, 2)) def test_text_print_validation_error_nested(capsys, verbosity): validator = Draft7Validator( { "anyOf": [ { "properties": { "foo": { "oneOf": [ {"type": "string"}, {"type": "integer"}, ], }, }, }, { "properties": { "bar": { "oneOf": [ {"type": "string"}, { "type": "object", "properties": {"baz": {"type": "integer"}}, }, ] } } }, ] }, ) err = next(validator.iter_errors({"foo": {}, "bar": {"baz": "buzz"}})) result = CheckResult() result.record_validation_error("foo.json", err) text_reporter = TextReporter(verbosity=verbosity) text_reporter.report_result(result) captured = capsys.readouterr() # nothing to stderr assert captured.err == "" # if verbosity<1 stop here if verbosity < 1: assert captured.out == "" return # only assert part of the message # dict member order isn't guaranteed and isn't relevant here assert "is not valid under any of the given schemas" in captured.out assert "Underlying errors" in captured.out # we don't know which error was the best match (algo for best match could change) # so just assert the presence of the underlying error messages at higher verbosity if verbosity > 1: assert "$.foo: {} is not of type 'string'" in captured.out assert "$.bar: {'baz': 'buzz'} is not of type 'string'" in captured.out assert "$.bar.baz: 'buzz' is not of type 'integer'" in captured.out else: assert ( "4 other errors were produced. Use '--verbose' to see all errors." in captured.out ) @pytest.mark.parametrize("pretty_json", (True, False)) @pytest.mark.parametrize("verbosity", (0, 1, 2)) def test_json_format_validation_error_nested(capsys, pretty_json, verbosity): validator = Draft7Validator( { "anyOf": [ { "properties": { "foo": { "oneOf": [ {"type": "string"}, {"type": "integer"}, ], }, }, }, { "properties": { "bar": { "oneOf": [ {"type": "string"}, { "type": "object", "properties": {"baz": {"type": "integer"}}, }, ] } } }, ] }, ) err = next(validator.iter_errors({"foo": {}, "bar": {"baz": "buzz"}})) result = CheckResult() result.record_validation_error("foo.json", err) json_reporter = JsonReporter(pretty=pretty_json, verbosity=verbosity) json_reporter.report_result(result) captured = capsys.readouterr() # nothing to stderr assert captured.err == "" # json data to stdout, parse it data = json.loads(captured.out) assert data["status"] == "fail" # stop here unless verbosity>=1 if verbosity < 1: assert data == {"status": "fail"} return assert len(data["errors"]) == 1 assert "is not valid under any of the given schemas" in data["errors"][0]["message"] assert data["errors"][0]["has_sub_errors"] assert data["errors"][0]["num_sub_errors"] == 5 # stop here unless 'verbosity>=2' if verbosity < 2: assert "sub_errors" not in data["errors"][0] return else: assert "sub_errors" in data["errors"][0] sub_errors = data["errors"][0]["sub_errors"] foo_errors, bar_errors, bar_baz_errors = [], [], [] for error_item in sub_errors: if error_item["path"] == "$.foo": foo_errors.append(error_item) elif error_item["path"] == "$.bar": bar_errors.append(error_item) elif error_item["path"] == "$.bar.baz": bar_baz_errors.append(error_item) assert len(foo_errors) == 3 assert len(bar_baz_errors) == 1 assert len(bar_errors) == 2 assert "'buzz' is not of type 'integer'" == bar_baz_errors[0]["message"] assert {item["message"] for item in foo_errors} == { "{} is not of type 'string'", "{} is not of type 'integer'", "{} is not valid under any of the given schemas", } assert "{'baz': 'buzz'} is not of type 'string'" in [ item["message"] for item in bar_errors ] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/unit/test_schema_loader.py0000644000175100017510000000674715062662115023075 0ustar00runnerrunnerimport os import pathlib import pytest import responses from check_jsonschema.schema_loader import SchemaLoader, SchemaParseError from check_jsonschema.schema_loader.readers import HttpSchemaReader, LocalSchemaReader @pytest.fixture def in_tmp_dir(request, tmp_path): os.chdir(str(tmp_path)) yield os.chdir(request.config.invocation_dir) @pytest.mark.parametrize( "filename", [ "schema.json", "schema.yaml", ], ) def test_schemaloader_path_handling_relative_local_path(in_tmp_dir, filename): # ensure that the file exists so that the behavior of pathlib resolution will be # correct on Windows with older python versions # see: https://bugs.python.org/issue38671 path = pathlib.Path("path", "to") / filename path.parent.mkdir(parents=True) path.touch() sl = SchemaLoader(str(path)) assert isinstance(sl.reader, LocalSchemaReader) assert sl.reader.filename == os.path.abspath(str(path)) assert str(sl.reader.path) == str(path.resolve()) @pytest.mark.parametrize( "filename", [ "schema.yaml", "schema.yml", "https://foo.example.com/schema.yaml", "https://foo.example.com/schema.yml", ], ) def test_schemaloader_yaml_data(tmp_path, filename): schema_text = """ --- "$schema": https://json-schema.org/draft/2020-12/schema type: object properties: a: type: object properties: b: type: array items: type: integer c: type: string """ if filename.startswith("http"): responses.add("GET", filename, body=schema_text) path = filename else: f = tmp_path / filename f.write_text(schema_text) path = str(f) sl = SchemaLoader(path) schema = sl.get_schema() assert schema == { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "a": { "type": "object", "properties": { "b": {"type": "array", "items": {"type": "integer"}}, "c": {"type": "string"}, }, }, }, } @pytest.mark.parametrize( "schemafile", [ "https://foo.example.com/schema.json", "http://foo.example.com/schema.json", ], ) def test_schemaloader_remote_path(schemafile): sl = SchemaLoader(schemafile) assert isinstance(sl.reader, HttpSchemaReader) assert sl.reader.url == schemafile def test_schemaloader_local_yaml_dup_anchor(tmp_path): f = tmp_path / "schema.yaml" f.write_text( """ --- "$schema": https://json-schema.org/draft/2020-12/schema type: object properties: a: type: object properties: b: &anchor type: array items: type: integer c: &anchor type: string """ ) sl = SchemaLoader(str(f)) schema = sl.get_schema() assert schema == { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "a": { "type": "object", "properties": { "b": {"type": "array", "items": {"type": "integer"}}, "c": {"type": "string"}, }, }, }, } def test_schemaloader_invalid_yaml_data(tmp_path): f = tmp_path / "foo.yaml" f.write_text( """\ a: {b """ ) sl = SchemaLoader(str(f)) with pytest.raises(SchemaParseError): sl.get_schema() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tests/unit/test_utils.py0000644000175100017510000000174415062662115021437 0ustar00runnerrunnerimport os import platform import sys import pytest from check_jsonschema.utils import filename2path @pytest.mark.skipif( not (platform.system() == "Linux"), reason="test requires /proc/self/ mechanism" ) @pytest.mark.skipif(sys.version_info < (3, 8), reason="test uses os.memfd_create") @pytest.mark.parametrize("use_pid_in_path", (True, False)) def test_filename2path_on_memfd(use_pid_in_path): """ create a memory file descriptor with a path in /proc/self/fd/ and then attempt to resolve that to an absolute Path object the end result should be untouched pathlib behavior is, for example, >>> pathlib.Path("/proc/self/fd/4").resolve() PosixPath('/memfd:myfd (deleted)') """ testfd = os.memfd_create("test_filename2path") try: pid = os.getpid() if use_pid_in_path else "self" filename = f"/proc/{pid}/fd/{testfd}" path = filename2path(filename) assert str(path) == filename finally: os.close(testfd) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1758159949.0 check_jsonschema-0.34.0/tox.ini0000644000175100017510000000502615062662115016055 0ustar00runnerrunner[tox] envlist = mypy cov_clean py39-mindeps{,-format} py{313,312,311,310,39} py{39,313}-{json5,pyjson5}{,-format} py{39,313}-{disable_orjson} cov_combine cov_report skip_missing_interpreters = true minversion = 4.0.0 labels = ci = py, py-notoml, py-tomli-format, py-json5, py-pyjson5 [testenv] description = "run tests with pytest" usedevelop = true dependency_groups = dev deps = # attrs v23.2.0 is needed for mindeps because jsonschema==4.18.0 # is uses `hash=True` which was deprecated after this version mindeps: attrs==23.2.0 mindeps: jsonschema==4.18.0 mindeps: click==8.0.0 mindeps: requests==2.0.0 !disable_orjson: orjson json5: json5 pyjson5: pyjson5 format: jsonschema[format] commands = coverage run -m pytest {posargs:--junitxml={envdir}/pytest.xml} depends = cov_clean [testenv:cov_clean] description = "erase coverage data to prepare for a new run" deps = coverage skip_install = true commands = coverage erase depends = [testenv:cov_combine] description = "combine coverage data" deps = coverage skip_install = true commands = coverage combine depends = py{,38,39,310,311,312,313}{,-mindeps,-format,-json5,-pyjson5,-disable_orjson} [testenv:cov_report] description = "report test coverage" deps = coverage skip_install = true commands = coverage report --skip-covered depends = cov_combine [testenv:mypy] description = "check type annotations with mypy" deps = mypy types-jsonschema types-requests click commands = mypy src/ {posargs} depends = [testenv:pyright] description = "check type annotations with pyright" deps = pyright types-jsonschema types-requests commands = pyright src/ {posargs} [testenv:docs] description = "build docs with sphinx" basepython = python3.10 dependency_groups = docs allowlist_externals = rm changedir = docs/ # clean the build dir before rebuilding commands_pre = rm -rf _build/ commands = sphinx-build -d _build/doctrees -b dirhtml -W . _build/dirhtml {posargs} [testenv:twine-check] description = "check the metadata on a package build" skip_install = true deps = twine build allowlist_externals = rm commands_pre = rm -rf dist/ # check that twine validating package data works commands = python -m build twine check dist/* [testenv:vendor-schemas] description = "update the vendored schemas" deps = pre-commit commands = python ./scripts/vendor-schemas.py [testenv:generate-hooks-config] description = "update autogenerated pre-commit hooks" commands = python ./scripts/generate-hooks-config.py