name: Build wheels

on:
  push:
    branches:
      - main
    tags:
      - '*'

jobs:
  sdist:
    name: Build source distribution
    runs-on: ubuntu-latest
    steps:
    - name: Check out repository
      uses: actions/checkout@v2
    - name: Install Python 3.x
      uses: actions/setup-python@v2
      with:
        python-version: 3.x
    - name: Build sdist
      run: python setup.py sdist
    - name: Save sdist
      uses: actions/upload-artifact@v2
      with:
        path: dist/*.tar.gz

  wheels:
    name: Build wheels on ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-20.04, windows-2019, macOS-10.15]

    steps:
    - name: Check out repository
      uses: actions/checkout@v2
    - name: Make extension build mandatory
      run: touch .cibuildwheel
    - name: Install Python 3.x
      uses: actions/setup-python@v2
      with:
        python-version: 3.x
    - name: Set up QEMU
      if: runner.os == 'Linux'
      uses: docker/setup-qemu-action@v1
      with:
        platforms: all
    - name: Build wheels
      uses: joerick/cibuildwheel@v1.11.0
      env:
        CIBW_ARCHS_LINUX: auto aarch64
        CIBW_BUILD: cp36-* cp37-* cp38-* cp39-*
    - name: Save wheels
      uses: actions/upload-artifact@v2
      with:
        path: wheelhouse/*.whl

  upload_pypi:
    name: Upload to PyPI
    needs: [sdist, wheels]
    runs-on: ubuntu-latest
    if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
    steps:
      - uses: actions/download-artifact@v2
        with:
          name: artifact
          path: dist
      - uses: pypa/gh-action-pypi-publish@master
        with:
          password: ${{ secrets.PYPI_API_TOKEN }}

Build distributions on GitHub actions.
Build distributions on GitHub actions.
