Shell script linter plugin for Buildkite
NOTE: Plugins only work with the as yet unlreleased 3.0 version of the Buildkite Agent!
NOTE: This plugin is a work-in-progress. We use it internally at Operable to test our bundles. However, it may still blow up your systems; use at your own discretion!
This plugin allows you to lint your shell scripts using shellcheck. It is implememnted in terms of the Docker image for shellcheck, so it must be run on a build agent that has access to docker.
-
script: specify the script (or scripts) to lint. Each file is linted individually. -
opts: space-separated string of command-line options forshellcheck; corresponds to theSHELLCHECK_OPTSenvironment variable.Useful options for the purposes of this plugin include
--exclude(to exclude specific checks) and--shell(to specify a scripting dialect).All options available can be seen by running
shellcheckwithout any arguments, e.g.:
docker run --rm -t koalaman/shellcheck
No files specified.
Usage: shellcheck [OPTIONS...] FILES...
-e CODE1,CODE2.. --exclude=CODE1,CODE2.. exclude types of warnings
-f FORMAT --format=FORMAT output format
-C[WHEN] --color[=WHEN] Use color (auto, always, never)
-s SHELLNAME --shell=SHELLNAME Specify dialect (sh,bash,dash,ksh)
-x --external-sources Allow 'source' outside of FILES.
-V --version Print version informationCodes for the warnings can be found in the shellcheck wiki.
- steps
- label: Simple linting
plugins:
operable/shellcheck:
script: my_script.sh
- label: Lint multiple scripts
plugins:
operable/shellcheck:
script:
- my_script.sh
- my_other_script.sh
- yet_another_script.sh
- label: Exclude some warnings
plugins:
operable/shellcheck:
script: my_script.sh
opts: --exclude=1000Also see this plugin's pipeline configuration for other examples.