forked from onnx/onnx
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Linux-CI.yml
136 lines (119 loc) · 4.17 KB
/
Linux-CI.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
125
126
127
128
129
130
131
132
133
134
135
136
trigger:
- main
jobs:
- job: 'Test'
pool:
vmImage: 'Ubuntu-20.04'
strategy:
matrix:
py39-ml-debug:
python.version: '3.9'
onnx_ml: 1
build_type: 'Debug'
documentation: 0
py38:
python.version: '3.8'
onnx_ml: 0
build_type: 'Release'
documentation: 0
py38-ml:
python.version: '3.8'
onnx_ml: 1
build_type: 'Release'
documentation: 1
py37:
python.version: '3.7'
onnx_ml: 0
build_type: 'Release'
documentation: 0
py37-ml:
python.version: '3.7'
onnx_ml: 1
build_type: 'Release'
documentation: 0
maxParallel: 6
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '$(python.version)'
addToPath: true
- script: |
python -m pip -q install virtualenv
python -m virtualenv venv
source venv/bin/activate
sudo apt-get install libprotobuf-dev protobuf-compiler
python -m pip install -q --upgrade pip
python -m pip install -q -r requirements-release.txt
# still test protobuf==3.20.2 at least in a CI
python -m pip install protobuf==3.20.2
sudo apt-get install -qq -o=Dpkg::Use-Pty=0 -y --no-install-recommends dos2unix
git submodule update --init --recursive
export ONNX_BUILD_TESTS=1
if [ '$(build_type)' == 'Debug' ]; then
export DEBUG=1
fi
if [ '$(onnx_ml)' == '1' ]; then
export ONNX_ML=1
fi
export CMAKE_ARGS="-DONNX_WERROR=ON -DONNX_USE_PROTOBUF_SHARED_LIBS=ON"
# enable more sanitizer
export CMAKE_ARGS="${CMAKE_ARGS} -DCMAKE_CXX_FLAGS='-fsanitize=undefined -fno-sanitize-recover=all '"
python setup.py install
displayName: 'Install ONNX and dependencies'
- script: |
source venv/bin/activate
python -m pip install -q -r requirements-dev.txt
# check auto-gen files up-to-date
python onnx/defs/gen_doc.py
python onnx/gen_proto.py -l
python onnx/gen_proto.py -l --ml
python onnx/backend/test/stat_coverage.py
git status
git diff --exit-code -- . ':(exclude)onnx/onnx-data.proto' ':(exclude)onnx/onnx-data.proto3'
if [ $? -ne 0 ]; then
echo "git diff returned failures"
exit 1
fi
# Do not hardcode onnx's namespace in the c++ source code, so that
# other libraries who statically link with onnx can hide onnx symbols
# in a private namespace.
! grep -R --include='*.cc' --include='*.h' 'namespace onnx' .
! grep -R --include='*.cc' --include='*.h' 'onnx::' .
pytest -sv
if [ $? -ne 0 ]; then
echo "pytest failed"
exit 1
fi
# onnx c++ API tests
export LD_LIBRARY_PATH="./.setuptools-cmake-build/:$LD_LIBRARY_PATH"
./.setuptools-cmake-build/onnx_gtests
if [ $? -ne 0 ]; then
echo "onnx_gtests failed"
exit 1
fi
displayName: 'Run ONNX tests'
- script: |
source venv/bin/activate
python onnx/backend/test/cmd_tools.py generate-data --clean
git status
# Skip *output_*.pb because NumPy functions might behave differently on different platforms
# Skip test_log's input.pb because it uses np.random, which might behave differently on different platforms
git diff --exit-code -- . ':!onnx/onnx-data.proto' ':!onnx/onnx-data.proto3' ':!*output_*.pb' ':!*input_*.pb'
if [ $? -ne 0 ]; then
echo "git diff for test generation returned failures. Please check updated node test files"
exit 1
fi
git diff --exit-code --diff-filter=ADR -- . ':!onnx/onnx-data.proto' ':!onnx/onnx-data.proto3'
if [ $? -ne 0 ]; then
echo "Test generation returned failures. Please check the number of node test files (input_*.pb or output_*.pb)"
exit 1
fi
displayName: Test backend test data
- script: |
if [ '$(documentation)' == '1' ]; then
source venv/bin/activate
pip install -r docs/docsgen/source/requirements.txt
cd docs/docsgen && make text -j auto
fi
displayName: Test documentation
continueOnError: true # the documentation generates errors due to operators documentation