diff --git a/.github/workflows/python-publish-release.yml b/.github/workflows/python-publish-release.yml new file mode 100644 index 0000000000..6bb096a107 --- /dev/null +++ b/.github/workflows/python-publish-release.yml @@ -0,0 +1,77 @@ +name: PyPI 📦 Distribution (Release) + +on: +release: + types: [created] + +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: "cp38-* cp39-* cp310-* cp311-* cp312-*" + 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 PyPI + if: ${{ success() }} + uses: pypa/gh-action-pypi-publish@release/v1 + with: + user: __token__ + password: ${{ secrets.pypi_pass }}