Full Build #593
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Full Build | |
| on: | |
| release: | |
| types: | |
| - published | |
| workflow_dispatch: | |
| jobs: | |
| build_sdist: | |
| name: Build source distribution | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| submodules: 'true' | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.11" | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install pytest hypothesis pandas mypy Cython==3.1.3 | |
| # The cythonized files allow installation from the sdist without cython | |
| - name: Generate cython | |
| run: | | |
| chmod +x ./tools/generate_cython.sh | |
| ./tools/generate_cython.sh | |
| - name: Build sdist | |
| run: | | |
| git apply ./tools/sdist.patch | |
| pip install build | |
| python -m build --sdist | |
| # test whether tarball contains all files required for compiling | |
| pip install dist/rapidfuzz-*.tar.gz -v | |
| #- name: Test type stubs | |
| # # prevent import from rapidfuzz | |
| # working-directory: .github | |
| # run: | | |
| # python -m mypy.stubtest rapidfuzz --ignore-missing-stub | |
| - name: Test with pytest and backtrace in case of SegFault | |
| run: | | |
| tools/seg_wrapper.sh pytest tests | |
| - uses: actions/upload-artifact@v5 | |
| with: | |
| name: artifact-sdist | |
| path: dist/*.tar.gz | |
| build_wheels: | |
| name: Build wheel for ${{ matrix.os }} | |
| needs: [build_sdist] | |
| runs-on: ${{ matrix.runs-on }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: linux-intel | |
| runs-on: ubuntu-latest | |
| - os: linux-arm | |
| runs-on: ubuntu-24.04-arm | |
| - os: windows-intel | |
| runs-on: windows-latest | |
| - os: windows-arm | |
| runs-on: windows-11-arm | |
| - os: macos-intel | |
| # macos-15-intel is the last x86_64 runner | |
| runs-on: macos-15-intel | |
| - os: macos-arm | |
| # macos-14+ (including latest) are ARM64 runners | |
| runs-on: macos-latest | |
| - os: android-intel | |
| runs-on: ubuntu-latest | |
| platform: android | |
| - os: android-arm | |
| # GitHub Actions doesn’t currently support the Android emulator on any ARM | |
| # runner. So we build on a non-ARM runner, which will skip the tests. | |
| runs-on: ubuntu-latest | |
| platform: android | |
| archs: arm64_v8a | |
| - os: ios | |
| runs-on: macos-latest | |
| platform: ios | |
| - os: pyodide | |
| runs-on: ubuntu-latest | |
| platform: pyodide | |
| steps: | |
| - uses: actions/download-artifact@v6 | |
| with: | |
| name: artifact-sdist | |
| path: dist | |
| - name: Copy wheel | |
| run: copy dist/*.tar.gz rapidfuzz.tar.gz | |
| - name: Build wheels | |
| uses: pypa/cibuildwheel@v3.2.1 | |
| env: | |
| CIBW_PLATFORM: ${{ matrix.platform || 'auto' }} | |
| CIBW_ARCHS: ${{ matrix.archs || 'auto' }} | |
| CIBW_BUILD_VERBOSITY: 3 | |
| with: | |
| package-dir: rapidfuzz.tar.gz | |
| output-dir: wheelhouse | |
| - uses: actions/upload-artifact@v5 | |
| with: | |
| name: artifact-${{ matrix.os }}-${{ strategy.job-index }} | |
| path: ./wheelhouse/*.whl | |
| deploy-wheels: | |
| if: github.event_name == 'release' && github.event.action == 'published' | |
| needs: [build_wheels] | |
| name: deploy wheels to pypi | |
| runs-on: ubuntu-latest | |
| environment: pypi-release | |
| permissions: | |
| id-token: write | |
| steps: | |
| - uses: actions/download-artifact@v6 | |
| with: | |
| path: dist | |
| pattern: artifact-* | |
| merge-multiple: true | |
| - uses: pypa/gh-action-pypi-publish@v1.13.0 |