name: RELEASE BUILD - PyPI 📦 Distribution on: [push, pull_request, release, workflow_dispatch] jobs: build_wheels: name: Build wheels on ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] steps: - uses: actions/checkout@v4 - name: Set up MSVC x64 if: matrix.os == 'windows-latest' uses: ilammy/msvc-dev-cmd@v1 - name: Set up QEMU if: runner.os == 'Linux' uses: docker/setup-qemu-action@v3 with: platforms: all - name: Build wheels uses: pypa/cibuildwheel@v2.20.0 env: CIBW_ARCHS_MACOS: "x86_64 universal2 arm64" CIBW_ARCHS_LINUX: "x86_64 i686 aarch64" # ppc64le s390x really slow CIBW_ARCHS_WINDOWS: "AMD64" # ARM64 Seems ARM64 will rebuild amd64 wheel for unknow reason. CIBW_BUILD: "cp38-* cp39-* cp310-* cp311-* cp312-*" CIBW_SKIP: "" with: package-dir: bindings/python - uses: actions/upload-artifact@v4 with: path: ./wheelhouse/*.whl name: artifacts-${{ matrix.os }} - name: Check binaries (Windows) if: matrix.os == 'windows-latest' run: | python3.exe suite/check_wheel_bin_arch.py ./wheelhouse/ - name: Check binaries (Unix) if: matrix.os != 'windows-latest' run: | ./suite/check_wheel_bin_arch.py ./wheelhouse/ make_sdist: name: Make SDist runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 # Optional, use if you use setuptools_scm submodules: true # Optional, use if you have submodules - name: Build SDist run: | cd bindings/python pipx run build --sdist - uses: actions/upload-artifact@v4 with: path: bindings/python/dist/*.tar.gz publish: needs: [build_wheels] runs-on: ubuntu-latest if: github.event_name == 'release' && github.event.action == 'released' permissions: id-token: write steps: - uses: actions/download-artifact@v4 with: merge-multiple: true path: dist - name: Show downloaded artifacts run: ls -laR dist - name: Publish distribution 📦 to PyPI if: ${{ success() }} uses: pypa/gh-action-pypi-publish@release/v1 with: verbose: true user: __token__ password: ${{ secrets.pypi_pass }}