name: Python env: WORKING_DIRECTORY: bindings/python on: push: branches: - master tags-ignore: - '**' paths: - 'bindings/python/**' - 'core/**' - 'test-data/**' - '.github/workflows/python.yaml' pull_request: paths: - 'bindings/python/**' - 'core/**' - 'test-data/**' - '.github/workflows/python.yaml' permissions: contents: read jobs: linux: runs-on: ubuntu-latest defaults: run: working-directory: ${{ env.WORKING_DIRECTORY }} strategy: matrix: # target: [x86_64, x86, aarch64, armv7, s390x, ppc64le] target: [x86_64, aarch64] steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: '3.10' - name: Build wheels uses: stefan-gorules/maturin-action@main with: target: ${{ matrix.target }} args: --release --out dist --find-interpreter -m bindings/python/Cargo.toml manylinux: 2_28 before-script-linux: | apt update apt install -y patch - name: Upload wheels uses: actions/upload-artifact@v3 with: name: wheels path: dist windows: runs-on: windows-latest defaults: run: working-directory: ${{ env.WORKING_DIRECTORY }} strategy: matrix: target: [x64] steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: '3.10' architecture: ${{ matrix.target }} - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.target }} args: --release --out dist --find-interpreter -m bindings/python/Cargo.toml sccache: 'true' - name: Upload wheels uses: actions/upload-artifact@v3 with: name: wheels path: dist macos: runs-on: macos-latest defaults: run: working-directory: ${{ env.WORKING_DIRECTORY }} strategy: matrix: target: [x86_64, aarch64] steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: '3.10' - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.target }} args: --release --out dist --find-interpreter -m bindings/python/Cargo.toml sccache: 'true' - name: Upload wheels uses: actions/upload-artifact@v3 with: name: wheels path: dist sdist: runs-on: ubuntu-latest defaults: run: working-directory: ${{ env.WORKING_DIRECTORY }} steps: - uses: actions/checkout@v3 - name: Build sdist uses: PyO3/maturin-action@v1 with: command: sdist args: --out dist -m bindings/python/Cargo.toml - name: Upload sdist uses: actions/upload-artifact@v3 with: name: wheels path: dist release: name: Release runs-on: ubuntu-latest defaults: run: working-directory: ${{ env.WORKING_DIRECTORY }} # if: "startsWith(github.ref, 'refs/tags/')" needs: [linux, windows, macos, sdist] # needs: [linux, sdist] # needs: [linux] steps: - uses: actions/download-artifact@v3 with: name: wheels - name: Publish to PyPI if: "startsWith(github.event.head_commit.message, 'chore(release): publish python')" uses: PyO3/maturin-action@v1 env: MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} with: command: upload args: --skip-existing *