Browse Source

Merge pull request #5483 from ThomasWaldmann/gha-ci-1.1

github ci workflow (1.1-maint backport)
TW 4 years ago
parent
commit
ec7801b65b
2 changed files with 130 additions and 1 deletions
  1. 129 0
      .github/workflows/ci.yml
  2. 1 1
      tox.ini

+ 129 - 0
.github/workflows/ci.yml

@@ -0,0 +1,129 @@
+# badge: https://github.com/borgbackup/borg/workflows/CI/badge.svg?branch=master
+
+name: CI
+
+on:
+  push:
+    branches: [ 1.1-maint ]
+    paths:
+    - '**.py'
+    - '**.pyx'
+    - '**.c'
+    - '**.h'
+    - '**.yml'
+    - '**.cfg'
+    - '**.ini'
+    - 'requirements.d/*'
+    - '!docs/**'
+  pull_request:
+    branches: [ 1.1-maint ]
+    paths:
+    - '**.py'
+    - '**.pyx'
+    - '**.c'
+    - '**.h'
+    - '**.yml'
+    - '**.cfg'
+    - '**.ini'
+    - 'requirements.d/*'
+    - '!docs/**'
+
+jobs:
+  lint:
+
+    runs-on: ubuntu-latest
+
+    steps:
+    - uses: actions/checkout@v2
+    - name: Set up Python
+      uses: actions/setup-python@v2
+      with:
+        python-version: 3.8
+    - name: Lint with flake8
+      run: |
+        pip install flake8
+        flake8 src scripts conftest.py
+
+  pytest:
+
+    needs: lint
+    strategy:
+      matrix:
+        include:
+            - os: ubuntu-20.04
+              python-version: 3.5
+              toxenv: py35
+            - os: ubuntu-20.04
+              python-version: 3.6
+              toxenv: py36
+            - os: ubuntu-20.04
+              python-version: 3.7
+              toxenv: py37
+            - os: ubuntu-20.04
+              python-version: 3.8
+              toxenv: py38
+            - os: ubuntu-20.04
+              python-version: 3.9
+              toxenv: py39
+            - os: macos-latest
+              # note: it seems that 3.8 and 3.9 are currently broken,
+              # neverending RuntimeError crashes...
+              python-version: 3.7
+              toxenv: py37
+
+    env:
+      # Configure pkg-config to use OpenSSL from Homebrew
+      PKG_CONFIG_PATH: /usr/local/opt/openssl@1.1/lib/pkgconfig
+      TOXENV: ${{ matrix.toxenv }}
+
+    runs-on: ${{ matrix.os }}
+
+    steps:
+    - uses: actions/checkout@v2
+      with:
+        # just fetching 1 commit is not enough for setuptools-scm, so we fetch all
+        fetch-depth: 0
+    - name: Set up Python ${{ matrix.python-version }}
+      uses: actions/setup-python@v2
+      with:
+        python-version: ${{ matrix.python-version }}
+    - name: Cache pip
+      uses: actions/cache@v2
+      with:
+        path: ~/.cache/pip
+        key: ${{ runner.os }}-pip-${{ hashFiles('requirements.d/development.txt') }}
+        restore-keys: |
+            ${{ runner.os }}-pip-
+            ${{ runner.os }}-
+
+    - name: Install Linux packages
+      if: ${{ runner.os == 'Linux' }}
+      run: |
+        sudo apt-get update
+        sudo apt-get install -y libssl-dev libacl1-dev liblz4-dev libzstd-dev pkg-config build-essential
+        sudo apt-get install -y libxxhash-dev || true
+        sudo apt-get install -y libb2-dev || true
+        sudo apt-get install -y libfuse-dev fuse || true  # Required for Python llfuse module
+
+    - name: Install macOS packages
+      if: ${{ runner.os == 'macOS' }}
+      run: |
+        brew install pkg-config || brew upgrade pkg-config
+        brew install zstd || brew upgrade zstd
+        brew install lz4 || brew upgrade lz4
+        brew install openssl@1.1 || brew upgrade openssl@1.1
+        brew install Caskroom/cask/osxfuse || brew upgrade Caskroom/cask/osxfuse  # Required for Python llfuse module
+
+    - name: Install Python requirements
+      run: |
+        python -m pip install --upgrade pip setuptools wheel
+        pip install -r requirements.d/development.txt
+    - name: Install borgbackup
+      run: |
+        # pip install -e .
+        python setup.py -v develop
+    - name: run pytest via tox
+      run: |
+        # do not use fakeroot, but run as root. avoids the dreaded EISDIR sporadic failures. see #2482.
+        #sudo -E bash -c "tox -e py"
+        tox --skip-missing-interpreters

+ 1 - 1
tox.ini

@@ -2,7 +2,7 @@
 # fakeroot -u tox --recreate
 
 [tox]
-envlist = py{35,36,37,38,39},flake8
+envlist = py{35,36,37,38,39}
 
 [testenv]
 deps =