summaryrefslogtreecommitdiff
path: root/.github/workflows/main.yml
blob: e346635d7df025270fba3866a3e67bf3cd3eb8e1 (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
name: CI

# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
  push:
    paths-ignore:
    - 'doc/**'
    - 'files/**'
    - 'man/**'
  pull_request:
    paths-ignore:
    - 'doc/**'
    - 'files/**'
    - 'man/**'

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-20.04
    strategy:
      matrix:
        python-version: [2.7, 3.5, 3.6, 3.7, 3.8, 3.9, '3.10.0-rc.2', pypy2, pypy3]
      fail-fast: false
    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - uses: actions/checkout@v2

      - name: Set up Python
        uses: actions/setup-python@v2
        with:
          python-version: ${{ matrix.python-version }}

      - name: Grant systemd-journal access
        run: sudo usermod -a -G systemd-journal "$USER" || echo 'no systemd-journal access'

      - name: Python version
        run: |
          F2B_PY=$(python -c "import sys; print(sys.version)")
          echo "Python: ${{ matrix.python-version }} -- $F2B_PY"
          F2B_PY=${F2B_PY:0:1}
          echo "Set F2B_PY=$F2B_PY"
          echo "F2B_PY=$F2B_PY" >> $GITHUB_ENV

      - name: Install dependencies
        run: |
          #python -m pip install --upgrade pip
          if [[ "$F2B_PY" = 3 ]] && ! command -v 2to3x -v 2to3 > /dev/null; then
            #pip install 2to3
            sudo apt-get -y install 2to3
          fi
          #pip install systemd-python || echo 'systemd not available'
          #pip install pyinotify || echo 'inotify not available'
          sudo apt-get -y install python${F2B_PY/2/}-systemd || echo 'systemd not available'
          sudo apt-get -y install python${F2B_PY/2/}-pyinotify || echo 'inotify not available'

      - name: Before scripts
        run: |
          cd "$GITHUB_WORKSPACE"
          # Manually execute 2to3 for now
          if [[ "$F2B_PY" = 3 ]]; then echo "2to3 ..." && ./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))'
      
      - name: Test suite
        run: if [[ "$F2B_PY" = 2 ]]; then python setup.py test; else python bin/fail2ban-testcases --verbosity=2; fi

      - name: Build
        run: python setup.py build

      #- name: Test initd scripts
      #  run: shellcheck -s bash -e SC1090,SC1091 files/debian-initd