././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1267717
check-jsonschema-0.25.0/ 0000755 0001751 0001747 00000000000 14472046153 014422 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/.pre-commit-hooks.yaml 0000644 0001751 0001747 00000014573 14472046134 020572 0 ustar 00runner docker - 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
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-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-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
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-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
language: python
files: >
(?x)^(
renovate\.(json|json5)|
\.(github|gitlab)/renovate\.(json|json5)|
\.renovaterc(\.json)?
)$
# 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]
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/LICENSE 0000644 0001751 0001747 00000001107 14472046134 015425 0 ustar 00runner docker 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.
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/MANIFEST.in 0000644 0001751 0001747 00000000724 14472046134 016162 0 ustar 00runner docker ## 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
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1267717
check-jsonschema-0.25.0/PKG-INFO 0000644 0001751 0001747 00000004042 14472046153 015517 0 ustar 00runner docker Metadata-Version: 2.1
Name: check-jsonschema
Version: 0.25.0
Summary: A jsonschema CLI and pre-commit hook
Home-page: https://github.com/python-jsonschema/check-jsonschema
Author: Stephen Rosen
Author-email: sirosen@uchicago.edu
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Provides-Extra: dev
Provides-Extra: docs
License-File: LICENSE
[](https://pypi.org/project/check-jsonschema/)
[](https://pypi.org/project/check-jsonschema/)
[](https://github.com/python-jsonschema/check-jsonschema/actions/workflows/build.yaml)
[](https://results.pre-commit.ci/latest/github/python-jsonschema/check-jsonschema/main)
[](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.25.0
hooks:
- id: check-github-workflows
```
## Documentation
Full documentation can be found at https://check-jsonschema.readthedocs.io/
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/README.md 0000644 0001751 0001747 00000002770 14472046134 015706 0 ustar 00runner docker [](https://pypi.org/project/check-jsonschema/)
[](https://pypi.org/project/check-jsonschema/)
[](https://github.com/python-jsonschema/check-jsonschema/actions/workflows/build.yaml)
[](https://results.pre-commit.ci/latest/github/python-jsonschema/check-jsonschema/main)
[](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.25.0
hooks:
- id: check-github-workflows
```
## Documentation
Full documentation can be found at https://check-jsonschema.readthedocs.io/
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1307719
check-jsonschema-0.25.0/setup.cfg 0000644 0001751 0001747 00000002365 14472046153 016251 0 ustar 00runner docker [metadata]
name = check-jsonschema
version = 0.25.0
description = A jsonschema CLI and pre-commit hook
long_description = file: README.md
long_description_content_type = text/markdown
url = https://github.com/python-jsonschema/check-jsonschema
author = Stephen Rosen
author_email = sirosen@uchicago.edu
classifiers =
Development Status :: 4 - Beta
Intended Audience :: Developers
License :: OSI Approved :: Apache Software License
Programming Language :: Python :: 3
[options]
python_requires = >=3.8
install_requires =
importlib-resources>=1.4.0;python_version<"3.9"
ruamel.yaml==0.17.32
jsonschema>=4.18.0,<5.0
requests<3.0
click>=8,<9
package_dir =
=src
packages = find:
include_package_data = true
[options.packages.find]
where = src
[options.entry_points]
console_scripts =
check-jsonschema = check_jsonschema:main
[options.extras_require]
dev =
pytest<8
coverage<8
pytest-xdist<4
responses==0.23.2
docs =
sphinx<8
sphinx-issues<4
furo==2023.7.26
[isort]
profile = black
[flake8]
exclude = .git,.tox,__pycache__,.eggs,dist,.venv*,build
max-line-length = 90
ignore = W503,W504,E203,
[mypy]
disallow_untyped_defs = true
ignore_missing_imports = true
warn_unreachable = true
warn_no_return = true
[egg_info]
tag_build =
tag_date = 0
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/setup.py 0000644 0001751 0001747 00000000046 14472046134 016133 0 ustar 00runner docker from setuptools import setup
setup()
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.0587711
check-jsonschema-0.25.0/src/ 0000755 0001751 0001747 00000000000 14472046153 015211 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.0827713
check-jsonschema-0.25.0/src/check_jsonschema/ 0000755 0001751 0001747 00000000000 14472046153 020500 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/__init__.py 0000644 0001751 0001747 00000000117 14472046134 022607 0 ustar 00runner docker from __future__ import annotations
from .cli import main
__all__ = ("main",)
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/__main__.py 0000644 0001751 0001747 00000000052 14472046134 022566 0 ustar 00runner docker from check_jsonschema import main
main()
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/_testing.py 0000644 0001751 0001747 00000001356 14472046134 022672 0 ustar 00runner docker import os
import sys
PYTEST_LOADED = "pytest" in sys.modules
# this constant exists in service of the testsuite being able to forcibly disable the TOML
# loader
# the reason for this is that
# - toml loading is enabled on py3.11+ with 'tomllib'
# - on python < 3.11, toml loading is enabled with 'tomli'
# - on python < 3.11, *coverage requires tomli*
#
# the end result is that it is not possible without special trickery to measure coverage
# in the disabled TOML state
# in order to measure coverage, we need 'tomli', so we will include this "magical" test
# constant in order to "forcibly" disable the 'tomli' usage
FORCE_TOML_DISABLED = False
if PYTEST_LOADED and os.getenv("FORCE_TOML_DISABLED") == "1":
FORCE_TOML_DISABLED = True
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.0867715
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/ 0000755 0001751 0001747 00000000000 14472046153 023651 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/__init__.py 0000644 0001751 0001747 00000002776 14472046134 025775 0 ustar 00runner docker from __future__ import annotations
try:
# first, try to import the installed package version
import importlib_resources
except ImportError:
# if it's not installed, assume that the stdlib version is new enough (e.g. py3.10)
import importlib.resources as importlib_resources # type: ignore[no-redef]
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)
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.0867715
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/custom/ 0000755 0001751 0001747 00000000000 14472046153 025163 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/custom/__init__.py 0000644 0001751 0001747 00000000000 14472046134 027261 0 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000211 00000000000 010207 x ustar 00 115 path=check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/custom/github-workflows-require-timeout.json
22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/custom/github-workflows-require-timeout0000644 0001751 0001747 00000003235 14472046134 033563 0 ustar 00runner docker {
"$schema": "http://json-schema.org/draft-07/schema",
"$comment": "A schema which requires that github workflow jobs define job timeouts",
"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",
"type": "number",
"default": 360
}
},
"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
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1027715
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/ 0000755 0001751 0001747 00000000000 14472046153 025146 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/LICENSE.azure-pipelines 0000644 0001751 0001747 00000002212 14472046134 031262 0 ustar 00runner docker MIT License
Copyright (c) Microsoft Corporation. All rights reserved.
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
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/LICENSE.bitbucket-pipelines 0000644 0001751 0001747 00000002105 14472046134 032111 0 ustar 00runner docker MIT License
Copyright (c) Atlassian and others. All rights reserved.
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. ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/LICENSE.buildkite 0000644 0001751 0001747 00000002052 14472046134 030124 0 ustar 00runner docker MIT License
Copyright (c) 2018 Buildkite
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.
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/LICENSE.gitlab 0000644 0001751 0001747 00000003721 14472046134 027416 0 ustar 00runner docker Copyright (c) 2011-present GitLab B.V.
Portions of this software are licensed as follows:
* All content residing under the "doc/" directory of this repository is licensed under "Creative Commons: CC BY-SA 4.0 license".
* All content that resides under the "ee/" directory of this repository, if that directory exists, is licensed under the license defined in "ee/LICENSE".
* All content that resides under the "jh/" directory of this repository, if that directory exists, is licensed under the license defined in "jh/LICENSE".
* All client-side JavaScript (when served directly or after being compiled, arranged, augmented, or combined), is licensed under the "MIT Expat" license.
* All third party components incorporated into the GitLab Software are licensed under the original license provided by the owner of the applicable component.
* Content outside of the above mentioned directories or restrictions above is available under the "MIT Expat" license as defined below.
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.
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/LICENSE.readthedocs 0000644 0001751 0001747 00000002073 14472046134 030440 0 ustar 00runner docker Copyright (c) 2010-2021 Read the Docs, Inc. & contributors
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.
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/LICENSE.renovate 0000644 0001751 0001747 00000106205 14472046134 030000 0 ustar 00runner docker Renovate versions 12.0.0 (released 2018-04-09) and onwards are released
under the GNU Affero General Public License.
Renovate versions 11 and earlier were released under the MIT license
and therefore the MIT notice is retained in this file for that code only.
Both licenses are included below for reference:
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.
A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate. Many developers of free software are heartened and
encouraged by the resulting cooperation. However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.
The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community. It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server. Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.
An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals. This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU Affero General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Remote Network Interaction; Use with the GNU General Public License.
Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software. This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU Affero General Public License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU Affero General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU Affero General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
Copyright (C)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
Also add information on how to contact you by electronic and paper mail.
If your software can interact with users remotely through a computer
network, you should also make sure that it provides a way for users to
get its source. For example, if your program is a web application, its
interface could display a "Source" link that leads users to an archive
of the code. There are many ways you could offer source, and different
solutions will be better for different programs; see section 13 for the
specific requirements.
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU AGPL, see
.
MIT -- for code released prior to v12.0.0
---
Copyright (c) 2017 Rhys Arkins (rhys.arkins.net)
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.
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/LICENSE.schemastore 0000644 0001751 0001747 00000026136 14472046134 030476 0 ustar 00runner docker
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
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.
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/README.md 0000644 0001751 0001747 00000002074 14472046134 026427 0 ustar 00runner docker # 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 are provided for other sources as noted below.
### 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.
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/__init__.py 0000644 0001751 0001747 00000000000 14472046134 027244 0 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/azure-pipelines.json 0000644 0001751 0001747 00003653325 14472046134 031175 0 ustar 00runner docker {
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://github.com/Microsoft/azure-pipelines-vscode/blob/main/service-schema.json",
"$comment": "v1.219.1",
"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"
},
"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$"
}
]
},
"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"
},
"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"
},
"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"
},
"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",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"PowerShell@1"
]
},
{
"description": "Run a PowerShell script on Linux, macOS, or Windows",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"PowerShell@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",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"AzurePowerShell@2"
]
},
{
"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",
"doNotSuggest": false,
"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",
"doNotSuggest": false,
"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",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"Maven@4"
]
},
{
"description": "Build, test, and deploy with Apache Maven",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"Maven@3"
]
},
{
"description": "Build, test, and deploy with Apache Maven",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"Maven@2"
]
},
{
"description": "Build with Apache Maven",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"Maven@1"
]
},
{
"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, 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.",
"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",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"AzureRmWebAppDeployment@4"
]
},
{
"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@3"
]
},
{
"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",
"doNotSuggest": false,
"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",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"InstallAppleProvisioningProfile@0"
]
},
{
"description": "Install an Apple provisioning profile required to build on a macOS agent machine",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"InstallAppleProvisioningProfile@1"
]
},
{
"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",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"Docker@0"
]
},
{
"description": "Build, tag, push, or run Docker images, or run a Docker command",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"Docker@1"
]
},
{
"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": "Queue a job on a Jenkins server",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"JenkinsQueueJob@1"
]
},
{
"description": "Queue a job on a Jenkins server",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"JenkinsQueueJob@2"
]
},
{
"description": "Upload files using FTP",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"FtpUpload@2"
]
},
{
"description": "Upload files using FTP",
"doNotSuggest": false,
"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",
"doNotSuggest": false,
"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": "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": "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@2"
]
},
{
"description": "Update a function app with .NET, Python, JavaScript, PowerShell, Java based web applications",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"AzureFunctionApp@1"
]
},
{
"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",
"doNotSuggest": false,
"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": "Install a specified version of Duffle for installing and managing CNAB bundles",
"doNotSuggest": false,
"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": "Connect or disconnect an Azure virtual machine's network interface to a Load Balancer's back end address pool",
"doNotSuggest": false,
"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.",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"DockerCompose@0"
]
},
{
"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",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"Cache@2"
]
},
{
"description": "Cache files between runs",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"CacheBeta@0"
]
},
{
"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.",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"AzureContainerApps@0"
]
},
{
"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 with arguments",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"CmdLine@1"
]
},
{
"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": "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": "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": "Installs or restores missing NuGet packages. Use NuGetAuthenticate@0 task for latest capabilities.",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"NuGetInstaller@0"
]
},
{
"description": "Restores NuGet packages in preparation for a Visual Studio Build step.",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"NuGetRestore@1"
]
},
{
"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",
"doNotSuggest": false,
"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@1"
]
},
{
"description": "Publish test results to Azure Pipelines",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"PublishTestResults@2"
]
},
{
"description": "Copy files to Azure Blob Storage or virtual machines",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"AzureFileCopy@1"
]
},
{
"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",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"AzureFileCopy@5"
]
},
{
"description": "Copy files to Azure Blob Storage or virtual machines",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"AzureFileCopy@2"
]
},
{
"description": "Copy files to Azure Blob Storage or virtual machines",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"AzureFileCopy@3"
]
},
{
"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",
"doNotSuggest": false,
"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@2"
]
},
{
"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",
"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": "Update a function app with a Docker container",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"AzureFunctionAppContainer@1"
]
},
{
"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": [
"JavaToolInstallerTestVuln2@0"
]
},
{
"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@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": "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",
"deprecationMessage": "PublishPipelineArtifact is deprecated - Publish a local directory or file as a named artifact for the current pipeline",
"doNotSuggest": true,
"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",
"doNotSuggest": false,
"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",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"ServiceFabricComposeDeploy@0"
]
},
{
"description": "Sign and align Android APK files",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"AndroidSigning@2"
]
},
{
"description": "Sign and align Android APK files",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"AndroidSigning@3"
]
},
{
"description": "Sign and align Android APK files",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"AndroidSigning@1"
]
},
{
"description": "Download a named artifact from a pipeline to a local path",
"deprecationMessage": "DownloadPipelineArtifact is deprecated - Download a named artifact from a pipeline to a local path",
"doNotSuggest": true,
"ignoreCase": "value",
"enum": [
"DownloadPipelineArtifact@1"
]
},
{
"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": "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 tests with Visual Studio test runner",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"VSTest@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).",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"VSTest@2"
]
},
{
"description": "[PREVIEW] 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",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"AzureKeyVault@2"
]
},
{
"description": "Download Azure Key Vault secrets",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"AzureKeyVault@1"
]
},
{
"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",
"doNotSuggest": false,
"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": "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": "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",
"doNotSuggest": false,
"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",
"doNotSuggest": false,
"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",
"doNotSuggest": false,
"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 all the deployment scopes",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"AzureResourceManagerTemplateDeployment@3"
]
},
{
"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 a resource group and manage virtual machines",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"AzureResourceGroupDeployment@2"
]
},
{
"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": "Archive files using compression formats such as .7z, .rar, .tar.gz, and .zip.",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"ArchiveFiles@1"
]
},
{
"description": "Compress files into .7z, .tar.gz, or .zip",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"ArchiveFiles@2"
]
},
{
"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 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": "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": "Run your scripts and make changes to your Azure Database for MySQL",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"AzureMysqlDeployment@1"
]
},
{
"description": "Run an npm command. Use NpmAuthenticate@0 task for latest capabilities.",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"Npm@0"
]
},
{
"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": "[PREVIEW] Build and deploy an Azure Static Web App",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"AzureStaticWebApp@0"
]
},
{
"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": "Set up a Node.js environment and add it to the PATH, additionally providing proxy support",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"UseNode@1"
]
},
{
"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 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",
"doNotSuggest": false,
"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 Cloud 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",
"doNotSuggest": false,
"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.",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"AzureFunctionOnKubernetes@0"
]
},
{
"description": "Deploy Azure function to Kubernetes cluster.",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"AzureFunctionOnKubernetes@1"
]
},
{
"description": "Run a Bash script on macOS, Linux, or Windows",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"Bash@3"
]
},
{
"description": "Run a shell script using Bash",
"doNotSuggest": false,
"ignoreCase": "value",
"enum": [
"ShellScript@2"
]
},
{
"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": "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": "Deploy an Azure Cloud Service",
"doNotSuggest": false,
"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",
"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": "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": "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@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": []
}
},
"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@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": []
}
},
"doNotSuggest": false,
"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"
]
}
},
"doNotSuggest": false,
"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": {
"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@4$"
},
"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 built-in Maven feeds",
"ignoreCase": "key",
"aliases": [
"mavenFeedAuthenticate"
]
},
"effectivePomSkip": {
"type": "boolean",
"description": "Skip generating effective POM while authenticating built-in 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, 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 built-in Maven feeds",
"ignoreCase": "key",
"aliases": [
"mavenFeedAuthenticate"
]
},
"effectivePomSkip": {
"type": "boolean",
"description": "Skip generating effective POM while authenticating built-in 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, 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 built-in Maven 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": []
}
},
"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 (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, package, or publish a dotnet application, or run a custom dotnet command",
"ignoreCase": "value",
"pattern": "^DotNetCoreCLI@2$"
},
"inputs": {
"description": ".NET Core inputs",
"properties": {
"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)",
"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",
"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"
}
},
"additionalProperties": false,
"required": []
}
},
"doNotSuggest": false,
"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@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": "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@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"
]
}
},
"doNotSuggest": false,
"firstProperty": [
"task"
],
"required": [
"task",
"inputs"
]
},
{
"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 results\n\nPublish Cobertura or JaCoCo code coverage results from a build",
"ignoreCase": "value",
"pattern": "^PublishCodeCoverageResults@1$"
},
"inputs": {
"description": "Publish code coverage results 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"
]
}
},
"doNotSuggest": false,
"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",
"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": "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": "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": []
}
},
"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": "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": "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": "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": "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"
},
"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"
]
}
},
"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@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": {
"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": []
}
},
"doNotSuggest": false,
"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"
],
"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": {
"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": []
}
},
"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": {
"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": "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"
},
"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 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": {
"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|2.2",
"DOTNET|3.1",
"DOTNET|6.0",
"DOTNET-ISOLATED|7.0",
"JAVA|8",
"JAVA|11",
"NODE|8",
"NODE|10",
"NODE|12",
"NODE|14",
"NODE|16",
"NODE|18",
"PYTHON|3.6",
"PYTHON|3.7",
"PYTHON|3.8",
"PYTHON|3.9"
]
},
"appSettings": {
"type": "string",
"description": "App 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\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|2.2",
"DOTNET|3.1",
"DOTNET|6.0",
"JAVA|8",
"JAVA|11",
"NODE|8",
"NODE|10",
"NODE|12",
"NODE|14",
"NODE|16",
"PYTHON|3.6",
"PYTHON|3.7",
"PYTHON|3.8",
"PYTHON|3.9"
]
},
"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": "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": {
"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"
]
}
},
"doNotSuggest": false,
"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": "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": []
}
},
"doNotSuggest": false,
"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": "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"
]
}
},
"doNotSuggest": false,
"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": []
}
},
"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\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": "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"
]
}
},
"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"
},
"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 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": "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": "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\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",
"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": "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": []
}
},
"doNotSuggest": false,
"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 VSTS 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": []
}
},
"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": []
}
},
"doNotSuggest": false,
"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@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": "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"
},
"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": "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"
]
}
},
"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@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@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"
]
}
},
"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@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"
]
}
},
"doNotSuggest": false,
"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": {
"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"
}
},
"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": []
}
},
"doNotSuggest": false,
"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@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@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@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": "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": "Java tool installer test vuln 2\n\nAcquire a specific version of Java from a user-supplied Azure blob or the tool cache and sets JAVA_HOME",
"ignoreCase": "value",
"pattern": "^JavaToolInstallerTestVuln2@0$"
},
"inputs": {
"description": "Java tool installer test vuln 2 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"
},
"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": "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@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"
}
},
"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": "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"
]
}
},
"deprecationMessage": "PublishPipelineArtifact is deprecated - Publish a local directory or file as a named artifact for the current pipeline",
"doNotSuggest": true,
"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": []
}
},
"doNotSuggest": false,
"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"
]
}
},
"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": []
}
},
"doNotSuggest": false,
"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": "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": "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": []
}
},
"deprecationMessage": "DownloadPipelineArtifact is deprecated - Download a named artifact from a pipeline to a local path",
"doNotSuggest": true,
"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": "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 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": []
}
},
"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).",
"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": "Manual validation\n\n[PREVIEW] Pause 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@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": "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"
]
}
},
"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"
}
},
"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": []
}
},
"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@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 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": "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"
},
"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": []
}
},
"doNotSuggest": false,
"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": []
}
},
"doNotSuggest": false,
"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"
]
}
},
"doNotSuggest": false,
"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": "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"
}
},
"additionalProperties": false,
"required": [
"azureResourceManagerConnection"
]
}
},
"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": "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"
}
},
"additionalProperties": false,
"required": [
"azureSubscription",
"resourceGroupName"
]
}
},
"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\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": "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": "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 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": "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": "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\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": "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": "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"
}
},
"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"
}
},
"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"
}
},
"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 serailizer",
"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 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": []
}
},
"doNotSuggest": false,
"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"
},
"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"
},
"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 Cloud\n\nDeploy applications to Azure Spring Cloud and manage deployments.",
"ignoreCase": "value",
"pattern": "^AzureSpringCloud@0$"
},
"inputs": {
"description": "Azure Spring Cloud 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 Cloud 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",
"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"
}
},
"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"
]
}
},
"doNotSuggest": false,
"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"
}
},
"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"
]
}
},
"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@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": "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": "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": "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"
]
},
"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"
},
"FileCopyOptions": {
"type": "string",
"description": "File copy options",
"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 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": "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"
]
}
},
"doNotSuggest": false,
"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": {
"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"
]
}
]
}
}
} ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/azure-pipelines.sha256 0000644 0001751 0001747 00000000100 14472046134 031202 0 ustar 00runner docker e47013c02013c9ff0b4abb7dc8ff506c8d950b4f016c5bd0a19f066ddba80326 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/bamboo-spec.json 0000644 0001751 0001747 00000055173 14472046134 030242 0 ustar 00runner docker {
"$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
},
"other": {
"type": "object"
}
},
"title": "Bamboo CI Specification",
"type": "object"
}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/bamboo-spec.sha256 0000644 0001751 0001747 00000000100 14472046134 030255 0 ustar 00runner docker e1e83c1f89e5ebdf9b87edb34f1edd75e7cc84897a796ad0ad72c6a87d492cf5 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/bitbucket-pipelines.json 0000644 0001751 0001747 00000076332 14472046134 032015 0 ustar 00runner docker {
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://bitbucket.org/product/features/pipelines",
"title": "Bitbucket Pipelines Schema",
"type": "object",
"properties": {
"image": {
"$ref": "#/definitions/image",
"default": "atlassian/default-image:latest"
},
"clone": {
"$ref": "#/definitions/clone"
},
"options": {
"$ref": "#/definitions/options"
},
"definitions": {
"$ref": "#/definitions/definitions"
},
"pipelines": {
"$ref": "#/definitions/pipelines"
},
"export": {
"type": "boolean",
"title": "Enable pipelines config sharing",
"description": "Allows other Bitbucket repositories to import pipeline configurations from this file. A bitbucket-pipelines.yml can't contain both an `import` and an `export` property"
}
},
"additionalProperties": false,
"required": [
"pipelines"
],
"definitions": {
"pipelines": {
"type": "object",
"title": "Build pipelines",
"description": "The start of your pipelines definitions. Under this keyword you must define your build pipelines using at least one of the following:\n\n * default (for all branches that don't match any of the following)\n * branches (Git and Mercurial)\n * tags (Git)\n * bookmarks (Mercurial)",
"properties": {
"branches": {
"type": "object",
"title": "Branch-specific build pipelines",
"description": "Defines a section for all branch-specific build pipelines. The names or expressions in this section are matched against:\n\n * branches in your Git repository\n * named branches in your Mercurial repository\n\nYou can use glob patterns for handling the branch names.",
"additionalProperties": {
"anyOf": [
{
"$ref": "#/definitions/steps"
},
{
"$ref": "#/definitions/import"
}
]
},
"minProperties": 1
},
"bookmarks": {
"type": "object",
"title": "Bookmark-specific build pipelines (to be used in Mercurial repositories)",
"description": "Defines all bookmark-specific build pipelines. \n\nThe names or expressions in this section are matched against bookmarks in your Mercurial repository. \n\nYou can use glob patterns for handling the tag names.",
"additionalProperties": {
"anyOf": [
{
"$ref": "#/definitions/steps"
},
{
"$ref": "#/definitions/import"
}
]
},
"minProperties": 1
},
"custom": {
"type": "object",
"title": "Manually triggered build pipelines",
"description": "Defines pipelines that can only be triggered manually or scheduled from the Bitbucket Cloud interface.",
"additionalProperties": {
"anyOf": [
{
"$ref": "#/definitions/stepsWithVariables"
},
{
"$ref": "#/definitions/import"
}
]
},
"minProperties": 1
},
"tags": {
"type": "object",
"title": "Tag-specific build pipelines",
"description": "Defines all tag-specific build pipelines. \n\nThe names or expressions in this section are matched against tags and annotated tags in your Git repository. \n\nYou can use glob patterns for handling the tag names.",
"additionalProperties": {
"$ref": "#/definitions/steps"
},
"minProperties": 1
},
"pull-requests": {
"type": "object",
"title": "Pull-request-specific build pipelines",
"description": "A special pipeline which only runs on pull requests. Pull-requests has the same level of indentation as branches.\n\nThis type of pipeline runs a little differently to other pipelines. When it's triggered, we'll merge the destination branch into your working branch before it runs. If the merge fails we will stop the pipeline.",
"additionalProperties": {
"anyOf": [
{
"$ref": "#/definitions/steps"
},
{
"$ref": "#/definitions/import"
}
]
},
"minProperties": 1
},
"default": {
"title": "Default build pipeline for branches",
"description": "The default pipeline runs on every push to the repository, unless a branch-specific pipeline is defined. \nYou can define a branch pipeline in the branches section.\n\nNote: The default pipeline doesn't run on tags or bookmarks.",
"anyOf": [
{
"$ref": "#/definitions/steps"
},
{
"$ref": "#/definitions/import"
}
]
}
},
"additionalProperties": false
},
"import": {
"type": "object",
"properties": {
"import": {
"type": "string",
"pattern": "^[^:]+:[^:]+:[^:]+$",
"title": "Location to import pipelines config from",
"description": "The import needs to match the following format: {repo-slug|repo-uuid}:{tag|branch-name}:{pipeline-name}"
}
},
"additionalProperties": false
},
"stepsWithVariables": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"variables": {
"type": "array",
"description": "List of variables for the custom pipeline",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of a variable for the custom pipeline",
"minLength": 1
}
},
"additionalProperties": false
},
"minItems": 1
}
},
"additionalProperties": false
},
{
"type": "object",
"properties": {
"step": {
"$ref": "#/definitions/step"
}
},
"additionalProperties": false
},
{
"type": "object",
"properties": {
"parallel": {
"$ref": "#/definitions/parallel"
}
},
"additionalProperties": false
}
]
},
"minItems": 1
},
"steps": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"step": {
"$ref": "#/definitions/step"
}
},
"additionalProperties": false
},
{
"type": "object",
"properties": {
"parallel": {
"$ref": "#/definitions/parallel"
}
},
"additionalProperties": false
}
]
},
"minItems": 1
},
"step": {
"type": "object",
"title": "Build execution unit",
"description": "Define s a build execution unit. \n\nSteps are executed in the order that they appear in the bitbucket-pipelines.yml file. \nYou can use up to 10 steps in a pipeline.",
"properties": {
"name": {
"type": "string",
"title": "Name of the step",
"description": "You can add a name to a step to make displays and reports easier to read and understand.",
"minLength": 1
},
"runs-on": {
"$ref": "#/definitions/runs-on",
"description": "self-hosted runner labels"
},
"image": {
"$ref": "#/definitions/image"
},
"max-time": {
"$ref": "#/definitions/max-time"
},
"size": {
"$ref": "#/definitions/size"
},
"script": {
"$ref": "#/definitions/script",
"description": "Commands to execute in the step"
},
"after-script": {
"$ref": "#/definitions/script",
"title": "Commands to execute after the step succeeds or fails",
"description": "Commands inside an after-script section will run when the step succeeds or fails. This could be useful for clean up commands, test coverage, notifications, or rollbacks you might want to run, especially if your after-script uses the value of BITBUCKET_EXIT_CODE.\n\nNote: If any commands in the after-script section fail:\n\n* we won't run any more commands in that section\n\n* it will not effect the reported status of the step."
},
"artifacts": {
"oneOf": [
{
"type": "array",
"items": {
"type": "string",
"description": "Glob pattern for the path to the artifacts",
"minLength": 1
}
},
{
"type": "object",
"title": "Files produced by a step to share with a following step",
"description": "Defines files to be shared from one step to a later step in your pipeline. Artifacts can be defined using glob patterns.",
"properties": {
"download": {
"type": "boolean",
"description": "Indicates whether to download artifact in the step"
},
"paths": {
"type": "array",
"items": {
"type": "string",
"description": "Glob pattern for the path to the artifacts",
"minLength": 1
}
}
},
"required": [
"paths"
],
"minItems": 1
}
]
},
"caches": {
"type": "array",
"description": "Caches enabled for the step",
"items": {
"type": "string",
"description": "Name of the cache",
"minLength": 1
},
"minItems": 1
},
"clone": {
"$ref": "#/definitions/clone"
},
"services": {
"type": "array",
"description": "Services enabled for the step",
"items": {
"type": "string",
"description": "Name of the service",
"minLength": 1
},
"minItems": 1,
"maxItems": 5
},
"trigger": {
"type": "string",
"title": "Step trigger type",
"description": "Specifies whether a step will run automatically or only after someone manually triggers it. You can define the trigger type as manual or automatic. If the trigger type is not defined, the step defaults to running automatically. The first step cannot be manual. If you want to have a whole pipeline only run from a manual trigger then use a custom pipeline.",
"enum": [
"automatic",
"manual"
],
"default": "automatic"
},
"deployment": {
"type": "string",
"title": "Type of environment for the deployment step",
"description": "Sets the type of environment for your deployment step, used in the Deployments dashboard.",
"minLength": 1
},
"condition": {
"type": "object",
"title": "Execute step when only condition is satisfied",
"description": "Allows for steps to execute when certain conditions or rules are satisfied",
"properties": {
"changesets": {
"type": "object",
"properties": {
"includePaths": {
"type": "array",
"title": "List of paths for changeset condition."
}
}
}
}
}
},
"required": [
"script"
],
"additionalProperties": false
},
"parallel": {
"type": "array",
"title": "Set of steps to run concurrently",
"description": "Parallel steps enable you to build and test faster, by running a set of steps at the same time.\n\nThe total number of build minutes used by a pipeline will not change if you make the steps parallel, but you'll be able to see the results sooner.\n\nThere is a limit of 10 for the total number of steps you can run in a pipeline, regardless of whether they are running in parallel or serial.",
"items": {
"type": "object",
"properties": {
"step": {
"$ref": "#/definitions/step"
}
},
"additionalProperties": false
},
"minItems": 2
},
"script": {
"description": "Contains a list of commands that are executed in sequence. \n\nScripts are executed in the order in which they appear in a step. \n\nWe recommend that you move large scripts to a separate script file and call it from the bitbucket-pipelines.yml.",
"type": "array",
"items": {
"oneOf": [
{
"type": "string",
"description": "Command to execute",
"minLength": 1
},
{
"$ref": "#/definitions/pipe"
}
]
},
"minItems": 1
},
"runs-on": {
"description": "self-hosted runner labels",
"type": "array",
"items": {
"type": "string",
"description": "self-hosted runner label",
"minLength": 1
}
},
"pipe": {
"type": "object",
"title": "Pipe to execute",
"description": "Pipes make complex tasks easier, by doing a lot of the work behind the scenes.\nThis means you can just select which pipe you want to use, and supply the necessary variables.\nYou can look at the repository for the pipe to see what commands it is running.\n\nLearn more about pipes: https://confluence.atlassian.com/bitbucket/pipes-958765631.html",
"properties": {
"pipe": {
"type": "string",
"title": "Pipe identifier",
"description": "Pipes make complex tasks easier, by doing a lot of the work behind the scenes.\nThis means you can just select which pipe you want to use, and supply the necessary variables.\nYou can look at the repository for the pipe to see what commands it is running.\n\nLearn more about pipes: https://confluence.atlassian.com/bitbucket/pipes-958765631.html",
"minLength": 1
},
"variables": {
"type": "object",
"description": "Environment variables passed to the pipe",
"additionalProperties": {
"type": "string",
"description": "Environment variable value",
"minLength": 1
},
"minProperties": 1
}
},
"required": [
"pipe"
],
"additionalProperties": false
},
"definitions": {
"type": "object",
"title": "Defines resources used elsewhere in the pipeline configuration",
"description": "Define resources used elsewhere in your pipeline configuration. \nResources can include:\n\n* services that run in separate Docker containers – see https://confluence.atlassian.com/x/gC8kN\n\n* caches – see https://confluence.atlassian.com/x/bA1hNQ#Cachingdependencies-custom-caches\n\n* YAML anchors - a way to define a chunk of your yaml for easy re-use - see https://confluence.atlassian.com/bitbucket/yaml-anchors-960154027.html",
"properties": {
"services": {
"$ref": "#/definitions/services"
},
"caches": {
"$ref": "#/definitions/caches"
},
"pipelines": {
"$ref": "#/definitions/pipelinesUnderDefinitions"
}
}
},
"pipelinesUnderDefinitions": {
"type": "object",
"title": "Pipeline definitions that are defined to be used elsewhere",
"description": "Defines pipelines that can be used under root level pipelines section.",
"additionalProperties": {
"anyOf": [
{
"$ref": "#/definitions/stepsWithVariables"
}
]
},
"minProperties": 1
},
"services": {
"type": "object",
"title": "Defines services that run in separate Docker containers",
"description": "Rather than trying to build all the resources you might need into one large image, we can spin up separate docker containers for services. This will tend to speed up the build, and makes it very easy to change a single service without having to redo your whole image.",
"additionalProperties": {
"type": "object",
"properties": {
"image": {
"$ref": "#/definitions/image"
},
"variables": {
"type": "object",
"description": "Environment variables passed to the service container",
"additionalProperties": {
"type": "string",
"description": "Environment variable value",
"minLength": 1
},
"minProperties": 1
},
"memory": {
"type": "integer",
"description": "Memory limit for the service container, in megabytes",
"minimum": 128,
"default": 1024
}
}
}
},
"cache-key-files": {
"type": "array",
"title": "Cache key",
"description": "Checksum of these file paths will be used to generate the cache key",
"items": {
"type": "string",
"description": "Glob pattern for the cache key files",
"minLength": 1
}
},
"caches": {
"type": "object",
"title": "Defines custom caches to be used by pipelines.",
"description": "Caching build dependencies and directories enables faster builds and reduces the number of consumed build minutes.\n\nLearn more about caches: https://support.atlassian.com/bitbucket-cloud/docs/cache-dependencies",
"patternProperties": {
"^(?!-)[-a-z0-9]{0,49}[a-z0-9]$": {
"oneOf": [
{
"type": "string",
"title": "Path to the directory to be cached",
"description": "Path to the directory to be cached, can be absolute or relative to the clone directory",
"minLength": 1
},
{
"type": "object",
"title": "Caches",
"description": "Cache name",
"minLength": 2,
"properties": {
"key": {
"type": "object",
"title": "Cache key",
"description": "Checksum of these file paths will be used to generate the cache key",
"properties": {
"files": {
"$ref": "#/definitions/cache-key-files"
}
}
},
"path": {
"type": "string",
"title": "Cache path",
"description": "Path to the directory to be cached, can be absolute or relative to the clone directory",
"minLength": 1
}
},
"required": [
"key",
"path"
],
"additionalProperties": false
}
]
}
},
"not": {
"required": [
"docker"
]
},
"additionalProperties": false
},
"options": {
"type": "object",
"title": "Global settings that apply to all pipelines",
"description": "Contains global settings that apply to all your pipelines. The main keyword you'd use here is max-time.",
"properties": {
"docker": {
"type": "boolean",
"description": "A flag to add Docker to all build steps in all pipelines"
},
"max-time": {
"$ref": "#/definitions/max-time"
},
"size": {
"$ref": "#/definitions/size"
}
},
"additionalProperties": false
},
"max-time": {
"type": "integer",
"description": "Maximum amount of minutes a step can execute",
"minimum": 1,
"maximum": 120,
"default": 120
},
"size": {
"type": "string",
"title": "Multiplier of the resources allocated to a pipeline step",
"description": "You can allocate additional resources to a step, or to the whole pipeline. \nBy specifying the size of 2x, you'll have double the resources available (eg. 4GB memory → 8GB memory).\n\nAt this time, valid sizes are 1x and 2x.",
"enum": [
"1x",
"2x"
],
"default": "1x"
},
"clone": {
"type": "object",
"title": "Contains settings to clone the repository into a container",
"description": "Contains settings for when we clone your repository into a container. Settings here include:\n\n* lfs - Support for Git lfs\n\n* depth - the depth of the Git clone.",
"properties": {
"depth": {
"description": "Depth of Git clones for all pipelines (supported only for Git repositories)",
"oneOf": [
{
"type": "integer",
"minimum": 1
},
{
"const": "full"
}
],
"default": 50
},
"enabled": {
"type": "boolean",
"description": "Enables cloning of the repository",
"default": true
},
"lfs": {
"type": "boolean",
"description": "Enables the download of LFS files in the clone (supported only for Git repositories)",
"default": false
}
},
"additionalProperties": false
},
"runAsUser": {
"type": "integer",
"title": "The UID of a user in the docker image to run as",
"description": "Overrides image's default user, specified user UID must be an existing user in the image with a valid home directory"
},
"simpleImage": {
"type": "string",
"title": "Name of the Docker image which may or may not include registry URL, tag, and digest value",
"description": "The Docker container to run your builds.\n\nsee: https://confluence.atlassian.com/x/kYU5Lw for details",
"minLength": 1
},
"imageWithCustomUser": {
"type": "object",
"properties": {
"name": {
"$ref": "#/definitions/simpleImage"
},
"run-as-user": {
"$ref": "#/definitions/runAsUser"
}
},
"required": [
"name"
],
"additionalProperties": false
},
"privateImage": {
"type": "object",
"description": "A docker image hosted in a private repository",
"properties": {
"name": {
"$ref": "#/definitions/simpleImage"
},
"username": {
"type": "string",
"description": "Username to use to fetch the Docker image",
"minLength": 1
},
"password": {
"type": "string",
"description": "Password to use to fetch the Docker image",
"minLength": 1
},
"email": {
"type": "string",
"description": "Email to use to fetch the Docker image",
"format": "email",
"minLength": 1
},
"run-as-user": {
"$ref": "#/definitions/runAsUser"
}
},
"required": [
"name",
"username",
"password"
],
"additionalProperties": false
},
"awsImage": {
"type": "object",
"description": "A docker image hosted by AWS ECR",
"properties": {
"name": {
"$ref": "#/definitions/simpleImage"
},
"aws": {
"type": "object",
"description": "AWS credentials",
"properties": {
"access-key": {
"type": "string",
"description": "AWS Access Key",
"minLength": 1
},
"secret-key": {
"type": "string",
"description": "AWS Secret Key",
"minLength": 1
}
},
"required": [
"access-key",
"secret-key"
],
"additionalProperties": false
},
"run-as-user": {
"$ref": "#/definitions/runAsUser"
}
},
"required": [
"name",
"aws"
],
"additionalProperties": false
},
"image": {
"oneOf": [
{
"$ref": "#/definitions/simpleImage"
},
{
"$ref": "#/definitions/imageWithCustomUser"
},
{
"$ref": "#/definitions/privateImage"
},
{
"$ref": "#/definitions/awsImage"
}
]
}
}
} ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/bitbucket-pipelines.sha256 0000644 0001751 0001747 00000000100 14472046134 032030 0 ustar 00runner docker 959c8b28a5268492b6de046e4cca256c98f8ccb08ee76094f6734c3284570cb6 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/buildkite.json 0000644 0001751 0001747 00000120163 14472046134 030017 0 ustar 00runner docker {
"title": "JSON schema for Buildkite pipeline configuration files",
"$schema": "http://json-schema.org/draft-06/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"
],
"definitions": {
"commonOptions": {
"allowDependencyFailure": {
"type": "boolean",
"description": "Whether to proceed with this step and further steps if a step named in the depends_on attribute fails",
"default": false
},
"agents": {
"oneOf": [
{ "$ref": "#/definitions/commonOptions/agentsObject" },
{ "$ref": "#/definitions/commonOptions/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": "number"
}
]
},
"limit": {
"type": "integer",
"description": "The number of times this job can be retried",
"minimum": 1,
"maximum": 10
},
"signal": {
"description": "The exit signal, if any, that may be retried",
"type": "string",
"examples": [
"*",
"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"
]
}
},
"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/*" ]
]
},
"cancelOnBuildFailing": {
"type": "boolean",
"description": "Whether to cancel the job as soon as the build is marked as failing",
"default": false
},
"dependsOn": {
"description": "The step keys for a step to depend on",
"anyOf": [
{"type": "null"},
{"type": "string"},
{
"type": "array",
"items": {
"anyOf": [
{"type": "string"},
{
"type": "object",
"properties": {
"step": { "type": "string" },
"allow_failure": {
"type": "boolean",
"default": false
}
},
"additionalProperties": false
}
]
}
}
]
},
"env": {
"type": "object",
"description": "Environment variables for this step",
"examples": [
{ "NODE_ENV": "test" }
]
},
"identifier": {
"type": "string",
"description": "A string identifier",
"examples": [ "an-id" ]
},
"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" ]
},
"label": {
"type": "string",
"description": "The label that will be displayed in the pipeline visualisation in Buildkite. Supports emoji.",
"examples": [ ":docker: Build" ]
},
"buildNotify": {
"type": "array",
"description": "Array of notification options for this step",
"items": {
"oneOf": [
{
"type": "string",
"enum": ["github_check", "github_commit_status"]
},
{
"type": "object",
"properties": {
"email": {
"type": "string"
},
"if": {
"$ref": "#/definitions/commonOptions/if"
}
},
"additionalProperties": false
},
{
"type": "object",
"properties": {
"basecamp_campfire": {
"type": "string"
},
"if": {
"$ref": "#/definitions/commonOptions/if"
}
},
"additionalProperties": false
},
{
"type": "object",
"properties": {
"slack": {
"oneOf": [
{
"type": "string"
},
{
"type": "object",
"properties": {
"channels": {
"type": "array",
"items": {
"type": "string"
}
},
"message": {
"type": "string"
}
}
}
]
},
"if": {
"$ref": "#/definitions/commonOptions/if"
}
},
"additionalProperties": false
},
{
"type": "object",
"properties": {
"webhook": {
"type": "string"
},
"if": {
"$ref": "#/definitions/commonOptions/if"
}
},
"additionalProperties": false
},
{
"type": "object",
"properties": {
"pagerduty_change_event": {
"type": "string"
},
"if": {
"$ref": "#/definitions/commonOptions/if"
}
},
"additionalProperties": false
},
{
"type": "object",
"properties": {
"github_commit_status": {
"type": "object",
"properties": {
"context": {
"description": "GitHub commit status name",
"type": "string"
}
}
},
"if": {
"$ref": "#/definitions/commonOptions/if"
}
},
"additionalProperties": false
},
{
"type": "object",
"properties": {
"github_check": {
"type": "object",
"properties": {
"context": {
"description": "GitHub commit status name",
"type": "string"
}
}
},
"if": {
"$ref": "#/definitions/commonOptions/if"
}
},
"additionalProperties": false
}
]
}
},
"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:"
]
},
"required": {
"type": "boolean",
"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": {
"type": "boolean",
"description": "Whether more than one option may be selected",
"default": false
},
"options": {
"type": "array",
"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": {
"type": "boolean",
"default": true,
"description": "Whether the field is required for form submission"
}
},
"additionalProperties": false,
"required": [
"label",
"value"
]
}
},
"required": {
"type": "boolean",
"default": true,
"description": "Whether the field is required for form submission"
}
},
"additionalProperties": false,
"required": [
"key",
"options"
]
}
]
}
},
"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" }
],
"description": "Whether this step should be skipped. You can specify a reason for using a string.",
"examples": [
true,
false,
"My reason"
]
},
"softFail": {
"description": "The conditions for marking the step as a soft-fail.",
"anyOf": [
{
"type": "boolean"
},
{
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"exit_status": {
"description": "The exit status number that will cause this job to soft-fail",
"anyOf": [
{
"type": "string",
"enum": [ "*" ]
},
{
"type": "number"
}
]
}
}
}
]
}
}
]
}
},
"blockStep": {
"type": "object",
"properties": {
"allow_dependency_failure": {
"$ref": "#/definitions/commonOptions/allowDependencyFailure"
},
"block": {
"type": "string",
"description": "The label of the block step"
},
"blocked_state": {
"type": "string",
"description": "The state that the build is set to when the build is blocked by this block step",
"enum": [ "passed", "failed", "running" ]
},
"branches": {
"$ref": "#/definitions/commonOptions/branches"
},
"depends_on": {
"$ref": "#/definitions/commonOptions/dependsOn"
},
"fields": {
"$ref": "#/definitions/commonOptions/fields"
},
"id": {
"$ref": "#/definitions/commonOptions/identifier"
},
"identifier": {
"$ref": "#/definitions/commonOptions/identifier"
},
"if": {
"$ref": "#/definitions/commonOptions/if"
},
"key": {
"$ref": "#/definitions/commonOptions/key"
},
"label": {
"$ref": "#/definitions/commonOptions/label"
},
"name": {
"$ref": "#/definitions/commonOptions/label"
},
"prompt": {
"$ref": "#/definitions/commonOptions/prompt"
},
"type": {
"type": "string",
"enum": [ "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/commonOptions/allowDependencyFailure"
},
"input": {
"type": "string",
"description": "The label of the input step"
},
"branches": {
"$ref": "#/definitions/commonOptions/branches"
},
"depends_on": {
"$ref": "#/definitions/commonOptions/dependsOn"
},
"fields": {
"$ref": "#/definitions/commonOptions/fields"
},
"id": {
"$ref": "#/definitions/commonOptions/identifier"
},
"identifier": {
"$ref": "#/definitions/commonOptions/identifier"
},
"if": {
"$ref": "#/definitions/commonOptions/if"
},
"key": {
"$ref": "#/definitions/commonOptions/key"
},
"label": {
"$ref": "#/definitions/commonOptions/label"
},
"name": {
"$ref": "#/definitions/commonOptions/label"
},
"prompt": {
"$ref": "#/definitions/commonOptions/prompt"
},
"type": {
"type": "string",
"enum": [ "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/commonOptions/agents"
},
"allow_dependency_failure": {
"$ref": "#/definitions/commonOptions/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/commonOptions/branches"
},
"cancel_on_build_failing": {
"$ref": "#/definitions/commonOptions/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/commonOptions/dependsOn"
},
"env": {
"$ref": "#/definitions/commonOptions/env"
},
"id": {
"$ref": "#/definitions/commonOptions/identifier"
},
"identifier": {
"$ref": "#/definitions/commonOptions/identifier"
},
"if": {
"$ref": "#/definitions/commonOptions/if"
},
"key": {
"$ref": "#/definitions/commonOptions/key"
},
"label": {
"$ref": "#/definitions/commonOptions/label"
},
"matrix": {
"oneOf": [
{
"type": "array",
"description": "List of elements for simple single-dimension Build Matrix",
"items": { "$ref": "#/definitions/commonOptions/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/commonOptions/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/commonOptions/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/commonOptions/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/commonOptions/skip"
},
"soft_fail": {
"$ref": "#/definitions/commonOptions/softFail"
}
},
"required": ["with"]
}
}
},
"required": ["setup"]
}
]
},
"name": {
"$ref": "#/definitions/commonOptions/label"
},
"notify": {
"type": "array",
"description": "Array of notification options for this step",
"items": {
"oneOf": [
{
"type": "string",
"enum": ["github_check", "github_commit_status"]
},
{
"type": "object",
"properties": {
"basecamp_campfire": {
"type": "string"
},
"if": {
"$ref": "#/definitions/commonOptions/if"
}
},
"additionalProperties": false
},
{
"type": "object",
"properties": {
"slack": {
"oneOf": [
{
"type": "string"
},
{
"type": "object",
"properties": {
"channels": {
"type": "array",
"items": {
"type": "string"
}
},
"message": {
"type": "string"
}
}
}
]
},
"if": {
"$ref": "#/definitions/commonOptions/if"
}
},
"additionalProperties": false
},
{
"type": "object",
"properties": {
"github_commit_status": {
"type": "object",
"properties": {
"context": {
"description": "GitHub commit status name",
"type": "string"
}
}
},
"if": {
"$ref": "#/definitions/commonOptions/if"
}
},
"additionalProperties": false
},
{
"type": "object",
"properties": {
"github_check": {
"type": "object",
"properties": {
"context": {
"description": "GitHub commit status name",
"type": "string"
}
}
},
"if": {
"$ref": "#/definitions/commonOptions/if"
}
},
"additionalProperties": false
}
]
}
},
"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."
}
]
},
"soft_fail": {
"$ref": "#/definitions/commonOptions/softFail"
},
"retry": {
"type": "object",
"description": "The conditions for retrying this step.",
"properties": {
"automatic": {
"anyOf": [
{
"type": "boolean"
},
{
"$ref": "#/definitions/commonOptions/automaticRetry"
},
{
"type": "array",
"items": {
"$ref": "#/definitions/commonOptions/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": [
{
"type": "boolean"
},
{
"type": "object",
"properties": {
"allowed": {
"type": "boolean",
"description": "Whether or not this job can be retried manually",
"default": true
},
"permit_on_passed": {
"type": "boolean",
"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
}
]
}
}
},
"skip": {
"$ref": "#/definitions/commonOptions/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/commonOptions/allowDependencyFailure"
},
"continue_on_failure": {
"description": "Continue to the next steps, even if the previous group of steps fail",
"type": "boolean"
},
"depends_on": {
"$ref": "#/definitions/commonOptions/dependsOn"
},
"id": {
"$ref": "#/definitions/commonOptions/identifier"
},
"identifier": {
"$ref": "#/definitions/commonOptions/identifier"
},
"if": {
"$ref": "#/definitions/commonOptions/if"
},
"key": {
"$ref": "#/definitions/commonOptions/key"
},
"type": {
"type": "string",
"enum": [ "wait", "waiter" ]
},
"wait": {
"description": "Waits for previous steps to pass before continuing",
"anyOf": [
{ "type": "null" },
{ "type": "string", "enum": [ "" ] }
]
},
"waiter": {
"anyOf": [
{ "type": "null" },
{ "type": "string", "enum": [ "" ] }
]
}
},
"additionalProperties": false
},
"nestedWaitStep": {
"type": "object",
"properties": {
"wait": {
"description": "Waits for previous steps to pass before continuing",
"$ref": "#/definitions/waitStep"
},
"waiter": {
"$ref": "#/definitions/waitStep"
}
},
"additionalProperties": false
},
"triggerStep": {
"type": "object",
"properties": {
"allow_dependency_failure": {
"$ref": "#/definitions/commonOptions/allowDependencyFailure"
},
"async": {
"type": "boolean",
"default": false,
"description": "Whether to continue the build without waiting for the triggered step to complete"
},
"branches": {
"$ref": "#/definitions/commonOptions/branches"
},
"build": {
"type": "object",
"description": "Properties of the build that will be created when the step is triggered",
"properties": {
"branch": {
"type": "string",
"description": "The branch for the build",
"default": "master",
"examples": [
"master",
"feature/xyz"
]
},
"commit": {
"type": "string",
"description": "The commit hash for the build",
"default": "HEAD",
"examples": [
"HEAD",
"b5fb108"
]
},
"env": {
"$ref": "#/definitions/commonOptions/env"
},
"label": {
"$ref": "#/definitions/commonOptions/label"
},
"name": {
"$ref": "#/definitions/commonOptions/label"
},
"message": {
"type": "string",
"description": "The message for the build (supports emoji)",
"default": "The label of the trigger step",
"examples": [
"Deployment 123 :rocket:"
]
},
"meta_data": {
"type": "object",
"description": "Meta-data for the build",
"examples": [
{ "server": "i-b244e37160c" }
]
},
"trigger": {
"type": "string",
"description": "The slug of the pipeline to create a build",
"examples": [
"myapp-deploy"
]
},
"type": {
"type": "string",
"enum": [ "trigger" ]
}
},
"additionalProperties": false
},
"depends_on": {
"$ref": "#/definitions/commonOptions/dependsOn"
},
"id": {
"$ref": "#/definitions/commonOptions/identifier"
},
"identifier": {
"$ref": "#/definitions/commonOptions/identifier"
},
"if": {
"$ref": "#/definitions/commonOptions/if"
},
"key": {
"$ref": "#/definitions/commonOptions/key"
},
"label": {
"$ref": "#/definitions/commonOptions/label"
},
"name": {
"$ref": "#/definitions/commonOptions/label"
},
"type": {
"type": "string",
"enum": [ "trigger" ]
},
"trigger": {
"type": "string",
"description": "The slug of the pipeline to create a build"
},
"skip": {
"$ref": "#/definitions/commonOptions/skip"
},
"soft_fail": {
"$ref": "#/definitions/commonOptions/softFail"
}
},
"additionalProperties": false
},
"nestedTriggerStep": {
"type": "object",
"properties": {
"trigger": {
"$ref": "#/definitions/triggerStep"
}
},
"additionalProperties": false
},
"groupStep": {
"properties": {
"depends_on": {
"$ref": "#/definitions/commonOptions/dependsOn"
},
"group": {
"type": "string",
"description": "The name to give to this group of steps",
"examples": [ "Tests" ]
},
"id": {
"$ref": "#/definitions/commonOptions/identifier"
},
"identifier": {
"$ref": "#/definitions/commonOptions/identifier"
},
"if": {
"$ref": "#/definitions/commonOptions/if"
},
"key": {
"$ref": "#/definitions/commonOptions/key"
},
"label": {
"$ref": "#/definitions/groupStep/properties/group"
},
"name": {
"$ref": "#/definitions/groupStep/properties/label"
},
"steps": {
"type": "array",
"description": "A list of steps",
"items": {
"anyOf": [
{ "$ref": "#/definitions/stringBlockStep" },
{ "$ref": "#/definitions/blockStep" },
{ "$ref": "#/definitions/commandStep" },
{ "$ref": "#/definitions/nestedCommandStep" },
{ "$ref": "#/definitions/triggerStep" },
{ "$ref": "#/definitions/nestedTriggerStep" },
{ "$ref": "#/definitions/stringInputStep" },
{ "$ref": "#/definitions/inputStep" },
{ "$ref": "#/definitions/nestedInputStep" },
{ "$ref": "#/definitions/stringWaitStep" },
{ "$ref": "#/definitions/waitStep" },
{ "$ref": "#/definitions/nestedWaitStep" }
]
},
"minSize": 1
},
"type": {
"type": "string",
"enum": [ "group" ]
}
},
"additionalProperties": false
}
},
"properties": {
"env": {
"$ref": "#/definitions/commonOptions/env"
},
"agents": {
"$ref": "#/definitions/commonOptions/agents"
},
"notify": {
"$ref": "#/definitions/commonOptions/buildNotify"
},
"steps": {
"description": "A list of steps",
"type": "array",
"items": {
"anyOf": [
{ "$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/stringWaitStep" },
{ "$ref": "#/definitions/waitStep" },
{ "$ref": "#/definitions/nestedWaitStep" },
{ "$ref": "#/definitions/triggerStep" },
{ "$ref": "#/definitions/nestedTriggerStep" },
{ "$ref": "#/definitions/groupStep" }
]
}
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/buildkite.sha256 0000644 0001751 0001747 00000000100 14472046134 030042 0 ustar 00runner docker 83e261dd2db147cd37fa931243e523199a37f1458ef67d8bc3b5e31c85ec1c4c ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/dependabot.json 0000644 0001751 0001747 00000027223 14472046134 030153 0 ustar 00runner docker {
"$schema": "http://json-schema.org/draft-04/schema#",
"additionalProperties": false,
"definitions": {
"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"
]
}
},
"insecure-external-code-execution": {
"type": "string",
"enum": ["allow", "deny"]
},
"versioning-strategy": {
"type": "string",
"enum": [
"lockfile-only",
"auto",
"widen",
"increase",
"increase-if-necessary"
],
"x-intellij-enum-metadata": {
"lockfile-only": {
"description": "Only create pull requests to update lockfiles updates. Ignore any new versions that would require package manifest changes."
},
"auto": {
"description": "Follow the default strategy described above."
},
"widen": {
"description": "Relax the version requirement to include both the new and old version, when possible."
},
"increase": {
"description": "Always increase the version requirement to match the new version."
},
"increase-if-necessary": {
"description": "Increase the version requirement only when required by the new version."
}
}
},
"package-ecosystem": {
"type": "string",
"enum": [
"bundler",
"cargo",
"composer",
"docker",
"elm",
"gitsubmodule",
"github-actions",
"gomod",
"gradle",
"maven",
"mix",
"npm",
"nuget",
"pip",
"pub",
"terraform"
]
},
"schedule-day": {
"type": "string",
"enum": [
"monday",
"tuesday",
"wednesday",
"thursday",
"friday",
"saturday",
"sunday"
]
},
"schedule-interval": {
"type": "string",
"enum": ["daily", "weekly", "monthly"]
},
"update": {
"type": "object",
"properties": {
"allow": {
"description": "Customize which updates are allowed",
"type": "array",
"items": {
"type": "object",
"properties": {
"dependency-name": {
"type": "string"
},
"dependency-type": {
"$ref": "#/definitions/dependency-type"
}
}
}
},
"assignees": {
"description": "Assignees to set on pull requests",
"type": "array",
"items": {
"type": "string"
},
"minimum": 1
},
"commit-message": {
"description": "Commit message preferences",
"type": "object",
"properties": {
"prefix": {
"type": "string"
},
"prefix-development": {
"type": "string"
},
"include": {
"type": "string",
"enum": ["scope"],
"default": "scope"
}
}
},
"directory": {
"description": "Location of package manifests",
"type": "string",
"default": "/"
},
"ignore": {
"description": "Ignore certain dependencies or versions",
"type": "array",
"items": {
"type": "object",
"properties": {
"dependency-name": {
"type": "string"
},
"update-types": {
"$ref": "#/definitions/update-types"
},
"versions": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
},
"insecure-external-code-execution": {
"description": "Allow or deny code execution in manifest files",
"$ref": "#/definitions/insecure-external-code-execution"
},
"labels": {
"description": "Labels to set on pull requests",
"type": "array",
"items": {
"type": "string"
},
"default": ["dependencies"]
},
"milestone": {
"description": "Milestone to set on pull requests",
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"open-pull-requests-limit": {
"description": "Limit number of open pull requests for version updates",
"type": "integer",
"default": 5
},
"package-ecosystem": {
"description": "Package manager to use",
"$ref": "#/definitions/package-ecosystem"
},
"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"]
},
"rebase-strategy": {
"description": "Disable automatic rebasing",
"type": "string",
"enum": ["auto", "disabled"],
"default": "auto"
},
"reviewers": {
"type": "array",
"items": {
"type": "string"
},
"description": "Reviewers to set on pull requests",
"minimum": 1
},
"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)"
},
"timezone": {
"type": "string",
"description": "The time zone identifier must be from the Time Zone database maintained by IANA",
"default": "05:00 UTC"
}
}
},
"target-branch": {
"type": "string",
"description": "Branch to create pull requests against"
},
"vendor": {
"description": "Update vendored or cached dependencies",
"type": "boolean"
},
"versioning-strategy": {
"description": "How to update manifest version requirements",
"$ref": "#/definitions/versioning-strategy"
}
},
"required": ["package-ecosystem", "directory", "schedule"]
},
"registry": {
"type": "object",
"title": "registries",
"description": "The top-level registries key is optional. It allows you to specify authentication details that Dependabot can use to access private package registries.",
"additionalProperties": false,
"patternProperties": {
".*": {
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"description": "Identifies the type of registry.",
"enum": [
"composer-repository",
"docker-registry",
"git",
"hex-organization",
"hex-repository",
"maven-repository",
"npm-registry",
"nuget-feed",
"python-index",
"rubygems-server",
"terraform-registry"
]
},
"url": {
"description": "The URL to use to access the dependencies in this registry. The protocol is optional. If not specified, https:// is assumed. Dependabot adds or ignores trailing slashes as required.",
"type": "string"
},
"username": {
"description": "The username that Dependabot uses to access the registry.",
"type": "string"
},
"password": {
"description": "A reference to a Dependabot secret containing the password for the specified user.",
"type": "string"
},
"key": {
"description": "A reference to a Dependabot secret containing an access key for this registry.",
"type": "string"
},
"token": {
"description": "A reference to a Dependabot secret containing an access token for this registry.",
"type": "string"
},
"replaces-base": {
"description": "For registries with type: python-index, if the boolean value is true, pip resolves dependencies by using the specified URL rather than the base URL of the Python Package Index (by default https://pypi.org/simple).",
"type": "boolean"
},
"organization": {
"description": "",
"type": "string"
},
"repo": {
"description": "",
"type": "string"
},
"auth-key": {
"description": "",
"type": "string"
},
"public-key-fingerprint": {
"description": "",
"type": "string"
}
},
"required": ["type"]
}
}
}
},
"id": "https://json.schemastore.org/dependabot-2.0.json",
"properties": {
"version": {
"anyOf": [
{
"type": "string",
"default": "2"
},
{
"type": "integer",
"default": 2
}
]
},
"enable-beta-ecosystems": {
"description": "Enable ecosystems that have beta-level support",
"type": "boolean"
},
"updates": {
"type": "array",
"items": {
"title": "Package Ecosystem",
"description": "Element for each one package manager that you want GitHub Dependabot to monitor for new versions",
"$ref": "#/definitions/update"
}
},
"registries": {
"type": "object",
"$ref": "#/definitions/registry"
}
},
"required": ["version", "updates"],
"title": "GitHub Dependabot v2 config",
"type": "object"
}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/dependabot.sha256 0000644 0001751 0001747 00000000100 14472046134 030173 0 ustar 00runner docker dfbd8f86b013120a07c3200962189c8bb8b8c77a592b66b59bb71937ef8cb2ed ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/drone-ci.json 0000644 0001751 0001747 00000047032 14472046134 027546 0 ustar 00runner docker {
"$id": "https://json.schemastore.org/drone.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"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"
}
}
},
"volumes": {
"type": "array",
"items": {
"type": "object",
"oneOf": [
{
"required": ["name", "host"]
},
{
"required": ["name", "path"]
},
{
"required": ["name", "temp"]
},
{
"required": ["name", "claim"]
},
{
"required": ["name", "config_map"]
}
],
"properties": {
"name": {
"$ref": "#/definitions/nonEmptyString"
},
"host": {
"type": "object",
"properties": {
"path": {
"$ref": "#/definitions/nonEmptyString"
}
}
},
"temp": {
"type": "object",
"additionalProperties": false,
"properties": {
"medium": {
"type": "string",
"enum": ["memory"]
}
}
},
"claim": {
"type": "object",
"properties": {
"name": {
"$ref": "#/definitions/nonEmptyString"
},
"read_only": {
"type": "boolean"
}
}
},
"config_map": {
"type": "object",
"properties": {
"name": {
"$ref": "#/definitions/nonEmptyString"
},
"default_mode": {
"type": "integer"
},
"optional": {
"type": "boolean"
}
}
}
}
}
},
"services": {
"type": "array",
"items": {
"type": "object",
"required": ["name", "image"],
"properties": {
"name": {
"$ref": "#/definitions/nonEmptyString"
},
"image": {
"$ref": "#/definitions/nonEmptyString"
},
"command": {
"$ref": "#/definitions/commands"
},
"entrypoint": {
"$ref": "#/definitions/commands"
},
"environment": {
"$ref": "#/definitions/environment"
},
"privileged": {
"type": "boolean"
},
"pull": {
"const": "always"
},
"volumes": {
"$ref": "#/definitions/volumes"
},
"working_dir": {
"$ref": "#/definitions/nonEmptyString"
}
}
}
},
"secret": {
"type": "object",
"required": ["from_secret"],
"properties": {
"from_secret": {
"type": "string"
}
}
},
"stringOrSecret": {
"oneOf": [
{
"$ref": "#/definitions/nonEmptyString"
},
{
"$ref": "#/definitions/secret"
}
]
},
"node": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"concurrency": {
"type": "object",
"required": ["limit"],
"properties": {
"limit": {
"type": "number"
}
}
},
"kind_signature": {
"type": "object",
"required": ["hmac"],
"properties": {
"kind": {
"const": "signature"
},
"hmac": {
"type": "string",
"minLength": 40,
"maxLength": 64
}
}
},
"kind_secret": {
"type": "object",
"required": ["name"],
"properties": {
"kind": {
"const": "secret"
},
"name": {
"$ref": "#/definitions/nonEmptyString"
},
"data": {
"type": "string"
},
"get": {
"type": "object",
"required": ["path", "name"],
"properties": {
"path": {
"$ref": "#/definitions/nonEmptyString"
},
"name": {
"$ref": "#/definitions/nonEmptyString"
}
}
}
}
},
"kind_template": {
"type": "object",
"required": ["load"],
"properties": {
"load": {
"type": "string"
},
"data": {
"type": "object"
}
}
},
"kind_pipeline": {
"type": "object",
"required": ["type", "name", "steps"],
"properties": {
"kind": {
"const": "pipeline"
},
"name": {
"$ref": "#/definitions/nonEmptyString"
},
"type": {
"enum": [
"docker",
"kubernetes",
"ssh",
"exec",
"digitalocean",
"macstadium"
]
},
"platform": {
"$ref": "#/definitions/platform"
},
"workspace": {
"type": "object",
"required": ["path"],
"properties": {
"path": {
"$ref": "#/definitions/nonEmptyString"
}
}
},
"clone": {
"type": "object",
"properties": {
"depth": {
"type": "integer"
},
"disable": {
"const": true
},
"retries": {
"type": "integer"
}
}
},
"steps": {
"type": "array",
"minLength": 1
},
"trigger": {
"$ref": "#/definitions/allConditions"
},
"depends_on": {
"type": "array",
"items": {
"$ref": "#/definitions/nonEmptyString"
}
}
}
},
"pipeline_docker": {
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "docker"
},
"environment": {
"$ref": "#/definitions/environment"
},
"steps": {
"items": {
"$ref": "#/definitions/step_docker"
}
},
"volumes": {
"$ref": "#/definitions/volumes"
},
"services": {
"$ref": "#/definitions/services"
},
"image_pull_secrets": {
"type": "array",
"items": {
"type": "string"
}
},
"node": {
"$ref": "#/definitions/node"
},
"concurrency": {
"$ref": "#/definitions/concurrency"
},
"kind": {},
"name": {},
"platform": {},
"workspace": {},
"clone": {},
"trigger": {},
"depends_on": {}
}
},
"pipeline_kubernetes": {
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "kubernetes"
},
"metadata": {
"$ref": "https://json.schemastore.org/kubernetes-definitions.json#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"
},
"node": {
"$ref": "#/definitions/node"
},
"tolerations": {
"description": "If specified, the pod's tolerations.",
"items": {
"$ref": "https://json.schemastore.org/kubernetes-definitions.json#/definitions/io.k8s.api.core.v1.Toleration"
},
"type": "array"
},
"dns_config": {
"description": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.",
"$ref": "https://json.schemastore.org/kubernetes-definitions.json#/definitions/io.k8s.api.core.v1.PodDNSConfig"
},
"host_aliases": {
"description": "HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.",
"items": {
"$ref": "https://json.schemastore.org/kubernetes-definitions.json#/definitions/io.k8s.api.core.v1.HostAlias"
},
"type": "array"
},
"node_selector": {
"description": "A list of node selector terms.",
"items": {
"$ref": "https://json.schemastore.org/kubernetes-definitions.json#/definitions/io.k8s.api.core.v1.NodeSelectorTerm"
}
},
"steps": {
"items": {
"$ref": "#/definitions/step_kubernetes"
}
},
"volumes": {
"$ref": "#/definitions/volumes"
},
"services": {
"$ref": "#/definitions/services"
},
"image_pull_secrets": {
"type": "array",
"items": {
"type": "string"
}
},
"service_account_name": {
"description": "The name of the service account to use when running the kubernetes pipeline",
"type": "string"
},
"kind": {},
"name": {},
"platform": {},
"workspace": {},
"clone": {},
"trigger": {},
"depends_on": {}
}
},
"pipeline_exec": {
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "exec"
},
"steps": {
"items": {
"$ref": "#/definitions/step_exec"
}
},
"node": {
"$ref": "#/definitions/node"
},
"kind": {},
"name": {},
"platform": {},
"workspace": {},
"clone": {},
"trigger": {},
"depends_on": {}
}
},
"pipeline_ssh": {
"type": "object",
"additionalProperties": false,
"required": ["server"],
"properties": {
"type": {
"const": "ssh"
},
"steps": {
"items": {
"$ref": "#/definitions/step_ssh"
}
},
"server": {
"required": ["host", "user"],
"properties": {
"host": {
"$ref": "#/definitions/stringOrSecret"
},
"user": {
"$ref": "#/definitions/stringOrSecret"
},
"password": {
"$ref": "#/definitions/stringOrSecret"
},
"ssh_key": {
"$ref": "#/definitions/stringOrSecret"
}
}
},
"kind": {},
"name": {},
"platform": {},
"workspace": {},
"clone": {},
"trigger": {},
"depends_on": {}
}
},
"pipeline_digitalocean": {
"type": "object",
"additionalProperties": false,
"required": ["token"],
"properties": {
"type": {
"const": "digitalocean"
},
"token": {
"$ref": "#/definitions/stringOrSecret"
},
"steps": {
"items": {
"$ref": "#/definitions/step_digitalocean"
}
},
"kind": {},
"name": {},
"platform": {},
"workspace": {},
"clone": {},
"trigger": {},
"depends_on": {}
}
},
"pipeline_macstadium": {
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "macstadium"
},
"steps": {
"items": {
"$ref": "#/definitions/step_macstadium"
}
},
"kind": {},
"name": {},
"platform": {},
"workspace": {},
"clone": {},
"trigger": {},
"depends_on": {}
}
},
"step": {
"type": "object",
"required": ["name"],
"properties": {
"name": {
"$ref": "#/definitions/nonEmptyString"
},
"failure": {
"type": "string",
"enum": ["always", "ignore"]
},
"commands": {
"$ref": "#/definitions/commands"
},
"detach": {
"type": "boolean"
},
"environment": {
"$ref": "#/definitions/environment"
},
"when": {
"$ref": "#/definitions/allConditions"
},
"depends_on": {
"type": "array",
"items": {
"$ref": "#/definitions/nonEmptyString"
}
}
}
},
"step_docker": {
"allOf": [
{
"$ref": "#/definitions/step"
},
{
"type": "object",
"additionalProperties": false,
"required": ["image"],
"properties": {
"image": {
"$ref": "#/definitions/nonEmptyString"
},
"network_mode": {
"type": "string",
"enum": ["bridge", "host"]
},
"privileged": {
"type": "boolean"
},
"pull": {
"type": "string",
"enum": ["always", "never", "if-not-exists"]
},
"volumes": {
"$ref": "#/definitions/steps_volumes"
},
"settings": {
"type": "object"
},
"name": {},
"detach": {
"type": "boolean"
},
"failure": {},
"commands": {},
"environment": {},
"when": {},
"depends_on": {},
"user": {}
}
}
]
},
"step_kubernetes": {
"allOf": [
{
"$ref": "#/definitions/step"
},
{
"type": "object",
"additionalProperties": false,
"required": ["image"],
"properties": {
"image": {
"$ref": "#/definitions/nonEmptyString"
},
"privileged": {
"type": "boolean"
},
"pull": {
"type": "string",
"enum": ["always", "never", "if-not-exists"]
},
"resources": {
"$ref": "https://json.schemastore.org/kubernetes-definitions.json#/definitions/io.k8s.api.core.v1.ResourceRequirements"
},
"volumes": {
"$ref": "#/definitions/steps_volumes"
},
"settings": {
"type": "object"
},
"name": {},
"failure": {},
"commands": {},
"environment": {},
"when": {},
"depends_on": {}
}
}
]
},
"step_exec": {
"allOf": [
{
"$ref": "#/definitions/step"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"name": {},
"failure": {},
"commands": {},
"environment": {},
"when": {},
"depends_on": {}
}
}
]
},
"step_ssh": {
"allOf": [
{
"$ref": "#/definitions/step"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"name": {},
"failure": {},
"commands": {},
"environment": {},
"when": {},
"depends_on": {}
}
}
]
},
"step_digitalocean": {
"allOf": [
{
"$ref": "#/definitions/step"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"name": {},
"failure": {},
"commands": {},
"environment": {},
"when": {},
"depends_on": {}
}
}
]
},
"step_macstadium": {
"allOf": [
{
"$ref": "#/definitions/step"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"name": {},
"failure": {},
"commands": {},
"environment": {},
"when": {},
"depends_on": {}
}
}
]
},
"steps_volumes": {
"type": "array",
"items": {
"type": "object",
"required": ["name", "path"],
"properties": {
"name": {
"$ref": "#/definitions/nonEmptyString"
},
"path": {
"$ref": "#/definitions/nonEmptyString"
}
}
}
}
},
"oneOf": [
{
"$ref": "#/definitions/kind_signature"
},
{
"$ref": "#/definitions/kind_secret"
},
{
"$ref": "#/definitions/kind_template"
},
{
"allOf": [
{
"$ref": "#/definitions/kind_pipeline"
},
{
"oneOf": [
{
"$ref": "#/definitions/pipeline_docker"
},
{
"$ref": "#/definitions/pipeline_kubernetes"
},
{
"$ref": "#/definitions/pipeline_exec"
},
{
"$ref": "#/definitions/pipeline_ssh"
},
{
"$ref": "#/definitions/pipeline_digitalocean"
},
{
"$ref": "#/definitions/pipeline_macstadium"
}
]
}
]
}
],
"properties": {
"kind": {
"enum": ["signature", "secret", "template", "pipeline"]
}
},
"required": ["kind"],
"title": "Drone CI configuration file",
"type": "object"
}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/drone-ci.sha256 0000644 0001751 0001747 00000000100 14472046134 027566 0 ustar 00runner docker 9d113214fd1674366437bc7ab6aaba04e412cbf167fb554a21d681193fc486a7 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/github-actions.json 0000644 0001751 0001747 00000073416 14472046134 030773 0 ustar 00runner docker {
"$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions",
"$id": "https://json.schemastore.org/github-action.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"definitions": {
"expressionSyntax": {
"type": "string",
"$comment": "escape `{` and `}` in pattern to be unicode compatible (#1360)",
"pattern": "^\\$\\{\\{(.|[\r\n])*\\}\\}$"
},
"stringContainingExpressionSyntax": {
"type": "string",
"$comment": "escape `{` and `}` in pattern to be unicode compatible (#1360)",
"pattern": "^.*\\$\\{\\{(.|[\r\n])*\\}\\}.*$"
},
"pre-if": {
"$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#pre-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#post-if",
"description": "Allows you to define conditions for the `post:` action execution. The `post:` action will only run if the conditions in `post-if` are met. If not set, then `post-if` defaults to `always()`.",
"type": "string"
},
"runs-javascript": {
"$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runs-for-javascript-actions",
"description": "Configures the path to the action's code and the application used to execute the code.",
"type": "object",
"properties": {
"using": {
"$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsusing",
"description": "The application used to execute the code specified in `main`.",
"enum": ["node12", "node16", "node20"]
},
"main": {
"$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runsmain",
"description": "The file that contains your action code. The application specified in `using` executes this file.",
"type": "string"
},
"pre": {
"$comment": "https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#pre",
"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#post",
"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-run-steps-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-1",
"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.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"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-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-2",
"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#pre-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#post-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",
"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-run-steps-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",
"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",
"facebook",
"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",
"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"
}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/github-actions.sha256 0000644 0001751 0001747 00000000100 14472046134 031006 0 ustar 00runner docker 15f5495b65b30a6025e2b6ae957c9ffc887234167972601384e3cc3f116a7d54 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/github-workflows.json 0000644 0001751 0001747 00000312410 14472046134 031356 0 ustar 00runner docker {
"$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions",
"$id": "https://json.schemastore.org/github-workflow.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"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",
"pattern": "^[^:]+:[^:]+$"
},
"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"
},
"checks": {
"$ref": "#/definitions/permissions-level"
},
"contents": {
"$ref": "#/definitions/permissions-level"
},
"deployments": {
"$ref": "#/definitions/permissions-level"
},
"discussions": {
"$ref": "#/definitions/permissions-level"
},
"id-token": {
"$ref": "#/definitions/permissions-level"
},
"issues": {
"$ref": "#/definitions/permissions-level"
},
"packages": {
"$ref": "#/definitions/permissions-level"
},
"pages": {
"$ref": "#/definitions/permissions-level"
},
"pull-requests": {
"$ref": "#/definitions/permissions-level"
},
"repository-projects": {
"$ref": "#/definitions/permissions-level"
},
"security-events": {
"$ref": "#/definitions/permissions-level"
},
"statuses": {
"$ref": "#/definitions/permissions-level"
}
}
},
"permissions-level": {
"type": "string",
"enum": ["read", "write", "none"]
},
"env": {
"$comment": "https://docs.github.com/en/actions/learn-github-actions/environment-variables",
"description": "To set custom environment variables, you need to specify the variables in the workflow file. You can define environment variables for a step, job, or entire workflow using the jobs..steps[*].env, jobs..env, and env keywords. For more information, see https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#jobsjob_idstepsenv",
"oneOf": [
{
"type": "object",
"additionalProperties": {
"oneOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
{
"$ref": "#/definitions/stringContainingExpressionSyntax"
}
]
},
"environment": {
"$comment": "https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions#jobsjob_idenvironment",
"description": "The environment that the job references",
"type": "object",
"properties": {
"name": {
"$comment": "https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions#example-using-a-single-environment-name",
"description": "The name of the environment configured in the repo.",
"type": "string"
},
"url": {
"$comment": "https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions#example-using-environment-name-and-url",
"description": "A deployment URL",
"type": "string"
}
},
"required": ["name"],
"additionalProperties": false
},
"event": {
"$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows",
"type": "string",
"enum": [
"branch_protection_rule",
"check_run",
"check_suite",
"create",
"delete",
"deployment",
"deployment_status",
"discussion",
"discussion_comment",
"fork",
"gollum",
"issue_comment",
"issues",
"label",
"member",
"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": {
"type": "string",
"$comment": "escape `{` and `}` in pattern to be unicode compatible (#1360)",
"pattern": "^\\$\\{\\{(.|[\r\n])*\\}\\}$"
},
"stringContainingExpressionSyntax": {
"type": "string",
"$comment": "escape `{` and `}` in pattern to be unicode compatible (#1360)",
"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"
},
{
"type": "string",
"$comment": "https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#custom-shell",
"enum": ["bash", "pwsh", "python", "sh", "cmd", "powershell"]
}
]
},
"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.",
"type": "array",
"minItems": 1
},
"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"
}
]
},
"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-event"
},
"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",
"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.",
"$ref": "#/definitions/env"
},
"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": {
"$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"
},
{
"$ref": "#/definitions/expressionSyntax"
}
],
"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",
"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
},
"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",
"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.",
"oneOf": [
{
"$comment": "https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#github-hosted-runners",
"type": "string",
"enum": [
"macos-10.15",
"macos-11",
"macos-12",
"macos-12-xl",
"macos-13",
"macos-13-xl",
"macos-latest",
"macos-latest-xl",
"self-hosted",
"ubuntu-18.04",
"ubuntu-20.04",
"ubuntu-22.04",
"ubuntu-latest",
"ubuntu-latest-4-cores",
"ubuntu-latest-8-cores",
"ubuntu-latest-16-cores",
"windows-2019",
"windows-2022",
"windows-latest",
"windows-latest-8-cores"
]
},
{
"$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": [
{
"const": "self-hosted"
}
],
"minItems": 1,
"additionalItems": {
"type": "string"
}
},
{
"items": [
{
"const": "self-hosted"
},
{
"$ref": "#/definitions/machine"
}
],
"minItems": 2,
"additionalItems": {
"type": "string"
}
},
{
"items": [
{
"const": "self-hosted"
},
{
"$ref": "#/definitions/architecture"
}
],
"minItems": 2,
"additionalItems": {
"type": "string"
}
},
{
"items": [
{
"const": "self-hosted"
},
{
"$ref": "#/definitions/machine"
},
{
"$ref": "#/definitions/architecture"
}
],
"minItems": 3,
"additionalItems": {
"type": "string"
}
},
{
"items": [
{
"const": "self-hosted"
},
{
"$ref": "#/definitions/architecture"
},
{
"$ref": "#/definitions/machine"
}
],
"minItems": 3,
"additionalItems": {
"type": "string"
}
},
{
"items": [
{
"const": "linux"
}
],
"minItems": 2,
"maxItems": 2,
"additionalItems": {
"type": "string"
}
},
{
"items": [
{
"const": "windows"
}
],
"minItems": 2,
"maxItems": 2,
"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"
}
]
},
"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#jobsjobs_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": {
"allOf": [
{
"oneOf": [
{
"type": "object",
"properties": {
"uses": {
"type": "string"
}
},
"required": ["uses"]
},
{
"type": "object",
"properties": {
"run": {
"type": "string"
}
},
"required": ["run"]
}
]
},
{
"type": "object",
"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"
}
]
}
},
"dependencies": {
"working-directory": ["run"],
"shell": ["run"]
},
"additionalProperties": false
}
]
},
"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": {
"$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"
},
{
"$ref": "#/definitions/expressionSyntax"
}
],
"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",
"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
},
"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",
"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
}
},
"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"]
}
}
},
"member": {
"$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/events-that-trigger-workflows#member-event-member",
"$ref": "#/definitions/eventObject",
"description": "Runs your workflow anytime the member event occurs. More than one activity type triggers this event. For information about the REST API, see https://developer.github.com/v3/repos/collaborators/.",
"properties": {
"types": {
"$ref": "#/definitions/types",
"items": {
"type": "string",
"enum": ["added", "edited", "deleted"]
},
"default": ["added", "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",
"review_requested",
"review_request_removed",
"auto_merge_enabled",
"auto_merge_disabled"
]
},
"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"
},
"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"
},
"type": {
"$comment": "https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#onworkflow_callinput_idtype",
"description": "Required if input is defined for the on.workflow_call keyword. The value of this parameter is a string specifying the data type of the input. This must be one of: boolean, number, or string.",
"type": "string",
"enum": ["boolean", "number", "string"]
},
"default": {
"$comment": "https://help.github.com/en/github/automating-your-workflow-with-github-actions/metadata-syntax-for-github-actions#inputsinput_iddefault",
"description": "The default value is used when an input parameter isn't specified in a workflow file.",
"type": ["boolean", "number", "string"]
}
},
"required": ["type"],
"additionalProperties": false
}
},
"additionalProperties": false
},
"secrets": {
"$comment": "https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#onworkflow_callsecrets",
"description": "A map of the secrets that can be used in the called workflow. Within the called workflow, you can use the secrets context to refer to a secret.",
"patternProperties": {
"^[_a-zA-Z][a-zA-Z0-9_-]*$": {
"$comment": "https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#onworkflow_callsecretssecret_id",
"description": "A string identifier to associate with the secret.",
"properties": {
"description": {
"description": "A string description of the secret parameter.",
"type": "string"
},
"required": {
"$comment": "https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#onworkflow_callsecretssecret_idrequired",
"description": "A boolean specifying whether the secret must be supplied.",
"type": "boolean"
}
},
"required": ["required"],
"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_-]*$": {
"$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": {
"description": "A string representing the type of the input.",
"$comment": "https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onworkflow_dispatchinputsinput_idtype",
"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
}
},
"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"]
},
"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": {
"properties": {
"cron": {
"$comment": "https://stackoverflow.com/a/57639657/4044345",
"type": "string",
"pattern": "^(((\\d+,)+\\d+|((\\d+|\\*)/\\d+|((JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(-(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?))|(\\d+-\\d+)|\\d+(-\\d+)?/\\d+(-\\d+)?|\\d+|\\*|(MON|TUE|WED|THU|FRI|SAT|SUN)(-(MON|TUE|WED|THU|FRI|SAT|SUN))?) ?){5}$"
}
},
"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"
}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/github-workflows.sha256 0000644 0001751 0001747 00000000100 14472046134 031403 0 ustar 00runner docker 7c009ac488bfd9315bcdb66e2462c13caa8bcb30ad2de7adeb7c05cbc129698c ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/gitlab-ci.json 0000644 0001751 0001747 00000231273 14472046134 027703 0 ustar 00runner docker {
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://gitlab.com/.gitlab-ci.yml",
"markdownDescription": "Gitlab has a built-in solution for doing CI called Gitlab CI. It is configured by supplying a file called `.gitlab-ci.yml`, which will list all the jobs that are going to run for the project. A full list of all options can be found [here](https://docs.gitlab.com/ee/ci/yaml). [Learn More](https://docs.gitlab.com/ee/ci/index.html).",
"type": "object",
"properties": {
"$schema": {
"type": "string",
"format": "uri"
},
"image": {
"$ref": "#/definitions/image"
},
"services": {
"$ref": "#/definitions/services"
},
"before_script": {
"$ref": "#/definitions/before_script"
},
"after_script": {
"$ref": "#/definitions/after_script"
},
"variables": {
"$ref": "#/definitions/globalVariables"
},
"cache": {
"$ref": "#/definitions/cache"
},
"!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"
},
"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/ee/ci/yaml/#stages).",
"default": [
"build",
"test",
"deploy"
],
"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/ee/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/ee/ci/yaml/#pages)."
},
"workflow": {
"type": "object",
"properties": {
"name": {
"$ref": "#/definitions/workflowName"
},
"rules": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object"
},
{
"type": "array",
"minLength": 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"
]
}
},
"additionalProperties": false
}
}
}
}
},
"patternProperties": {
"^[.]": {
"description": "Hidden keys.",
"anyOf": [
{
"$ref": "#/definitions/job_template"
},
{
"description": "Arbitrary YAML anchor."
}
]
}
},
"additionalProperties": {
"$ref": "#/definitions/job"
},
"definitions": {
"artifacts": {
"type": "object",
"markdownDescription": "Used to specify a list of files and directories that should be attached to the job if it succeeds. Artifacts are sent to Gitlab where they can be downloaded. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#artifacts).",
"additionalProperties": false,
"properties": {
"paths": {
"type": "array",
"markdownDescription": "A list of paths to files/folders that should be included in the artifact. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#artifactspaths).",
"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/ee/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/ee/ci/yaml/#artifactsexpose_as)."
},
"name": {
"type": "string",
"markdownDescription": "Name for the archive created on job success. Can use variables in the name, e.g. '$CI_JOB_NAME' [Learn More](https://docs.gitlab.com/ee/ci/yaml/#artifactsname)."
},
"untracked": {
"type": "boolean",
"markdownDescription": "Whether to add all untracked files (along with 'artifacts.paths') to the artifact. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#artifactsuntracked).",
"default": false
},
"when": {
"markdownDescription": "Configure when artifacts are uploaded depended on job status. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#artifactswhen).",
"default": "on_success",
"type": "string",
"enum": [
"on_success",
"on_failure",
"always"
]
},
"expire_in": {
"type": "string",
"markdownDescription": "How long artifacts should be kept. They are saved 30 days by default. Artifacts that have expired are removed periodically via cron job. Supports a wide variety of formats, e.g. '1 week', '3 mins 4 sec', '2 hrs 20 min', '2h20min', '6 mos 1 day', '47 yrs 6 mos and 4d', '3 weeks and 2 days'. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#artifactsexpire_in).",
"default": "30 days"
},
"reports": {
"type": "object",
"markdownDescription": "Reports will be uploaded as artifacts, and often displayed in the Gitlab UI, such as in Merge Requests. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#artifactsreports).",
"additionalProperties": false,
"properties": {
"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"
]
},
"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/ee/ci/yaml/artifacts_reports.html#artifactsreportscyclonedx)."
},
"load_performance": {
"$ref": "#/definitions/string_file_list",
"markdownDescription": "Path to file or list of files with load performance testing report(s). [Learn More](https://docs.gitlab.com/ee/ci/yaml/artifacts_reports.html#artifactsreportsload_performance)."
}
}
}
}
},
"string_file_list": {
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
},
"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": "^(https?://|/?.?-?(?!\\w+://)\\w).+\\.ya?ml$"
},
{
"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/ee/ci/yaml/index.html#includefile).",
"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$"
},
"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
},
"pull_policy": {
"markdownDescription": "Specifies how to pull the image in Runner. It can be one of `always`, `never` or `if-not-present`. The default value is `always`. [Learn more](https://docs.gitlab.com/ee/ci/yaml/#imagepull_policy).",
"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"
]
},
{
"type": "array",
"minLength": 1,
"items": {
"type": "string"
}
}
],
"markdownDescription": "Specifies the docker image to use for the job or globally for all jobs. Job configuration takes precedence over global setting. Requires a certain kind of Gitlab runner executor. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#image)."
},
"services": {
"type": "array",
"markdownDescription": "Similar to `image` property, but will link the specified services to the `image` container. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#services).",
"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/ee/ci/services/index.html#available-settings-for-services)",
"minItems": 1,
"items": {
"type": "string"
}
},
"pull_policy": {
"markdownDescription": "Specifies how to pull the image in Runner. It can be one of `always`, `never` or `if-not-present`. The default value is `always`. [Learn more](https://docs.gitlab.com/ee/ci/yaml/#servicepull_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/ee/ci/services/index.html#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/ee/ci/services/index.html#available-settings-for-services)",
"minLength": 1
},
"variables": {
"$ref": "#/definitions/jobVariables",
"markdownDescription": "Additional environment variables that are passed exclusively to the service. Service variables cannot reference themselves. [Learn More](https://docs.gitlab.com/ee/ci/services/index.html#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
}
}
},
"secrets": {
"type": "object",
"markdownDescription": "Defines secrets to be injected as environment variables. [Learn More](https://docs.gitlab.com/ee/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/ee/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
}
]
},
"azure_key_vault": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"version": {
"type": "string"
}
},
"required": [
"name"
],
"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/ee/ci/yaml/#secretsfile)"
},
"token": {
"type": "string",
"description": "Specifies the JWT variable that should be used to authenticate with Hashicorp Vault."
}
},
"anyOf": [
{
"required": [
"vault"
]
},
{
"required": [
"azure_key_vault"
]
}
],
"additionalProperties": false
}
}
},
"before_script": {
"type": "array",
"markdownDescription": "Defines scripts that should run *before* the job. Can be set globally or per job. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#before_script).",
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
}
},
"after_script": {
"type": "array",
"markdownDescription": "Defines scripts that should run *after* the job. Can be set globally or per job. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#after_script).",
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
}
},
"rules": {
"type": [
"array",
"null"
],
"markdownDescription": "Rules allows for an array of individual rule objects to be evaluated in order, until one matches and dynamically provides attributes to the job. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#rules).",
"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"
}
}
},
{
"type": "string",
"minLength": 1
},
{
"type": "array",
"minLength": 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/ee/ci/yaml/includes.html#use-rules-with-include).",
"items": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"properties": {
"if": {
"$ref": "#/definitions/if"
},
"exists": {
"$ref": "#/definitions/exists"
},
"when": {
"markdownDescription": "Use `when: never` to exclude the configuration file if the condition matches. [Learn More](https://docs.gitlab.com/ee/ci/yaml/includes.html#include-with-rulesif).",
"oneOf": [
{
"type": "string",
"enum": [
"never",
"always"
]
},
{
"type": "null"
}
]
}
}
},
{
"type": "string",
"minLength": 1
},
{
"type": "array",
"minLength": 1,
"items": {
"type": "string"
}
}
]
}
},
"workflowName": {
"type": "string",
"markdownDescription": "Defines the pipeline name. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#workflowname).",
"minLength": 1,
"maxLength": 255
},
"globalVariables": {
"markdownDescription": "Defines default variables for all jobs. Job level property overrides global variables. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#variables).",
"type": "object",
"patternProperties": {
".*": {
"oneOf": [
{
"type": [
"string",
"number"
]
},
{
"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/ee/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/ee/ci/yaml/#variablesoptions)"
},
"description": {
"type": "string",
"markdownDescription": "Explains what the variable is used for, what the acceptable values are. Variables with `description` are prefilled when running a pipeline manually. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#variablesdescription)."
},
"expand": {
"type": "boolean",
"markdownDescription": "If the variable is expandable or not. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#variablesexpand)."
}
},
"additionalProperties": false
}
]
},
"additionalProperties": false
}
},
"jobVariables": {
"markdownDescription": "Defines variables for a job. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#variables).",
"type": "object",
"patternProperties": {
".*": {
"oneOf": [
{
"type": [
"string",
"number"
]
},
{
"type": "object",
"properties": {
"value": {
"type": "string"
},
"expand": {
"type": "boolean",
"markdownDescription": "Defines if the variable is expandable or not. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#variablesexpand)."
}
},
"additionalProperties": false
}
]
},
"additionalProperties": false
}
},
"rulesVariables": {
"markdownDescription": "Defines variables for a rule result. [Learn More](https://docs.gitlab.com/ee/ci/yaml/index.html#rulesvariables).",
"type": "object",
"patternProperties": {
".*": {
"type": [
"string",
"number"
]
},
"additionalProperties": false
}
},
"if": {
"type": "string",
"markdownDescription": "Expression to evaluate whether additional attributes should be provided to the job. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#rulesif)."
},
"changes": {
"markdownDescription": "Additional attributes will be provided to job if any of the provided paths matches a modified file. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#ruleschanges).",
"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": {
"type": "array",
"markdownDescription": "Additional attributes will be provided to job if any of the provided paths matches an existing file in the repository. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#rulesexists).",
"items": {
"type": "string"
}
},
"timeout": {
"type": "string",
"markdownDescription": "Allows you to configure a timeout for a specific job (e.g. `1 minute`, `1h 30m 12s`). [Learn More](https://docs.gitlab.com/ee/ci/yaml/index.html#timeout).",
"minLength": 1
},
"start_in": {
"type": "string",
"markdownDescription": "Used in conjunction with 'when: delayed' to set how long to delay before starting a job. e.g. '5', 5 seconds, 30 minutes, 1 week, etc. [Learn More](https://docs.gitlab.com/ee/ci/jobs/job_control.html#run-a-job-after-a-delay).",
"minLength": 1
},
"rulesNeeds": {
"markdownDescription": "Use needs in rules to update job needs for specific conditions. When a condition matches a rule, the job's needs configuration is completely replaced with the needs in the rule. [Learn More](https://docs.gitlab.com/ee/ci/yaml/index.html#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/ee/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": 2,
"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/ee/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/ee/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/ee/ci/yaml/#cache)",
"properties": {
"key": {
"markdownDescription": "Use the `cache:key` keyword to give each cache a unique identifying key. All jobs that use the same cache key use the same cache, including in different pipelines. Must be used with `cache:path`, or nothing is cached. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#cachekey).",
"oneOf": [
{
"type": "string",
"pattern": "^(?!.*\\/)^(.*[^.]+.*)$"
},
{
"type": "object",
"properties": {
"files": {
"markdownDescription": "Use the `cache:key:files` keyword to generate a new key when one or two specific files change. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#cachekeyfiles)",
"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`. [Learn More](https://docs.gitlab.com/ee/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/ee/ci/yaml/#cachepaths)",
"items": {
"type": "string"
}
},
"policy": {
"type": "string",
"markdownDescription": "Determines the strategy for downloading and updating the cache. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#cachepolicy)",
"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/ee/ci/yaml/#cacheuntracked)",
"default": false
},
"when": {
"type": "string",
"markdownDescription": "Defines when to save the cache, based on the status of the job. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#cachewhen).",
"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/ee/ci/jobs/job_control.html#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/ee/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/ee/ci/yaml/#retrywhen).",
"oneOf": [
{
"$ref": "#/definitions/retry_errors"
},
{
"type": "array",
"items": {
"$ref": "#/definitions/retry_errors"
}
}
]
}
}
}
]
},
"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 a structural integrity problem detected."
}
]
},
"interruptible": {
"type": "boolean",
"markdownDescription": "Interruptible is used to indicate that a job should be canceled if made redundant by a newer pipeline run. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#interruptible).",
"default": false
},
"inputs": {
"markdownDescription": "Used to pass input values to included templates or components. [Learn More](https://docs.gitlab.com/ee/ci/yaml/includes.html#set-input-parameter-values-with-includeinputs).",
"type": "object"
},
"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"
},
"secrets": {
"$ref": "#/definitions/secrets"
},
"script": {
"markdownDescription": "Shell scripts executed by the Runner. The only required property of jobs. Be careful with special characters (e.g. `:`, `{`, `}`, `&`) and use single or double quotes to avoid issues. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#script)",
"oneOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "array",
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
},
"minItems": 1
}
]
},
"stage": {
"description": "Define what stage the job will run in.",
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "array",
"minLength": 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"
]
}
]
}
},
"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"
},
"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": {
"namespace": {
"type": "string",
"description": "The kubernetes namespace where this environment should be deployed to.",
"minLength": 1
}
}
},
"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/ee/ci/yaml/index.html#trigger).",
"oneOf": [
{
"type": "object",
"markdownDescription": "Trigger a multi-project pipeline. [Learn More](https://docs.gitlab.com/ee/ci/pipelines/multi_project_pipelines.html#specify-a-downstream-pipeline-branch).",
"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 the pipeline status from the triggered pipeline to the source bridge job by using strategy: depend",
"type": "string",
"enum": [
"depend"
]
},
"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/ee/ci/pipelines/parent_child_pipelines.html).",
"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$"
}
}
},
{
"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$"
}
}
},
{
"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"
}
},
"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$"
}
},
"required": [
"project",
"file"
]
}
]
}
}
]
},
"strategy": {
"description": "You can mirror the pipeline status from the triggered pipeline to the source bridge job by using strategy: depend",
"type": "string",
"enum": [
"depend"
]
},
"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/ee/ci/yaml/index.html#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/ee/ci/yaml/#inherit).",
"properties": {
"default": {
"markdownDescription": "Whether to inherit all globally-defined defaults or not. Or subset of inherited defaults. [Learn more](https://docs.gitlab.com/ee/ci/yaml/#inheritdefault).",
"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/ee/ci/yaml/#inheritvariables).",
"oneOf": [
{
"type": "boolean"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
}
},
"additionalProperties": false
},
"publish": {
"description": "A path to a directory that contains the files to be published with Pages",
"type": "string"
}
},
"oneOf": [
{
"properties": {
"when": {
"enum": [
"delayed"
]
}
},
"required": [
"when",
"start_in"
]
},
{
"properties": {
"when": {
"not": {
"enum": [
"delayed"
]
}
}
}
}
]
},
"tags": {
"type": "array",
"minLength": 1,
"markdownDescription": "Used to select runners from the list of available runners. A runner must have all tags listed here to run the job. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#tags).",
"items": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "array",
"minLength": 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/ee/ci/yaml/#hooks).",
"properties": {
"pre_get_sources_script": {
"markdownDescription": "Specifies a list of commands to execute on the runner before updating the Git repository and any submodules. [Learn More](https://docs.gitlab.com/ee/ci/yaml/#hookspre_get_sources_script).",
"oneOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "array",
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
},
"minItems": 1
}
]
}
},
"additionalProperties": false
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/gitlab-ci.sha256 0000644 0001751 0001747 00000000100 14472046134 027721 0 ustar 00runner docker c207b7443ef9c76fa5dfc9a17706a5115df3d387b958219b5c69580eb5773f7f ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/readthedocs.json 0000644 0001751 0001747 00000031132 14472046134 030325 0 ustar 00runner docker {
"$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",
"anyOf": [
{
"properties": {
"image": {
"title": "Image",
"description": "DEPRECATED: use build.os instead.\n\nThe build docker image to be used.",
"enum": [
"stable",
"latest"
],
"default": "latest",
"deprecated": true
},
"apt_packages": {
"title": "APT Packages",
"description": "List of packages to be installed with apt-get.",
"type": "array",
"items": {
"title": "APT Package",
"type": "string"
},
"default": []
}
},
"additionalProperties": false
},
{
"properties": {
"os": {
"title": "Operating System",
"description": "Operating system to be used in the build.",
"enum": [
"ubuntu-20.04",
"ubuntu-22.04"
]
},
"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"
}
},
"post_create_environment": {
"type": "array",
"items": {
"title": "Custom commands",
"type": "string"
}
},
"pre_install": {
"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"
}
},
"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",
"miniconda3-4.7",
"mambaforge-4.10",
"mambaforge-22.9"
]
},
"nodejs": {
"enum": [
"14",
"16",
"18",
"19",
"20"
]
},
"rust": {
"enum": [
"1.55",
"1.61",
"1.64",
"1.70"
]
},
"golang": {
"enum": [
"1.17",
"1.18",
"1.19",
"1.20"
]
}
},
"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",
"tools"
],
"additionalProperties": false
}
]
},
"python": {
"title": "Python",
"description": "Configuration of the Python environment to be used.",
"type": "object",
"properties": {
"version": {
"title": "Version",
"description": "DEPRECATED: use build.tools.python instead.\n\nThe Python version to activate for your build (availability of Python versions depend on the build image).",
"type": "string",
"enum": [
"2",
"2.7",
"3",
"3.3",
"3.4",
"3.5",
"3.6",
"3.7",
"3.8"
],
"default": "3",
"deprecated": true
},
"install": {
"title": "Install",
"description": "Installation of packages and requiremens.",
"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": "Sphix",
"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
},
"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
},
"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
}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/readthedocs.sha256 0000644 0001751 0001747 00000000100 14472046134 030353 0 ustar 00runner docker 352e6d65ec70468220aa6f63505c29fd0e083ae271a8bb2aaa7aefccef66c10e ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/renovate.json 0000644 0001751 0001747 00000276107 14472046134 027700 0 ustar 00runner docker {
"title": "JSON schema for Renovate config files (https://renovatebot.com/)",
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"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
},
"allowPostUpgradeCommandTemplating": {
"description": "Set this to `false` to disable template compilation for post-upgrade commands.",
"type": "boolean",
"default": true
},
"allowScripts": {
"description": "Set this to `true` if repositories are allowed to run install scripts.",
"type": "boolean",
"default": false
},
"allowedPostUpgradeCommands": {
"description": "A list of regular expressions that decide which post-upgrade tasks are allowed.",
"type": "array",
"items": {
"type": "string"
},
"default": []
},
"ansible": {
"description": "Configuration object for the ansible manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)tasks/[^/]+\\.ya?ml$"
]
},
"$ref": "#"
},
"ansible-galaxy": {
"description": "Configuration object for the ansible-galaxy manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)requirements\\.ya?ml$",
"(^|/)galaxy\\.ya?ml$"
]
},
"$ref": "#"
},
"argocd": {
"description": "Configuration object for the argocd manager",
"type": "object",
"default": {
"fileMatch": []
},
"$ref": "#"
},
"asdf": {
"description": "Configuration object for the asdf manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)\\.tool-versions$"
]
},
"$ref": "#"
},
"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",
"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
},
"autodiscoverTopics": {
"description": "Filter the list of autodiscovered repositories by topics.",
"type": "array",
"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",
"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": {
"fileMatch": [
"azure.*pipelines?.*\\.ya?ml$"
],
"enabled": false
},
"$ref": "#"
},
"azureWorkItemId": {
"description": "The id of an existing work item on Azure Boards to link to each PR.",
"type": "integer",
"default": 0
},
"baseBranches": {
"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": {
"fileMatch": [
"(^|/)batect(-bundle)?\\.ya?ml$"
]
},
"$ref": "#"
},
"batect-wrapper": {
"description": "Configuration object for the batect-wrapper manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)batect$"
],
"versioning": "semver"
},
"$ref": "#"
},
"bazel": {
"description": "Configuration object for the bazel manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)WORKSPACE(|\\.bazel)$",
"\\.bzl$"
]
},
"$ref": "#"
},
"bazel-module": {
"description": "Configuration object for the bazel-module manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)MODULE\\.bazel$"
]
},
"$ref": "#"
},
"bazelisk": {
"description": "Configuration object for the bazelisk manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)\\.bazelversion$"
],
"pinDigests": false,
"versioning": "semver"
},
"$ref": "#"
},
"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": {
"fileMatch": [
"\\.bicep$"
]
},
"$ref": "#"
},
"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": {
"fileMatch": [
"(^|/)\\.?bitbucket-pipelines\\.ya?ml$"
]
},
"$ref": "#"
},
"branchConcurrentLimit": {
"description": "Limit to a maximum of x concurrent branches. 0 means no limit, `null` (default) inherits value from `prConcurrentLimit`.",
"type": "integer",
"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}}.x{{#if isLockfileUpdate}}-lockfile{{/if}}"
},
"buildkite": {
"description": "Configuration object for the buildkite manager",
"type": "object",
"default": {
"fileMatch": [
"buildkite\\.ya?ml",
"\\.buildkite/.+\\.ya?ml$"
],
"commitMessageTopic": "buildkite plugin {{depName}}",
"commitMessageExtra": "to {{#if isMajor}}{{{prettyNewMajor}}}{{else}}{{{newValue}}}{{/if}}"
},
"$ref": "#"
},
"bumpVersion": {
"description": "Bump the version in the package file being updated.",
"type": "string",
"enum": [
"major",
"minor",
"patch",
"prerelease"
]
},
"bundler": {
"description": "Configuration object for the bundler manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)Gemfile$"
],
"versioning": "ruby"
},
"$ref": "#"
},
"cacheDir": {
"description": "The directory where Renovate stores its cache. If left empty, Renovate creates a subdirectory within the `baseDir`.",
"type": "string"
},
"cacheHardTtlMinutes": {
"description": "Maximum duration in minutes to keep datasource cache entries.",
"type": "integer",
"default": 1440
},
"cake": {
"description": "Configuration object for the cake manager",
"type": "object",
"default": {
"fileMatch": [
"\\.cake$"
]
},
"$ref": "#"
},
"cargo": {
"description": "Configuration object for the cargo manager",
"type": "object",
"default": {
"commitMessageTopic": "Rust crate {{depName}}",
"fileMatch": [
"(^|/)Cargo\\.toml$"
],
"versioning": "cargo"
},
"$ref": "#"
},
"cdnurl": {
"description": "Configuration object for the cdnurl manager",
"type": "object",
"default": {
"fileMatch": [],
"versioning": "semver"
},
"$ref": "#"
},
"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": {
"fileMatch": [
"(^|/)\\.circleci/config\\.ya?ml$"
]
},
"$ref": "#"
},
"cloneSubmodules": {
"description": "Set to `true` to initialize submodules during repository clone.",
"type": "boolean",
"default": false
},
"cloudbuild": {
"description": "Configuration object for the cloudbuild manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)cloudbuild\\.ya?ml"
]
},
"$ref": "#"
},
"cocoapods": {
"description": "Configuration object for the cocoapods manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)Podfile$"
],
"versioning": "ruby"
},
"$ref": "#"
},
"commitBody": {
"description": "Commit message body template. Will be appended to commit message, separated by two line returns.",
"type": "string"
},
"commitBodyTable": {
"description": "If enabled, append a table in the commit message body describing all updates in the commit.",
"type": "boolean",
"default": false
},
"commitMessage": {
"description": "Message to use for commit messages and pull request titles.",
"type": "string",
"default": "{{{commitMessagePrefix}}} {{{commitMessageAction}}} {{{commitMessageTopic}}} {{{commitMessageExtra}}} {{{commitMessageSuffix}}}"
},
"commitMessageAction": {
"description": "Action verb to use in commit messages and PR titles.",
"type": "string",
"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": {
"fileMatch": [
"(^|/)([\\w-]*)composer\\.json$"
],
"versioning": "composer"
},
"$ref": "#"
},
"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": {
"fileMatch": [
"(^|/)conanfile\\.(txt|py)$"
],
"datasource": "conan",
"versioning": "conan",
"enabled": false
},
"$ref": "#"
},
"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 `false` to make Renovate create a new issue for each config warning, instead of reopening or reusing an existing issue.",
"type": "boolean",
"default": true
},
"constraints": {
"description": "Configuration object to define language or manager version constraints.",
"type": "object",
"default": {},
"$ref": "#"
},
"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"
},
"cpanfile": {
"description": "Configuration object for the cpanfile manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)cpanfile$"
]
},
"$ref": "#"
},
"customDatasources": {
"description": "Defines custom datasources for usage by managers",
"type": "object",
"default": {},
"$ref": "#",
"items": {
"allOf": [
{
"type": "object",
"properties": {
"description": {
"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": "#"
},
"customizeDashboard": {
"description": "Customize sections in the dependency dashboard issue.",
"type": "object",
"default": {},
"additionalProperties": {
"type": "string"
},
"$ref": "#"
},
"defaultRegistryUrls": {
"description": "List of registry URLs to use as the default for a datasource.",
"type": "array",
"items": {
"type": "string"
},
"default": null
},
"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
},
"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",
"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"
},
"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": {
"fileMatch": [
"(^|/)(?:deps|bb)\\.edn$"
],
"versioning": "maven"
},
"$ref": "#"
},
"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
},
"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": "#"
},
"docker-compose": {
"description": "Configuration object for the docker-compose manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)(?:docker-)?compose[^/]*\\.ya?ml$"
]
},
"$ref": "#"
},
"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"
},
"dockerSidecarImage": {
"description": "Change this value to override the default Renovate sidecar image.",
"type": "string",
"default": "ghcr.io/containerbase/sidecar:9.17.3"
},
"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": {
"fileMatch": [
"(^|/|\\.)([Dd]ocker|[Cc]ontainer)file$",
"(^|/)([Dd]ocker|[Cc]ontainer)file[^/]*$"
]
},
"$ref": "#"
},
"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": {
"fileMatch": [
"(^|/)\\.drone\\.yml$"
]
},
"$ref": "#"
},
"dryRun": {
"description": "If enabled, perform a dry run by logging messages instead of creating/updating/deleting branches and PRs.",
"type": "string",
"enum": [
"extract",
"lookup",
"full"
],
"default": null
},
"enabled": {
"description": "Enable or disable Renovate bot.",
"type": "boolean"
},
"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",
"default": null,
"$ref": "#"
},
"endpoint": {
"description": "Custom endpoint to use.",
"type": "string",
"default": null
},
"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
},
"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"
},
"fetchReleaseNotes": {
"description": "Controls if and when release notes are fetched.",
"type": "string",
"enum": [
"off",
"branch",
"pr"
],
"default": "pr"
},
"fileMatch": {
"description": "RegEx (`re2`) pattern for matching manager files.",
"oneOf": [
{
"type": "array",
"items": {
"type": "string",
"format": "regex"
}
},
{
"type": "string",
"format": "regex"
}
]
},
"filterUnavailableUsers": {
"description": "Filter reviewers and assignees based on their availability.",
"type": "boolean",
"default": false
},
"fleet": {
"description": "Configuration object for the fleet manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)fleet\\.ya?ml"
]
},
"$ref": "#"
},
"flux": {
"description": "Configuration object for the flux manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)flux-system/(?:.+/)?gotk-components\\.ya?ml$"
]
},
"$ref": "#"
},
"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
},
"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": {
"fileMatch": [
"(^|/)\\.fvm/fvm_config\\.json$"
],
"versioning": "semver"
},
"$ref": "#"
},
"git-submodules": {
"description": "Configuration object for the git-submodules manager",
"type": "object",
"default": {
"enabled": false,
"versioning": "git",
"fileMatch": [
"(^|/)\\.gitmodules$"
]
},
"$ref": "#"
},
"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"
},
"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": {
"fileMatch": [
"^(workflow-templates|\\.github/workflows)/[^/]+\\.ya?ml$",
"(^|/)action\\.ya?ml$"
]
},
"$ref": "#"
},
"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": {
"fileMatch": [
"\\.gitlab-ci\\.ya?ml$"
]
},
"$ref": "#"
},
"gitlabci-include": {
"description": "Configuration object for the gitlabci-include manager",
"type": "object",
"default": {
"fileMatch": [
"\\.gitlab-ci\\.ya?ml$"
]
},
"$ref": "#"
},
"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": {
"fileMatch": [
"(^|/)go\\.mod$"
],
"pinDigests": false
},
"$ref": "#"
},
"gradle": {
"description": "Configuration object for the gradle manager",
"type": "object",
"default": {
"fileMatch": [
"\\.gradle(\\.kts)?$",
"(^|/)gradle\\.properties$",
"(^|/)gradle/.+\\.toml$",
"(^|/)buildSrc/.+\\.kt$",
"\\.versions\\.toml$",
"(^|/)versions.props$",
"(^|/)versions.lock$"
],
"timeout": 600,
"versioning": "gradle"
},
"$ref": "#"
},
"gradle-wrapper": {
"description": "Configuration object for the gradle-wrapper manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)gradle/wrapper/gradle-wrapper\\.properties$"
],
"versioning": "gradle"
},
"$ref": "#"
},
"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",
"default": null
},
"groupSlug": {
"description": "Slug to use for group (e.g. in branch name). Slug is calculated from `groupName` if `null`.",
"type": "string",
"default": null
},
"hashedBranchLength": {
"description": "If enabled, branch names will use a hashing function to ensure each branch has that length.",
"type": "integer",
"default": null
},
"helm-requirements": {
"description": "Configuration object for the helm-requirements manager",
"type": "object",
"default": {
"registryAliases": {
"stable": "https://charts.helm.sh/stable"
},
"commitMessageTopic": "helm chart {{depName}}",
"fileMatch": [
"(^|/)requirements\\.ya?ml$"
]
},
"$ref": "#"
},
"helm-values": {
"description": "Configuration object for the helm-values manager",
"type": "object",
"default": {
"commitMessageTopic": "helm values {{depName}}",
"fileMatch": [
"(^|/)values\\.ya?ml$"
],
"pinDigests": false
},
"$ref": "#"
},
"helmfile": {
"description": "Configuration object for the helmfile manager",
"type": "object",
"default": {
"registryAliases": {
"stable": "https://charts.helm.sh/stable"
},
"commitMessageTopic": "helm chart {{depName}}",
"fileMatch": [
"(^|/)helmfile\\.ya?ml$"
]
},
"$ref": "#"
},
"helmsman": {
"description": "Configuration object for the helmsman manager",
"type": "object",
"default": {
"fileMatch": []
},
"$ref": "#"
},
"helmv3": {
"description": "Configuration object for the helmv3 manager",
"type": "object",
"default": {
"registryAliases": {
"stable": "https://charts.helm.sh/stable"
},
"commitMessageTopic": "helm chart {{depName}}",
"fileMatch": [
"(^|/)Chart\\.ya?ml$"
]
},
"$ref": "#"
},
"hermit": {
"description": "Configuration object for the hermit manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)bin/hermit$"
],
"excludeCommitPaths": [
"**/bin/hermit"
],
"versioning": "hermit"
},
"$ref": "#"
},
"homebrew": {
"description": "Configuration object for the homebrew manager",
"type": "object",
"default": {
"commitMessageTopic": "Homebrew Formula {{depName}}",
"fileMatch": [
"^Formula/[^/]+[.]rb$"
]
},
"$ref": "#"
},
"hostRules": {
"description": "Host rules/configuration including credentials.",
"type": "array",
"items": {
"allOf": [
{
"type": "object",
"properties": {
"description": {
"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",
"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",
"default": null
},
"dnsCache": {
"description": "Enable got DNS cache.",
"type": "boolean",
"default": false
},
"enableHttp2": {
"description": "Enable got HTTP/2 support.",
"type": "boolean",
"default": false
},
"hostType": {
"description": "hostType for a package rule. Can be a platform name or a datasource name.",
"type": "string"
},
"insecureRegistry": {
"description": "Explicitly turn on insecure Docker registry access (HTTP).",
"type": "boolean"
},
"keepalive": {
"description": "Enable HTTP keepalives 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
},
"timeout": {
"description": "Timeout (in milliseconds) for queries to external endpoints.",
"type": "integer"
}
}
}
]
},
"default": [
{
"timeout": 60000
}
]
},
"html": {
"description": "Configuration object for the html manager",
"type": "object",
"default": {
"fileMatch": [
"\\.html?$"
],
"versioning": "semver",
"digest": {
"enabled": false
},
"pinDigests": false
},
"$ref": "#"
},
"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"
},
"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": []
},
"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": {
"fileMatch": [
"(^|/)plugins\\.(txt|ya?ml)$"
]
},
"$ref": "#"
},
"jsonnet-bundler": {
"description": "Configuration object for the jsonnet-bundler manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)jsonnetfile\\.json$"
],
"datasource": "git-tags"
},
"$ref": "#"
},
"kotlin-script": {
"description": "Configuration object for the kotlin-script manager",
"type": "object",
"default": {
"fileMatch": [
"^.+\\.main\\.kts$"
]
},
"$ref": "#"
},
"kubernetes": {
"description": "Configuration object for the kubernetes manager",
"type": "object",
"default": {
"fileMatch": []
},
"$ref": "#"
},
"kustomize": {
"description": "Configuration object for the kustomize manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)kustomization\\.ya?ml$"
],
"pinDigests": false
},
"$ref": "#"
},
"labels": {
"description": "Labels to set in Pull Request.",
"type": "array",
"items": {
"type": "string"
}
},
"leiningen": {
"description": "Configuration object for the leiningen manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)project\\.clj$"
],
"versioning": "maven"
},
"$ref": "#"
},
"lockFileMaintenance": {
"description": "Configuration for lock file maintenance.",
"type": "object",
"default": {
"enabled": false,
"recreateWhen": "always",
"rebaseStalePrs": true,
"branchTopic": "lock-file-maintenance",
"commitMessageAction": "Lock file maintenance",
"commitMessageTopic": null,
"commitMessageExtra": null,
"schedule": [
"before 4am on monday"
],
"groupName": null,
"prBodyDefinitions": {
"Change": "All locks refreshed"
}
},
"$ref": "#"
},
"logContext": {
"description": "Add a global or per-repo log context to each log entry.",
"type": "string",
"default": null
},
"logFile": {
"description": "Log file path.",
"type": "string"
},
"logFileLevel": {
"description": "Set the log file log level.",
"type": "string",
"default": "debug"
},
"major": {
"description": "Configuration to apply when an update type is `major`.",
"type": "object",
"default": {},
"$ref": "#"
},
"maven": {
"description": "Configuration object for the maven manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/|\\.)pom\\.xml$",
"^(((\\.mvn)|(\\.m2))/)?settings\\.xml$"
],
"versioning": "maven"
},
"$ref": "#"
},
"maven-wrapper": {
"description": "Configuration object for the maven-wrapper manager",
"type": "object",
"default": {
"fileMatch": [
"(^|\\/).mvn/wrapper/maven-wrapper.properties$"
],
"versioning": "maven"
},
"$ref": "#"
},
"meteor": {
"description": "Configuration object for the meteor manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)package\\.js$"
]
},
"$ref": "#"
},
"migratePresets": {
"description": "Define presets here which have been removed or renamed and should be migrated automatically.",
"type": "object",
"default": {},
"additionalProperties": {
"type": "string"
},
"$ref": "#"
},
"minimumReleaseAge": {
"description": "Time required before a new release is considered stable.",
"type": "string",
"default": null
},
"minor": {
"description": "Configuration to apply when an update type is `minor`.",
"type": "object",
"default": {},
"$ref": "#"
},
"mint": {
"description": "Configuration object for the mint manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)Mintfile$"
]
},
"$ref": "#"
},
"mix": {
"description": "Configuration object for the mix manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)mix\\.exs$"
],
"versioning": "hex"
},
"$ref": "#"
},
"nix": {
"description": "Configuration object for the nix manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)flake\\.nix$"
],
"commitMessageTopic": "nixpkgs",
"commitMessageExtra": "to {{newValue}}",
"enabled": false
},
"$ref": "#"
},
"nodenv": {
"description": "Configuration object for the nodenv manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)\\.node-version$"
],
"versioning": "node"
},
"$ref": "#"
},
"npm": {
"description": "Configuration object for the npm manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)package\\.json$"
],
"versioning": "npm",
"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": "#"
},
"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": {
"fileMatch": [
"\\.(?:cs|fs|vb)proj$",
"\\.(?:props|targets)$",
"(^|/)dotnet-tools\\.json$",
"(^|/)global\\.json$"
]
},
"$ref": "#"
},
"nvm": {
"description": "Configuration object for the nvm manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)\\.nvmrc$"
],
"versioning": "node",
"pinDigests": false
},
"$ref": "#"
},
"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",
"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": "boolean",
"default": false
},
"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": {
"fileMatch": [
"(^|/)src/main/features/.+\\.json$"
]
},
"$ref": "#"
},
"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": {
"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"
},
"customChangelogUrl": {
"description": "If set, Renovate will use this URL to fetch changelogs for a matched dependency. Valid only within a `packageRules` object.",
"type": "string"
},
"excludeDepNames": {
"description": "Dep names to exclude. Valid only within a `packageRules` object.",
"oneOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "string"
}
]
},
"excludeDepPatterns": {
"description": "Dep name patterns to exclude. Valid only within a `packageRules` object.",
"oneOf": [
{
"type": "array",
"items": {
"type": "string",
"format": "regex"
}
},
{
"type": "string",
"format": "regex"
}
]
},
"excludePackageNames": {
"description": "Package names to exclude. Valid only within a `packageRules` object.",
"oneOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "string"
}
]
},
"excludePackagePatterns": {
"description": "Package name patterns to exclude. Valid only within a `packageRules` object.",
"oneOf": [
{
"type": "array",
"items": {
"type": "string",
"format": "regex"
}
},
{
"type": "string",
"format": "regex"
}
]
},
"excludePackagePrefixes": {
"description": "Package name prefixes to exclude. Valid only within a `packageRules` object.",
"oneOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "string"
}
]
},
"excludeRepositories": {
"description": "List of repositories to exclude (e.g. `[\"**/*-archived\"]`). Valid only within a `packageRules` object.",
"oneOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "string"
}
]
},
"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"
]
}
]
},
"matchCurrentValue": {
"description": "A regex 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"
}
]
},
"matchDepPatterns": {
"description": "Dep name patterns to match. Valid only within a `packageRules` object.",
"oneOf": [
{
"type": "array",
"items": {
"type": "string",
"format": "regex"
}
},
{
"type": "string",
"format": "regex"
}
]
},
"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"
}
},
"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"
}
]
},
"matchPackageNames": {
"description": "Package names to match. Valid only within a `packageRules` object.",
"oneOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "string"
}
]
},
"matchPackagePatterns": {
"description": "Package name patterns to match. Valid only within a `packageRules` object.",
"oneOf": [
{
"type": "array",
"items": {
"type": "string",
"format": "regex"
}
},
{
"type": "string",
"format": "regex"
}
]
},
"matchPackagePrefixes": {
"description": "Package name prefixes 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"
}
]
},
"matchSourceUrlPrefixes": {
"description": "A list of source URL prefixes to match against, commonly used to group monorepos or packages from the same organization.",
"oneOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "string"
}
]
},
"matchSourceUrls": {
"description": "A list of source URLs to exact match 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"
]
}
]
},
"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"
}
}
}
]
}
},
"password": {
"description": "Password for authentication.",
"type": "string"
},
"patch": {
"description": "Configuration to apply when an update type is `patch`.",
"type": "object",
"default": {},
"$ref": "#"
},
"pep621": {
"description": "Configuration object for the pep621 manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)pyproject\\.toml$"
]
},
"$ref": "#"
},
"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": "#"
},
"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": "#"
},
"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": {
"fileMatch": [],
"lockFileMaintenance": {
"enabled": true,
"branchTopic": "pip-compile-refresh",
"commitMessageAction": "Refresh pip-compile outputs"
}
},
"$ref": "#"
},
"pip_requirements": {
"description": "Configuration object for the pip_requirements manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)[\\w-]*requirements(-\\w+)?\\.(txt|pip)$"
]
},
"$ref": "#"
},
"pip_setup": {
"description": "Configuration object for the pip_setup manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)setup\\.py$"
]
},
"$ref": "#"
},
"pipenv": {
"description": "Configuration object for the pipenv manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)Pipfile$"
]
},
"$ref": "#"
},
"platform": {
"description": "Platform type of repository.",
"type": "string",
"enum": [
"azure",
"bitbucket",
"bitbucket-server",
"codecommit",
"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": "boolean",
"default": false
},
"poetry": {
"description": "Configuration object for the poetry manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)pyproject\\.toml$"
]
},
"$ref": "#"
},
"postUpdateOptions": {
"description": "Enable post-update options to be run after package/artifact updating.",
"type": "array",
"items": {
"type": "string",
"enum": [
"bundlerConservative",
"gomodMassage",
"gomodTidy",
"gomodTidy1.17",
"gomodTidyE",
"gomodUpdateImportPaths",
"helmUpdateSubChartArchives",
"npmDedupe",
"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": {
"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": []
},
"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": [
"**/*"
]
}
}
}
]
}
},
"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}}}",
"Type": "{{{depType}}}",
"Update": "{{{updateType}}}",
"Current value": "{{{currentValue}}}",
"New value": "{{{newValue}}}",
"Change": "`{{{displayFrom}}}` -> `{{{displayTo}}}`",
"Pending": "{{{displayPending}}}",
"References": "{{{references}}}",
"Package file": "{{{packageFile}}}",
"Age": "[](https://docs.renovatebot.com/merge-confidence/)",
"Adoption": "[](https://docs.renovatebot.com/merge-confidence/)",
"Passing": "[](https://docs.renovatebot.com/merge-confidence/)",
"Confidence": "[](https://docs.renovatebot.com/merge-confidence/)"
}
},
"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
},
"prPriority": {
"description": "Set sorting priority for PR creation. PRs with higher priority are created first, negative priority last.",
"type": "integer",
"default": 0
},
"prTitle": {
"description": "Pull Request title template (deprecated). Inherits from `commitMessage` if null.",
"type": "string",
"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,
"fileMatch": [
"(^|/)\\.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": "#"
},
"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"
},
"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": {
"fileMatch": [
"(^|/)pubspec\\.ya?ml$"
],
"versioning": "npm"
},
"$ref": "#"
},
"puppet": {
"description": "Configuration object for the puppet manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)Puppetfile$"
]
},
"$ref": "#"
},
"pyenv": {
"description": "Configuration object for the pyenv manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)\\.python-version$"
],
"versioning": "docker"
},
"$ref": "#"
},
"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"
],
"default": "auto"
},
"recreateWhen": {
"description": "Recreate PRs even if same ones were closed previously.",
"type": "string",
"enum": [
"auto",
"always",
"never"
],
"default": "auto"
},
"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": "#"
},
"regexManagers": {
"description": "Custom managers using regex matching.",
"type": "array",
"items": {
"allOf": [
{
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "A custom description for this configuration object"
},
"autoReplaceStringTemplate": {
"description": "Optional `extractVersion` for extracted dependencies. Valid only within a `regexManagers` object.",
"type": "string"
},
"currentValueTemplate": {
"description": "Optional `currentValue` for extracted dependencies. Valid only within a `regexManagers` object.",
"type": "string"
},
"customType": {
"description": "Custom manager to use. Valid only within a `regexManagers` object.",
"type": "string",
"enum": [
"regex"
]
},
"datasourceTemplate": {
"description": "Optional datasource for extracted dependencies. Valid only within a `regexManagers` object.",
"type": "string"
},
"depNameTemplate": {
"description": "Optional depName for extracted dependencies. Valid only within a `regexManagers` object.",
"type": "string"
},
"depTypeTemplate": {
"description": "Optional `depType` for extracted dependencies. Valid only within a `regexManagers` object.",
"type": "string"
},
"extractVersionTemplate": {
"description": "Optional `extractVersion` for extracted dependencies. Valid only within a `regexManagers` object.",
"type": "string"
},
"matchStrings": {
"description": "Regex capture rule to use. Valid only within a `regexManagers` object.",
"type": "array",
"items": {
"type": "string",
"format": "regex"
}
},
"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 `regexManagers` object.",
"type": "string"
},
"registryUrlTemplate": {
"description": "Optional registry URL for extracted dependencies. Valid only within a `regexManagers` object.",
"type": "string"
},
"versioningTemplate": {
"description": "Optional versioning for extracted dependencies. Valid only within a `regexManagers` object.",
"type": "string"
}
}
}
]
},
"default": []
},
"registryAliases": {
"description": "Aliases for registries.",
"type": "object",
"default": {},
"additionalProperties": {
"type": "string",
"format": "uri"
},
"$ref": "#"
},
"registryUrls": {
"description": "List of URLs to try for dependency lookup. Package manager specific.",
"type": "array",
"items": {
"type": "string"
},
"default": null
},
"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 `{{{depNameSanitized}}}` with the community suggested minimal stable replacement version."
]
},
"$ref": "#"
},
"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"
},
"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",
"default": null
},
"rollback": {
"description": "Configuration to apply when rolling back a version.",
"type": "object",
"default": {
"branchTopic": "{{{depNameSanitized}}}-rollback",
"commitMessageAction": "Roll back",
"semanticCommitType": "fix"
},
"$ref": "#"
},
"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": {
"fileMatch": [
"(^|/)\\.ruby-version$"
],
"versioning": "ruby"
},
"$ref": "#"
},
"sbt": {
"description": "Configuration object for the sbt manager",
"type": "object",
"default": {
"fileMatch": [
"\\.sbt$",
"project/[^/]*\\.scala$",
"project/build\\.properties$"
],
"versioning": "ivy"
},
"$ref": "#"
},
"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"
},
"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
},
"setup-cfg": {
"description": "Configuration object for the setup-cfg manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)setup\\.cfg$"
],
"versioning": "pep440"
},
"$ref": "#"
},
"skipInstalls": {
"description": "Skip installing modules/dependencies if lock file updating is possible without a full install.",
"type": "boolean",
"default": null
},
"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",
"deprecationWarningIssues",
"lockFileErrors",
"missingCredentialsError",
"onboardingClose",
"prEditedNotification",
"prIgnoreNotification"
]
},
"default": [
"deprecationWarningIssues"
]
},
"swift": {
"description": "Configuration object for the swift manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)Package\\.swift"
],
"versioning": "swift",
"pinDigests": false
},
"$ref": "#"
},
"tekton": {
"description": "Configuration object for the tekton manager",
"type": "object",
"default": {
"fileMatch": []
},
"$ref": "#"
},
"terraform": {
"description": "Configuration object for the terraform manager",
"type": "object",
"default": {
"commitMessageTopic": "Terraform {{depName}}",
"fileMatch": [
"\\.tf$"
],
"pinDigests": false
},
"$ref": "#"
},
"terraform-version": {
"description": "Configuration object for the terraform-version manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)\\.terraform-version$"
],
"versioning": "hashicorp",
"extractVersion": "^v(?.*)$"
},
"$ref": "#"
},
"terragrunt": {
"description": "Configuration object for the terragrunt manager",
"type": "object",
"default": {
"commitMessageTopic": "Terragrunt dependency {{depName}}",
"fileMatch": [
"(^|/)terragrunt\\.hcl$"
]
},
"$ref": "#"
},
"terragrunt-version": {
"description": "Configuration object for the terragrunt-version manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)\\.terragrunt-version$"
],
"versioning": "hashicorp",
"extractVersion": "^v(?.+)$"
},
"$ref": "#"
},
"tflint-plugin": {
"description": "Configuration object for the tflint-plugin manager",
"type": "object",
"default": {
"commitMessageTopic": "TFLint plugin {{depName}}",
"fileMatch": [
"\\.tflint\\.hcl$"
],
"extractVersion": "^v(?.*)$"
},
"$ref": "#"
},
"timezone": {
"description": "[IANA Time Zone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)",
"type": "string"
},
"token": {
"description": "Repository Auth Token.",
"type": "string"
},
"transitiveRemediation": {
"description": "Enable remediation of transitive dependencies.",
"type": "boolean",
"default": false
},
"travis": {
"description": "Configuration object for the travis manager",
"type": "object",
"default": {
"fileMatch": [
"^\\.travis\\.ya?ml$"
],
"major": {
"enabled": false
},
"versioning": "node"
},
"$ref": "#"
},
"unicodeEmoji": {
"description": "Enable or disable Unicode emoji.",
"type": "boolean",
"default": true
},
"updateInternalDeps": {
"description": "Whether to update internal dep versions in a monorepo. Works on Lerna or Yarn Workspaces.",
"type": "boolean",
"default": false
},
"updateLockFiles": {
"description": "Set to `false` to disable lock file updating.",
"type": "boolean"
},
"updateNotScheduled": {
"description": "Whether to update branches when not scheduled. Renovate will not create branches outside of the schedule.",
"type": "boolean"
},
"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"
},
"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."
}
},
"username": {
"description": "Username for authentication.",
"type": "string"
},
"velaci": {
"description": "Configuration object for the velaci manager",
"type": "object",
"default": {
"fileMatch": [
"(^|/)\\.vela\\.ya?ml$"
]
},
"$ref": "#"
},
"versioning": {
"description": "Versioning to use for filtering and comparisons.",
"type": "string",
"oneOf": [
{
"enum": [
"aws-machine-image",
"azure-rest-api",
"bazel-module",
"cargo",
"composer",
"conan",
"deb",
"debian",
"docker",
"git",
"go-mod-directive",
"gradle",
"hashicorp",
"helm",
"hermit",
"hex",
"ivy",
"kubernetes-api",
"loose",
"maven",
"nixpkgs",
"node",
"npm",
"nuget",
"pep440",
"perl",
"poetry",
"python",
"redhat",
"regex",
"rez",
"ruby",
"semver",
"semver-coerced",
"swift",
"ubuntu"
]
},
{
"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}}}-{{{depName}}}-vulnerability",
"prCreation": "immediate"
},
"$ref": "#"
},
"woodpecker": {
"description": "Configuration object for the woodpecker manager",
"type": "object",
"default": {
"fileMatch": [
"^\\.woodpecker(?:/[^/]+)?\\.ya?ml$"
]
},
"$ref": "#"
},
"writeDiscoveredRepos": {
"description": "Writes discovered repositories to a JSON file and then exit.",
"type": "string"
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/renovate.sha256 0000644 0001751 0001747 00000000100 14472046134 027711 0 ustar 00runner docker 9d5809dff3355cad4972c046c07f42553e154ee8c5f1f72b41dde6aec15eb6b6 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/travis.json 0000644 0001751 0001747 00000200560 14472046134 027353 0 ustar 00runner docker {
"$schema": "http://json-schema.org/draft-04/schema#",
"allOf": [
{
"$ref": "#/definitions/job"
},
{
"type": "object",
"properties": {
"notifications": {
"type": "object",
"properties": {
"webhooks": {
"oneOf": [
{
"$ref": "#/definitions/possiblySecretStringOrPossiblySecretStringTypeArrayUnique"
},
{
"type": "boolean"
},
{
"$ref": "#/definitions/notificationObject/webhooks"
},
{
"type": "array",
"uniqueItems": true,
"minItems": 1,
"items": {
"$ref": "#/definitions/notificationObject/webhooks"
}
}
]
},
"slack": {
"oneOf": [
{
"$ref": "#/definitions/slackRoom"
},
{
"type": "boolean"
},
{
"$ref": "#/definitions/notificationObject/slack"
},
{
"type": "array",
"uniqueItems": true,
"minItems": 1,
"items": {
"$ref": "#/definitions/notificationObject/slack"
}
}
]
},
"email": {
"oneOf": [
{
"$ref": "#/definitions/possiblySecretStringOrPossiblySecretStringTypeArrayUnique"
},
{
"type": "boolean"
},
{
"$ref": "#/definitions/notificationObject/email"
},
{
"type": "array",
"uniqueItems": true,
"minItems": 1,
"items": {
"$ref": "#/definitions/notificationObject/email"
}
}
]
},
"irc": {
"oneOf": [
{
"$ref": "#/definitions/possiblySecretStringOrPossiblySecretStringTypeArrayUnique"
},
{
"type": "boolean"
},
{
"$ref": "#/definitions/notificationObject/irc"
},
{
"type": "array",
"uniqueItems": true,
"minItems": 1,
"items": {
"$ref": "#/definitions/notificationObject/irc"
}
}
]
},
"pushover": {
"oneOf": [
{
"$ref": "#/definitions/nonEmptyStringOrArrayOfNonEmptyStrings"
},
{
"type": "boolean"
},
{
"$ref": "#/definitions/notificationObject/pushover"
},
{
"type": "array",
"uniqueItems": true,
"minItems": 1,
"items": {
"$ref": "#/definitions/notificationObject/pushover"
}
}
]
},
"campfire": {
"oneOf": [
{
"$ref": "#/definitions/possiblySecretStringOrPossiblySecretStringTypeArrayUnique"
},
{
"type": "boolean"
},
{
"$ref": "#/definitions/notificationObject/campfire"
},
{
"type": "array",
"uniqueItems": true,
"minItems": 1,
"items": {
"$ref": "#/definitions/notificationObject/campfire"
}
}
]
},
"flowdock": {
"oneOf": [
{
"$ref": "#/definitions/possiblySecretString"
},
{
"type": "boolean"
},
{
"$ref": "#/definitions/notificationObject/flowdock"
},
{
"type": "array",
"uniqueItems": true,
"minItems": 1,
"items": {
"$ref": "#/definitions/notificationObject/flowdock"
}
}
]
},
"hipchat": {
"oneOf": [
{
"$ref": "#/definitions/possiblySecretStringOrPossiblySecretStringTypeArrayUnique"
},
{
"type": "boolean"
},
{
"$ref": "#/definitions/notificationObject/hipchat"
},
{
"type": "array",
"uniqueItems": true,
"minItems": 1,
"items": {
"$ref": "#/definitions/notificationObject/hipchat"
}
}
]
}
},
"additionalProperties": false
},
"matrix": {
"type": "object",
"properties": {
"exclude": {
"type": "array",
"items": {
"$ref": "#/definitions/job"
}
},
"include": {
"type": "array",
"items": {
"$ref": "#/definitions/job"
}
},
"allow_failures": {
"type": "array",
"items": {
"$ref": "#/definitions/job"
}
},
"fast_finish": {
"type": "boolean",
"description": "If some rows in the build matrix are allowed to fail, the build won't be marked as finished until they have completed. To mark the build as finished as soon as possible, add fast_finish: true"
}
},
"additionalProperties": false
},
"jobs": {
"type": "object",
"additionalProperties": false,
"properties": {
"include": {
"type": "array",
"items": {
"allOf": [
{
"$ref": "#/definitions/job"
},
{
"type": "object",
"properties": {
"stage": {
"type": "string",
"description": "The name of the build stage",
"default": "test"
}
}
}
]
}
},
"exclude": {
"type": "array",
"items": {
"allOf": [
{
"$ref": "#/definitions/job"
},
{
"type": "object",
"properties": {
"stage": {
"type": "string",
"description": "The name of the build stage",
"default": "test"
}
}
}
]
}
},
"allow_failures": {
"type": "array",
"items": {
"$ref": "#/definitions/job"
}
},
"fast_finish": {
"type": "boolean",
"description": "If some rows in the build matrix are allowed to fail, the build won't be marked as finished until they have completed. To mark the build as finished as soon as possible, add fast_finish: true"
}
}
},
"stages": {
"type": "array",
"description": "Specifies the order of build stages",
"items": {
"oneOf": [
{
"type": "string"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"type": "string"
},
"if": {
"description": "Specifies a condition for the stage",
"type": "string"
}
}
}
]
}
},
"version": {
"type": "string",
"description": "Build config specification version",
"pattern": "^(~>|>|>=|=|<=|<) (\\d+(?:\\.\\d+)?(?:\\.\\d+)?)$"
},
"import": {
"description": "Import YAML config snippets that can be shared across repositories.",
"oneOf": [
{
"type": "array",
"uniqueItems": true,
"items": {
"$ref": "#/definitions/import"
}
},
{
"$ref": "#/definitions/import"
}
]
}
}
}
],
"definitions": {
"nonEmptyString": {
"type": "string",
"minLength": 1
},
"notRequiredNonEmptyString": {
"oneOf": [
{
"$ref": "#/definitions/nonEmptyString"
},
{
"type": "null"
}
]
},
"arrayOfNonEmptyStrings": {
"type": "array",
"items": {
"$ref": "#/definitions/nonEmptyString"
}
},
"nonEmptyStringOrArrayOfNonEmptyStrings": {
"oneOf": [
{
"$ref": "#/definitions/nonEmptyString"
},
{
"$ref": "#/definitions/arrayOfNonEmptyStrings"
}
]
},
"notRequiredNonEmptyStringOrArrayOfNonEmptyStrings": {
"oneOf": [
{
"$ref": "#/definitions/nonEmptyStringOrArrayOfNonEmptyStrings"
},
{
"type": "null"
}
]
},
"stringArrayUnique": {
"type": "array",
"uniqueItems": true,
"minItems": 1,
"items": {
"$ref": "#/definitions/nonEmptyString"
}
},
"stringOrStringArrayUnique": {
"oneOf": [
{
"$ref": "#/definitions/nonEmptyString"
},
{
"$ref": "#/definitions/stringArrayUnique"
}
]
},
"stringOrNumber": {
"oneOf": [
{
"$ref": "#/definitions/nonEmptyString"
},
{
"type": "number"
}
]
},
"stringOrNumberAndBothAreTypeArrayUnique": {
"type": "array",
"uniqueItems": true,
"minItems": 1,
"items": {
"$ref": "#/definitions/stringOrNumber"
}
},
"stringOrNumberOrAcceptBothTypeAsArrayUnique": {
"oneOf": [
{
"$ref": "#/definitions/stringOrNumber"
},
{
"$ref": "#/definitions/stringOrNumberAndBothAreTypeArrayUnique"
}
]
},
"secretString": {
"type": "object",
"additionalProperties": false,
"properties": {
"secure": {
"$ref": "#/definitions/nonEmptyString"
}
}
},
"possiblySecretString": {
"oneOf": [
{
"type": "string"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"secure": {
"type": "string"
}
}
}
]
},
"possiblySecretStringOrPossiblySecretStringTypeArrayUnique": {
"oneOf": [
{
"$ref": "#/definitions/possiblySecretString"
},
{
"type": "array",
"uniqueItems": true,
"minItems": 1,
"items": {
"$ref": "#/definitions/possiblySecretString"
}
}
]
},
"slackRoom": {
"description": "Your account name, token and optional channel",
"oneOf": [
{
"type": "string",
"pattern": ".+:.+(#.+)?"
},
{
"$ref": "#/definitions/secretString"
}
]
},
"notificationFrequency": {
"enum": ["always", "never", "change"]
},
"step": {
"anyOf": [
{
"type": "boolean"
},
{
"enum": ["skip", "ignore"]
},
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
},
"service": {
"enum": [
"cassandra",
"couchdb",
"docker",
"elasticsearch",
"mariadb",
"memcached",
"mongodb",
"mysql",
"neo4j",
"postgresql",
"rabbitmq",
"redis",
"redis-server",
"rethinkdb",
"riak",
"xvfb"
]
},
"cache": {
"enum": [
"apt",
"bundler",
"cargo",
"ccache",
"cocoapods",
"packages",
"pip",
"yarn",
"npm"
]
},
"xcodeVersions": {
"enum": [
"xcode6.4",
"xcode7.3",
"xcode8",
"xcode8.3",
"xcode9",
"xcode9.1",
"xcode9.2",
"xcode9.3",
"xcode9.4",
"xcode10",
"xcode10.1",
"xcode10.2",
"xcode10.3",
"xcode11",
"xcode11.1",
"xcode11.2",
"xcode11.3",
"xcode11.4",
"xcode11.4.1",
"xcode11.5",
"xcode11.6",
"xcode12u",
"xcode12",
"xcode12.2",
"xcode12.3",
"xcode12.4",
"xcode12.5",
"xcode13.1",
"xcode13.2",
"xcode13.3",
"xcode13.4",
"xcode14",
"xcode14.1",
"xcode14.2"
]
},
"envVars": {
"oneOf": [
{
"$ref": "#/definitions/envVar"
},
{
"type": "array",
"items": {
"$ref": "#/definitions/envVar"
}
}
]
},
"envVar": {
"oneOf": [
{
"type": "string",
"pattern": "[^=]+=.*"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"secure": {
"type": "string",
"pattern": "[^=]+=.*"
}
}
}
]
},
"job": {
"type": "object",
"properties": {
"language": {
"enum": [
"android",
"bash",
"c",
"c++",
"clojure",
"cpp",
"crystal",
"csharp",
"d",
"dart",
"dartlang",
"elixir",
"elm",
"erlang",
"generic",
"go",
"golang",
"groovy",
"haskell",
"haxe",
"java",
"javascript",
"julia",
"jvm",
"matlab",
"minimal",
"nix",
"node",
"node.js",
"node_js",
"nodejs",
"obj-c",
"obj_c",
"objective-c",
"objective_c",
"perl",
"perl6",
"php",
"python",
"r",
"ruby",
"rust",
"scala",
"sh",
"shell",
"smalltalk"
]
},
"matlab": {
"$ref": "#/definitions/stringOrStringArrayUnique"
},
"elm": {
"$ref": "#/definitions/stringOrStringArrayUnique"
},
"elm-test": {
"$ref": "#/definitions/nonEmptyString"
},
"elm-format": {
"$ref": "#/definitions/nonEmptyString"
},
"haxe": {
"type": "array",
"items": {
"type": "string"
}
},
"scala": {
"type": "array",
"items": {
"type": "string"
}
},
"sbt_args": {
"type": "string"
},
"crystal": {
"type": "array",
"items": {
"type": "string"
}
},
"neko": {
"type": "string"
},
"hxml": {
"type": "array",
"items": {
"type": "string"
}
},
"smalltalk": {
"type": "array",
"items": {
"type": "string"
}
},
"perl": {
"type": "array",
"items": {
"type": "string"
}
},
"perl6": {
"type": "array",
"items": {
"type": "string"
}
},
"d": {
"type": "array",
"items": {
"type": "string"
}
},
"dart": {
"type": "array",
"items": {
"type": "string"
}
},
"dart_task": {
"type": "array",
"items": {
"type": "object",
"properties": {
"test": {
"type": "string"
},
"install_dartium": {
"type": "boolean"
},
"xvfb": {
"type": "boolean"
},
"dartanalyzer": {
"type": "boolean"
},
"dartfmt": {
"type": "boolean"
}
}
}
},
"ghc": {
"type": "array",
"items": {
"type": "string"
}
},
"lein": {
"type": "string"
},
"android": {
"type": "object",
"properties": {
"components": {
"type": "array",
"items": {
"type": "string"
}
},
"licenses": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"node_js": {
"$ref": "#/definitions/stringOrNumberOrAcceptBothTypeAsArrayUnique"
},
"compiler": {
"oneOf": [
{
"type": "array",
"items": {
"enum": ["clang", "gcc"]
}
},
{
"enum": ["clang", "gcc"]
}
]
},
"php": {
"$ref": "#/definitions/stringOrNumberOrAcceptBothTypeAsArrayUnique"
},
"go": {
"oneOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "string"
}
]
},
"jdk": {
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
},
"solution": {
"type": "string",
"description": "When the optional solution key is present, Travis will run NuGet package restore and build the given solution."
},
"mono": {
"oneOf": [
{
"enum": ["none"]
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
},
"xcode_project": {
"type": "string"
},
"xcode_workspace": {
"type": "string"
},
"xcode_scheme": {
"type": "string"
},
"xcode_sdk": {
"type": "string"
},
"podfile": {
"type": "string",
"description": "By default, Travis CI will assume that your Podfile is in the root of the repository. If this is not the case, you can specify where the Podfile is"
},
"python": {
"$ref": "#/definitions/stringOrNumberOrAcceptBothTypeAsArrayUnique"
},
"elixir": {
"oneOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "string"
}
]
},
"rust": {
"oneOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "string"
},
{
"type": "number"
}
]
},
"erlang": {
"oneOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "string"
}
]
},
"julia": {
"$ref": "#/definitions/stringOrNumberOrAcceptBothTypeAsArrayUnique"
},
"opt_release": {
"oneOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "string"
}
]
},
"rvm": {
"$ref": "#/definitions/stringOrNumberOrAcceptBothTypeAsArrayUnique"
},
"gemfile": {
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
},
"bundler_args": {
"type": "string"
},
"r": {
"oneOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "string"
}
]
},
"pandoc_version": {
"type": "string"
},
"brew_packages": {
"type": "array",
"description": "A list of packages to install via brew. This option is ignored on non-OS X builds.",
"items": {
"type": "string"
}
},
"r_binary_packages": {
"type": "array",
"items": {
"type": "string"
}
},
"r_packages": {
"type": "array",
"items": {
"type": "string"
}
},
"bioc_packages": {
"type": "array",
"items": {
"type": "string"
}
},
"r_github_packages": {
"type": "array",
"items": {
"type": "string"
}
},
"apt_packages": {
"type": "array",
"items": {
"type": "string"
}
},
"cran": {
"type": "string",
"description": "CRAN mirror to use for fetching packages"
},
"repos": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Dictionary of repositories to pass to options(repos)"
},
"arch": {
"description": "The CPU Architecture to run the job on",
"oneOf": [
{
"enum": [
"amd64",
"x86_64",
"arm64",
"ppc64le",
"s390x",
"arm64-graviton2"
]
},
{
"type": "array",
"uniqueItems": true,
"minItems": 1,
"items": {
"enum": [
"amd64",
"arm64",
"ppc64le",
"s390x",
"arm64-graviton2"
]
}
}
]
},
"os": {
"description": "The operating system to run the job on",
"oneOf": [
{
"enum": ["osx", "linux", "linux-ppc64le", "windows"]
},
{
"type": "array",
"uniqueItems": true,
"minItems": 1,
"items": {
"enum": ["osx", "linux", "linux-ppc64le", "windows"]
}
}
]
},
"osx_image": {
"oneOf": [
{
"$ref": "#/definitions/xcodeVersions"
},
{
"type": "array",
"uniqueItems": true,
"minItems": 1,
"items": {
"$ref": "#/definitions/xcodeVersions"
}
}
],
"default": "xcode9.4"
},
"dist": {
"description": "The Ubuntu distribution to use",
"enum": ["precise", "trusty", "xenial", "bionic", "focal", "jammy"]
},
"sudo": {
"enum": [true, false, "", "required", "enabled"],
"description": "sudo is deprecated"
},
"addons": {
"type": "object",
"properties": {
"apt": {
"type": "object",
"description": "To install packages not included in the default container-based-infrastructure you need to use the APT addon, as sudo apt-get is not available",
"properties": {
"update": {
"type": "boolean",
"description": "To update the list of available packages"
},
"sources": {
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"properties": {
"sourceline": {
"type": "string",
"description": "Key-value pairs which will be added to /etc/apt/sources.list"
},
"key_url": {
"type": "string",
"description": "When APT sources require GPG keys, you can specify this with key_url"
}
},
"required": ["sourceline"],
"additionalProperties": false
},
{
"type": "string",
"description": "Alias defined in source whitelist"
}
]
}
},
"packages": {
"type": "array",
"description": "To install packages from the package whitelist before your custom build steps",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"hosts": {
"description": "If your build requires setting up custom hostnames, you can specify a single host or a list of them. Travis CI will automatically setup the hostnames in /etc/hosts for both IPv4 and IPv6.",
"oneOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "string"
}
]
},
"ssh_known_hosts": {
"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.",
"$ref": "#/definitions/stringOrStringArrayUnique"
},
"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"
}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/builtin_schemas/vendor/travis.sha256 0000644 0001751 0001747 00000000100 14472046134 027376 0 ustar 00runner docker 44cf3f63492a54417f1f321b89b7585495dfb4cf30d28a49958a5d98caf0dab3 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/cachedownloader.py 0000644 0001751 0001747 00000011550 14472046134 024175 0 ustar 00runner docker from __future__ import annotations
import contextlib
import io
import os
import platform
import shutil
import tempfile
import time
import typing as t
import requests
class FailedDownloadError(Exception):
pass
class CacheDownloader:
_LASTMOD_FMT = "%a, %d %b %Y %H:%M:%S %Z"
# changed in v0.5.0
# original cache dir was "jsonschema_validate"
# this will let us do any other caching we might need in the future in the same
# cache dir (adjacent to "downloads")
_CACHEDIR_NAME = os.path.join("check_jsonschema", "downloads")
def __init__(
self,
file_url: str,
filename: str | None = None,
cache_dir: str | None = None,
disable_cache: bool = False,
validation_callback: t.Callable[[bytes], t.Any] | None = None,
):
self._file_url = file_url
self._filename = filename or file_url.split("/")[-1]
self._cache_dir = cache_dir or self._compute_default_cache_dir()
self._disable_cache = disable_cache
self._validation_callback = validation_callback
def _compute_default_cache_dir(self) -> 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"))
if cache_dir:
cache_dir = os.path.join(cache_dir, self._CACHEDIR_NAME)
return cache_dir
def _get_request(self) -> requests.Response:
try:
# do manual retries, rather than using urllib3 retries, to make it trivially
# testable with 'responses'
r: requests.Response | None = None
for _attempt in range(3):
r = requests.get(self._file_url, stream=True)
if r.ok:
if self._validation_callback is not None:
try:
self._validation_callback(r.content)
except ValueError:
continue
return r
assert r is not None
raise FailedDownloadError(
f"got responses with status={r.status_code}, retries exhausted"
)
except requests.RequestException as e:
raise FailedDownloadError("encountered error during download") from e
def _lastmod_from_response(self, response: requests.Response) -> float:
try:
return time.mktime(
time.strptime(response.headers["last-modified"], self._LASTMOD_FMT)
)
# OverflowError: time outside of platform-specific bounds
# ValueError: malformed/unparseable
# LookupError: no such header
except (OverflowError, ValueError, LookupError):
return 0.0
def _cache_hit(self, 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 = self._lastmod_from_response(response)
return local_mtime >= remote_mtime
def _write(self, dest: str, response: requests.Response) -> 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(response.content)
fp.close()
shutil.copy(fp.name, dest)
os.remove(fp.name)
def _download(self) -> str:
assert self._cache_dir
os.makedirs(self._cache_dir, exist_ok=True)
dest = os.path.join(self._cache_dir, self._filename)
response = self._get_request()
# check to see if we have a file which matches the connection
# only download if we do not (cache miss, vs hit)
if not self._cache_hit(dest, response):
self._write(dest, response)
return dest
@contextlib.contextmanager
def open(self) -> t.Generator[t.BinaryIO, None, None]:
if (not self._cache_dir) or self._disable_cache:
yield io.BytesIO(self._get_request().content)
else:
with open(self._download(), "rb") as fp:
yield fp
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/catalog.py 0000644 0001751 0001747 00000012033 14472046134 022462 0 ustar 00runner docker from __future__ import annotations
import typing as t
def _bitbucket_pipelines_url() -> str:
return "https://bitbucket.org/atlassianlabs/atlascode/raw/main/resources/schemas/pipelines-schema.json" # noqa: E501
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"],
"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"],
},
},
"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": ["action.(yml|yaml)", r"\.github/actions/(.+/)?action.(yml|yaml)"],
"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"],
"files": r"^.*\.gitlab-ci.yml$",
"types": "yaml",
},
},
"readthedocs": {
"url": _githubusercontent_url(
"readthedocs",
"readthedocs.org",
"master",
"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)",
"files": [
r"renovate\.(json|json5)",
r"\.(github|gitlab)/renovate\.(json|json5)",
r"\.renovaterc(\.json)?",
],
},
},
"travis": {
"url": "https://json.schemastore.org/travis",
"hook_config": {
"name": "Validate Travis Config",
"files": r"^\.travis.(yml|yaml)$",
"types": "yaml",
},
},
}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/checker.py 0000644 0001751 0001747 00000005752 14472046134 022466 0 ustar 00runner docker from __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 .reporter import Reporter
from .result import CheckResult
from .schema_loader import SchemaLoaderBase, SchemaParseError, UnsupportedUrlScheme
class _Exit(Exception):
def __init__(self, code: int):
self.code = code
class SchemaChecker:
def __init__(
self,
schema_loader: SchemaLoaderBase,
instance_loader: InstanceLoader,
reporter: Reporter,
*,
format_opts: FormatOptions | None = None,
traceback_mode: str = "short",
fill_defaults: bool = False,
):
self._schema_loader = schema_loader
self._instance_loader = instance_loader
self._reporter = reporter
self._format_opts = format_opts if format_opts is not None else FormatOptions()
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, doc: dict[str, t.Any]
) -> jsonschema.protocols.Validator:
try:
return self._schema_loader.get_validator(
path, doc, self._format_opts, 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(f"Error: schemafile was not valid: {e}\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)
for err in validator.iter_errors(data):
result.record_validation_error(path, err)
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
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1067715
check-jsonschema-0.25.0/src/check_jsonschema/cli/ 0000755 0001751 0001747 00000000000 14472046153 021247 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/cli/__init__.py 0000644 0001751 0001747 00000000064 14472046134 023357 0 ustar 00runner docker from .main_command import main
__all__ = ("main",)
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/cli/main_command.py 0000644 0001751 0001747 00000022322 14472046134 024243 0 ustar 00runner docker from __future__ import annotations
import os
import textwrap
import click
from ..catalog import CUSTOM_SCHEMA_NAMES, SCHEMA_CATALOG
from ..checker import SchemaChecker
from ..formats import KNOWN_FORMATS, RegexFormatBehavior
from ..instance_loader import InstanceLoader
from ..parsers import SUPPORTED_FILE_FORMATS
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
from .parse_result import ParseResult, SchemaLoadingMode
from .warnings import deprecation_warning_callback
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, email, ipv4, ipv6, regex, uuid
\b
For the "regex" format, there are multiple modes which can be specified with
'--format-regex':
default | best effort check
disabled | do not check the regex format
python | check that the string is a valid python regex
\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."
),
)
@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=(
"The name to use for caching a remote schema. "
"Defaults to the last slash-delimited part of the URI."
),
)
@click.option(
"--disable-format",
is_flag=True,
help="{deprecated} Disable all format checks in the schema.",
callback=deprecation_warning_callback(
"--disable-format",
is_flag=True,
append_message="Users should now pass '--disable-formats \"*\"' for "
"the same functionality.",
),
)
@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",
help=(
"Set the mode of format validation for regexes. "
"If `--disable-formats regex` is used, this option has no effect."
),
default=RegexFormatBehavior.default.value,
type=click.Choice([x.value for x in RegexFormatBehavior], 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(
"--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.",
is_flag=True,
)
@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)
def main(
*,
schemafile: str | None,
builtin_schema: str | None,
base_uri: str | None,
check_metaschema: bool,
no_cache: bool,
cache_filename: str | None,
disable_format: bool,
disable_formats: tuple[list[str], ...],
format_regex: str,
default_filetype: str,
traceback_mode: str,
data_transform: str | None,
fill_defaults: bool,
output_format: str,
verbose: int,
quiet: int,
instancefiles: tuple[str, ...],
) -> None:
args = ParseResult()
args.set_schema(schemafile, builtin_schema, check_metaschema)
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 disable_format or "*" in normalized_disable_formats:
args.disable_all_formats = True
else:
args.disable_formats = normalized_disable_formats
args.format_regex = RegexFormatBehavior(format_regex)
args.disable_cache = no_cache
args.default_filetype = default_filetype
args.fill_defaults = fill_defaults
if cache_filename is not None:
args.cache_filename = cache_filename
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,
args.cache_filename,
args.disable_cache,
base_uri=args.base_uri,
)
else:
raise NotImplementedError("no valid schema option provided")
def build_instance_loader(args: ParseResult) -> InstanceLoader:
return InstanceLoader(
args.instancefiles,
default_filetype=args.default_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,
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)
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/cli/param_types.py 0000644 0001751 0001747 00000002605 14472046134 024147 0 ustar 00runner docker from __future__ import annotations
import typing as t
import click
class CommaDelimitedList(click.ParamType):
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
def get_metavar(self, param: click.Parameter) -> 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
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/cli/parse_result.py 0000644 0001751 0001747 00000005052 14472046134 024332 0 ustar 00runner docker from __future__ import annotations
import enum
import click
from ..formats import FormatOptions, RegexFormatBehavior
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[str, ...] = ()
# cache controls
self.disable_cache: bool = False
self.cache_filename: str | None = None
# filetype detection (JSON, YAML, TOML, etc)
self.default_filetype: str = "json"
# data-transform (for Azure Pipelines and potentially future transforms)
self.data_transform: Transform | None = None
# fill default values on instances during validation
self.fill_defaults: bool = False
# regex format options
self.disable_all_formats: bool = False
self.disable_formats: tuple[str, ...] = ()
self.format_regex: RegexFormatBehavior = RegexFormatBehavior.default
# error and output controls
self.verbosity: int = 1
self.traceback_mode: str = "short"
self.output_format: str = "text"
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
@property
def format_opts(self) -> FormatOptions:
return FormatOptions(
enabled=not self.disable_all_formats,
regex_behavior=self.format_regex,
disabled_formats=self.disable_formats,
)
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/cli/warnings.py 0000644 0001751 0001747 00000001372 14472046134 023453 0 ustar 00runner docker from __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)
return value
return callback
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/formats.py 0000644 0001751 0001747 00000005633 14472046134 022533 0 ustar 00runner docker from __future__ import annotations
import copy
import enum
import re
import typing as t
import jsonschema
import jsonschema.validators
# 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",
)
def _regex_check(instance: t.Any) -> bool:
if not isinstance(instance, str):
return True
re.compile(instance)
return True
def _gated_regex_check(instance: t.Any) -> bool:
if not isinstance(instance, str):
return True
if re.search(r"\(\?[^!=]", instance):
return True
re.compile(instance)
return True
class RegexFormatBehavior(enum.Enum):
default = "default"
disabled = "disabled"
python = "python"
class FormatOptions:
def __init__(
self,
*,
enabled: bool = True,
regex_behavior: RegexFormatBehavior = RegexFormatBehavior.default,
disabled_formats: tuple[str, ...] = (),
) -> None:
self.enabled = enabled
self.regex_behavior = regex_behavior
self.disabled_formats = disabled_formats
if "regex" in self.disabled_formats:
self.regex_behavior = RegexFormatBehavior.disabled
def get_base_format_checker(schema_dialect: str | None) -> jsonschema.FormatChecker:
# resolve the dialect, if given, to a validator class
# default to the latest draft
validator_class = jsonschema.validators.validator_for(
{} if schema_dialect is None else {"$schema": schema_dialect},
default=jsonschema.Draft202012Validator,
)
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
# copy the base checker
base_checker = get_base_format_checker(schema_dialect)
checker = copy.deepcopy(base_checker)
# remove the regex check -- it will be re-added if it is enabled
del checker.checkers["regex"]
# remove the disabled checks
for checkname in opts.disabled_formats:
if checkname not in checker.checkers:
continue
del checker.checkers[checkname]
if opts.regex_behavior == RegexFormatBehavior.disabled:
pass
elif opts.regex_behavior == RegexFormatBehavior.default:
checker.checks("regex", raises=re.error)(_gated_regex_check)
elif opts.regex_behavior == RegexFormatBehavior.python:
checker.checks("regex", raises=re.error)(_regex_check)
else: # pragma: no cover
raise NotImplementedError
return checker
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/identify_filetype.py 0000644 0001751 0001747 00000001120 14472046134 024557 0 ustar 00runner docker """
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
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/instance_loader.py 0000644 0001751 0001747 00000002113 14472046134 024200 0 ustar 00runner docker from __future__ import annotations
import pathlib
import typing as t
from .parsers import ParseError, ParserSet
from .transforms import Transform
class InstanceLoader:
def __init__(
self,
filenames: t.Sequence[str],
default_filetype: str = "json",
data_transform: Transform | None = None,
) -> None:
self._filenames = filenames
self._default_filetype = default_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[pathlib.Path, ParseError | t.Any]]:
for fn in self._filenames:
path = pathlib.Path(fn)
try:
data: t.Any = self._parsers.parse_file(path, self._default_filetype)
except ParseError as err:
data = err
else:
data = self._data_transform(data)
yield (path, data)
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1067715
check-jsonschema-0.25.0/src/check_jsonschema/parsers/ 0000755 0001751 0001747 00000000000 14472046153 022157 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/parsers/__init__.py 0000644 0001751 0001747 00000006226 14472046134 024275 0 ustar 00runner docker from __future__ import annotations
import io
import json
import pathlib
import typing as t
import ruamel.yaml
from ..identify_filetype import path_to_type
from . import json5, toml, yaml
_PARSER_ERRORS: set[type[Exception]] = {json.JSONDecodeError, yaml.ParseError}
DEFAULT_LOAD_FUNC_BY_TAG: dict[str, t.Callable[[t.BinaryIO], t.Any]] = {
"json": json.load,
}
SUPPORTED_FILE_FORMATS = ["json", "yaml"]
if json5.ENABLED:
SUPPORTED_FILE_FORMATS.append("json5")
DEFAULT_LOAD_FUNC_BY_TAG["json5"] = json5.load
_PARSER_ERRORS.add(json5.ParseError)
if toml.ENABLED:
SUPPORTED_FILE_FORMATS.append("toml")
DEFAULT_LOAD_FUNC_BY_TAG["toml"] = toml.load
_PARSER_ERRORS.add(toml.ParseError)
MISSING_SUPPORT_MESSAGES: dict[str, str] = {
"json5": json5.MISSING_SUPPORT_MESSAGE,
"toml": toml.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
) -> t.Callable[[t.BinaryIO], t.Any]:
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.BinaryIO | bytes, path: pathlib.Path | str, default_filetype: str
) -> t.Any:
loadfunc = self.get(path, default_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) -> t.Any:
with open(path, "rb") as fp:
return self.parse_data_with_path(fp, path, default_filetype)
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/parsers/json5.py 0000644 0001751 0001747 00000002453 14472046134 023572 0 ustar 00runner docker from __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.BinaryIO) -> t.Any:
return _load_concrete(stream)
else:
def load(stream: t.BinaryIO) -> 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']
"""
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/parsers/toml.py 0000644 0001751 0001747 00000005427 14472046134 023513 0 ustar 00runner docker from __future__ import annotations
import datetime
import sys
import typing as t
from check_jsonschema._testing import FORCE_TOML_DISABLED
if sys.version_info < (3, 11):
try:
import tomli as toml_implementation
has_toml = True
except ImportError: # pragma: no cover
has_toml = False
else:
has_toml = True
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
# present a bool for detecting that it's enabled
ENABLED = has_toml and not FORCE_TOML_DISABLED
if ENABLED:
ParseError: type[Exception] = toml_implementation.TOMLDecodeError
def load(stream: t.BinaryIO) -> t.Any:
data = toml_implementation.load(stream)
return _normalize(data)
else:
ParseError = ValueError
def load(stream: t.BinaryIO) -> t.Any:
raise NotImplementedError
MISSING_SUPPORT_MESSAGE = """
check-jsonschema can only parse TOML files when a TOML parser is installed
If you are running check-jsonschema as an installed python package, add support with
pip install tomli
If you are running check-jsonschema as a pre-commit hook, set
additional_dependencies: ['tomli']
"""
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/parsers/yaml.py 0000644 0001751 0001747 00000004410 14472046134 023471 0 ustar 00runner docker from __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.BinaryIO], t.Any]:
def load(stream: t.BinaryIO) -> 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
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/reporter.py 0000644 0001751 0001747 00000017171 14472046134 022722 0 ustar 00runner docker """
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) -> 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()
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) -> None:
if self.verbosity < 1:
return
ok = click.style("ok", fg="green")
self._echo(f"{ok} -- validation done")
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) -> None:
report_obj: dict[str, t.Any] = {"status": "ok"}
if self.verbosity > 0:
report_obj["errors"] = []
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 > 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)
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/result.py 0000644 0001751 0001747 00000001642 14472046134 022372 0 ustar 00runner docker 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]] = {}
@property
def success(self) -> bool:
return not (bool(self.parse_errors) or bool(self.validation_errors))
def record_validation_error(
self, path: pathlib.Path, 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, err: ParseError) -> None:
filename = str(path)
if filename not in self.parse_errors:
self.parse_errors[filename] = []
self.parse_errors[filename].append(err)
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1107717
check-jsonschema-0.25.0/src/check_jsonschema/schema_loader/ 0000755 0001751 0001747 00000000000 14472046153 023266 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/schema_loader/__init__.py 0000644 0001751 0001747 00000000465 14472046134 025403 0 ustar 00runner docker from .errors import SchemaParseError, UnsupportedUrlScheme
from .main import BuiltinSchemaLoader, MetaSchemaLoader, SchemaLoader, SchemaLoaderBase
__all__ = (
"SchemaParseError",
"UnsupportedUrlScheme",
"BuiltinSchemaLoader",
"MetaSchemaLoader",
"SchemaLoader",
"SchemaLoaderBase",
)
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/schema_loader/errors.py 0000644 0001751 0001747 00000000140 14472046134 025146 0 ustar 00runner docker class SchemaParseError(ValueError):
pass
class UnsupportedUrlScheme(ValueError):
pass
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/schema_loader/main.py 0000644 0001751 0001747 00000014645 14472046134 024575 0 ustar 00runner docker from __future__ import annotations
import pathlib
import typing as t
import urllib.error
import urllib.parse
import jsonschema
from ..builtin_schemas import get_builtin_schema
from ..formats import FormatOptions, make_format_checker
from ..parsers import ParserSet
from ..utils import is_url_ish
from .errors import UnsupportedUrlScheme
from .readers import HttpSchemaReader, LocalSchemaReader
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},
)
class SchemaLoaderBase:
def get_validator(
self,
path: pathlib.Path,
instance_doc: dict[str, t.Any],
format_opts: FormatOptions,
fill_defaults: bool,
) -> jsonschema.protocols.Validator:
raise NotImplementedError
class SchemaLoader(SchemaLoaderBase):
def __init__(
self,
schemafile: str,
cache_filename: str | None = None,
disable_cache: bool = False,
base_uri: str | None = None,
) -> None:
# record input parameters (these are not to be modified)
self.schemafile = schemafile
self.cache_filename = cache_filename
self.disable_cache = disable_cache
self.base_uri = base_uri
# 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 | None = None
@property
def reader(self) -> LocalSchemaReader | HttpSchemaReader:
if self._reader is None:
self._reader = self._get_schema_reader()
return self._reader
def _get_schema_reader(self) -> LocalSchemaReader | HttpSchemaReader:
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.cache_filename,
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,
instance_doc: dict[str, t.Any],
format_opts: FormatOptions,
fill_defaults: bool,
) -> jsonschema.protocols.Validator:
retrieval_uri = self.get_schema_retrieval_uri()
schema = self.get_schema()
schema_dialect = schema.get("$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
)
# get the correct validator class and check the schema under its metaschema
validator_cls = jsonschema.validators.validator_for(schema)
validator_cls.check_schema(schema)
# extend the validator class with default-filling behavior if appropriate
if fill_defaults:
validator_cls = _extend_with_default(validator_cls)
# now that we know it's safe to try to create the validator instance, do it
validator = validator_cls(
schema,
registry=reference_registry,
format_checker=format_checker,
)
return t.cast(jsonschema.protocols.Validator, validator)
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,
instance_doc: dict[str, t.Any],
format_opts: FormatOptions,
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, format_checker=format_checker
)
return meta_validator
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/schema_loader/readers.py 0000644 0001751 0001747 00000004215 14472046134 025266 0 ustar 00runner docker from __future__ import annotations
import io
import typing as t
import ruamel.yaml
from ..cachedownloader import CacheDownloader
from ..parsers import ParserSet
from ..utils import filename2path
from .errors import SchemaParseError
yaml = ruamel.yaml.YAML(typ="safe")
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()
def get_retrieval_uri(self) -> str:
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:
return _run_load_callback(self.filename, self._read_impl)
class HttpSchemaReader:
def __init__(
self,
url: str,
cache_filename: str | None,
disable_cache: bool,
) -> None:
self.url = url
self.parsers = ParserSet()
self.downloader = CacheDownloader(
url,
cache_filename,
disable_cache=disable_cache,
validation_callback=self._parse,
)
self._parsed_schema: t.Any | None = None
def _parse(self, schema_bytes: bytes) -> t.Any:
if self._parsed_schema is None:
self._parsed_schema = self.parsers.parse_data_with_path(
io.BytesIO(schema_bytes), self.url, default_filetype="json"
)
return self._parsed_schema
def get_retrieval_uri(self) -> str:
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:
return _run_load_callback(self.url, self._read_impl)
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/schema_loader/resolver.py 0000644 0001751 0001747 00000005635 14472046134 025511 0 ustar 00runner docker from __future__ import annotations
import typing as t
import urllib.parse
import referencing
import requests
from referencing.jsonschema import DRAFT202012, Schema
from ..parsers import ParserSet
from ..utils import filename2path
def make_reference_registry(
parsers: ParserSet, retrieval_uri: str | None, schema: dict
) -> 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)
)
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
) -> t.Callable[[str], referencing.Resource[Schema]]:
base_uri = id_attribute
if base_uri is None:
base_uri = retrieval_uri
cache = ResourceCache()
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._cache:
return cache[uri]
full_uri_scheme = urllib.parse.urlsplit(full_uri).scheme
if full_uri_scheme in ("http", "https"):
data = requests.get(full_uri, stream=True)
parsed_object = parser_set.parse_data_with_path(
data.content, full_uri, "json"
)
else:
parsed_object = get_local_file(full_uri)
cache[uri] = parsed_object
return cache[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
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1107717
check-jsonschema-0.25.0/src/check_jsonschema/transforms/ 0000755 0001751 0001747 00000000000 14472046153 022676 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/transforms/__init__.py 0000644 0001751 0001747 00000000456 14472046134 025013 0 ustar 00runner docker from __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",)
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/transforms/azure_pipelines.py 0000644 0001751 0001747 00000010067 14472046134 026451 0 ustar 00runner docker """
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/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)
elif isinstance(item_value, dict):
ret.append(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)
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/transforms/base.py 0000644 0001751 0001747 00000000762 14472046134 024166 0 ustar 00runner docker from __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,
):
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
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/transforms/gitlab.py 0000644 0001751 0001747 00000002027 14472046134 024512 0 ustar 00runner docker from __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()
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/src/check_jsonschema/utils.py 0000644 0001751 0001747 00000010155 14472046134 022213 0 ustar 00runner docker from __future__ import annotations
import linecache
import os
import pathlib
import re
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
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(indent * " " + f"{type(err).__name__}: {err}")
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)
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.0827713
check-jsonschema-0.25.0/src/check_jsonschema.egg-info/ 0000755 0001751 0001747 00000000000 14472046153 022172 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945515.0
check-jsonschema-0.25.0/src/check_jsonschema.egg-info/PKG-INFO 0000644 0001751 0001747 00000004042 14472046153 023267 0 ustar 00runner docker Metadata-Version: 2.1
Name: check-jsonschema
Version: 0.25.0
Summary: A jsonschema CLI and pre-commit hook
Home-page: https://github.com/python-jsonschema/check-jsonschema
Author: Stephen Rosen
Author-email: sirosen@uchicago.edu
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Provides-Extra: dev
Provides-Extra: docs
License-File: LICENSE
[](https://pypi.org/project/check-jsonschema/)
[](https://pypi.org/project/check-jsonschema/)
[](https://github.com/python-jsonschema/check-jsonschema/actions/workflows/build.yaml)
[](https://results.pre-commit.ci/latest/github/python-jsonschema/check-jsonschema/main)
[](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.25.0
hooks:
- id: check-github-workflows
```
## Documentation
Full documentation can be found at https://check-jsonschema.readthedocs.io/
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945515.0
check-jsonschema-0.25.0/src/check_jsonschema.egg-info/SOURCES.txt 0000644 0001751 0001747 00000016621 14472046153 024064 0 ustar 00runner docker .pre-commit-hooks.yaml
LICENSE
MANIFEST.in
README.md
setup.cfg
setup.py
tox.ini
src/check_jsonschema/__init__.py
src/check_jsonschema/__main__.py
src/check_jsonschema/_testing.py
src/check_jsonschema/cachedownloader.py
src/check_jsonschema/catalog.py
src/check_jsonschema/checker.py
src/check_jsonschema/formats.py
src/check_jsonschema/identify_filetype.py
src/check_jsonschema/instance_loader.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/LICENSE.azure-pipelines
src/check_jsonschema/builtin_schemas/vendor/LICENSE.bitbucket-pipelines
src/check_jsonschema/builtin_schemas/vendor/LICENSE.buildkite
src/check_jsonschema/builtin_schemas/vendor/LICENSE.gitlab
src/check_jsonschema/builtin_schemas/vendor/LICENSE.readthedocs
src/check_jsonschema/builtin_schemas/vendor/LICENSE.renovate
src/check_jsonschema/builtin_schemas/vendor/LICENSE.schemastore
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/azure-pipelines.sha256
src/check_jsonschema/builtin_schemas/vendor/bamboo-spec.json
src/check_jsonschema/builtin_schemas/vendor/bamboo-spec.sha256
src/check_jsonschema/builtin_schemas/vendor/bitbucket-pipelines.json
src/check_jsonschema/builtin_schemas/vendor/bitbucket-pipelines.sha256
src/check_jsonschema/builtin_schemas/vendor/buildkite.json
src/check_jsonschema/builtin_schemas/vendor/buildkite.sha256
src/check_jsonschema/builtin_schemas/vendor/dependabot.json
src/check_jsonschema/builtin_schemas/vendor/dependabot.sha256
src/check_jsonschema/builtin_schemas/vendor/drone-ci.json
src/check_jsonschema/builtin_schemas/vendor/drone-ci.sha256
src/check_jsonschema/builtin_schemas/vendor/github-actions.json
src/check_jsonschema/builtin_schemas/vendor/github-actions.sha256
src/check_jsonschema/builtin_schemas/vendor/github-workflows.json
src/check_jsonschema/builtin_schemas/vendor/github-workflows.sha256
src/check_jsonschema/builtin_schemas/vendor/gitlab-ci.json
src/check_jsonschema/builtin_schemas/vendor/gitlab-ci.sha256
src/check_jsonschema/builtin_schemas/vendor/readthedocs.json
src/check_jsonschema/builtin_schemas/vendor/readthedocs.sha256
src/check_jsonschema/builtin_schemas/vendor/renovate.json
src/check_jsonschema/builtin_schemas/vendor/renovate.sha256
src/check_jsonschema/builtin_schemas/vendor/travis.json
src/check_jsonschema/builtin_schemas/vendor/travis.sha256
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/parsers/__init__.py
src/check_jsonschema/parsers/json5.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_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_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/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/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/hooks/negative/drone-ci/unkown-type-pipeline.yml
tests/example-files/hooks/negative/github-workflows/empty.json
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/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/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-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/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/travis/python-build.yaml
tests/unit/test_cachedownloader.py
tests/unit/test_catalog.py
tests/unit/test_cli_parse.py
tests/unit/test_gitlab_data_transform.py
tests/unit/test_instance_loader.py
tests/unit/test_reporters.py
tests/unit/test_schema_loader.py
tests/unit/test_utils.py ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945515.0
check-jsonschema-0.25.0/src/check_jsonschema.egg-info/dependency_links.txt 0000644 0001751 0001747 00000000001 14472046153 026240 0 ustar 00runner docker
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945515.0
check-jsonschema-0.25.0/src/check_jsonschema.egg-info/entry_points.txt 0000644 0001751 0001747 00000000073 14472046153 025470 0 ustar 00runner docker [console_scripts]
check-jsonschema = check_jsonschema:main
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945515.0
check-jsonschema-0.25.0/src/check_jsonschema.egg-info/requires.txt 0000644 0001751 0001747 00000000351 14472046153 024571 0 ustar 00runner docker ruamel.yaml==0.17.32
jsonschema<5.0,>=4.18.0
requests<3.0
click<9,>=8
[:python_version < "3.9"]
importlib-resources>=1.4.0
[dev]
pytest<8
coverage<8
pytest-xdist<4
responses==0.23.2
[docs]
sphinx<8
sphinx-issues<4
furo==2023.7.26
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945515.0
check-jsonschema-0.25.0/src/check_jsonschema.egg-info/top_level.txt 0000644 0001751 0001747 00000000021 14472046153 024715 0 ustar 00runner docker check_jsonschema
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1147716
check-jsonschema-0.25.0/tests/ 0000755 0001751 0001747 00000000000 14472046153 015564 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1187718
check-jsonschema-0.25.0/tests/acceptance/ 0000755 0001751 0001747 00000000000 14472046153 017652 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/acceptance/conftest.py 0000644 0001751 0001747 00000002025 14472046134 022047 0 ustar 00runner docker import textwrap
import pytest
from click.testing import CliRunner
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 cli_runner():
return CliRunner(mix_stderr=False)
@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
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1187718
check-jsonschema-0.25.0/tests/acceptance/custom_schemas/ 0000755 0001751 0001747 00000000000 14472046153 022667 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000210 00000000000 010206 x ustar 00 114 path=check-jsonschema-0.25.0/tests/acceptance/custom_schemas/test_github_workflow_require_explicit_timeout.py
22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/acceptance/custom_schemas/test_github_workflow_require_explicit_timeou0000644 0001751 0001747 00000003733 14472046134 034111 0 ustar 00runner docker import 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
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/acceptance/test_example_files.py 0000644 0001751 0001747 00000012170 14472046134 024100 0 ustar 00runner docker from __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
from check_jsonschema.parsers.toml import ENABLED as TOML_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
@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
@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
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")
if case_name.endswith("toml") and not TOML_ENABLED:
pytest.skip("cannot check toml support without toml 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
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/acceptance/test_fill_defaults.py 0000644 0001751 0001747 00000003774 14472046134 024112 0 ustar 00runner docker import 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
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/acceptance/test_format_failure.py 0000644 0001751 0001747 00000003747 14472046134 024274 0 ustar 00runner docker import 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),
]
)
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/acceptance/test_format_regex_opts.py 0000644 0001751 0001747 00000007156 14472046134 025022 0 ustar 00runner docker # test on a JavaScript regex which is not a valid python regex
# `--format-regex=disabled` should skip
# `--format-regex=default` should accept it
# `--format-regex=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=["disabled", "default", "python"])
def regexopt(request):
return request.param
def test_regex_format_good(run_line_simple, tmp_path, regexopt):
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(
["--format-regex", regexopt, "--schemafile", str(schemafile), str(doc)]
)
def test_regex_format_accepts_non_str_inputs(run_line_simple, tmp_path, regexopt):
# 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(
["--format-regex", regexopt, "--schemafile", str(schemafile), str(doc)]
)
def test_regex_format_bad(run_line, tmp_path, regexopt):
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 = regexopt == "disabled"
res = run_line(
[
"check-jsonschema",
"--format-regex",
regexopt,
"--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, regexopt):
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 = regexopt in ("disabled", "default")
res = run_line(
[
"check-jsonschema",
"--format-regex",
regexopt,
"--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)])
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/acceptance/test_gitlab_reference_handling.py 0000644 0001751 0001747 00000001060 14472046134 026403 0 ustar 00runner docker def 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
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/acceptance/test_hook_file_matches.py 0000644 0001751 0001747 00000010024 14472046134 024722 0 ustar 00runner docker from __future__ import annotations
import pathlib
import re
import pytest
import ruamel.yaml
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 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-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-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-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)
@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)
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/acceptance/test_invalid_schema_files.py 0000644 0001751 0001747 00000002036 14472046134 025413 0 ustar 00runner docker 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
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/acceptance/test_local_relative_ref.py 0000644 0001751 0001747 00000006113 14472046134 025104 0 ustar 00runner docker import 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
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/acceptance/test_malformed_instances.py 0000644 0001751 0001747 00000006362 14472046134 025306 0 ustar 00runner docker import 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"]
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/acceptance/test_nonjson_schema_handling.py 0000644 0001751 0001747 00000005567 14472046134 026147 0 ustar 00runner docker import 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,
}
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)
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/acceptance/test_remote_ref_resolution.py 0000644 0001751 0001747 00000014225 14472046134 025700 0 ustar 00runner docker import json
import pytest
import responses
from check_jsonschema import cachedownloader
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.fixture(autouse=True)
def _mock_schema_cache_dir(monkeypatch, tmp_path):
def _fake_compute_default_cache_dir(self):
return str(tmp_path)
monkeypatch.setattr(
cachedownloader.CacheDownloader,
"_compute_default_cache_dir",
_fake_compute_default_cache_dir,
)
@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
# 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
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/acceptance/test_special_filetypes.py 0000644 0001751 0001747 00000007142 14472046134 024772 0 ustar 00runner docker import os
import platform
import sys
import threading
import pytest
import responses
from check_jsonschema import cachedownloader
@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)
@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)
# execute FIFO writes as blocking writes in background threads
# nonblocking writes fail file existence if there's no reader, so using a FIFO
# requires some level of concurrency
def fifo_write(path, data):
fd = os.open(path, os.O_WRONLY)
try:
os.write(fd, data)
finally:
os.close(fd)
schema_thread = threading.Thread(
target=fifo_write, args=[schema_path, b'{"type": "integer"}']
)
schema_thread.start()
instance_data = b"42" if check_succeeds else b'"foo"'
instance_thread = threading.Thread(
target=fifo_write, args=[instance_path, instance_data]
)
instance_thread.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_thread.join(timeout=0.1)
instance_thread.join(timeout=0.1)
@pytest.mark.parametrize("check_passes", (True, False))
def test_remote_schema_requiring_retry(run_line, check_passes, tmp_path, monkeypatch):
"""
a "remote schema" (meaning HTTPS) with bad data, therefore requiring that a retry
fires in order to parse
"""
def _fake_compute_default_cache_dir(self):
return str(tmp_path)
monkeypatch.setattr(
cachedownloader.CacheDownloader,
"_compute_default_cache_dir",
_fake_compute_default_cache_dir,
)
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
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/conftest.py 0000644 0001751 0001747 00000000242 14472046134 017760 0 ustar 00runner docker import pytest
import responses
@pytest.fixture(autouse=True)
def mocked_responses():
responses.start()
yield
responses.stop()
responses.reset()
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1187718
check-jsonschema-0.25.0/tests/example-files/ 0000755 0001751 0001747 00000000000 14472046153 020317 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/config_schema.json 0000644 0001751 0001747 00000001456 14472046134 024004 0 ustar 00runner docker {
"$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
}
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 010211 x ustar 00 27 mtime=1692945515.062771
check-jsonschema-0.25.0/tests/example-files/explicit-schema/ 0000755 0001751 0001747 00000000000 14472046153 023376 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.0667713
check-jsonschema-0.25.0/tests/example-files/explicit-schema/positive/ 0000755 0001751 0001747 00000000000 14472046153 025240 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1187718
check-jsonschema-0.25.0/tests/example-files/explicit-schema/positive/2020-meta/ 0000755 0001751 0001747 00000000000 14472046153 026547 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/explicit-schema/positive/2020-meta/instance.json 0000644 0001751 0001747 00000000003 14472046134 031236 0 ustar 00runner docker {}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/explicit-schema/positive/2020-meta/schema.json 0000644 0001751 0001747 00000004463 14472046134 030710 0 ustar 00runner docker {
"$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
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1187718
check-jsonschema-0.25.0/tests/example-files/explicit-schema/positive/complex-toml/ 0000755 0001751 0001747 00000000000 14472046153 027660 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/explicit-schema/positive/complex-toml/instance.toml 0000644 0001751 0001747 00000004374 14472046134 032370 0 ustar 00runner docker [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"
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/explicit-schema/positive/complex-toml/schema.json 0000644 0001751 0001747 00000006334 14472046134 032020 0 ustar 00runner docker {
"$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" } }
}
}
}
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1187718
check-jsonschema-0.25.0/tests/example-files/explicit-schema/positive/complex-yaml/ 0000755 0001751 0001747 00000000000 14472046153 027647 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/explicit-schema/positive/complex-yaml/instance.yaml 0000644 0001751 0001747 00000003330 14472046134 032335 0 ustar 00runner docker # 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"
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/explicit-schema/positive/complex-yaml/schema.json 0000644 0001751 0001747 00000006212 14472046134 032002 0 ustar 00runner docker {
"$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" } }
}
}
}
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1187718
check-jsonschema-0.25.0/tests/example-files/explicit-schema/positive/integer-keys-yaml/ 0000755 0001751 0001747 00000000000 14472046153 030606 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/explicit-schema/positive/integer-keys-yaml/instance.yaml0000644 0001751 0001747 00000000061 14472046134 033272 0 ustar 00runner docker items:
1:
name: "one"
2:
name: "two"
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/explicit-schema/positive/integer-keys-yaml/schema.json 0000644 0001751 0001747 00000000514 14472046134 032740 0 ustar 00runner docker {
"$schema": "http://json-schema.org/draft-07/schema",
"type": "object",
"properties": {
"items": {
"patternProperties": {
"^[a-zA-Z0-9_-]*$": {
"type": "object",
"properties": {
"name": {
"type": "string"
}
}
}
}
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1187718
check-jsonschema-0.25.0/tests/example-files/explicit-schema/positive/simple-toml/ 0000755 0001751 0001747 00000000000 14472046153 027502 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/explicit-schema/positive/simple-toml/instance.toml 0000644 0001751 0001747 00000000031 14472046134 032174 0 ustar 00runner docker [item]
title = "an item"
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/explicit-schema/positive/simple-toml/schema.json 0000644 0001751 0001747 00000000324 14472046134 031633 0 ustar 00runner docker {
"$schema": "http://json-schema.org/draft-07/schema",
"type": "object",
"properties": {
"item": {
"type": "object",
"properties": {
"title": { "type": "string"}
}
}
}
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.0667713
check-jsonschema-0.25.0/tests/example-files/hooks/ 0000755 0001751 0001747 00000000000 14472046153 021442 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.0667713
check-jsonschema-0.25.0/tests/example-files/hooks/negative/ 0000755 0001751 0001747 00000000000 14472046153 023244 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1187718
check-jsonschema-0.25.0/tests/example-files/hooks/negative/drone-ci/ 0000755 0001751 0001747 00000000000 14472046153 024744 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/negative/drone-ci/unkown-type-pipeline.yml 0000644 0001751 0001747 00000000221 14472046134 031564 0 ustar 00runner docker kind: pipeline
type: unknown-type
name: default
steps:
- name: greeting
image: alpine
commands:
- echo hello
- echo world
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1187718
check-jsonschema-0.25.0/tests/example-files/hooks/negative/github-workflows/ 0000755 0001751 0001747 00000000000 14472046153 026561 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/negative/github-workflows/empty.json 0000644 0001751 0001747 00000000003 14472046134 030602 0 ustar 00runner docker {}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1187718
check-jsonschema-0.25.0/tests/example-files/hooks/negative/metaschema/ 0000755 0001751 0001747 00000000000 14472046153 025353 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/negative/metaschema/2020_invalid_format_value.json0000644 0001751 0001747 00000004115 14472046134 033103 0 ustar 00runner docker {
"$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)>"
}
}
}
]
}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/negative/metaschema/_config.yaml 0000644 0001751 0001747 00000000120 14472046134 027633 0 ustar 00runner docker files:
2020_invalid_format_value.json:
requires_packages:
- rfc3987
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/negative/metaschema/draft7_title_array.json 0000644 0001751 0001747 00000000153 14472046134 032032 0 ustar 00runner docker {
"$schema": "http://json-schema.org/draft-07/schema#",
"title": [
"Core schema meta-schema"
]
}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/negative/metaschema/draft7_title_array.yaml 0000644 0001751 0001747 00000000105 14472046134 032020 0 ustar 00runner docker $schema: "http://json-schema.org/draft-07/schema#"
title:
- "ohai"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1227717
check-jsonschema-0.25.0/tests/example-files/hooks/negative/readthedocs/ 0000755 0001751 0001747 00000000000 14472046153 025531 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/negative/readthedocs/pyversion-float.yml 0000644 0001751 0001747 00000000407 14472046134 031415 0 ustar 00runner docker version: 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
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.0707712
check-jsonschema-0.25.0/tests/example-files/hooks/positive/ 0000755 0001751 0001747 00000000000 14472046153 023304 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1227717
check-jsonschema-0.25.0/tests/example-files/hooks/positive/azure-pipelines/ 0000755 0001751 0001747 00000000000 14472046153 026420 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000213 00000000000 010211 x ustar 00 117 path=check-jsonschema-0.25.0/tests/example-files/hooks/positive/azure-pipelines/expression-from-lang-server.yaml
22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/positive/azure-pipelines/expression-from-lang-serv0000644 0001751 0001747 00000001135 14472046134 033376 0 ustar 00runner docker # 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/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
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/positive/azure-pipelines/expression-transform.yaml0000644 0001751 0001747 00000000207 14472046134 033512 0 ustar 00runner docker parameters:
- name: vals
default: ""
jobs:
- ${{ each val in parameter.vals }}:
- job: foo
steps:
- bash: echo ${{ val }}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/positive/azure-pipelines/marshmallow.yaml 0000644 0001751 0001747 00000000776 14472046134 031643 0 ustar 00runner docker # 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
././@PaxHeader 0000000 0000000 0000000 00000000220 00000000000 010207 x ustar 00 122 path=check-jsonschema-0.25.0/tests/example-files/hooks/positive/azure-pipelines/object-defined-by-expression-map.yaml
22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/positive/azure-pipelines/object-defined-by-express0000644 0001751 0001747 00000000442 14472046134 033303 0 ustar 00runner docker parameters:
- 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 }}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1227717
check-jsonschema-0.25.0/tests/example-files/hooks/positive/bitbucket-pipelines/ 0000755 0001751 0001747 00000000000 14472046153 027246 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000206 00000000000 010213 x ustar 00 112 path=check-jsonschema-0.25.0/tests/example-files/hooks/positive/bitbucket-pipelines/bitbucket-pipelines.yml
22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/positive/bitbucket-pipelines/bitbucket-pipelines.y0000644 0001751 0001747 00000000250 14472046134 033376 0 ustar 00runner docker options:
max-time: 30
docker: true
size: 2x
pipelines:
default:
- step:
name: Hello world example
script:
- echo "Hello, World!"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1227717
check-jsonschema-0.25.0/tests/example-files/hooks/positive/buildkite/ 0000755 0001751 0001747 00000000000 14472046153 025260 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/positive/buildkite/matrix.yml 0000644 0001751 0001747 00000002515 14472046134 027311 0 ustar 00runner docker # 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/ 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
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1227717
check-jsonschema-0.25.0/tests/example-files/hooks/positive/drone-ci/ 0000755 0001751 0001747 00000000000 14472046153 025004 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/positive/drone-ci/digitalocean-pipeline.yml 0000644 0001751 0001747 00000000217 14472046134 031754 0 ustar 00runner docker kind: pipeline
type: digitalocean
name: default
token:
from_secret: token
steps:
- name: greeting
commands:
- echo hello world
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/positive/drone-ci/docker-pipeline.yml 0000644 0001751 0001747 00000000175 14472046134 030603 0 ustar 00runner docker kind: pipeline
type: docker
name: default
steps:
- name: greeting
image: alpine
commands:
- echo hello
- echo world
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/positive/drone-ci/exec-pipeline.yaml 0000644 0001751 0001747 00000000217 14472046134 030416 0 ustar 00runner docker kind: pipeline
type: exec
name: default
platform:
os: linux
arch: amd64
steps:
- name: greeting
commands:
- echo hello world
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/positive/drone-ci/kubernetes-pipeline.yml 0000644 0001751 0001747 00000000201 14472046134 031471 0 ustar 00runner docker kind: pipeline
type: kubernetes
name: default
steps:
- name: greeting
image: alpine
commands:
- echo hello
- echo world
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/positive/drone-ci/macstadium-pipeline.yml 0000644 0001751 0001747 00000000160 14472046134 031455 0 ustar 00runner docker kind: pipeline
type: macstadium
name: default
steps:
- name: greeting
commands:
- echo hello world
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/positive/drone-ci/ssh-pipeline.yml 0000644 0001751 0001747 00000000265 14472046134 030131 0 ustar 00runner docker kind: pipeline
type: ssh
name: default
server:
host: 1.2.3.4
user: root
password:
from_secret: password
steps:
- name: greeting
commands:
- echo hello world
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1227717
check-jsonschema-0.25.0/tests/example-files/hooks/positive/github-actions/ 0000755 0001751 0001747 00000000000 14472046153 026224 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/positive/github-actions/redis-simple.yml 0000644 0001751 0001747 00000000576 14472046134 031353 0 ustar 00runner docker name: 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 }}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1227717
check-jsonschema-0.25.0/tests/example-files/hooks/positive/github-workflows/ 0000755 0001751 0001747 00000000000 14472046153 026621 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/positive/github-workflows/has-unicode.yaml 0000644 0001751 0001747 00000000415 14472046134 031703 0 ustar 00runner docker name: 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
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/positive/github-workflows/self-build.yaml 0000644 0001751 0001747 00000002327 14472046134 031536 0 ustar 00runner docker name: 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
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1227717
check-jsonschema-0.25.0/tests/example-files/hooks/positive/gitlab-ci/ 0000755 0001751 0001747 00000000000 14472046153 025137 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/positive/gitlab-ci/reference-tag.yaml 0000644 0001751 0001747 00000000352 14472046134 030531 0 ustar 00runner docker include:
- 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]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1267717
check-jsonschema-0.25.0/tests/example-files/hooks/positive/metaschema/ 0000755 0001751 0001747 00000000000 14472046153 025413 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/positive/metaschema/2020_invalid_format_value.json0000644 0001751 0001747 00000004115 14472046134 033143 0 ustar 00runner docker {
"$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)>"
}
}
}
]
}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/positive/metaschema/_config.yaml 0000644 0001751 0001747 00000000122 14472046134 027675 0 ustar 00runner docker files:
2020_invalid_format_value.json:
add_args: ["--disable-formats", "*"]
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/positive/metaschema/almost_empty.yaml 0000644 0001751 0001747 00000000121 14472046134 031005 0 ustar 00runner docker $schema: http://json-schema.org/draft-07/schema#
title: "an almost empty schema"
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/positive/metaschema/draft3.json 0000644 0001751 0001747 00000005213 14472046134 027471 0 ustar 00runner docker {
"$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" : {}
}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/positive/metaschema/draft7.json 0000644 0001751 0001747 00000011323 14472046134 027474 0 ustar 00runner docker {
"$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
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1267717
check-jsonschema-0.25.0/tests/example-files/hooks/positive/readthedocs/ 0000755 0001751 0001747 00000000000 14472046153 025571 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/positive/readthedocs/simple.yaml 0000644 0001751 0001747 00000000305 14472046134 027743 0 ustar 00runner docker version: 2
sphinx:
configuration: docs/conf.py
build:
os: ubuntu-20.04
tools:
python: "3.10"
python:
install:
- method: pip
path: .
extra_requirements:
- dev
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1267717
check-jsonschema-0.25.0/tests/example-files/hooks/positive/renovate/ 0000755 0001751 0001747 00000000000 14472046153 025127 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/positive/renovate/starter-config.json 0000644 0001751 0001747 00000000074 14472046134 030751 0 ustar 00runner docker {
"extends": ["config:base", "schedule:nonOfficeHours"]
}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/positive/renovate/starter-config.json5 0000644 0001751 0001747 00000000074 14472046134 031036 0 ustar 00runner docker {
"extends": ["config:base", "schedule:nonOfficeHours"]
}
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1267717
check-jsonschema-0.25.0/tests/example-files/hooks/positive/travis/ 0000755 0001751 0001747 00000000000 14472046153 024614 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/example-files/hooks/positive/travis/python-build.yaml 0000644 0001751 0001747 00000002254 14472046134 030120 0 ustar 00runner docker sudo: 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
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 010212 x ustar 00 28 mtime=1692945515.1267717
check-jsonschema-0.25.0/tests/unit/ 0000755 0001751 0001747 00000000000 14472046153 016543 5 ustar 00runner docker ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/unit/test_cachedownloader.py 0000644 0001751 0001747 00000017774 14472046134 023315 0 ustar 00runner docker import json
import os
import platform
import time
import pytest
import requests
import responses
from check_jsonschema.cachedownloader import CacheDownloader, FailedDownloadError
def add_default_response():
responses.add(
"GET",
"https://example.com/schema1.json",
headers={"Last-Modified": "Sun, 01 Jan 2000 00:00:01 GMT"},
json={},
match_querystring=None,
)
@pytest.fixture
def default_response():
add_default_response()
def test_default_filename_from_uri(default_response):
cd = CacheDownloader("https://example.com/schema1.json")
assert cd._filename == "schema1.json"
@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(
monkeypatch, default_response, sysname, fakeenv, expect_value
):
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("https://example.com/schema1.json")
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())
cd = CacheDownloader("https://example.com/schema1.json")
assert cd._cache_hit(
"/tmp/schema1.json",
requests.get("https://example.com/schema1.json", stream=True),
)
# local mtime = 0, cache miss
monkeypatch.setattr(os.path, "getmtime", lambda x: 0)
cd = CacheDownloader("https://example.com/schema1.json")
assert (
cd._cache_hit(
"/tmp/schema1.json",
requests.get("https://example.com/schema1.json", 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(str(f), cache_dir=tmp_path)
# patch the downloader to skip any download "work"
monkeypatch.setattr(cd, "_download", lambda: str(f))
with cd.open() as fp:
assert fp.read() == b"{}"
@pytest.mark.parametrize(
"mode", ["filename", "filename_otherdir", "cache_dir", "disable_cache"]
)
@pytest.mark.parametrize("failures", (0, 1, 10, requests.ConnectionError))
def test_cachedownloader_e2e(tmp_path, mode, failures):
if isinstance(failures, int):
for _i in range(failures):
responses.add(
"GET",
"https://example.com/schema1.json",
status=500,
match_querystring=None,
)
else:
responses.add(
"GET",
"https://example.com/schema1.json",
body=failures(),
match_querystring=None,
)
add_default_response()
f = tmp_path / "schema1.json"
if mode == "filename":
cd = CacheDownloader(
"https://example.com/schema1.json", filename=str(f), cache_dir=str(tmp_path)
)
elif mode == "filename_otherdir":
otherdir = tmp_path / "otherdir"
cd = CacheDownloader(
"https://example.com/schema1.json", filename=str(f), cache_dir=str(otherdir)
)
elif mode == "cache_dir":
cd = CacheDownloader(
"https://example.com/schema1.json", cache_dir=str(tmp_path)
)
elif mode == "disable_cache":
cd = CacheDownloader("https://example.com/schema1.json", disable_cache=True)
else:
raise NotImplementedError
if isinstance(failures, int) and failures < 3:
with cd.open() as fp:
assert fp.read() == b"{}"
if mode == "filename":
assert f.exists()
elif mode == "filename_otherdir":
otherdir = f.exists()
elif mode == "cache_dir":
assert (tmp_path / "schema1.json").exists()
elif mode == "disable_cache":
assert not (tmp_path / "schema1.json").exists()
assert not f.exists()
else:
raise NotImplementedError
else:
with pytest.raises(FailedDownloadError):
with cd.open() as fp:
pass
assert not (tmp_path / "schema1.json").exists()
assert not f.exists()
@pytest.mark.parametrize("disable_cache", (True, False))
def test_cachedownloader_retries_on_bad_data(tmp_path, disable_cache):
responses.add(
"GET",
"https://example.com/schema1.json",
status=200,
body="{",
match_querystring=None,
)
add_default_response()
f = tmp_path / "schema1.json"
cd = CacheDownloader(
"https://example.com/schema1.json",
filename=str(f),
cache_dir=str(tmp_path),
disable_cache=disable_cache,
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, tmp_path, file_exists, failure_mode
):
if failure_mode == "header_missing":
responses.add(
"GET",
"https://example.com/schema1.json",
headers={},
json={},
match_querystring=None,
)
elif failure_mode == "header_malformed":
responses.add(
"GET",
"https://example.com/schema1.json",
headers={"Last-Modified": "Jan 2000 00:00:01"},
json={},
match_querystring=None,
)
elif failure_mode == "time_overflow":
add_default_response()
def fake_mktime(*args):
raise OverflowError("uh-oh")
monkeypatch.setattr("time.mktime", fake_mktime)
else:
raise NotImplementedError
original_file_contents = b'{"foo": "bar"}'
f = tmp_path / "schema1.json"
if file_exists:
f.write_bytes(original_file_contents)
else:
assert not f.exists()
cd = CacheDownloader(
"https://example.com/schema1.json", filename=str(f), cache_dir=str(tmp_path)
)
# 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 f.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 f.read_bytes() == b"{}"
# at the end, the file always exists on disk
assert f.exists()
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/unit/test_catalog.py 0000644 0001751 0001747 00000001226 14472046134 021566 0 ustar 00runner docker from 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
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/unit/test_cli_parse.py 0000644 0001751 0001747 00000016275 14472046134 022127 0 ustar 00runner docker from __future__ import annotations
from unittest import mock
import click
import pytest
from click.testing import CliRunner
from check_jsonschema import main as cli_main
from check_jsonschema.cli.parse_result import ParseResult, SchemaLoadingMode
class BoxedContext:
ref = None
@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.fixture
def runner() -> CliRunner:
return CliRunner(mix_stderr=False)
@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(runner):
result = runner.invoke(cli_main, [])
assert result.exit_code == 2
def test_schemafile_and_instancefile(runner, mock_parse_result):
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 mock_parse_result.instancefiles == ("foo.json",)
def test_requires_at_least_one_instancefile(runner):
result = runner.invoke(cli_main, ["--schemafile", "schema.json"])
assert result.exit_code == 2
def test_requires_schemafile(runner):
result = runner.invoke(cli_main, ["foo.json"])
assert result.exit_code == 2
def test_no_cache_defaults_false(runner, mock_parse_result):
runner.invoke(cli_main, ["--schemafile", "schema.json", "foo.json"])
assert mock_parse_result.disable_cache is False
def test_no_cache_flag_is_true(runner, mock_parse_result):
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",
"foo.json",
],
[
"--schemafile",
"x.json",
"--builtin-schema",
"vendor.travis",
"--check-metaschema",
"foo.json",
],
[
"--schemafile",
"x.json",
"--check-metaschema",
"foo.json",
],
[
"--builtin-schema",
"vendor.travis",
"--check-metaschema",
"foo.json",
],
],
)
def test_mutex_schema_opts(runner, cmd_args):
result = runner.invoke(cli_main, cmd_args)
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(runner, cmd_args):
result = 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(runner, monkeypatch, setting, expect_value, boxed_context):
if setting is None:
monkeypatch.delenv("NO_COLOR", raising=False)
else:
monkeypatch.setenv("NO_COLOR", setting)
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(runner, setting, expected_value, boxed_context):
args = ["--schemafile", "schema.json", "foo.json"]
if setting:
args.extend(("--color", setting))
runner.invoke(cli_main, args)
assert boxed_context.ref.color == expected_value
def test_no_color_env_var_overrides_cli_option(
runner, monkeypatch, mock_cli_exec, boxed_context
):
monkeypatch.setenv("NO_COLOR", "1")
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(runner, setting, expected_value):
assert (
runner.invoke(
cli_main, ["--color", setting, "--schemafile", "schema.json", "foo.json"]
).exit_code
== expected_value
)
def test_formats_default_to_enabled(runner, mock_parse_result):
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(runner, mock_parse_result, addargs):
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(runner, mock_parse_result, addargs):
# this should be an override, with or without other args
runner.invoke(
cli_main,
[
"--schemafile",
"schema.json",
"foo.json",
]
+ addargs,
)
assert mock_parse_result.disable_all_formats is True
def test_disable_format_deprecated_flag(runner, mock_parse_result):
# this should be an override, with or without other args
with pytest.warns(UserWarning, match="'--disable-format' is deprecated"):
runner.invoke(
cli_main, ["--schemafile", "schema.json", "foo.json", "--disable-format"]
)
assert mock_parse_result.disable_all_formats is True
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/unit/test_gitlab_data_transform.py 0000644 0001751 0001747 00000002436 14472046134 024506 0 ustar 00runner docker import pytest
from check_jsonschema.parsers.yaml import 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(Exception):
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(Exception):
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)
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/unit/test_instance_loader.py 0000644 0001751 0001747 00000015311 14472046134 023306 0 ustar 00runner docker import os
import 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
from check_jsonschema.parsers.toml import ENABLED as TOML_ENABLED
@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, 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):
f = tmp_path / filename
f.write_text("{}")
loader = InstanceLoader([str(f)], default_filetype=default_filetype)
data = list(loader.iter_files())
assert data == [(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):
f = tmp_path / filename
f.write_text(
"""\
a:
b:
- 1
- 2
c: d
"""
)
loader = InstanceLoader([f], default_filetype=default_filetype)
data = list(loader.iter_files())
assert data == [(f, {"a": {"b": [1, 2], "c": "d"}})]
def test_instanceloader_unknown_type_nonjson_content(tmp_path):
f = tmp_path / "foo" # no extension here
f.write_text("a:b") # non-json data (cannot be detected as JSON)
loader = InstanceLoader([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] == 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",
),
(
TOML_ENABLED,
"toml",
'[foo]\nbar = "baz"\n',
{"foo": {"bar": "baz"}},
"pip install tomli",
),
],
)
def test_instanceloader_optional_format_handling(
tmp_path, enabled_flag, extension, file_content, expect_data, expect_error_message
):
f = tmp_path / f"foo.{extension}"
f.write_text(file_content)
loader = InstanceLoader([f])
if enabled_flag:
# at iteration time, the file should load fine
data = list(loader.iter_files())
assert data == [(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] == 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):
f = tmp_path / "foo.yaml"
f.write_text(
"""\
a:
b: &anchor
- 1
- 2
c: &anchor d
"""
)
loader = InstanceLoader([str(f)])
data = list(loader.iter_files())
assert data == [(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):
if file_format == "json5" and not JSON5_ENABLED:
pytest.skip("test requires 'json5' support")
if file_format == "toml" and not TOML_ENABLED:
pytest.skip("test requires 'toml' support")
f = tmp_path / filename
f.write_text(content)
loader = InstanceLoader([f])
data = list(loader.iter_files())
assert len(data) == 1
assert isinstance(data[0], tuple)
assert len(data[0]) == 2
assert data[0][0] == f
assert isinstance(data[0][1], FailedFileLoadError)
def test_instanceloader_invalid_data_mixed_with_valid_data(tmp_path):
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([a, b, c])
data = list(loader.iter_files())
assert len(data) == 3
assert data[0] == (a, {})
assert isinstance(data[1], tuple)
assert len(data[1]) == 2
assert data[1][0] == b
assert isinstance(data[1][1], FailedFileLoadError)
assert data[2] == (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):
if not JSON5_ENABLED and "json5" in filetypes:
pytest.skip("test requires json5")
if not TOML_ENABLED and "toml" in filetypes:
pytest.skip("test requires toml")
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(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 == 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"}}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/unit/test_reporters.py 0000644 0001751 0001747 00000016504 14472046134 022206 0 ustar 00runner docker import json
import pytest
from jsonschema import Draft7Validator
from check_jsonschema.reporter import JsonReporter, TextReporter
from check_jsonschema.result import CheckResult
def _make_success_result():
return CheckResult()
@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()
captured = capsys.readouterr()
assert captured.err == ""
if verbosity == 0:
assert captured.out == ""
else:
assert captured.out == "ok -- validation done\n"
@pytest.mark.parametrize("verbosity", (0, 1))
@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()
captured = capsys.readouterr()
assert captured.err == ""
if verbosity == 0:
assert captured.out == '{"status":"ok"}\n'
else:
assert captured.out == '{"status":"ok","errors":[]}\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
]
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/unit/test_schema_loader.py 0000644 0001751 0001747 00000006747 14472046134 022757 0 ustar 00runner docker import 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()
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tests/unit/test_utils.py 0000644 0001751 0001747 00000001744 14472046134 021321 0 ustar 00runner docker import 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)
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 010213 x ustar 00 22 mtime=1692945500.0
check-jsonschema-0.25.0/tox.ini 0000644 0001751 0001747 00000004503 14472046134 015736 0 ustar 00runner docker [tox]
envlist =
mypy
cov_clean
py38-mindeps
py{311,310,39,38}
py310-{notoml,tomli-format}
py{38,311}-{json5,pyjson5}
cov
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
extras = dev
deps =
mindeps: jsonschema==4.18.0
mindeps: click==8.0.0
mindeps: requests==2.0.0
mindeps: importlib-resources==1.4.0
json5: json5
pyjson5: pyjson5
tomli: tomli
format: jsonschema[format]
set_env =
notoml: FORCE_TOML_DISABLED=1
commands =
coverage run -m pytest {posargs:--junitxml={envdir}/pytest.xml}
[testenv:cov_clean]
description = "erase coverage data to prepare for a new run"
deps = coverage
skip_install = true
commands = coverage erase
[testenv:cov]
description = "combine and report coverage data"
deps = coverage
skip_install = true
commands_pre = - coverage combine
commands = coverage report --skip-covered
[testenv:mypy]
description = "check type annotations with mypy"
# temporarily pin back click until either click 8.1.5 releases or mypy fixes the issue
# with referential integrity of type aliases
deps = mypy
types-jsonschema
types-requests
click==8.1.3
commands = mypy src/ {posargs}
[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
extras = 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
[pytest]
filterwarnings =
error