Migrate to pyproject toml #885
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: Pip Package | |
| env: | |
| DEFAULT_SAMPLES_REVISION: 11.0.0 | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| samples-revision: | |
| default: 11.0.0 | |
| description: khiops-samples repo revision | |
| image-tag: | |
| default: 11.0.0-b.0.0 | |
| 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 .) | |
| # Upgrade Pip | |
| pip install --upgrade pip | |
| # Install required Python build dependency | |
| pip install build | |
| # Build the package | |
| python3 -m build --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 || '11.0.0-b.0.0' }} | |
| 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 --upgrade pip | |
| 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" does not contain "<empty>" | |
| # (as given by kh-status in the absence of MPI support) | |
| # The MPI command is not always named mpiexec, but can be orterun etc | |
| # (as given by khiops_env) | |
| kh-status | grep "MPI command" | grep -vwq "<empty>" | |
| 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.15.0 | |
| with: | |
| allowUpdates: true | |
| artifacts: khiops*.tar.gz | |
| body: '**For testing purposes only**' | |
| draft: false | |
| makeLatest: false | |
| prerelease: true | |
| updateOnlyUnreleased: true |