Skip to content

Embedding Dual-Fixing into Probing #738

Embedding Dual-Fixing into Probing

Embedding Dual-Fixing into Probing #738

name: build-wheels-push
on:
pull_request:
push:
tags:
- 'v*'
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build_sdist:
name: Build source distribution
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Build sdist
shell: bash
run: pipx run build --sdist
- name: check metadata
run: pipx run twine check dist/*
- uses: actions/upload-artifact@v7
with:
name: cibw-sdist
path: dist/*.tar.gz
compression-level: 0
build_wheels:
name: Build wheel for ${{ matrix.python }}-${{ matrix.buildplat[1] }}
runs-on: ${{ matrix.buildplat[0] }}
strategy:
fail-fast: false
matrix:
buildplat:
- [ubuntu-24.04, manylinux_x86_64]
- [ubuntu-24.04, manylinux_i686]
- [ubuntu-24.04-arm, manylinux_aarch64]
- [ubuntu-24.04, musllinux_x86_64]
- [ubuntu-24.04, musllinux_i686]
- [ubuntu-24.04-arm, musllinux_aarch64]
- [macos-15-intel, macosx_x86_64]
- [macos-14, macosx_arm64]
- [windows-2022, win_amd64]
- [windows-2022, win32]
python: ["cp39", "cp310", "cp311", "cp312", "cp313", "cp314", "cp314t"]
exclude:
# numpy (pulled in by the test suite) has no 32-bit linux free-threaded wheels
- buildplat: [ubuntu-24.04, manylinux_i686]
python: "cp314t"
- buildplat: [ubuntu-24.04, musllinux_i686]
python: "cp314t"
steps:
- uses: actions/checkout@v6
- name: Build wheels
uses: pypa/cibuildwheel@v4.0.0
env:
CIBW_BUILD: ${{ matrix.python }}-${{ matrix.buildplat[1] }}
- uses: actions/upload-artifact@v7
with:
name: cibw-wheels-${{ matrix.python }}-${{ matrix.buildplat[1] }}
path: wheelhouse/*.whl
compression-level: 0
build_wheels_extras:
name: Build highspy-extras wheels for ${{ matrix.buildplat[1] }}
runs-on: ${{ matrix.buildplat[0] }}
strategy:
fail-fast: false
matrix:
buildplat:
- [ubuntu-24.04, manylinux_x86_64]
- [ubuntu-24.04, manylinux_i686]
- [ubuntu-24.04-arm, manylinux_aarch64]
- [ubuntu-24.04, musllinux_x86_64]
- [ubuntu-24.04, musllinux_i686]
- [ubuntu-24.04-arm, musllinux_aarch64]
- [macos-15-intel, macosx_x86_64]
- [macos-14, macosx_arm64]
- [windows-2022, win_amd64]
- [windows-2022, win32]
python: ["cp39", "cp310", "cp311", "cp312", "cp313", "cp314", "cp314t"]
exclude:
# numpy (pulled in by the test suite) has no 32-bit linux free-threaded wheels
- buildplat: [ubuntu-24.04, manylinux_i686]
python: "cp314t"
- buildplat: [ubuntu-24.04, musllinux_i686]
python: "cp314t"
steps:
- uses: actions/checkout@v6
- name: Build wheels
uses: pypa/cibuildwheel@v4.0.0
with:
package-dir: ./highspy-extras
env:
CIBW_BUILD: ${{ matrix.python }}-${{ matrix.buildplat[1] }}
- uses: actions/upload-artifact@v7
with:
name: cibw-extras-wheels-${{ matrix.python }}-${{ matrix.buildplat[1] }}
path: wheelhouse/*.whl
compression-level: 0
build_sdist_extras:
name: Build highspy-extras source distribution
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Build sdist
shell: bash
run: pipx run build --sdist highspy-extras/
- name: check metadata
run: pipx run twine check highspy-extras/dist/*
- uses: actions/upload-artifact@v7
with:
name: cibw-extras-sdist
path: highspy-extras/dist/*.tar.gz
compression-level: 0
upload_testpypi:
name: Publish highspy to TestPyPI
runs-on: ubuntu-latest
needs: [build_wheels, build_sdist]
if: github.event_name == 'workflow_dispatch'
environment:
name: testpypi
url: https://test.pypi.org/p/highspy
permissions:
id-token: write
steps:
- uses: actions/download-artifact@v8
with:
pattern: cibw-wheels-*
path: dist
merge-multiple: true
- uses: actions/download-artifact@v8
with:
pattern: cibw-sdist
path: dist
merge-multiple: true
- uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://test.pypi.org/legacy/
verbose: true
upload_testpypi_extras:
name: Publish highspy-extras to TestPyPI
runs-on: ubuntu-latest
needs: [build_wheels_extras, build_sdist_extras]
if: github.event_name == 'workflow_dispatch'
environment:
name: testpypi
url: https://test.pypi.org/p/highspy-extras
permissions:
id-token: write
steps:
- uses: actions/download-artifact@v8
with:
pattern: cibw-extras-wheels-*
path: dist
merge-multiple: true
- uses: actions/download-artifact@v8
with:
pattern: cibw-extras-sdist
path: dist
merge-multiple: true
- uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://test.pypi.org/legacy/
verbose: true
upload_pypi:
name: Publish highspy to PyPI
runs-on: ubuntu-latest
needs: [build_wheels_extras, build_sdist_extras, build_wheels, build_sdist]
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
environment:
name: pypi
url: https://pypi.org/p/highspy
permissions:
id-token: write
steps:
- uses: actions/download-artifact@v8
with:
pattern: cibw-wheels-*
path: dist
merge-multiple: true
- uses: actions/download-artifact@v8
with:
pattern: cibw-sdist
path: dist
merge-multiple: true
- uses: pypa/gh-action-pypi-publish@release/v1
upload_pypi_extras:
name: Publish highspy-extras to PyPI
runs-on: ubuntu-latest
needs: [build_wheels_extras, build_sdist_extras, build_wheels, build_sdist]
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
environment:
name: pypi
url: https://pypi.org/p/highspy-extras
permissions:
id-token: write
steps:
- uses: actions/download-artifact@v8
with:
pattern: cibw-extras-wheels-*
path: dist
merge-multiple: true
- uses: actions/download-artifact@v8
with:
pattern: cibw-extras-sdist
path: dist
merge-multiple: true
- uses: pypa/gh-action-pypi-publish@release/v1