summaryrefslogtreecommitdiffstats
path: root/docs/integration.rst
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--docs/integration.rst102
1 files changed, 72 insertions, 30 deletions
diff --git a/docs/integration.rst b/docs/integration.rst
index 9a6a935..e805667 100644
--- a/docs/integration.rst
+++ b/docs/integration.rst
@@ -9,15 +9,15 @@ Here is an example, to add in your .pre-commit-config.yaml
.. code:: yaml
- ---
- # Update the rev variable with the release version that you want, from the yamllint repo
- # You can pass your custom .yamllint with args attribute.
- repos:
- - repo: https://github.com/adrienverge/yamllint.git
- rev: v1.29.0
- hooks:
- - id: yamllint
- args: [--strict, -c=/path/to/.yamllint]
+ ---
+ # Update the rev variable with the release version that you want, from the yamllint repo
+ # You can pass your custom .yamllint with args attribute.
+ repos:
+ - repo: https://github.com/adrienverge/yamllint.git
+ rev: v1.29.0
+ hooks:
+ - id: yamllint
+ args: [--strict, -c=/path/to/.yamllint]
Integration with GitHub Actions
@@ -32,20 +32,62 @@ A minimal example workflow using GitHub Actions:
.. code:: yaml
- ---
- on: push # yamllint disable-line rule:truthy
+ ---
+ on: push # yamllint disable-line rule:truthy
- jobs:
- lint:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
+ jobs:
+ lint:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
- - name: Install yamllint
- run: pip install yamllint
+ - name: Install yamllint
+ run: pip install yamllint
- - name: Lint YAML files
- run: yamllint .
+ - name: Lint YAML files
+ run: yamllint .
+
+Integration with GitLab
+-----------------------
+
+You can use the following GitLab CI/CD stage to run yamllint and get the
+results as a `Code quality (Code Climate)
+<https://docs.gitlab.com/ee/ci/testing/code_quality.html>` report.
+
+.. code:: yaml
+
+ ---
+ lint:
+ stage: lint
+ script:
+ - pip install yamllint
+ - mkdir reports
+ - >
+ yamllint -f parsable . | tee >(awk '
+ BEGIN {FS = ":"; ORS="\n"; first=1}
+ {
+ gsub(/^[ \t]+|[ \t]+$|"/, "", $4);
+ match($4, /^\[(warning|error)\](.*)\((.*)\)$/, a);
+ sev = (a[1] == "error" ? "major" : "minor");
+ if (first) {
+ first=0;
+ printf("[");
+ } else {
+ printf(",");
+ }
+ printf("{\"location\":{\"path\":\"%s\",\"lines\":{\"begin\":%s",\
+ "\"end\":%s}},\"severity\":\"%s\",\"check_name\":\"%s\","\
+ "\"categories\":[\"Style\"],\"type\":\"issue\","\
+ "\"description\":\"%s\"}", $1, $2, $3, sev, a[3], a[2]);
+ }
+ END { if (!first) printf("]\n"); }' > reports/codequality.json)
+ artifacts:
+ when: always
+ paths:
+ - reports
+ expire_in: 1 week
+ reports:
+ codequality: reports/codequality.json
Integration with Arcanist
-------------------------
@@ -55,13 +97,13 @@ You can configure yamllint to run on ``arc lint``. Here is an example
.. code:: json
- {
- "linters": {
- "yamllint": {
- "type": "script-and-regex",
- "script-and-regex.script": "yamllint",
- "script-and-regex.regex": "/^(?P<line>\\d+):(?P<offset>\\d+) +(?P<severity>warning|error) +(?P<message>.*) +\\((?P<name>.*)\\)$/m",
- "include": "(\\.(yml|yaml)$)"
- }
- }
- }
+ {
+ "linters": {
+ "yamllint": {
+ "type": "script-and-regex",
+ "script-and-regex.script": "yamllint",
+ "script-and-regex.regex": "/^(?P<line>\\d+):(?P<offset>\\d+) +(?P<severity>warning|error) +(?P<message>.*) +\\((?P<name>.*)\\)$/m",
+ "include": "(\\.(yml|yaml)$)"
+ }
+ }
+ }