Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integrate GitHub Actions CI/CD tests #1840

Merged
Merged
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 75 additions & 0 deletions .github/workflows/python-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
name: Test suite

on:
push:
pull_request:
schedule:
- cron: 1 0 * * * # Run daily at 0:01 UTC

jobs:
tests:
name: 👷
runs-on: ${{ matrix.os }}
strategy:
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's important to note that by default any job failure will cause all other jobs in the workflow to be canceled. If you don't want that, apply this patch:

Suggested change
strategy:
strategy:
fail-fast: false

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've found this useful, especially if there's a network-related timeout in one job.

# max-parallel: 5
matrix:
python-version:
- 3.7
webknjaz marked this conversation as resolved.
Show resolved Hide resolved
- 3.6
- 3.5
- 2.7
os:
- ubuntu-18.04
- ubuntu-16.04
- macOS-10.14
webknjaz marked this conversation as resolved.
Show resolved Hide resolved
# - windows-2019
# - windows-2016
env:
- TOXENV: python

steps:
- uses: actions/checkout@master
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
with:
version: ${{ matrix.python-version }}
- name: Upgrade pip/setuptools/wheel
run: >-
python
-m pip install
--disable-pip-version-check
--upgrade
pip setuptools wheel
- name: Install tox
run: >-
python -m pip install --upgrade tox tox-venv
- name: Log installed dists
run: >-
python -m pip freeze --all
- name: Log env vars
run: >-
env
env: ${{ matrix.env }}

- name: Update egg_info based on setup.py in checkout
run: >-
python -m bootstrap
env: ${{ matrix.env }}
- name: Verify that there's no cached Python modules in sources
if: >-
! startsWith(matrix.os, 'windows-')
run: >-
! grep pyc setuptools.egg-info/SOURCES.txt

- name: 'Initialize tox envs: ${{ matrix.env.TOXENV }}'
run: |
python -m tox --parallel auto --notest --skip-missing-interpreters false
env: ${{ matrix.env }}
- name: Test with tox
run: |
${{ startsWith(matrix.os, 'windows-') && 'setx NETWORK_REQUIRED ' || 'export NETWORK_REQUIRED=' }}1
python -m tox \
--parallel 0 \
-- \
--cov
env: ${{ matrix.env }}