[WIP] Next-generation CI/CD pipelines with RunsOn #10960
Workflow file for this run
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: XGBoost CI (Python tests) | |
on: [push, pull_request] | |
permissions: | |
contents: read # to fetch code (actions/checkout) | |
defaults: | |
run: | |
shell: bash -l {0} | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
python-sdist-test-on-Linux: | |
runs-on: ${{ matrix.os }} | |
name: Test installing XGBoost Python source package on ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
steps: | |
- uses: actions/[email protected] | |
with: | |
submodules: 'true' | |
- uses: conda-incubator/[email protected] | |
with: | |
miniforge-variant: Miniforge3 | |
miniforge-version: latest | |
activate-environment: sdist_test | |
environment-file: ops/conda_env/sdist_test.yml | |
use-mamba: true | |
- name: Display Conda env | |
run: | | |
conda info | |
conda list | |
- name: Build and install XGBoost | |
run: | | |
cd python-package | |
python --version | |
python -m build --sdist | |
pip install -v ./dist/xgboost-*.tar.gz --config-settings use_openmp=False | |
cd .. | |
python -c 'import xgboost' | |
python-sdist-test: | |
# Use system toolchain instead of conda toolchain for macos and windows. | |
# MacOS has linker error if clang++ from conda-forge is used | |
runs-on: ${{ matrix.os }} | |
name: Test installing XGBoost Python source package on ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-13, windows-latest] | |
python-version: ["3.10"] | |
steps: | |
- uses: actions/[email protected] | |
with: | |
submodules: 'true' | |
- name: Install osx system dependencies | |
if: matrix.os == 'macos-13' | |
run: | | |
brew install ninja libomp | |
- uses: conda-incubator/[email protected] | |
with: | |
auto-update-conda: true | |
python-version: ${{ matrix.python-version }} | |
activate-environment: test | |
- name: Install build | |
run: | | |
conda install -c conda-forge python-build | |
- name: Display Conda env | |
run: | | |
conda info | |
conda list | |
- name: Build and install XGBoost | |
run: | | |
cd python-package | |
python --version | |
python -m build --sdist | |
pip install -v ./dist/xgboost-*.tar.gz | |
cd .. | |
python -c 'import xgboost' | |
python-tests-on-macos: | |
name: Test XGBoost Python package on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 60 | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-13] | |
steps: | |
- uses: actions/[email protected] | |
with: | |
submodules: 'true' | |
- uses: conda-incubator/[email protected] | |
with: | |
miniforge-variant: Miniforge3 | |
miniforge-version: latest | |
activate-environment: macos_cpu_test | |
environment-file: ops/conda_env/macos_cpu_test.yml | |
use-mamba: true | |
- name: Display Conda env | |
run: | | |
conda info | |
conda list | |
- name: Build XGBoost on macos | |
run: | | |
brew install ninja | |
mkdir build | |
cd build | |
# Set prefix, to use OpenMP library from Conda env | |
# See https://github.com/dmlc/xgboost/issues/7039#issuecomment-1025038228 | |
# to learn why we don't use libomp from Homebrew. | |
cmake .. -GNinja -DCMAKE_PREFIX_PATH=$CONDA_PREFIX -DBUILD_DEPRECATED_CLI=ON | |
ninja | |
- name: Install Python package | |
run: | | |
cd python-package | |
python --version | |
pip install -v . | |
- name: Test Python package | |
run: | | |
pytest -s -v -rxXs --durations=0 ./tests/python | |
- name: Test Dask Interface | |
run: | | |
pytest -s -v -rxXs --durations=0 ./tests/test_distributed/test_with_dask | |
python-system-installation-on-ubuntu: | |
name: Test XGBoost Python package System Installation on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
steps: | |
- uses: actions/[email protected] | |
with: | |
submodules: 'true' | |
- name: Set up Python 3.10 | |
uses: actions/[email protected] | |
with: | |
python-version: "3.10" | |
- name: Install ninja | |
run: | | |
sudo apt-get update && sudo apt-get install -y ninja-build | |
- name: Build XGBoost on Ubuntu | |
run: | | |
mkdir build | |
cd build | |
cmake .. -GNinja | |
ninja | |
- name: Copy lib to system lib | |
run: | | |
cp lib/* "$(python -c 'import sys; print(sys.base_prefix)')/lib" | |
- name: Install XGBoost in Virtual Environment | |
run: | | |
cd python-package | |
pip install virtualenv | |
virtualenv venv | |
source venv/bin/activate && \ | |
pip install -v . --config-settings use_system_libxgboost=True && \ | |
python -c 'import xgboost' |