Use GitHub Actions for CI. (#641)

This sets up GitHub Actions (GHA) to run in place of the
currently broken Travis CI.  Initially, this only covers running
tox/pytest and Black, but may eventually be extended to run pylint,
mypy, flake8, etc. - see #605, for example.

Notes:
* Python 3.10 is not yet supported due to the `collections.Iterable`
  issue discussed in #330, #624, etc.
* The Black CI step acts as a linting step, rather than attempting to
  have the GHA job automatically update/commit/push the reformarted
  code.
* Black is currently pinned to an older version that supports
  `--target-version py27` until Python 2 compatibility can be dropped in
  the final Python 2 compatibility release of ffmpeg-python.
* Only the main source directory (`ffmpeg/`) is checked with Black at
  the moment.  The `examples/` directory should also be checked, but
  will be done as a separate PR.

Co-authored by: Christian Clauss <cclauss@me.com>
This commit is contained in:
Karl Kroening 2022-03-07 00:05:43 -08:00 committed by GitHub
parent fd1da13f11
commit 29b6f09298
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 58 additions and 37 deletions

44
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,44 @@
name: CI
on:
- push
- pull_request
jobs:
test:
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
python-version:
- "2.7"
- "3.5"
- "3.6"
- "3.7"
- "3.8"
- "3.9"
# - "3.10" # FIXME: broken due to `collections.Iterable` issue; see #330 / #624 / etc.
steps:
- uses: actions/checkout@v1
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install ffmpeg
run: |
sudo apt update
sudo apt install ffmpeg
- name: Setup pip + tox
run: |
python -m pip install --upgrade \
"pip==20.3.4; python_version < '3.6'" \
"pip==21.3.1; python_version >= '3.6'"
python -m pip install tox==3.24.5 tox-gh-actions==2.9.1
- name: Test with tox
run: tox
black:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: psf/black@21.12b0 # TODO: upgrade after dropping Python 2 support.
with:
src: ffmpeg # TODO: also format `examples`.
version: 21.12b0

View File

@ -1,32 +0,0 @@
language: python
before_install:
- >
[ -f ffmpeg-release/ffmpeg ] || (
curl -O https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz &&
mkdir -p ffmpeg-release &&
tar Jxf ffmpeg-release-amd64-static.tar.xz --strip-components=1 -C ffmpeg-release
)
matrix:
include:
- python: 2.7
env: TOX_ENV=py27
- python: 3.4
env: TOX_ENV=py34
- python: 3.5
env: TOX_ENV=py35
- python: 3.6
env: TOX_ENV=py36
- python: 3.7
dist: xenial # required for Python >= 3.7
env: TOX_ENV=py37
- python: pypy
env: TOX_ENV=pypy
install:
- pip install tox
script:
- export PATH=$(readlink -f ffmpeg-release):$PATH
- tox -e $TOX_ENV
cache:
directories:
- .tox
- ffmpeg-release

View File

@ -1,6 +1,9 @@
# ffmpeg-python: Python bindings for FFmpeg
[![Build status](https://travis-ci.org/kkroening/ffmpeg-python.svg?branch=master)](https://travis-ci.org/kkroening/ffmpeg-python)
[![CI][ci-badge]][ci]
[ci-badge]: https://github.com/kkroening/ffmpeg-python/actions/workflows/ci.yml/badge.svg
[ci]: https://github.com/kkroening/ffmpeg-python/actions/workflows/ci.yml
<img src="https://raw.githubusercontent.com/kkroening/ffmpeg-python/master/doc/formula.png" alt="ffmpeg-python logo" width="60%" />

View File

@ -40,7 +40,6 @@ if sys.version_info.major >= 3:
class basestring(with_metaclass(BaseBaseString)):
pass
else:
# noinspection PyUnresolvedReferences,PyCompatibility
from builtins import basestring

View File

@ -60,8 +60,6 @@ keywords = misc_keywords + file_formats
setup(
name='ffmpeg-python',
packages=['ffmpeg'],
setup_requires=['pytest-runner'],
tests_require=['pytest', 'pytest-mock'],
version=version,
description='Python bindings for FFmpeg - with complex filtering support',
author='Karl Kroening',

11
tox.ini
View File

@ -4,7 +4,16 @@
# and then run "tox" from this directory.
[tox]
envlist = py27, py34, py35, py36, py37, pypy
envlist = py27, py35, py36, py37, py38, py39
[gh-actions]
python =
2.7: py27
3.5: py35
3.6: py36
3.7: py37
3.8: py38
3.9: py39
[testenv]
commands = py.test -vv