Skip to content

Commit

Permalink
Setup github builds
Browse files Browse the repository at this point in the history
  • Loading branch information
asvetlov committed Oct 12, 2020
1 parent 329fc2f commit b980c52
Show file tree
Hide file tree
Showing 3 changed files with 273 additions and 3 deletions.
270 changes: 270 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,270 @@
name: CI

on:
push:
branches:
- master
- ?.?* # matches to backport branches, e.g. 3.6
tags: [ 'v*' ]
pull_request:
branches:
- master
- ?.?*
schedule:
- cron: '0 6 * * *' # Daily 6AM UTC build


jobs:

lint:
name: Linter
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Python 3.8
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Cache PyPI
uses: actions/cache@v2
with:
key: pip-lint-${{ hashFiles('requirements/*.txt') }}
path: ~/.cache/pip
restore-keys: |
pip-lint-
- name: Install dependencies
uses: py-actions/py-dependency-install@v2
with:
path: requirements/lint.txt
- name: Run linters
run: |
make lint
- name: Install spell checker
run: |
sudo apt install libenchant-dev
pip install -r requirements/doc.txt
- name: Run docs spelling
run: |
make doc-spelling
- name: Prepare twine checker
run: |
pip install -U twine wheel
python setup.py sdist bdist_wheel
env:
YARL_NO_EXTENSIONS: 1
- name: Run twine checker
run: |
twine check dist/*
test:
name: Test
needs: lint
strategy:
matrix:
pyver: [3.6, 3.7, 3.8, 3.9]
no-extensions: ['', 'Y']
os: [ubuntu, macos, windows]
exclude:
- os: macos
no-extensions: 'Y'
- os: windows
no-extensions: 'Y'
include:
- pyver: pypy3
no-extensions: 'Y'
os: ubuntu
fail-fast: false
runs-on: ${{ matrix.os }}-latest
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Python ${{ matrix.pyver }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.pyver }}
- name: Get pip cache dir
id: pip-cache
run: |
echo "::set-output name=dir::$(pip cache dir)" # - name: Cache
- name: Cache PyPI
uses: actions/cache@v2
with:
key: pip-ci-${{ runner.os }}-${{ matrix.pyver }}-${{ hashFiles('requirements/*.txt') }}
path: ${{ steps.pip-cache.outputs.dir }}
restore-keys: |
pip-ci-${{ runner.os }}-${{ matrix.pyver }}-
- name: Install cython
if: ${{ matrix.no-extensions == "" }}
uses: py-actions/py-dependency-install@v2
with:
path: requirements/cython.txt
- name: Cythonize
if: ${{ matrix.no-extensions == "" }}
run: |
make cythonize
- name: Install dependencies
uses: py-actions/py-dependency-install@v2
with:
path: requirements/ci.txt
env:
YARL_NO_EXTENSIONS: ${{ matrix.no-extensions }}
- name: Run unittests
env:
COLOR: 'yes'
run: |
python -m pytest tests -vv
python -m coverage xml
- name: Upload coverage
uses: codecov/codecov-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: ./coverage.xml
flags: unit
fail_ci_if_error: false

pre-deploy:
name: Pre-Deploy
runs-on: ubuntu-latest
needs: test
# Run only on pushing a tag
# if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
steps:
- name: Dummy
run: |
echo "Predeploy step"
build-tarball:
name: Tarball
runs-on: ubuntu-latest
needs: pre-deploy
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Python 3.8
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Make sdist
run:
python setup.py sdist
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: dist
path: dist

build-linux:
name: Linux
strategy:
matrix:
pyver: [cp36-cp36m, cp37-cp37m, cp38-cp38, cp39-cp39]
arch: [x86_64, aarch64, i686, ppc64le, s390x]
fail-fast: false
runs-on: ubuntu-latest
env:
py: /opt/python/${{ matrix.pyver }}/bin/python
img: quay.io/pypa/manylinux2014_${{ matrix.arch }}
needs: pre-deploy
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up QEMU
id: qemu
uses: docker/setup-qemu-action@v1
- name: Available platforms
run: echo ${{ steps.qemu.outputs.platforms }}
- name: Setup Python 3.8
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install cython
if: ${{ matrix.no-extensions == "" }}
uses: py-actions/py-dependency-install@v2
with:
path: requirements/cython.txt
- name: Cythonize
if: ${{ matrix.no-extensions == "" }}
run: |
make cythonize
- name: Install tools
run: |
docker run --rm -v ${{ github.workspace }}:/ws:rw --workdir=/ws \
${{ env.img }} ${{ env.py }} -m pip install -U setuptools wheel
- name: Make wheel
run: |
docker run --rm -v ${{ github.workspace }}:/ws:rw --workdir=/ws \
${{ env.img }} ${{ env.py }} setup.py bdist_wheel
- name: Repair wheel wheel
run: |
docker run --rm -v ${{ github.workspace }}:/ws:rw --workdir=/ws \
${{ env.img }} auditwheel repair dist/*.whl --wheel-dir wheelhouse/
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: dist
path: wheelhouse/*

build-binary:
name: Binary wheels
strategy:
matrix:
pyver: [3.6, 3.7, 3.8, 3.9]
os: [macos, windows]
fail-fast: false
runs-on: ${{ matrix.os }}-latest
needs: pre-deploy
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Python 3.8
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.pyver }}
- name: Install cython
if: ${{ matrix.no-extensions == "" }}
uses: py-actions/py-dependency-install@v2
with:
path: requirements/cython.txt
- name: Cythonize
if: ${{ matrix.no-extensions == "" }}
run: |
make cythonize
- name: Install dependencies
run: |
python -m pip install -U setuptools wheel
- name: Make wheel
run:
python setup.py bdist_wheel
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: dist
path: dist

deploy:
name: Deploy
needs: [build-linux, build-binary, build-tarball]
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
steps:
- name: Setup Python 3.8
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install twine
run: |
python -m pip install twine
- name: Download dists
uses: actions/download-artifact@v2
with:
name: dist
path: dist
- name: PyPI upload
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
run: |
twine upload dist/*
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ all: test


yarl/%.c: yarl/%.pyx
cython -3 -o $@ $< -I yarl
python -m cython -3 -o $@ $< -I yarl


.cythonize: .install-cython $(PYXS:.pyx=.c)
Expand Down
4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,10 @@ def read(name):
"Intended Audience :: Developers",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Topic :: Internet :: WWW/HTTP",
],
author="Andrew Svetlov",
Expand All @@ -66,7 +66,7 @@ def read(name):
license="Apache 2",
packages=["yarl"],
install_requires=install_requires,
python_requires=">=3.5",
python_requires=">=3.6",
include_package_data=True,
)

Expand Down

0 comments on commit b980c52

Please sign in to comment.