13
13
pool :
14
14
vmImage : ubuntu-20.04
15
15
steps :
16
- - bash : |
17
- set -ex
18
- if [[ $BUILD_REASON == "PullRequest" ]]; then
19
- # By default pull requests use refs/pull/PULL_ID/merge as the source branch
20
- # which has a "Merge ID into ID" as a commit message. The latest commit
21
- # message is the second to last commit
22
- COMMIT_ID=$(echo $BUILD_SOURCEVERSIONMESSAGE | awk '{print $2}')
23
- message=$(git log $COMMIT_ID -1 --pretty=%B)
24
- else
25
- message=$BUILD_SOURCEVERSIONMESSAGE
26
- fi
27
- echo "##vso[task.setvariable variable=message;isOutput=true]$message"
16
+ - bash : python build_tools/azure/get_commit_message.py
28
17
name : commit
29
18
displayName : Get source version message
30
19
81
70
# Tests that require large downloads over the networks are skipped in CI.
82
71
# Here we make sure, that they are still run on a regular basis.
83
72
SKLEARN_SKIP_NETWORK_TESTS : ' 0'
84
- CREATE_ISSUE_ON_TRACKER : ' true'
73
+
74
+ - template : build_tools/azure/posix.yml
75
+ # Experimental CPython branch without the Global Interpreter Lock:
76
+ # https://github.com/colesbury/nogil/
77
+ #
78
+ # The nogil build relies on a dedicated PyPI-style index to install patched
79
+ # versions of NumPy, SciPy and Cython maintained by @colesbury and that
80
+ # include specifc fixes to make them run correctly without relying on the GIL.
81
+ #
82
+ # The goal of this CI entry is to make sure that we do not introduce any
83
+ # dependency on the GIL in scikit-learn itself. An auxiliary goal is to early
84
+ # detect any regression in the patched build dependencies to report them
85
+ # upstream. The long-term goal is to be able to stop having to maintain
86
+ # multiprocessing based workaround / hacks in joblib / loky to make multi-CPU
87
+ # computing in scikit-learn efficient by default using regular threads.
88
+ #
89
+ # If this experimental entry becomes too unstable, feel free to disable it.
90
+ parameters :
91
+ name : Linux_nogil
92
+ vmImage : ubuntu-20.04
93
+ dependsOn : [git_commit, linting]
94
+ condition : |
95
+ and(
96
+ succeeded(),
97
+ not(contains(dependencies['git_commit']['outputs']['commit.message'], '[ci skip]')),
98
+ or(eq(variables['Build.Reason'], 'Schedule'),
99
+ contains(dependencies['git_commit']['outputs']['commit.message'], '[nogil]'
100
+ )
101
+ )
102
+ )
103
+ matrix :
104
+ pylatest_pip_nogil :
105
+ DISTRIB : ' pip-nogil'
106
+ COVERAGE : ' false'
85
107
86
108
# Check compilation with intel C++ compiler (ICC)
87
109
- template : build_tools/azure/posix.yml
@@ -126,7 +148,6 @@ jobs:
126
148
DOCKER_CONTAINER : ' condaforge/mambaforge-pypy3:4.10.3-5'
127
149
PILLOW_VERSION : ' none'
128
150
PANDAS_VERSION : ' none'
129
- CREATE_ISSUE_ON_TRACKER : ' true'
130
151
131
152
# Will run all the time regardless of linting outcome.
132
153
- template : build_tools/azure/posix.yml
@@ -158,8 +179,7 @@ jobs:
158
179
condition : |
159
180
and(
160
181
succeeded(),
161
- not(contains(dependencies['git_commit']['outputs']['commit.message'], '[ci skip]')),
162
- ne(variables['Build.Reason'], 'Schedule')
182
+ not(contains(dependencies['git_commit']['outputs']['commit.message'], '[ci skip]'))
163
183
)
164
184
matrix :
165
185
py38_conda_forge_openblas_ubuntu_1804 :
@@ -179,8 +199,7 @@ jobs:
179
199
condition : |
180
200
and(
181
201
succeeded(),
182
- not(contains(dependencies['git_commit']['outputs']['commit.message'], '[ci skip]')),
183
- ne(variables['Build.Reason'], 'Schedule')
202
+ not(contains(dependencies['git_commit']['outputs']['commit.message'], '[ci skip]'))
184
203
)
185
204
matrix :
186
205
# Linux environment to test that scikit-learn can be built against
@@ -225,8 +244,7 @@ jobs:
225
244
condition : |
226
245
and(
227
246
succeeded(),
228
- not(contains(dependencies['git_commit']['outputs']['commit.message'], '[ci skip]')),
229
- ne(variables['Build.Reason'], 'Schedule')
247
+ not(contains(dependencies['git_commit']['outputs']['commit.message'], '[ci skip]'))
230
248
)
231
249
matrix :
232
250
debian_atlas_32bit :
@@ -247,8 +265,7 @@ jobs:
247
265
condition : |
248
266
and(
249
267
succeeded(),
250
- not(contains(dependencies['git_commit']['outputs']['commit.message'], '[ci skip]')),
251
- ne(variables['Build.Reason'], 'Schedule')
268
+ not(contains(dependencies['git_commit']['outputs']['commit.message'], '[ci skip]'))
252
269
)
253
270
matrix :
254
271
pylatest_conda_forge_mkl :
@@ -271,8 +288,7 @@ jobs:
271
288
condition : |
272
289
and(
273
290
succeeded(),
274
- not(contains(dependencies['git_commit']['outputs']['commit.message'], '[ci skip]')),
275
- ne(variables['Build.Reason'], 'Schedule')
291
+ not(contains(dependencies['git_commit']['outputs']['commit.message'], '[ci skip]'))
276
292
)
277
293
matrix :
278
294
py38_conda_forge_mkl :
@@ -284,9 +300,6 @@ jobs:
284
300
# Unpin when pytest stalling issue is fixed
285
301
PYTEST_VERSION : ' 6.2.5'
286
302
COVERAGE : ' true'
287
- # Temporary fix for setuptools to use distutils from standard lib
288
- # https://github.com/numpy/numpy/issues/17216
289
- SETUPTOOLS_USE_DISTUTILS : ' stdlib'
290
303
SKLEARN_TESTS_GLOBAL_RANDOM_SEED : ' 7' # non-default seed
291
304
py38_pip_openblas_32bit :
292
305
PYTHON_VERSION : ' 3.8'
0 commit comments