must run on all branches as quality is an expectation that should be displayed for all branches. MR !13
43 lines
1.9 KiB
YAML
43 lines
1.9 KiB
YAML
|
|
.yaml_lint_defaults:
|
|
variables:
|
|
YAML_LINT_PATH: "/*.yml"
|
|
YAML_LINT_CONFIG: "/yaml_lint/.yamllint.yaml"
|
|
stage: validation
|
|
before_script:
|
|
- if [ "0$JOB_ROOT_DIR" == "0" ]; then ROOT_DIR=gitlab-ci; else ROOT_DIR=$JOB_ROOT_DIR ; fi
|
|
- echo "[DEBUG] ROOT_DIR[$ROOT_DIR]"
|
|
- mkdir -p "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME"
|
|
- mkdir -p "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests"
|
|
- export PYTHON_VERSION=`python -c 'import sys; version=sys.version_info[:3]; print("{0}.{1}.{2}".format(*version))'`
|
|
- apt update
|
|
- apt install --no-install-recommends -y git
|
|
- python3 -m venv env
|
|
- . env/bin/activate
|
|
- pip install --upgrade pip
|
|
- pip install -r $ROOT_DIR/yaml_lint/requirements.txt
|
|
- mkdir $PYTHON_VERSION
|
|
script:
|
|
- YAML_LINT_PATH=$ROOT_DIR$YAML_LINT_PATH
|
|
- echo "[DEBUG] YAML_LINT_PATH[$YAML_LINT_PATH]"
|
|
- YAML_LINT_CONFIG=$ROOT_DIR$YAML_LINT_CONFIG
|
|
- echo "[DEBUG] YAML_LINT_CONFIG[$YAML_LINT_CONFIG]"
|
|
- yamllint $YAML_LINT_PATH -f parsable -c $ROOT_DIR/yaml_lint/.yamllint.yaml > "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/$PYTHON_VERSION-yaml-lint.log" 1>&1 || YAML_LINT=$?
|
|
- cat "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/$PYTHON_VERSION-yaml-lint.log" | ansible-lint-to-junit-xml > "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests/$PYTHON_VERSION-yaml-lint.junit.xml"
|
|
- if [ $YAML_LINT > 0 ]; then echo "YAML lint failed with $YAML_LINT"; exit $YAML_LINT; fi
|
|
after_script:
|
|
- echo deactivate
|
|
artifacts:
|
|
expire_in: 3 days
|
|
when: always
|
|
paths:
|
|
- "artifacts/*"
|
|
reports:
|
|
junit:
|
|
- "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests/*.junit.xml"
|
|
rules:
|
|
- if: '$CI_COMMIT_BRANCH'
|
|
when: always
|
|
- when: never
|
|
|