@@ -2,59 +2,13 @@ name: build
22
33on : push
44jobs :
5- build-windows-latest :
6- runs-on : windows-latest
7- strategy :
8- matrix :
9- compiler : ["Visual Studio 17 2022"]
10- fail-fast : false
11- steps :
12- - name : Checkout repository
13- uses : actions/checkout@v4
14- - name : Build Reindexer
15- run : |
16- mkdir build && cd build
17- cmake -G "${{matrix.compiler}}" .. -Ax64
18- cmake --build . --config Release
19- cmake --build . --config Release --target face
20- cmake --build . --config Release --target swagger
21- cpack
22- - name : Upload Artifacts
23- uses : actions/upload-artifact@v4
24- with :
25- name : windows-latest
26- path : build/*.exe
27- if-no-files-found : error
28-
29- build-windows-2019 :
30- runs-on : windows-2019
31- strategy :
32- matrix :
33- compiler : ["Visual Studio 16 2019", "MinGW Makefiles"]
34- fail-fast : false
35- steps :
36- - name : Checkout repository
37- uses : actions/checkout@v4
38- - name : Build Reindexer
39- run : |
40- mkdir build && cd build
41- cmake -G "${{matrix.compiler}}" ..
42- cmake --build . --config Release
43- cmake --build . --config Release --target face
44- cmake --build . --config Release --target swagger
45- cpack
46-
475 build :
486 strategy :
497 matrix :
50- os : [ubuntu-22.04, ubuntu-24.04, macos-13 ]
8+ os : [ubuntu-22.04, ubuntu-24.04]
519 include :
5210 - os : ubuntu-latest
5311 sanitizer : ASAN
54- - os : ubuntu-latest
55- sanitizer : TSAN
56- cc : gcc-12
57- cxx : g++-12
5812 fail-fast : false
5913 runs-on : ${{matrix.os}}
6014 env :
6822 - name : Prepare Environment
6923 run : |
7024 ./.github/workflows/install_gtest.sh
71- ./.github/workflows/install_gtest_parallel.sh
7225 if [[ $OS == ubuntu* ]]; then
7326 sudo ./dependencies.sh
7427 ./.github/workflows/install_grpc.sh
8235 mkdir build && cd build
8336 if [[ $OS == ubuntu-latest ]]; then
8437 if [[ $SANITIZER == 'ASAN' ]]; then
85- cmake -DENABLE_GRPC=ON -DWITH_${{matrix.sanitizer}}=On -DGTEST_SKIP_SHARDING =On ..
38+ cmake -DENABLE_GRPC=ON -DWITH_${{matrix.sanitizer}}=On -DGTEST_SKIP_ASAN_MEMORY_HEAVY =On ..
8639 else
8740 cmake -DENABLE_GRPC=ON -DWITH_${{matrix.sanitizer}}=On ..
8841 fi
@@ -114,23 +67,13 @@ jobs:
11467 test :
11568 strategy :
11669 matrix :
117- os : [ubuntu-22.04, ubuntu-24.04, macos-13 ]
118- test : ['C++', 'GO' ]
70+ os : [ubuntu-22.04, ubuntu-24.04]
71+ test : ['C++']
11972 include :
12073 - os : ubuntu-latest
12174 sanitizer : ASAN
12275 test : ' C++'
123- - os : ubuntu-latest
124- sanitizer : ASAN
125- test : ' GO'
126- # - os: ubuntu-latest
127- # sanitizer: TSAN
128- # cc: gcc-12
129- # cxx: g++-12
130- # test: 'C++'
131- - os : ubuntu-latest
132- sanitizer : TSAN
133- test : ' GO'
76+
13477 fail-fast : false
13578 runs-on : ${{matrix.os}}
13679 needs : build
@@ -142,24 +85,24 @@ jobs:
14285 SANITIZER : ${{matrix.sanitizer}}
14386 steps :
14487 - name : Checkout repository
145- if : ${{ matrix.os != 'macos-13 ' || matrix.test == 'GO' }}
88+ if : ${{ matrix.os != 'macos-15 ' || matrix.test == 'GO' }}
14689 uses : actions/checkout@v4
14790 - name : Install Go
14891 uses : actions/setup-go@v5
149- if : ${{ matrix.os == 'macos-13 ' && matrix.test == 'GO' }}
92+ if : ${{ matrix.os == 'macos-15 ' && matrix.test == 'GO' }}
15093 with :
151- go-version : ' 1.22 .x'
94+ go-version : ' 1.24 .x'
15295 check-latest : true
15396 - name : Download ${{matrix.os}}${{matrix.sanitizer}} Artifacts
154- if : ${{ matrix.os != 'macos-13 ' || matrix.test == 'GO' }}
97+ if : ${{ matrix.os != 'macos-15 ' || matrix.test == 'GO' }}
15598 uses : actions/download-artifact@v4
15699 with :
157100 name : ${{matrix.os}}${{matrix.sanitizer}}
158101 - name : ' Untar Artifacts'
159- if : ${{ matrix.os != 'macos-13 ' || matrix.test == 'GO' }}
102+ if : ${{ matrix.os != 'macos-15 ' || matrix.test == 'GO' }}
160103 run : tar -xvf artifacts.tar
161104 - name : Prepare Environment
162- if : ${{ matrix.os != 'macos-13 ' || matrix.test == 'GO' }}
105+ if : ${{ matrix.os != 'macos-15 ' || matrix.test == 'GO' }}
163106 env :
164107 OS : ${{matrix.os}}
165108 run : |
@@ -170,11 +113,9 @@ jobs:
170113 fi
171114 if [[ $TEST == 'GO' ]]; then
172115 go mod download
173- elif [[ $OS == ubuntu* ]]; then
174- ./.github/workflows/install_gtest_parallel.sh
175116 fi
176117 - name : Tests
177- if : ${{ matrix.os != 'macos-13 ' || matrix.test == 'GO' }}
118+ if : ${{ matrix.os != 'macos-15 ' || matrix.test == 'GO' }}
178119 run : |
179120 if [[ $TEST == 'GO' ]]; then
180121 if [[ $SANITIZER == 'ASAN' ]]; then
@@ -183,68 +124,15 @@ jobs:
183124 if [[ -z "$SANITIZER" ]]; then
184125 go test -timeout 15m ./test/... -bench . -benchmem -benchtime 100ms -seedcount 50000
185126 else
186- go test -timeout 35m ./test/... -bench . -benchmem -benchtime 100ms -seedcount 50000
127+ export TSAN_OPTIONS="halt_on_error=1 suppressions=$PWD/test/tsan/builtin.tsan.suppressions"
128+ mkdir gotests
129+ # Using preocompiled tests to get readable Thread sanitizer backtraces from builtin C++ library
130+ go test ./test/... -c -o gotests -tags tiny_vectors
131+ ./gotests/test.test -test.timeout 35m -test.bench . -test.benchmem -test.benchtime 100ms -seedcount 50000
132+ ./gotests/ft.test -test.bench . -test.benchmem -test.benchtime 100ms -seedcount 50000
187133 fi
188134 else
189135 cd build
190136 ctest --verbose
191137 fi
192138
193- test-pyreindexer :
194- strategy :
195- matrix :
196- os : [ubuntu-22.04, ubuntu-24.04]
197- fail-fast : false
198- runs-on : ${{matrix.os}}
199- needs : build
200- if : always()
201- env :
202- OS : ${{matrix.os}}
203- steps :
204- - name : Download ${{matrix.os}} Artifacts
205- uses : actions/download-artifact@v4
206- with :
207- name : ${{matrix.os}}
208- - name : ' Untar Artifacts'
209- run : tar -xvf artifacts.tar
210- - name : Prepare Environment
211- run : |
212- if [[ $OS == ubuntu* ]]; then
213- sudo ./dependencies.sh
214- python3 -m pip install setuptools build
215- else
216- ./dependencies.sh
217- fi
218- - name : Install Reindexer
219- run : |
220- cd build
221- if [[ $OS == ubuntu* ]]; then
222- sudo dpkg -i reindexer-4-dev*.deb
223- sudo apt-get install -f
224- sudo dpkg -i reindexer-4-server*.deb
225- sudo apt-get install -f
226- else
227- for f in reindexer-*.tar.gz; do tar -xvzf "$f"; done
228- cp -R ./usr/local/include/reindexer /usr/local/include/reindexer
229- cp -R ./usr/local/lib/reindexer /usr/local/lib/reindexer
230- cp ./usr/local/lib/libreindexer.a /usr/local/lib/libreindexer.a
231- cp ./usr/local/lib/libreindexer_server_library.a /usr/local/lib/libreindexer_server_library.a
232- cp ./usr/local/lib/libreindexer_server_resources.a /usr/local/lib/libreindexer_server_resources.a
233- cp ./usr/local/lib/pkgconfig/libreindexer.pc /usr/local/lib/pkgconfig/libreindexer.pc
234- cp ./usr/local/lib/pkgconfig/libreindexer_server.pc /usr/local/lib/pkgconfig/libreindexer_server.pc
235- cp ./usr/local/bin/reindexer_server /usr/local/bin/reindexer_server
236- cp ./usr/local/etc/reindexer.conf.pkg /usr/local/etc/reindexer.conf.pkg
237- fi
238- - name : Clone PyReindexer
239- uses : actions/checkout@v4
240- with :
241- repository : restream/reindexer-py
242- - name : Install PyReindexer
243- run : |
244- python -m build
245- python -m pip install .
246- - name : Test PyReindexer
247- run : |
248- cd pyreindexer
249- ../.github/workflows/test.sh
250-
0 commit comments