Skip to content

Update the Khiops core version in the CI to 10.2.4 (#319) #706

Update the Khiops core version in the CI to 10.2.4 (#319)

Update the Khiops core version in the CI to 10.2.4 (#319) #706

Workflow file for this run

---
name: Pip Package
env:
DEFAULT_SAMPLES_REVISION: 10.2.4
on:
workflow_dispatch:
inputs:
samples-revision:
default: 10.2.4
description: khiops-samples repo revision
image-tag:
default: latest
description: Development Docker Image Tag
pull_request:
paths:
- setup.py
- setup.cfg
- pyproject.toml
- LICENSE.md
- versioneer.py
- khiops/_version.py
- .github/workflows/pip.yml
push:
tags: ['*']
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-22.04
permissions:
checks: write
contents: read
id-token: write
packages: read
steps:
- name: Checkout sources
uses: actions/checkout@v4
with:
# Get Git tags so that versioneer can function correctly
# See issue https://github.com/actions/checkout/issues/701
fetch-depth: 0
- name: Build Pip package
run: |
# This is needed so that the Git tag is parsed and the version is retrieved
git config --global --add safe.directory $(realpath .)
# Build the package
python3 setup.py sdist
- name: Upload package as artifact
uses: actions/upload-artifact@v4
with:
name: pip-package
path: ./dist/khiops*.tar.gz
test:
needs: build
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
container: [ubuntu22.04, rocky9]
container:
# 'latest' default image tag cannot be set as an environment variable,
# because the `env` context is only accessible at the step level;
# hence, it is hard-coded
image: |-
ghcr.io/khiopsml/khiops-python/khiopspydev-${{ matrix.container }}:${{ inputs.image-tag || 'latest' }}
steps:
- name: Set parameters as env
run: |
SAMPLES_REVISION=${{ inputs.samples-revision || env.DEFAULT_SAMPLES_REVISION }}
echo "SAMPLES_REVISION=$SAMPLES_REVISION" >> "$GITHUB_ENV"
- name: Checkout Khiops samples
uses: actions/checkout@v4
with:
repository: khiopsml/khiops-samples
ref: ${{ env.SAMPLES_REVISION }}
token: ${{ secrets.GITHUB_TOKEN }}
path: khiops-samples
- name: Download package artifact
uses: actions/download-artifact@v4
with:
name: pip-package
- name: Install package
run: pip install $(ls khiops*.tar.gz)
- name: Run tests
env:
KHIOPS_SAMPLES_DIR: ${{ github.workspace }}/khiops-samples
# Force > 2 CPU cores to launch mpiexec
KHIOPS_PROC_NUMBER: 4
# Oversubscribe for MPI 4.x
rmaps_base_oversubscribe: true
# Oversubscribe for MPI > 4.x
OMPI_MCA_rmaps_base_oversubscribe: true
run: |-
# Make sure MPI support is not loaded through env modules
# Note: As the Docker container's shell is non-interactive, environment
# modules are currently not initializing the shell anyway
if [ -n "$MODULESHOME" ]; then module unload mpi; fi
# Print khiops installation status
kh-status
# Run some simple training tasks
kh-samples core -i train_predictor -e
kh-samples core -i train_coclustering -e
kh-samples sklearn -i khiops_classifier -e
# Test that the line containing "MPI command" also contains
# an executable named "mpiexec"
kh-status | grep "MPI command" | grep -wq "mpiexec"
release:
if: github.ref_type == 'tag'
needs: [build, test]
runs-on: ubuntu-22.04
permissions:
contents: write
steps:
- name: Download package artifact
uses: actions/download-artifact@v4
with:
name: pip-package
- name: Upload Pip package to the release
uses: ncipollo/release-action@v1.14.0
with:
allowUpdates: true
artifacts: khiops*.tar.gz
body: '**For testing purposes only**'
draft: false
makeLatest: false
prerelease: true
updateOnlyUnreleased: true