From 6cef06b94031b15fb1a9dd4b84a0b19d93013b0b Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Fri, 26 Aug 2022 15:59:53 +0200 Subject: [PATCH] validate: add yamllint validation validate other YAML files, such as the ones used in the documentation, and GitHub actions workflows, to prevent issues such as; - 30295c1750714d26f3c8fc9c3451f11ac351f2be - 8e8d9a36500fb07fa9d1b68539756b9a93d3509e With this patch: hack/validate/yamllint Congratulations! yamllint config file formatted correctly Congratulations! YAML files are formatted correctly Signed-off-by: Sebastiaan van Stijn --- hack/validate/default | 1 + hack/validate/yamllint | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100755 hack/validate/yamllint diff --git a/hack/validate/default b/hack/validate/default index 88a4b95680..b48d9fa09c 100755 --- a/hack/validate/default +++ b/hack/validate/default @@ -8,6 +8,7 @@ export SCRIPTDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" #. "${SCRIPTDIR}"/dco . "${SCRIPTDIR}"/default-seccomp . "${SCRIPTDIR}"/pkg-imports +. "${SCRIPTDIR}"/yamllint . "${SCRIPTDIR}"/swagger . "${SCRIPTDIR}"/swagger-gen . "${SCRIPTDIR}"/toml diff --git a/hack/validate/yamllint b/hack/validate/yamllint new file mode 100755 index 0000000000..1c663b1748 --- /dev/null +++ b/hack/validate/yamllint @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +set -e +SCRIPTDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "${SCRIPTDIR}/.validate" + +if [ -n "${TEST_FORCE_VALIDATE:-}" ]; then + files=(docs/api/*.yaml) +else + IFS=$'\n' + files=($(validate_diff --diff-filter=ACMR --name-only -- docs/*.yaml || true)) + unset IFS +fi + +# validate the yamllint configuration file before anything else +if out=$(yamllint -f parsable -d "{extends: default, rules: {document-start: disable}}" "${SCRIPTDIR}"/yamllint.yaml); then + echo "Congratulations! yamllint config file formatted correctly" +else + echo "${out}" >&2 + false +fi + +# Then validate GitHub actions workflows, and conditionally lint the swagger +# files in the docs directory, as these are large files and take some time. +if out=$(yamllint -f parsable -c "${SCRIPTDIR}"/yamllint.yaml .github/workflows/*.yml "${files[@]}"); then + echo "Congratulations! YAML files are formatted correctly" +else + echo "${out}" >&2 + false +fi