Refactor the github conda workflow to only test the released package #6
Workflow file for this run
This file contains hidden or 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: Test the released Conda Package | |
| env: | |
| # Temporary variables to test the workflow as long as it cannot be triggered manually | |
| DEFAULT_KHIOPS_CORE_VERSION: 11.0.0 | |
| DEFAULT_SAMPLES_VERSION: 11.0.0 | |
| DEFAULT_KHIOPS_PYTHON_VERSION: 11.0.0.3 | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| khiops-core-version: | |
| default: 11.0.0 | |
| description: khiops-core version for testing | |
| khiops-samples-version: | |
| default: 11.0.0 | |
| description: khiops-samples version | |
| khiops-python-version: | |
| default: 11.0.0.3 | |
| description: khiops-python version for testing | |
| # Temporary solution as long as the workflow cannot be triggered manually | |
| push: | |
| paths: [.github/workflows/test-conda-forge-package.yml] | |
| defaults: | |
| run: | |
| shell: bash -el {0} | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| # Test Conda package on brand new environments | |
| test: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ['3.10', '3.11', '3.12', '3.13', '3.14'] | |
| env: | |
| - {os: ubuntu-22.04, json-image: '{"image": "ubuntu:20.04"}'} | |
| - {os: ubuntu-22.04, json-image: '{"image": null}'} | |
| - {os: ubuntu-24.04, json-image: '{"image": null}'} | |
| - {os: ubuntu-22.04, json-image: '{"image": "rockylinux:8"}'} | |
| - {os: ubuntu-22.04, json-image: '{"image": "rockylinux:9"}'} | |
| - {os: windows-2022, json-image: '{"image": null}'} | |
| - {os: windows-2025, json-image: '{"image": null}'} | |
| - {os: macos-14, json-image: '{"image": null}'} | |
| - {os: macos-15, json-image: '{"image": null}'} | |
| - {os: macos-15-intel, json-image: '{"image": null}'} | |
| runs-on: ${{ matrix.env.os }} | |
| container: ${{ fromJSON(matrix.env.json-image) }} | |
| steps: | |
| - name: Install Miniforge | |
| uses: conda-incubator/setup-miniconda@v3 | |
| with: | |
| miniforge-version: 24.11.0-0 | |
| python-version: ${{ matrix.python-version }} | |
| conda-remove-defaults: true | |
| - name: Put the desired versions in the Environment | |
| run: | | |
| KHIOPS_CORE_VERSION="${{ inputs.khiops-core-version || env.DEFAULT_KHIOPS_CORE_VERSION }}" | |
| echo "KHIOPS_CORE_VERSION=$KHIOPS_CORE_VERSION" >> "$GITHUB_ENV" | |
| KHIOPS_SAMPLES_VERSION="${{ inputs.khiops-samples-version || env.DEFAULT_SAMPLES_VERSION }}" | |
| echo "KHIOPS_SAMPLES_VERSION=$KHIOPS_SAMPLES_VERSION" >> "$GITHUB_ENV" | |
| KHIOPS_PYTHON_VERSION="${{ inputs.khiops-python-version || env.DEFAULT_KHIOPS_PYTHON_VERSION }}" | |
| echo "KHIOPS_PYTHON_VERSION=$KHIOPS_PYTHON_VERSION" >> "$GITHUB_ENV" | |
| - name: Install the Khiops Conda package | |
| run: | | |
| # Add the Conda `rc` label for alpha or RC pre-releases | |
| if [[ $(echo ${KHIOPS_CORE_VERSION} | grep -E ".*(a|rc)\.[0-9]+") ]]; then | |
| RC_LABEL="conda-forge/label/rc::" | |
| else | |
| RC_LABEL="" | |
| fi | |
| conda install "${RC_LABEL}"khiops-core==$KHIOPS_CORE_VERSION | |
| conda install khiops==$KHIOPS_PYTHON_VERSION | |
| - name: Test Khiops Installation Status | |
| run: kh-status | |
| - name: Test Khiops Installation Status (Conda-Based Environments) | |
| run: | | |
| # Set `python` to the current Conda Python executable | |
| PYTHON="$(type -P python)" | |
| # Remove $CONDA_PREFIX/bin from PATH | |
| PATH=$(echo $PATH | sed "s#$CONDA_PREFIX/bin:##g") | |
| # Unset *CONDA* environment variables | |
| # As a corollary, CONDA_PREFIX is unset | |
| # Note: There is no way to remove these variables from GITHUB_ENV | |
| # (see https://github.com/actions/runner/issues/1126) | |
| for CONDA_VAR in $(env | grep CONDA) | |
| do | |
| unset $(echo $CONDA_VAR | cut -d '=' -f 1) | |
| done | |
| # Note: kh-status is not reachable as it is not in PATH | |
| $PYTHON -c \ | |
| "import sys; import khiops.core as kh; return_code = kh.get_runner().print_status(); sys.exit(return_code)" | |
| - name: Download Sample Datasets | |
| run: | | |
| kh-download-datasets \ | |
| --version $KHIOPS_SAMPLES_VERSION | |
| - name: Run Samples | |
| env: | |
| # Force > 2 CPU cores to launch mpiexec | |
| KHIOPS_PROC_NUMBER: 4 | |
| run: | | |
| kh-samples core -i deploy_model -e | |
| kh-samples core -i deploy_coclustering -e | |
| kh-samples core -i train_predictor_error_handling -e | |
| kh-samples sklearn -i khiops_classifier -e | |
| kh-samples sklearn -i khiops_coclustering -e | |
| - name: Run Samples (Conda-Based Environments) | |
| env: | |
| # Force > 2 CPU cores to launch mpiexec | |
| KHIOPS_PROC_NUMBER: 4 | |
| run: | | |
| # Set `python` to the current Conda Python executable | |
| PYTHON="$(type -P python)" | |
| # Remove $CONDA_PREFIX/bin from PATH | |
| PATH=$(echo $PATH | sed "s#$CONDA_PREFIX/bin:##g") | |
| # Unset *CONDA* environment variables | |
| # As a corollary, CONDA_PREFIX is unset | |
| # Note: There is no way to remove these variables from GITHUB_ENV | |
| # (see https://github.com/actions/runner/issues/1126) | |
| for CONDA_VAR in $(env | grep CONDA) | |
| do | |
| unset $(echo $CONDA_VAR | cut -d '=' -f 1) | |
| done | |
| # Run samples | |
| # Note: kh-samples is not reachable as it is not in PATH | |
| $PYTHON -m khiops.samples.samples -i deploy_model -e | |
| $PYTHON -m khiops.samples.samples -i deploy_coclustering -e | |
| $PYTHON -m khiops.samples.samples -i train_predictor_error_handling -e | |
| $PYTHON -m khiops.samples.samples_sklearn -i khiops_classifier -e | |
| $PYTHON -m khiops.samples.samples_sklearn -i khiops_coclustering -e | |
| # Checkout the sources to obtain the tests | |
| # Note: The `sparse-checkout` option of this action is bugged so we checkout all the sources | |
| # See https://github.com/actions/checkout/issues/1628 | |
| - name: Checkout Sources | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| # This is needed so python does not retrieve the khiops module from PWD | |
| - name: Remove the khiops Module from the Sources | |
| run: rm -rf khiops | |
| - name: Install the Test Requirements | |
| run: conda install -y --file test-requirements.txt | |
| - name: Run the Runner Initialization Integration Test | |
| run: | | |
| python -m unittest -v \ | |
| tests.test_khiops_integrations.KhiopsRunnerEnvironmentTests.test_runner_environment_initialization | |
| - name: Run the Runner Initialization Integration Test (Conda-Based Environments) | |
| run: |- | |
| # Set `python` to the current Conda Python executable | |
| PYTHON="$(type -P python)" | |
| # Remove $CONDA_PREFIX/bin from PATH | |
| PATH=$(echo $PATH | sed "s#$CONDA_PREFIX/bin:##g") | |
| # Unset *CONDA* environment variables | |
| # As a corolary, CONDA_PREFIX is unset | |
| # Note: There is no way to remove these variables from GITHUB_ENV | |
| # (see https://github.com/actions/runner/issues/1126) | |
| for CONDA_VAR in $(env | grep CONDA) | |
| do | |
| unset $(echo $CONDA_VAR | cut -d '=' -f 1) | |
| done | |
| # Execute the runner initialization integration test | |
| $PYTHON -m unittest -v \ | |
| tests.test_khiops_integrations.KhiopsRunnerEnvironmentTests.test_runner_environment_initialization |