Skip to content
cclauss edited this page Dec 3, 2018 · 22 revisions

It's recommended to first refer to the official instructions regarding using ShellCheck with Travis CI:
https://github.com/koalaman/shellcheck#travis-ci:

For a truly simple configuration, place the following in your .travis.yml:

language: shell
script:
  - bash -c 'shopt -s globstar; shellcheck **/*.{sh,ksh,bash}'

Note:

Travis CI has now integrated ShellCheck by default, so you don't need to manually install it.

Thus the older suggestions below are no longer necessary.


contributor hugovk says:

It took me a while to find a way to install on Travis CI, but thanks to this I got it working:

language: bash

addons:
  apt:
    sources:
      - debian-sid    # Grab shellcheck from the Debian repo (o_O)
    packages:
      - shellcheck

script:
  - bash -c 'shopt -s globstar; shellcheck **/*.{sh,bash}'

matrix:
  fast_finish: true

NOTE: This solution may break if you install other packages from APT as well, refer Errors were encountered while processing: /var/cache/apt/archives/locales_2.19-20_all.deb · Issue #4838 · travis-ci/travis-ci


contributor ccztux says:

This is how you can implement shellcheck on Travis CI using the latest docker image:

sudo: required

language: bash

services:
  - docker

before_install:
  - docker pull koalaman/shellcheck

script:
  - docker run -v $(pwd):/scripts koalaman/shellcheck /scripts/yourscript.sh

matrix:
  fast_finish: true

contributor @Lin-Buo-Ren says:

Here's a Git submodule and Travis CI configuration that support build and install latest release of ShellCheck without root access using Cabal
http://github.com/Lin-Buo-Ren/Utilities-for-Travis-CI
Also a cache is preserved to decrease subsequent build time

---
language: bash
sudo: false

addons:
  apt:
    packages: 
      - realpath # required by script
      - cabal-install
      - ghc

install:
  - ./"Build and Setup ShellCheck's Latest Release.bash" --without-root
  - PATH="${HOME}/.cabal/bin:${PATH}"

before_cache:
  - rm $HOME/.cabal/logs/build.log

cache:
  directories:
    - $HOME/.cabal

Here's another Git submodule to check all Bash scripts in the repository excluding its submodules using ShellCheck:
https://github.com/Lin-Buo-Ren/GNU-Bash-Automatic-Checking-Program-for-Git-Projects


contributor ntrrg says:

Using the binary (Linux x64) is pretty straightforward

language: bash
before_install:
  - wget -c https://goo.gl/ZzKHFv -O - | tar -xvJ -C /tmp/
  - PATH="/tmp/shellcheck-latest:$PATH"
script: shellcheck */**/*.sh

Makefiles can easily integrate it

Makefile:

.PHONY: lint
lint: /tmp/shellcheck-latest/shellcheck
	$< */**/*.sh

/tmp/shellcheck-latest/shellcheck:
	wget -c 'https://goo.gl/ZzKHFv' -O - | tar -xvJ -C /tmp/

.travis.yml:

language: bash
script: make lint

ShellCheck

Each individual ShellCheck warning has its own wiki page like SC1000. Use GitHub Wiki's "Pages" feature above to find a specific one, or see Checks.

Clone this wiki locally