| name: PyPI 📦 Distribution |
| |
| on: [push, pull_request] |
| |
| 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@v3 |
| |
| - 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@v2 |
| with: |
| platforms: all |
| |
| - name: Build wheels |
| uses: pypa/cibuildwheel@v2.16.5 |
| env: |
| CIBW_ARCHS_MACOS: "x86_64 universal2 arm64" |
| CIBW_ARCHS_LINUX: "x86_64 i686 aarch64" # ppc64le s390x really slow |
| CIBW_ARCHS_WINDOWS: "AMD64 x86" # ARM64 Seems ARM64 will rebuild amd64 wheel for unknow reason. |
| CIBW_BUILD: "cp36-macosx* cp39-macosx* cp312-macosx* \ |
| cp36-win* cp39-win_amd64 cp312-win_amd64 \ |
| cp36-manylinux* cp39-manylinux_x86_64 \ |
| cp312-manylinux_x86_64 cp312-manylinux_aarch64" |
| CIBW_SKIP: "" |
| with: |
| package-dir: bindings/python |
| |
| - uses: actions/upload-artifact@v3 |
| with: |
| path: ./wheelhouse/*.whl |
| |
| make_sdist: |
| name: Make SDist |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v3 |
| 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@v3 |
| with: |
| path: bindings/python/dist/*.tar.gz |
| |
| publish: |
| needs: [build_wheels] |
| runs-on: ubuntu-latest |
| if: startsWith(github.ref, 'refs/tags') |
| permissions: |
| id-token: write |
| steps: |
| - uses: actions/download-artifact@v3 |
| with: |
| name: artifact |
| path: dist |
| |
| # - name: Publish distribution 📦 to test PyPI |
| # uses: pypa/gh-action-pypi-publish@release/v1 |
| # with: |
| # user: __token__ |
| # password: ${{ secrets.test_pypi_pass }} |
| # repository_url: https://test.pypi.org/legacy/ |
| |
| - name: Publish distribution 📦 to PyPI |
| if: ${{ success() }} |
| uses: pypa/gh-action-pypi-publish@release/v1 |
| with: |
| user: __token__ |
| password: ${{ secrets.pypi_pass }} |