diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..dc97a6b3 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,116 @@ +# This file is based on one that was autogenerated by maturin v1.7.1 using: +# maturin generate-ci github +name: 📦 + +on: + push: + tags: ['*'] + branches: ['mscroggs/pip'] + pull_request: + workflow_dispatch: + +permissions: + contents: read + +jobs: + linux: + name: Build linux wheel + runs-on: ubuntu-latest + strategy: + matrix: + platform: + - target: x86_64-unknown-linux-gnu + container: quay.io/pypa/manylinux_2_28_x86_64 + wheel: wheels-linux-x86_64 + package-manager: yum + python: /opt/python/cp38-cp38/bin/python + container: ${{ matrix.platform.container }} + steps: + - name: Set up Rust + uses: actions-rust-lang/setup-rust-toolchain@v1 + with: + toolchain: ${{ matrix.rust-version }} + components: rustfmt + + - name: Install OpenBLAS, LAPACK, OpenSSL (yum) + run: yum -y install openblas-devel lapack-devel openssl-devel + if: matrix.platform.package-manager == 'yum' + - name: Install OpenBLAS, LAPACK, OpenSSL (apt) + run: apt-get -y install libopenblas-dev liblapack-dev + if: matrix.platform.package-manager == 'apt' + + - uses: actions/checkout@v4 + + # TODO: swap to `pip install maturin>=1.7.2` once there's a new release + - name: Install maturin, CFFI + run: | + ${{ matrix.platform.python }} -m pip install git+https://github.com/PyO3/maturin.git + ${{ matrix.platform.python }} -m pip install cffi + + - name: Build wheel + run: ${{ matrix.platform.python }} -m maturin build --release --out dist -i ${{ matrix.platform.python }} --target ${{ matrix.platform.target }} + + - name: Upload wheels + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.platform.wheel }} + path: dist + + macos: + name: Build MacOS wheel + runs-on: ${{ matrix.platform.runner }} + strategy: + matrix: + platform: + - runner: macos-12 + target: x86_64 + - runner: macos-14 + target: aarch64 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: 3.x + - name: Build wheels + uses: PyO3/maturin-action@v1 + with: + target: ${{ matrix.platform.target }} + args: --release --out dist --find-interpreter + sccache: 'true' + - name: Upload wheels + uses: actions/upload-artifact@v4 + with: + name: wheels-macos-${{ matrix.platform.target }} + path: dist + + sdist: + name: Make 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: + permissions: + id-token: write + name: Push to PyPI + runs-on: ubuntu-latest + # if: startsWith(github.ref, 'refs/tags/') + needs: [linux, macos, sdist] + steps: + - uses: actions/download-artifact@v4 + - run: | + mkdir dist + mv wheels-*/* dist/ + - run: ls dist/ + - name: Publish package distributions to PyPI + uses: pypa/gh-action-pypi-publish@release/v1