-
Notifications
You must be signed in to change notification settings - Fork 2
176 lines (166 loc) · 7.3 KB
/
test-conda-forge-package.yml
File metadata and controls
176 lines (166 loc) · 7.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
---
name: Test the released Conda Package
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
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:
needs: build
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 khiops-core Version in the Environment
run: |
KHIOPS_CORE_VERSION="${{ inputs.khiops-core-version }}"
echo "KHIOPS_CORE_VERSION=$KHIOPS_CORE_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==${{ inputs.khiops-python-version }}
- name: Install JQ test dependency (Linux / MacOS)
if: runner.os != 'Windows'
run: conda install jq
- name: Test Conda / Python Package Version Coherence
run: |
PACKAGE_VERSION=$(python -c "import khiops; print(khiops.__version__)")
CONDA_VERSION=$(conda list ^khiops$ --json | jq ".[].version")
# Fail if CONDA_VERSION is not identical to $PACKAGE_VERSION
echo $CONDA_VERSION | grep -wq $PACKAGE_VERSION
if [[ $? -ne 0 ]]
then
echo "::error::Conda package version $CONDA_VERSION does not match Python package version $PYTHON_VERSION"
false
fi
- 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 ${{ inputs.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