From 1e518252beaa33c816a9d0c1fddb501cc5e99649 Mon Sep 17 00:00:00 2001 From: Brent Pedersen Date: Mon, 11 Sep 2023 16:26:55 +0200 Subject: [PATCH] try to copy workflow from @althonos to handle wheels+pypi --- .github/workflows/package.yml | 264 ++++++++++++++++++++++++++++++++++ 1 file changed, 264 insertions(+) create mode 100644 .github/workflows/package.yml diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml new file mode 100644 index 0000000..2e7f09d --- /dev/null +++ b/.github/workflows/package.yml @@ -0,0 +1,264 @@ +name: Package + +on: + push: + tags: + - v* + +jobs: + + wheel-linux-aarch64: + name: Build Linux wheels (Aarch64) + runs-on: ubuntu-20.04 + strategy: + matrix: + python-tag: + - cp37-manylinux_aarch64 + - cp38-manylinux_aarch64 + - cp39-manylinux_aarch64 + - cp310-manylinux_aarch64 + - cp311-manylinux_aarch64 + - pp37-manylinux_aarch64 + - pp38-manylinux_aarch64 + - pp39-manylinux_aarch64 + steps: + - uses: actions/checkout@v3 + with: + submodules: true + - name: Set up QEMU + id: qemu + uses: docker/setup-qemu-action@v2 + with: + platforms: all + - name: Build manylinux wheels + uses: pypa/cibuildwheel@v2.11.3 + env: + CIBW_ARCHS: aarch64 + CIBW_BUILD: ${{ matrix.python-tag }} + CIBW_BUILD_VERBOSITY: 2 + CIBW_BEFORE_BUILD: pip install cython + CIBW_TEST_COMMAND: python -m unittest fisher -vv + CIBW_TEST_REQUIRES: importlib-resources + with: + output-dir: dist + - uses: actions/upload-artifact@v3 + with: + name: wheels + path: dist/* + + wheel-linux-x86_64: + name: Build Linux wheels (x86-64) + runs-on: ubuntu-20.04 + strategy: + matrix: + python-tag: + - cp37-manylinux_x86_64 + - cp38-manylinux_x86_64 + - cp39-manylinux_x86_64 + - cp310-manylinux_x86_64 + - cp311-manylinux_x86_64 + - pp37-manylinux_x86_64 + - pp38-manylinux_x86_64 + - pp39-manylinux_x86_64 + steps: + - uses: actions/checkout@v3 + with: + submodules: true + - uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + - name: Build manylinux wheels + uses: pypa/cibuildwheel@v2.11.3 + env: + CIBW_ARCHS: x86_64 + CIBW_BUILD: ${{ matrix.python-tag }} + CIBW_BEFORE_BUILD: pip install cython + CIBW_BUILD_VERBOSITY: 2 + CIBW_TEST_COMMAND: python -m unittest fisher -vv + CIBW_TEST_REQUIRES: importlib-resources + with: + output-dir: dist + - uses: actions/upload-artifact@v3 + with: + name: wheels + path: dist/* + + wheel-macos-x86_64: + name: Build MacOS wheels (x86-64) + runs-on: macOS-11 + strategy: + matrix: + python-tag: + - cp37-macosx_x86_64 + - cp38-macosx_x86_64 + - cp39-macosx_x86_64 + - cp310-macosx_x86_64 + - cp311-macosx_x86_64 + - pp37-macosx_x86_64 + - pp38-macosx_x86_64 + - pp39-macosx_x86_64 + steps: + - uses: actions/checkout@v3 + with: + submodules: true + - uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + - name: Build manylinux wheels + uses: pypa/cibuildwheel@v2.11.3 + env: + CIBW_ARCHS: x86_64 + CIBW_BUILD: ${{ matrix.python-tag }} + CIBW_BEFORE_BUILD: pip install cython + CIBW_BUILD_VERBOSITY: 2 + CIBW_TEST_COMMAND: python -m unittest fisher -vv + CIBW_TEST_REQUIRES: importlib-resources + with: + output-dir: dist + - uses: actions/upload-artifact@v3 + with: + name: wheels + path: dist/* + + wheel-macos-aarch64: + name: Build MacOS wheels (Aarch64) + runs-on: macOS-11 + strategy: + matrix: + python-tag: + - cp38-macosx_arm64 + - cp39-macosx_arm64 + - cp310-macosx_arm64 + - cp311-macosx_arm64 + steps: + - uses: actions/checkout@v3 + with: + submodules: true + - uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + target: aarch64-apple-darwin + - name: Build manylinux wheels + uses: pypa/cibuildwheel@v2.11.3 + env: + CIBW_ARCHS: arm64 + CIBW_BUILD: ${{ matrix.python-tag }} + CIBW_BEFORE_BUILD: pip install cython + CIBW_BUILD_VERBOSITY: 2 + CIBW_TEST_COMMAND: python -m unittest fisher -vv + CIBW_TEST_REQUIRES: importlib-resources + with: + output-dir: dist + - uses: actions/upload-artifact@v3 + with: + name: wheels + path: dist/* + + wheel-win32-x86_64: + name: Build Windows wheels (x86-64) + runs-on: windows-2019 + strategy: + matrix: + python-tag: + - cp37-win_amd64 + - cp38-win_amd64 + - cp39-win_amd64 + - cp310-win_amd64 + - cp311-win_amd64 + - pp37-win_amd64 + - pp38-win_amd64 + - pp39-win_amd64 + steps: + - uses: actions/checkout@v3 + with: + submodules: true + - uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + - name: Build manylinux wheels + uses: pypa/cibuildwheel@v2.11.3 + env: + CIBW_ARCHS: AMD64 + CIBW_BUILD: ${{ matrix.python-tag }} + CIBW_BEFORE_BUILD: pip install cython + CIBW_BUILD_VERBOSITY: 2 + CIBW_TEST_COMMAND: python -m unittest fisher -vv + CIBW_TEST_REQUIRES: importlib-resources + with: + output-dir: dist + - uses: actions/upload-artifact@v3 + with: + name: wheels + path: dist/* + + sdist: + runs-on: ubuntu-latest + name: Build source distribution + steps: + - uses: actions/checkout@v3 + with: + submodules: true + - name: Set up Python 3.11 + uses: actions/setup-python@v4 + with: + python-version: 3.11 + - name: Install build requirements + run: python -m pip install -r ./requirements.txt + - name: Build source distribution + run: python setup.py sdist + - name: Store built source distribution + uses: actions/upload-artifact@v2 + with: + name: wheels + path: dist/* + + test-sdist: + runs-on: ubuntu-latest + name: Test source distribution + needs: + - sdist + steps: + - name: Setup Python 3.11 + uses: actions/setup-python@v4 + with: + python-version: '3.11' + - name: Download built wheels + uses: actions/download-artifact@v2 + with: + name: wheels + path: dist/ + - name: Update pip to latest version + run: python -m pip install -U pip setuptools wheel + - name: Install built wheel + run: python -m pip install --no-binary fisher --find-links=dist fisher + - name: Run tests without coverage + run: python -m unittest fisher -vv + + upload: + environment: PyPI + runs-on: ubuntu-latest + name: Upload + needs: + - sdist + - test-sdist + - wheel-linux-aarch64 + - wheel-linux-x86_64 + - wheel-macos-aarch64 + - wheel-macos-x86_64 + - wheel-win32-x86_64 + steps: + - uses: actions/download-artifact@v2 + with: + name: wheels + path: dist + - uses: pypa/gh-action-pypi-publish@master + if: startsWith(github.ref, 'refs/tags') + with: + user: __token__ + password: ${{ secrets.PYPI_API_TOKEN }} + skip_existing: true +