Reactivate the integration tests for remote file access (GCS, S3) #699
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
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 |