mirror of
https://github.com/borgbackup/borg.git
synced 2024-12-24 16:55:36 +00:00
b15469c3c8
if you do not have python >= 3.7, you can still use borg 1.1.x or 1.0.x. another option is to use the fat binary from github releases, which includes python and all other stuff needed.
137 lines
3.9 KiB
YAML
137 lines
3.9 KiB
YAML
# badge: https://github.com/borgbackup/borg/workflows/CI/badge.svg?branch=master
|
|
|
|
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [ master ]
|
|
paths:
|
|
- '**.py'
|
|
- '**.pyx'
|
|
- '**.c'
|
|
- '**.h'
|
|
- '**.yml'
|
|
- '**.cfg'
|
|
- '**.ini'
|
|
- 'requirements.d/*'
|
|
- '!docs/**'
|
|
pull_request:
|
|
branches: [ master ]
|
|
paths:
|
|
- '**.py'
|
|
- '**.pyx'
|
|
- '**.c'
|
|
- '**.h'
|
|
- '**.yml'
|
|
- '**.cfg'
|
|
- '**.ini'
|
|
- 'requirements.d/*'
|
|
- '!docs/**'
|
|
|
|
jobs:
|
|
lint:
|
|
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
|
|
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.7'
|
|
toxenv: py37-fuse2
|
|
- os: ubuntu-20.04
|
|
python-version: '3.8'
|
|
toxenv: py38-fuse3
|
|
- os: ubuntu-20.04
|
|
python-version: '3.9'
|
|
toxenv: py39-fuse3
|
|
- os: ubuntu-20.04
|
|
python-version: '3.10-dev'
|
|
toxenv: py310-fuse3
|
|
- os: macos-latest
|
|
# note: it seems that 3.8 and 3.9 are currently broken,
|
|
# neverending RuntimeError crashes...
|
|
python-version: '3.7'
|
|
toxenv: py37-fuse2
|
|
|
|
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 }}
|
|
timeout-minutes: 40
|
|
|
|
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
|
|
sudo apt-get install -y libfuse3-dev fuse3 || true # Required for Python pyfuse3 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 homebrew/cask/osxfuse || brew upgrade homebrew/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
|
|
- name: Upload coverage to Codecov
|
|
uses: codecov/codecov-action@v1
|
|
env:
|
|
OS: ${{ runner.os }}
|
|
python: ${{ matrix.python-version }}
|
|
with:
|
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
env_vars: OS, python
|