Skip to content

[fix] Fix changelog #2464

[fix] Fix changelog

[fix] Fix changelog #2464

Workflow file for this run

name: build
on: push
jobs:
build-windows-latest:
runs-on: windows-latest
strategy:
matrix:
compiler: ["Visual Studio 17 2022", "MinGW Makefiles"]
fail-fast: false
env:
EXTRA_FLAGS: "${{ matrix.compiler == 'Visual Studio 17 2022' && '-Ax64' || '' }}"
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Build Reindexer
run: |
mkdir build && cd build
cmake -G "${{matrix.compiler}}" -DBUILD_ANN_INDEXES=builtin .. $EXTRA_FLAGS
cmake --build . --config Release
cmake --build . --config Release --target face
cmake --build . --config Release --target swagger
cpack
build-windows-2019:
runs-on: windows-2019
strategy:
matrix:
compiler: ["Visual Studio 16 2019"]
fail-fast: false
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Build Reindexer
run: |
mkdir build && cd build
cmake -G "${{matrix.compiler}}" -DBUILD_ANN_INDEXES=none ..
cmake --build . --config Release
cmake --build . --config Release --target face
cmake --build . --config Release --target swagger
cpack
build:
strategy:
matrix:
os: [ubuntu-22.04, ubuntu-24.04, macos-13]
include:
- os: ubuntu-latest
sanitizer: ASAN
- os: ubuntu-latest
sanitizer: TSAN
cc: gcc-12
cxx: g++-12
fail-fast: false
runs-on: ${{matrix.os}}
env:
OS: ${{matrix.os}}
CC: ${{matrix.cc}}
CXX: ${{matrix.cxx}}
SANITIZER: ${{matrix.sanitizer}}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Prepare Environment
run: |
./.github/workflows/install_gtest.sh
./.github/workflows/install_gtest_parallel.sh
if [[ $OS == ubuntu* ]]; then
sudo ./dependencies.sh
./.github/workflows/install_grpc.sh
./.github/workflows/install_gbench.sh
else
./dependencies.sh
fi
- name: Build Reindexer
run: |
export CPLUS_INCLUDE_PATH=$GITHUB_WORKSPACE/grpc/third_party/abseil-cpp
mkdir build && cd build
if [[ $OS == ubuntu-latest ]]; then
if [[ $SANITIZER == 'ASAN' ]]; then
cmake -DENABLE_GRPC=ON -DWITH_${{matrix.sanitizer}}=On -DGTEST_SKIP_SHARDING=On ..
else
cmake -DENABLE_GRPC=ON -DWITH_${{matrix.sanitizer}}=On ..
fi
elif [[ $OS == macos* ]]; then
cmake -DGH_CI_OSX=ON ..
else
cmake -DENABLE_GRPC=ON ..
fi
make -j4
STRIP=/bin/true cpack
- name: 'C++ tests'
if: ${{ matrix.os == 'macos-13' }}
run: |
echo "Running C++ directly in this job due to Action's problem with artifacts transition for macos-11 and macos-12 runners"
cd build
ctest --verbose -R gtests
- name: 'Tar Artifacts'
run: |
find ./build/ -name CMakeFiles | xargs -n1 rm -rf
rm -rf ./build/_CPack_Packages ./build/cpp_src/server/reindexer_server_resources
tar -cvf artifacts.tar build/ bindings/builtin/builtin_posix.go bindings/builtinserver/builtinserver_posix.go dependencies.sh
- name: Archive Artifacts
uses: actions/upload-artifact@v4
with:
name: ${{matrix.os}}${{matrix.sanitizer}}
path: artifacts.tar
if-no-files-found: error
test:
strategy:
matrix:
os: [ubuntu-22.04, ubuntu-24.04, macos-13]
test: ['C++', 'GO']
include:
- os: ubuntu-latest
sanitizer: ASAN
test: 'C++'
- os: ubuntu-latest
sanitizer: ASAN
test: 'GO'
# - os: ubuntu-latest
# sanitizer: TSAN
# cc: gcc-12
# cxx: g++-12
# test: 'C++'
- os: ubuntu-latest
sanitizer: TSAN
test: 'GO'
fail-fast: false
runs-on: ${{matrix.os}}
needs: build
if: always()
env:
CC: ${{matrix.cc}}
CXX: ${{matrix.cxx}}
TEST: ${{matrix.test}}
SANITIZER: ${{matrix.sanitizer}}
steps:
- name: Checkout repository
if: ${{ matrix.os != 'macos-13' || matrix.test == 'GO' }}
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
if: ${{ matrix.os == 'macos-13' && matrix.test == 'GO' }}
with:
go-version: '1.22.x'
check-latest: true
- name: Download ${{matrix.os}}${{matrix.sanitizer}} Artifacts
if: ${{ matrix.os != 'macos-13' || matrix.test == 'GO' }}
uses: actions/download-artifact@v4
with:
name: ${{matrix.os}}${{matrix.sanitizer}}
- name: 'Untar Artifacts'
if: ${{ matrix.os != 'macos-13' || matrix.test == 'GO' }}
run: tar -xvf artifacts.tar
- name: Prepare Environment
if: ${{ matrix.os != 'macos-13' || matrix.test == 'GO' }}
env:
OS: ${{matrix.os}}
run: |
if [[ $OS == ubuntu* ]]; then
sudo ./dependencies.sh
else
./dependencies.sh
fi
if [[ $TEST == 'GO' ]]; then
go mod download
elif [[ $OS == ubuntu* ]]; then
./.github/workflows/install_gtest_parallel.sh
fi
- name: Tests
if: ${{ matrix.os != 'macos-13' || matrix.test == 'GO' }}
run: |
if [[ $TEST == 'GO' ]]; then
if [[ $SANITIZER == 'ASAN' ]]; then
export REINDEXER_GH_CI_ASAN=true
fi
if [[ -z "$SANITIZER" ]]; then
go test -timeout 15m ./test/... -bench . -benchmem -benchtime 100ms -seedcount 50000
else
export TSAN_OPTIONS="halt_on_error=1"
export RX_IVF_OMP_THREADS=1
export REINDEXER_GH_CI_TSAN=1
go test -timeout 35m ./test/... -bench . -benchmem -benchtime 100ms -seedcount 50000 -tags tiny_vectors
fi
else
cd build
ctest --verbose
fi
# TODO: Reenable after binding's compatibility fix
# test-pyreindexer:
# strategy:
# matrix:
# os: [ubuntu-22.04, ubuntu-24.04]
# fail-fast: false
# runs-on: ${{matrix.os}}
# needs: build
# if: always()
# env:
# OS: ${{matrix.os}}
# steps:
# - name: Download ${{matrix.os}} Artifacts
# uses: actions/download-artifact@v4
# with:
# name: ${{matrix.os}}
# - name: 'Untar Artifacts'
# run: tar -xvf artifacts.tar
# - name: Prepare Environment
# run: |
# if [[ $OS == ubuntu* ]]; then
# sudo ./dependencies.sh
# python3 -m pip install setuptools build
# else
# ./dependencies.sh
# fi
# - name: Install Reindexer
# run: |
# cd build
# if [[ $OS == ubuntu* ]]; then
# sudo dpkg -i reindexer-4-dev*.deb
# sudo apt-get install -f
# sudo dpkg -i reindexer-4-server*.deb
# sudo apt-get install -f
# else
# for f in reindexer-*.tar.gz; do tar -xvzf "$f"; done
# cp -R ./usr/local/include/reindexer /usr/local/include/reindexer
# cp -R ./usr/local/lib/reindexer /usr/local/lib/reindexer
# cp ./usr/local/lib/libreindexer.a /usr/local/lib/libreindexer.a
# cp ./usr/local/lib/libreindexer_server_library.a /usr/local/lib/libreindexer_server_library.a
# cp ./usr/local/lib/libreindexer_server_resources.a /usr/local/lib/libreindexer_server_resources.a
# cp ./usr/local/lib/pkgconfig/libreindexer.pc /usr/local/lib/pkgconfig/libreindexer.pc
# cp ./usr/local/lib/pkgconfig/libreindexer_server.pc /usr/local/lib/pkgconfig/libreindexer_server.pc
# cp ./usr/local/bin/reindexer_server /usr/local/bin/reindexer_server
# cp ./usr/local/etc/reindexer.conf.pkg /usr/local/etc/reindexer.conf.pkg
# fi
# - name: Clone PyReindexer
# uses: actions/checkout@v4
# with:
# repository: restream/reindexer-py
# - name: Install PyReindexer
# run: |
# python -m build
# python -m pip install .
# - name: Test PyReindexer
# run: |
# cd pyreindexer
# ../.github/workflows/test.sh