forked from scikit-learn/scikit-learn
-
Notifications
You must be signed in to change notification settings - Fork 6
/
posix-docker.yml
124 lines (120 loc) · 3.93 KB
/
posix-docker.yml
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
parameters:
name: ''
vmImage: ''
matrix: []
dependsOn: []
condition: ne(variables['Build.Reason'], 'Schedule')
jobs:
- job: ${{ parameters.name }}
dependsOn: ${{ parameters.dependsOn }}
condition: ${{ parameters.condition }}
timeoutInMinutes: 120
pool:
vmImage: ${{ parameters.vmImage }}
variables:
VIRTUALENV: 'testvenv'
TEST_DIR: '$(Agent.WorkFolder)/tmp_folder'
JUNITXML: 'test-data.xml'
OMP_NUM_THREADS: '2'
OPENBLAS_NUM_THREADS: '2'
CPU_COUNT: '2'
SKLEARN_SKIP_NETWORK_TESTS: '1'
PYTEST_XDIST_VERSION: 'latest'
COVERAGE: 'false'
# Set in azure-pipelines.yml
DISTRIB: ''
DOCKER_CONTAINER: ''
SHOW_SHORT_SUMMARY: 'false'
CREATE_ISSUE_ON_TRACKER: 'true'
CCACHE_DIR: $(Pipeline.Workspace)/ccache
CCACHE_COMPRESS: '1'
strategy:
matrix:
${{ insert }}: ${{ parameters.matrix }}
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.9'
addToPath: false
name: pyTools
displayName: Select python version to run CI python scripts
- bash: $(pyTools.pythonLocation)/bin/python build_tools/azure/get_selected_tests.py
displayName: Check selected tests for all random seeds
condition: eq(variables['Build.Reason'], 'PullRequest')
- task: Cache@2
inputs:
key: '"ccache-v1" | "$(Agent.JobName)" | "$(Build.BuildNumber)"'
restoreKeys: |
"ccache-v1" | "$(Agent.JobName)"
path: $(CCACHE_DIR)
displayName: ccache
continueOnError: true
- script: >
mkdir -p $CCACHE_DIR
# Container is detached and sleeping, allowing steps to run commands
# in the container. The TEST_DIR is mapped allowing the host to access
# the JUNITXML file
- script: >
docker container run --rm
--volume $TEST_DIR:/temp_dir
--volume $PWD:/io
--volume $CCACHE_DIR:/ccache
-w /io
--detach
--name skcontainer
-e TEST_DIR=/temp_dir
-e CCACHE_DIR=/ccache
-e DISTRIB
-e LOCK_FILE
-e JUNITXML
-e VIRTUALENV
-e PYTEST_XDIST_VERSION
-e OMP_NUM_THREADS
-e OPENBLAS_NUM_THREADS
-e SKLEARN_SKIP_NETWORK_TESTS
-e SELECTED_TESTS
-e CPU_COUNT
-e CCACHE_COMPRESS
-e BUILD_SOURCEVERSIONMESSAGE
-e BUILD_REASON
$DOCKER_CONTAINER
sleep 1000000
displayName: 'Start container'
- script: >
docker exec skcontainer ./build_tools/azure/install.sh
displayName: 'Install'
- script: >
docker exec skcontainer ./build_tools/azure/test_script.sh
displayName: 'Test Library'
- task: PublishTestResults@2
inputs:
testResultsFiles: '$(TEST_DIR)/$(JUNITXML)'
testRunTitle: ${{ format('{0}-$(Agent.JobName)', parameters.name) }}
displayName: 'Publish Test Results'
condition: succeededOrFailed()
- script: >
docker container stop skcontainer
displayName: 'Stop container'
condition: always()
- bash: |
set -ex
if [[ $(BOT_GITHUB_TOKEN) == "" ]]; then
echo "GitHub Token is not set. Issue tracker will not be updated."
exit
fi
LINK_TO_RUN="https://dev.azure.com/$BUILD_REPOSITORY_NAME/_build/results?buildId=$BUILD_BUILDID&view=logs&j=$SYSTEM_JOBID"
CI_NAME="$SYSTEM_JOBIDENTIFIER"
ISSUE_REPO="$BUILD_REPOSITORY_NAME"
$(pyTools.pythonLocation)/bin/pip install defusedxml PyGithub
$(pyTools.pythonLocation)/bin/python maint_tools/update_tracking_issue.py \
$(BOT_GITHUB_TOKEN) \
$CI_NAME \
$ISSUE_REPO \
$LINK_TO_RUN \
--junit-file $JUNIT_FILE \
--auto-close false
displayName: 'Update issue tracker'
env:
JUNIT_FILE: $(TEST_DIR)/$(JUNITXML)
condition: and(succeededOrFailed(), eq(variables['CREATE_ISSUE_ON_TRACKER'], 'true'),
eq(variables['Build.Reason'], 'Schedule'))