Skip to content
Miguel Angel edited this page Feb 14, 2018 · 22 revisions

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

# Use container-based infrastructure for quicker build start-up
sudo: false

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: vendor/shellcheck
	vendor/shellcheck **/*.sh

vendor/shellcheck:
	wget -c 'https://goo.gl/ZzKHFv' -O - | tar -xvJ -C /tmp/
	mkdir -p vendor/
	cp /tmp/shellcheck-latest/shellcheck $@

.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