1
0
Fork 0
mirror of https://github.com/prometheus-operator/prometheus-operator.git synced 2025-04-16 09:16:38 +00:00
prometheus-operator/Documentation/user-guides/linting.md
Michael Salaverry 5173e422bd
docs: fix linting user-guide with updated docker image (#3685)
* docs: fix linting user-guide with updated docker image
the docker image was updated, but the example script was not

* docs: simplify the shell script by only using bash

Co-authored-by: Michael Salaverry <michael_salaverry@intuit.com>
2020-11-20 13:52:35 +01:00

1.4 KiB

Linting

This document describes how to use the standalone linting tool to validate your Prometheus Operator CRD-based configuration files.

Getting linter

To use the linter either get it with go get -u github.com/prometheus-operator/prometheus-operator/cmd/po-lint and executable is $GOPATH/bin/po-lint, or use the container image from quay.io/coreos/po-tooling and executable is /go/bin/po-lint.

Using linter

The po-lint executable takes a list of yaml files to check as command arguments. It will output any errors to stderr and returns with exit code 1 on errors, 0 otherwise.

Example

Here is an example script to lint a src sub-directory full of Prometheus Operator CRD files with ether local po-lint or Dockerized version:

#!/bin/sh

LINTER="quay.io/coreos/po-tooling"

lint_files() {
  if [ -x "$(command -v po-lint)" ]; then
    echo "Linting '${2}' files in directory '${1}'..."
    had_errors=0
    for file in $(find "${1}" -name "${2}"); do
      echo "${file}"
      po-lint "${file}"
      retval=$?
      if [ $retval -ne 0 ]; then
        had_errors=1
      fi
    done
    exit ${had_errors}
  elif [ -x "$(command -v docker)" ]; then
    echo "Using Dockerized linter."
    docker run --rm --volume "$PWD:/data:ro" --workdir /data ${LINTER} \
    /bin/bash -c "/go/bin/po-lint $1/$2"
  else
    echo "Linter executable not found."
    exit 1
  fi
}

lint_files "./src" "*.yaml"