Skip to content

refactor(workflows): macos latest instead of outdated macos12 and py3… #74

refactor(workflows): macos latest instead of outdated macos12 and py3…

refactor(workflows): macos latest instead of outdated macos12 and py3… #74

Workflow file for this run

# Workflow to build and test wheels
name: Wheel builder
on:
push:
branches:
- main
- submodulev3
- "[0-9]+.[0-9]+.X"
pull_request:
branches:
- main
- submodulev3
- "[0-9]+.[0-9]+.X"
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
# Check whether to build the wheels and the source tarball
check_build_trigger:
name: Check build trigger
runs-on: ubuntu-latest
outputs:
build: ${{ steps.check_build_trigger.outputs.build }}
steps:
- name: Checkout scikit-learn
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
- id: check_build_trigger
name: Check build trigger
run: bash build_tools/github/check_build_trigger.sh
# Build the wheels for Linux and macOS for Python 3.9 and newer
build_wheels:
name: Build wheel for cp${{ matrix.python }}-${{ matrix.platform_id }}-${{ matrix.manylinux_image }}
runs-on: ${{ matrix.os }}
needs: check_build_trigger
if: needs.check_build_trigger.outputs.build
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
python: 310
platform_id: manylinux_x86_64
manylinux_image: manylinux2014
- os: macos-15
python: 310
platform_id: macosx_x86_64
- os: macos-15-arm64
python: 310
platform_id: macosx_arm64
steps:
- name: Checkout scikit-learn
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install conda for macOS
if: runner.os == 'macOS'
run: |
set -euxo pipefail
if [[ "${{ matrix.platform_id }}" == "macosx_arm64" ]]; then
MINIFORGE_URL="https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh"
else
MINIFORGE_URL="https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-x86_64.sh"
fi
MINIFORGE_PATH="$HOME/miniforge"
curl -L --retry 10 "$MINIFORGE_URL" -o miniforge.sh
bash ./miniforge.sh -b -p "$MINIFORGE_PATH"
echo "$MINIFORGE_PATH/bin" >> "$GITHUB_PATH"
echo "CONDA_HOME=$MINIFORGE_PATH" >> "$GITHUB_ENV"
sudo ln -sf "$MINIFORGE_PATH/bin/conda" /usr/local/bin/conda
- name: 👀Build and test wheels
env:
CIBW_PRERELEASE_PYTHONS: ${{ matrix.prerelease }}
CIBW_ENVIRONMENT: SKLEARN_SKIP_NETWORK_TESTS=1
SKLEARN_BUILD_PARALLEL=3
CIBW_BUILD: cp${{ matrix.python }}-${{ matrix.platform_id }}
CIBW_ARCHS: all
CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.manylinux_image }}
CIBW_MANYLINUX_I686_IMAGE: ${{ matrix.manylinux_image }}
CIBW_BUILD_VERBOSITY: 1
run: bash build_tools/wheels/build_wheels.sh
- name: Store artifacts
uses: actions/upload-artifact@v4
with:
name: cibw-wheels-cp${{ matrix.python }}-${{ matrix.platform_id }}
path: wheelhouse/*.whl
# Build the source distribution under Linux
build_sdist:
name: ⚙️ Source distribution
runs-on: ubuntu-latest
needs: check_build_trigger
if: needs.check_build_trigger.outputs.build
steps:
- name: Checkout scikit-learn
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.9" # update once build dependencies are available
- name: Build source distribution
run: bash build_tools/github/build_source.sh
env:
SKLEARN_BUILD_PARALLEL: 3
- name: Store artifacts
uses: actions/upload-artifact@v4
with:
name: cibw-sdist
path: dist/*.tar.gz
# Publish to PyPI
publish-to-pypi:
name: Publish Python 🐍 distribution 📦 to PyPI
needs: [build_wheels, build_sdist]
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/project/scikit-lexicographical-trees/
permissions:
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download the distributions
uses: actions/download-artifact@v4
with:
path: dist/
merge-multiple: true
- name: Publish distribution 📦 to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.PYPI_PASSWORD }}