python-jsonschema / python-jsonschema/check-jsonschema
`check-gitlab-ci` fails to parse multi-document `.gitlab-ci.yml`
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 341
- Forks
- 71
- Avg merge
- 15d 20h
- Merged PRs (30d)
- 4
Description
GitLab recently added the spec:inputs CI/CD YAML keyword which makes use of multi-document YAML files. The following example is taken straight from their docs:
spec:
inputs:
job-stage:
default: test
environment:
default: production
---
scan-website:
stage: $[[ inputs.job-stage ]]
script: ./scan-website $[[ inputs.environment ]]
However, check-jsonschema refuses to parse such a file and errors out:
> check-jsonschema.exe --verbose --schemafile https://gitlab.com/gitlab-org/gitlab/-/raw/master/app/assets/javascripts/editor/schema/ci.json .\.gitlab-ci.yml
Several files failed to parse.
FailedFileLoadError: Failed to parse .\.gitlab-ci.yml
in "C:\Users\username\pipx\venvs\check-jsonschema\Lib\site-packages\check_jsonschema\instance_loader.py", line 50
>>> data: t.Any = self._parsers.parse_data_with_path(
caused by
ComposerError: expected a single document in the stream
in "<byte string>", line 2, column 1:
spec:
^ (line: 2)
but found another document
in "<byte string>", line 10, column 1:
---
^ (line: 10)
in "C:\Users\username\pipx\venvs\check-jsonschema\Lib\site-packages\check_jsonschema\parsers\__init__.py", line 102
>>> return loadfunc(data)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the failure with the multi-document .gitlab-ci.yml example and inspect instance_loader.py around line 50 and parsers/init.py around line 102. Update parsing behavior so this GitLab CI input is accepted, then verify that the check-jsonschema command validates the example without the single-document ComposerError.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python, yaml
- Domain
- cli, tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100