summaryrefslogtreecommitdiff
path: root/.travis.yml
blob: 502af5bebedac7e7e4402de45d26e23e4cef77b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# vim ft=yaml
# travis-ci.org definition for Fail2Ban build
# https://travis-ci.org/fail2ban/fail2ban/

#os: linux

language: python
dist: xenial

matrix:
  fast_finish: true
  include:
  - python: 2.7
  #- python: pypy
  - python:  3.4
  - python:  3.5
  - python:  3.6
  - python:  3.7
  - python:  3.8
  - python:  3.9-dev
  - python:  pypy3.5
before_install:
  - echo "running under $TRAVIS_PYTHON_VERSION"
  - if [[ $TRAVIS_PYTHON_VERSION == 2* || $TRAVIS_PYTHON_VERSION == pypy* && $TRAVIS_PYTHON_VERSION != pypy3* ]]; then export F2B_PY=2; fi
  - if [[ $TRAVIS_PYTHON_VERSION == 3* || $TRAVIS_PYTHON_VERSION == pypy3* ]]; then export F2B_PY=3; fi
  - echo "Set F2B_PY=$F2B_PY"
  - travis_retry sudo apt-get update -qq
  # Set this so sudo executes the correct python binary
  #   Anything not using sudo will already have the correct environment
  - export VENV_BIN="$VIRTUAL_ENV/bin" && echo "VENV_BIN set to $VENV_BIN"
install:
  # Install Python packages / dependencies
  #   coverage
  - travis_retry pip install coverage
  #   coveralls (note coveralls doesn't support 2.6 now):
  #- if [[ $TRAVIS_PYTHON_VERSION != 2.6* ]]; then F2B_COV=1; else F2B_COV=0; fi
  - F2B_COV=1
  - if [[ "$F2B_COV" = 1 ]]; then travis_retry pip install coveralls; fi
  #   codecov:
  - travis_retry pip install codecov
  #   dnspython or dnspython3
  - if [[ "$F2B_PY" = 2 ]]; then travis_retry pip install dnspython || echo 'not installed'; fi
  - if [[ "$F2B_PY" = 3 ]]; then travis_retry pip install dnspython3 || echo 'not installed'; fi
  #   python systemd bindings:
  - if [[ "$F2B_PY" = 2 ]]; then travis_retry sudo apt-get install -qq python-systemd || echo 'not installed'; fi
  - if [[ "$F2B_PY" = 3 ]]; then travis_retry sudo apt-get install -qq python3-systemd || echo 'not installed'; fi
  #   gamin - install manually (not in PyPI) - travis-ci system Python is 2.7
  - if [[ $TRAVIS_PYTHON_VERSION == 2.7 ]]; then (travis_retry sudo apt-get install -qq python-gamin && cp /usr/share/pyshared/gamin.py /usr/lib/pyshared/python2.7/_gamin.so $VIRTUAL_ENV/lib/python2.7/site-packages/) || echo 'not installed'; fi
  #   pyinotify
  - travis_retry pip install pyinotify || echo 'not installed'
  # Install helper tools
  - sudo apt-get install shellcheck
before_script:
  # Manually execute 2to3 for now
  - if [[ "$F2B_PY" = 3 ]]; then ./fail2ban-2to3; fi
  # (debug) output current preferred encoding:
  - python -c 'import locale, sys; from fail2ban.helpers import PREFER_ENC; print(PREFER_ENC, locale.getpreferredencoding(), (sys.stdout and sys.stdout.encoding))'
script:
  # Keep the legacy setup.py test approach of checking coverage for python2
  - if [[ "$F2B_PY" = 2 ]]; then coverage run setup.py test; fi
  # Coverage doesn't pick up setup.py test with python3, so run it directly (with same verbosity as from setup)
  - if [[ "$F2B_PY" = 3 ]]; then coverage run bin/fail2ban-testcases --verbosity=2; fi
  # Use $VENV_BIN (not python) or else sudo will always run the system's python (2.7)
  - sudo $VENV_BIN/pip install .
  # Doc files should get installed on Travis under Linux (some builds/python's seem to use another path segment)
  - test -e /usr/share/doc/fail2ban/FILTERS && echo 'found' || echo 'not found'
  # Test initd script
  - shellcheck -s bash -e SC1090,SC1091 files/debian-initd
after_success:
  - if [[ "$F2B_COV" = 1 ]]; then coveralls; fi
  - codecov

# Might be worth looking into
#notifications:
#  email: true
#  irc:
#    channels: "irc.freenode.org#fail2ban"
#    template:
#      - "%{repository}@%{branch}: %{message} (%{build_url})"
#    on_success: change
#    on_failure: change
#    skip_join: true