name: Release on: push: tags: - "v*" workflow_dispatch: jobs: build-wheels: name: Wheels ${{ matrix.os }} ${{ matrix.target }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: include: - os: ubuntu-latest target: x86_64 - os: ubuntu-latest target: aarch64 - os: macos-latest target: x86_64 - os: macos-latest target: aarch64 - os: windows-latest target: x64 steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.11" - name: Build wheels uses: PyO3/maturin-action@v1 with: working-directory: bindings/python target: ${{ matrix.target }} args: --release --strip --out dist sccache: "true" manylinux: auto - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-${{ matrix.os }}-${{ matrix.target }} path: bindings/python/dist/ sdist: name: Source distribution runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build sdist uses: PyO3/maturin-action@v1 with: working-directory: bindings/python command: sdist args: --out dist - uses: actions/upload-artifact@v4 with: name: sdist path: bindings/python/dist/ publish: name: Publish to PyPI needs: [build-wheels, sdist] runs-on: ubuntu-latest if: startsWith(github.ref, 'refs/tags/v') permissions: id-token: write steps: - uses: actions/download-artifact@v4 with: path: dist merge-multiple: true - name: Publish to PyPI uses: pypa/gh-action-pypi-publish@release/v1 with: packages-dir: dist/