RCPP-89 Add 301/308 redirection support for HTTP transport requests #1231
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CMake Build | |
env: | |
APIKEY: ${{ secrets.REALM_BAASAAS_API_KEY }} | |
REALM_CI: true | |
REALM_DISABLE_ANALYTICS: true | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
jobs: | |
stop-all-containers: | |
runs-on: ubuntu-latest | |
name: Stop Stray Containers | |
if: always() | |
needs: | |
- build-macos | |
- build-linux | |
- build-windows | |
steps: | |
- name: Stop containers | |
run: | | |
export JSON_HEADER="Content-Type: application/json" | |
export AUTH_HEADER="apiKey: $APIKEY" | |
export BASE_URL="https://us-east-1.aws.data.mongodb-api.com/app/baas-container-service-autzb/endpoint" | |
curl --silent -X GET -H "$JSON_HEADER" -H "$AUTH_HEADER" "$BASE_URL/listContainers?mine=true" | jq | grep '"id":' | awk -F '"' '{print $4}' | while read id; do | |
curl --silent -X POST -H "$JSON_HEADER" -H "$AUTH_HEADER" "$BASE_URL/stopContainer?id=$id" | |
done | |
build-macos: | |
runs-on: macos-14 | |
name: macOS ${{ matrix.configuration }}, Xcode ${{ matrix.xcode }}, REALM_DISABLE_ALIGNED_STORAGE=${{ matrix.disable-aligned-storage }} | |
strategy: | |
fail-fast: false | |
matrix: | |
xcode: | |
- '15.4' | |
configuration: | |
- Debug | |
- Release | |
disable-aligned-storage: | |
- 1 | |
- 0 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
with: | |
submodules: 'recursive' | |
- name: Setup Ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ccache-macos-${{ matrix.xcode }}-disable-aligned-storage-${{ matrix.disable-aligned-storage }}-${{ matrix.configuration }} | |
- name: Setup Ninja | |
uses: seanmiddleditch/gha-setup-ninja@master | |
- name: Setup Xcode | |
uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: ${{ matrix.xcode }} | |
- uses: ammaraskar/gcc-problem-matcher@master | |
- name: Configure | |
run: cmake --preset macos -DCMAKE_VERBOSE_MAKEFILE=${RUNNER_DEBUG:-OFF} -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15 -DREALM_ENABLE_EXPERIMENTAL=1 -DREALM_DISABLE_ALIGNED_STORAGE=${{ matrix.disable-aligned-storage }} -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache | |
- name: Compile | |
run: cmake --build --preset macos --config ${{ matrix.configuration }} | |
- name: Non Sync Tests | |
working-directory: .build/cmake-preset-macos/tests/${{ matrix.configuration }}/ | |
run: ./cpprealm_db_tests | |
- name: Flexible Sync Tests | |
working-directory: .build/cmake-preset-macos/tests/${{ matrix.configuration }}/ | |
run: ./cpprealm_sync_tests "~client_reset" | |
- name: Client Reset Tests | |
working-directory: .build/cmake-preset-macos/tests/${{ matrix.configuration }}/ | |
run: ./cpprealm_sync_tests "client_reset" | |
- name: Publish Test Report | |
uses: mikepenz/action-junit-report@v3 | |
if: always() | |
with: | |
report_paths: '.build/**/TestResults.xml' | |
annotate_only: true | |
require_tests: true | |
- name: Open a tmate debug session | |
if: ${{ failure() && runner.debug }} | |
uses: mxschmitt/action-tmate@v3 | |
with: | |
timeout-minutes: 15 | |
build-linux: | |
runs-on: ubuntu-latest | |
name: Linux ${{ matrix.configuration }} (${{ matrix.compiler.name }} ${{ matrix.compiler.version }}) | |
strategy: | |
fail-fast: false | |
matrix: | |
compiler: | |
- name: gcc | |
version: "8.3" | |
- name: gcc | |
version: "9.1" | |
- name: gcc | |
version: "10.1" | |
- name: gcc | |
version: "11.1" | |
- name: gcc | |
version: "12.1" | |
- name: clang | |
version: 15 | |
configuration: | |
- Debug | |
- Release | |
container: | |
image: ${{ matrix.compiler.name == 'clang' && 'silkeh/clang' || matrix.compiler.name }}:${{ matrix.compiler.version }} | |
steps: | |
- name: Install Linux Dependencies | |
run: | | |
apt-get update | |
apt-get install -y \ | |
git \ | |
libcurl4-openssl-dev \ | |
libssl-dev \ | |
libuv1-dev \ | |
ninja-build \ | |
sudo \ | |
zlib1g-dev \ | |
valgrind | |
- name: Setup Ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ccache-linux-${{ matrix.compiler.name }}-${{ matrix.compiler.version }}-${{ matrix.configuration }} | |
- name: Setup CMake | |
uses: jwlawson/[email protected] | |
with: | |
cmake-version: latest | |
- uses: ammaraskar/gcc-problem-matcher@master | |
- name: Checkout | |
uses: actions/checkout@v2 | |
with: | |
submodules: 'recursive' | |
- name: Configure | |
run: cmake --preset linux -DCMAKE_VERBOSE_MAKEFILE=${RUNNER_DEBUG:-OFF} -DREALM_ENABLE_EXPERIMENTAL=1 -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache | |
- name: Compile | |
run: cmake --build --preset linux --config ${{ matrix.configuration }} | |
- name: Test | |
working-directory: .build/cmake-preset-linux/tests/${{ matrix.configuration }}/ | |
run: ./cpprealm_db_tests | |
- name: Flexible Sync Tests | |
working-directory: .build/cmake-preset-linux/tests/${{ matrix.configuration }}/ | |
run: ./cpprealm_sync_tests "~client_reset" | |
- name: Client Reset Tests | |
working-directory: .build/cmake-preset-linux/tests/${{ matrix.configuration }}/ | |
run: ./cpprealm_sync_tests "client_reset" | |
- name: Valgrind leak check | |
if: ${{ matrix.compiler.name == 'gcc' && matrix.compiler.version == '12.1' }} | |
working-directory: .build/cmake-preset-linux/tests/${{ matrix.configuration }}/ | |
run: valgrind --tool=memcheck --leak-check=full --show-leak-kinds=definite --undef-value-errors=yes --track-origins=yes --child-silent-after-fork=no --trace-children=yes --log-file=valgrind.log ./cpprealm_db_tests | |
- name: Check for definitely lost errors | |
if: ${{ matrix.compiler.name == 'gcc' && matrix.compiler.version == '12.1' }} | |
id: check_valgrind | |
run: | | |
if grep -q "definitely lost: [1-9]" valgrind.log; then | |
echo "Valgrind detected definitely lost errors" | |
exit 1 | |
else | |
echo "No definitely lost errors detected" | |
fi | |
- name: Publish Test Report | |
uses: mikepenz/action-junit-report@v4 | |
if: always() | |
with: | |
report_paths: '.build/**/TestResults.xml' | |
annotate_only: true | |
require_tests: true | |
- name: Open a tmate debug session | |
if: ${{ failure() && runner.debug }} | |
uses: mxschmitt/action-tmate@v3 | |
with: | |
timeout-minutes: 15 | |
build-windows: | |
runs-on: windows-2022 | |
name: Windows ${{ matrix.configuration }} | |
strategy: | |
fail-fast: false | |
matrix: | |
configuration: | |
- Debug | |
- Release | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
with: | |
submodules: 'recursive' | |
- uses: ammaraskar/msvc-problem-matcher@master | |
- name: Setup Ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: windows-${{ matrix.configuration }} | |
- name: Setup CMake | |
uses: jwlawson/[email protected] | |
with: | |
cmake-version: latest | |
- name: Configure | |
run: cmake --preset windows-x64 -DENABLE_STATIC=1 -DREALM_ENABLE_EXPERIMENTAL=1 -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache | |
- name: Compile | |
run: cmake --build --preset windows-x64 --config ${{ matrix.configuration }} | |
- name: Non Sync Tests | |
working-directory: .build/cmake-preset-windows-x64/tests/${{ matrix.configuration }}/ | |
run: ./cpprealm_db_tests | |
- name: Flexible Sync Tests | |
working-directory: .build/cmake-preset-windows-x64/tests/${{ matrix.configuration }}/ | |
run: ./cpprealm_sync_tests "~client_reset" | |
- name: Client Reset Tests | |
working-directory: .build/cmake-preset-windows-x64/tests/${{ matrix.configuration }}/ | |
run: ./cpprealm_sync_tests "client_reset" | |
- name: Publish Test Report | |
uses: mikepenz/action-junit-report@v3 | |
if: always() | |
with: | |
report_paths: '.build/**/TestResults.xml' | |
annotate_only: true | |
require_tests: true |