# Adapted from https://github.com/pandas-dev/pandas/blob/master/azure-pipelines.yml schedules: - cron: "30 2 * * *" displayName: Run nightly build branches: include: - main always: true jobs: - job: git_commit displayName: Get Git Commit pool: vmImage: ubuntu-20.04 steps: - bash: | set -ex if [[ $BUILD_REASON == "PullRequest" ]]; then # By default pull requests use refs/pull/PULL_ID/merge as the source branch # which has a "Merge ID into ID" as a commit message. The latest commit # message is the second to last commit COMMIT_ID=$(echo $BUILD_SOURCEVERSIONMESSAGE | awk '{print $2}') message=$(git log $COMMIT_ID -1 --pretty=%B) else message=$BUILD_SOURCEVERSIONMESSAGE fi echo "##vso[task.setvariable variable=message;isOutput=true]$message" name: commit displayName: Get source version message - job: linting dependsOn: [git_commit] condition: | and( succeeded(), not(contains(dependencies['git_commit']['outputs']['commit.message'], '[lint skip]')), not(contains(dependencies['git_commit']['outputs']['commit.message'], '[ci skip]')) ) displayName: Linting pool: vmImage: ubuntu-20.04 steps: - task: UsePythonVersion@0 inputs: versionSpec: '3.9' - bash: | # Include pytest compatibility with mypy pip install pytest flake8 mypy==0.782 black==22.1.0 displayName: Install linters - bash: | black --check --diff . displayName: Run black - bash: | ./build_tools/circle/linting.sh displayName: Run linting - bash: | mypy sklearn/ displayName: Run mypy - template: build_tools/azure/posix.yml parameters: name: Linux_Nightly vmImage: ubuntu-20.04 dependsOn: [git_commit, linting] condition: | and( succeeded(), not(contains(dependencies['git_commit']['outputs']['commit.message'], '[ci skip]')), or(eq(variables['Build.Reason'], 'Schedule'), contains(dependencies['git_commit']['outputs']['commit.message'], '[scipy-dev]' ) ) ) matrix: pylatest_pip_scipy_dev: DISTRIB: 'conda-pip-scipy-dev' PYTHON_VERSION: '*' CHECK_WARNINGS: 'true' CHECK_PYTEST_SOFT_DEPENDENCY: 'true' TEST_DOCSTRINGS: 'true' # Tests that require large downloads over the networks are skipped in CI. # Here we make sure, that they are still run on a regular basis. SKLEARN_SKIP_NETWORK_TESTS: '0' CREATE_ISSUE_ON_TRACKER: 'true' # Check compilation with intel C++ compiler (ICC) - template: build_tools/azure/posix.yml parameters: name: Linux_Nightly_ICC vmImage: ubuntu-20.04 dependsOn: [git_commit, linting] condition: | and( succeeded(), not(contains(dependencies['git_commit']['outputs']['commit.message'], '[ci skip]')), or(eq(variables['Build.Reason'], 'Schedule'), contains(dependencies['git_commit']['outputs']['commit.message'], '[icc-build]') ) ) matrix: pylatest_conda_forge_mkl: DISTRIB: 'conda' CONDA_CHANNEL: 'conda-forge' PYTHON_VERSION: '*' BLAS: 'mkl' COVERAGE: 'false' BUILD_WITH_ICC: 'true' - template: build_tools/azure/posix-docker.yml parameters: name: Linux_Nightly_PyPy vmImage: ubuntu-20.04 dependsOn: [linting, git_commit] condition: | and( succeeded(), not(contains(dependencies['git_commit']['outputs']['commit.message'], '[ci skip]')), or( eq(variables['Build.Reason'], 'Schedule'), contains(dependencies['git_commit']['outputs']['commit.message'], '[pypy]') ) ) matrix: pypy3: DISTRIB: 'conda-mamba-pypy3' DOCKER_CONTAINER: 'condaforge/mambaforge-pypy3:4.10.3-5' PILLOW_VERSION: 'none' PANDAS_VERSION: 'none' CREATE_ISSUE_ON_TRACKER: 'true' # Will run all the time regardless of linting outcome. - template: build_tools/azure/posix.yml parameters: name: Linux_Runs vmImage: ubuntu-20.04 dependsOn: [git_commit] condition: | and( succeeded(), not(contains(dependencies['git_commit']['outputs']['commit.message'], '[ci skip]')) ) matrix: pylatest_conda_forge_mkl: DISTRIB: 'conda' CONDA_CHANNEL: 'conda-forge' PYTHON_VERSION: '*' BLAS: 'mkl' COVERAGE: 'true' SHOW_SHORT_SUMMARY: 'true' # Check compilation with Ubuntu bionic 18.04 LTS and scipy from conda-forge - template: build_tools/azure/posix.yml parameters: name: Ubuntu_Bionic vmImage: ubuntu-18.04 dependsOn: [git_commit, linting] condition: | and( succeeded(), not(contains(dependencies['git_commit']['outputs']['commit.message'], '[ci skip]')), ne(variables['Build.Reason'], 'Schedule') ) matrix: py37_conda_forge_openblas_ubuntu_1804: DISTRIB: 'conda' CONDA_CHANNEL: 'conda-forge' PYTHON_VERSION: '3.7' BLAS: 'openblas' COVERAGE: 'false' BUILD_WITH_ICC: 'false' - template: build_tools/azure/posix.yml parameters: name: Linux vmImage: ubuntu-20.04 dependsOn: [linting, git_commit] condition: | and( succeeded(), not(contains(dependencies['git_commit']['outputs']['commit.message'], '[ci skip]')), ne(variables['Build.Reason'], 'Schedule') ) matrix: # Linux environment to test that scikit-learn can be built against # versions of numpy, scipy with ATLAS that comes with Ubuntu Focal 20.04 # i.e. numpy 1.17.4 and scipy 1.3.3 ubuntu_atlas: DISTRIB: 'ubuntu' JOBLIB_VERSION: 'min' PANDAS_VERSION: 'none' THREADPOOLCTL_VERSION: 'min' COVERAGE: 'false' # Linux + Python 3.7 build with OpenBLAS py37_conda_defaults_openblas: DISTRIB: 'conda' CONDA_CHANNEL: 'defaults' # Anaconda main channel PYTHON_VERSION: '3.7' BLAS: 'openblas' NUMPY_VERSION: 'min' SCIPY_VERSION: 'min' MATPLOTLIB_VERSION: 'min' THREADPOOLCTL_VERSION: '2.2.0' SKLEARN_ENABLE_DEBUG_CYTHON_DIRECTIVES: '1' # Linux environment to test the latest available dependencies. # It runs tests requiring lightgbm, pandas and PyAMG. pylatest_pip_openblas_pandas: DISTRIB: 'conda-pip-latest' PYTHON_VERSION: '3.9' PYTEST_VERSION: '6.2.5' CHECK_PYTEST_SOFT_DEPENDENCY: 'true' TEST_DOCSTRINGS: 'true' CHECK_WARNINGS: 'true' - template: build_tools/azure/posix-docker.yml parameters: name: Linux_Docker vmImage: ubuntu-20.04 dependsOn: [linting, git_commit] condition: | and( succeeded(), not(contains(dependencies['git_commit']['outputs']['commit.message'], '[ci skip]')), ne(variables['Build.Reason'], 'Schedule') ) matrix: debian_atlas_32bit: DISTRIB: 'debian-32' DOCKER_CONTAINER: 'i386/debian:10.9' JOBLIB_VERSION: 'min' # disable pytest xdist due to unknown bug with 32-bit container PYTEST_XDIST_VERSION: 'none' PYTEST_VERSION: 'min' THREADPOOLCTL_VERSION: '2.2.0' - template: build_tools/azure/posix.yml parameters: name: macOS vmImage: macOS-10.15 dependsOn: [linting, git_commit] condition: | and( succeeded(), not(contains(dependencies['git_commit']['outputs']['commit.message'], '[ci skip]')), ne(variables['Build.Reason'], 'Schedule') ) matrix: pylatest_conda_forge_mkl: DISTRIB: 'conda' BLAS: 'mkl' CONDA_CHANNEL: 'conda-forge' CPU_COUNT: '3' pylatest_conda_mkl_no_openmp: DISTRIB: 'conda' BLAS: 'mkl' SKLEARN_TEST_NO_OPENMP: 'true' SKLEARN_SKIP_OPENMP_TEST: 'true' CPU_COUNT: '3' - template: build_tools/azure/windows.yml parameters: name: Windows vmImage: windows-latest dependsOn: [linting, git_commit] condition: | and( succeeded(), not(contains(dependencies['git_commit']['outputs']['commit.message'], '[ci skip]')), ne(variables['Build.Reason'], 'Schedule') ) matrix: py37_conda_forge_mkl: DISTRIB: 'conda' CONDA_CHANNEL: 'conda-forge' PYTHON_VERSION: '3.7' CHECK_WARNINGS: 'true' PYTHON_ARCH: '64' # Unpin when pytest stalling issue is fixed PYTEST_VERSION: '6.2.5' COVERAGE: 'true' # Temporary fix for setuptools to use disutils from standard lib # https://github.com/numpy/numpy/issues/17216 SETUPTOOLS_USE_DISTUTILS: 'stdlib' py37_pip_openblas_32bit: PYTHON_VERSION: '3.7' PYTHON_ARCH: '32'