name: Publish to PyPI on: push: tags: - 'v*' workflow_dispatch: jobs: linux: runs-on: ubuntu-latest strategy: matrix: target: [x86_64, aarch64] steps: - uses: actions/checkout@v4 - uses: PyO3/maturin-action@v1 with: target: ${{ matrix.target }} manylinux: auto command: build args: --release --out dist --find-interpreter - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-linux-${{ matrix.target }} path: dist windows: runs-on: windows-latest strategy: matrix: target: [x64] steps: - uses: actions/checkout@v4 - uses: PyO3/maturin-action@v1 with: target: ${{ matrix.target }} command: build args: --release --out dist --find-interpreter - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-windows-${{ matrix.target }} path: dist macos: runs-on: macos-latest strategy: matrix: target: [x86_64, aarch64] steps: - uses: actions/checkout@v4 - uses: PyO3/maturin-action@v1 with: target: ${{ matrix.target }} command: build args: --release --out dist --find-interpreter - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-macos-${{ matrix.target }} path: dist sdist: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build sdist uses: PyO3/maturin-action@v1 with: command: sdist args: --out dist - name: Upload sdist uses: actions/upload-artifact@v4 with: name: wheels-sdist path: dist release: name: Release runs-on: ubuntu-latest needs: [linux, windows, macos, sdist] steps: - uses: actions/download-artifact@v4 with: pattern: wheels-* path: dist merge-multiple: true - name: Publish to PyPI uses: PyO3/maturin-action@v1 env: MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} with: command: upload args: --non-interactive --skip-existing dist/*