Skip to content

feat chaotic: add schema_hash to dynamic_config::Key and codegen #9009

feat chaotic: add schema_hash to dynamic_config::Key and codegen

feat chaotic: add schema_hash to dynamic_config::Key and codegen #9009

Workflow file for this run

name: Ubuntu
'on':
pull_request:
push:
branches:
- master
- develop
- feature/**
env:
JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64
UBSAN_OPTIONS: print_stacktrace=1
ASAN_OPTIONS: detect_odr_violation=2
CCACHE_DIR: /home/runner/.cache/ccache
CCACHE_NOHASHDIR: true
CPM_SOURCE_CACHE: /home/runner/.cache/CPM
REDIS_SLEEP_WORKAROUND_SECONDS: 60
jobs:
posix:
strategy:
fail-fast: false
matrix:
include:
- cmake-flags: >-
-GNinja
-DCMAKE_CXX_COMPILER=clang++-18
-DCMAKE_C_COMPILER=clang-18
-DCMAKE_BUILD_TYPE=Debug
-DCMAKE_CXX_STANDARD=20
-DUSERVER_SANITIZE="ub addr"
-DUSERVER_NO_WERROR=0
-DUSERVER_BUILD_ALL_COMPONENTS=1
-DUSERVER_BUILD_SAMPLES=1
-DUSERVER_BUILD_TESTS=1
-DUSERVER_FEATURE_YDB=0
-DUSERVER_NAMESPACE=userver_ns
-DUSERVER_NAMESPACE_BEGIN="namespace userver_ns { inline namespace
v1 {"
-DUSERVER_NAMESPACE_END="}}"
os: ubuntu-24.04
info: clang-18 + debug + sanitize addr+ub
id: ubuntu24_clang18_debug_sanitize-addr-ub
# Sanitizer consumes too much virtual memory and Subprocess tests fail with:
# "Error while fork: Cannot allocate memory" (std::system_error)
tests-flags: '--gtest_filter=-Subprocess.*'
tests-env: ''
- cmake-flags: >-
-GNinja
-DCMAKE_CXX_COMPILER=g++-13
-DCMAKE_C_COMPILER=gcc-13
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_CXX_STANDARD=20
-DUSERVER_SANITIZE=""
-DUSERVER_NO_WERROR=1
-DUSERVER_BUILD_ALL_COMPONENTS=1
-DUSERVER_BUILD_SAMPLES=1
-DUSERVER_BUILD_TESTS=1
os: ubuntu-24.04
info: gcc-13 + release
id: ubuntu24_gcc13_release
tests-flags: '--gtest_filter=-StackUsageMonitorTest.BacktraceLogging'
tests-env: ''
name: '${{matrix.os}}: ${{matrix.info}}'
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v7
- name: Restore cached directories
id: restore-cache
uses: actions/cache/restore@v6
with:
path: |
${{env.CCACHE_DIR}}
${{env.CPM_SOURCE_CACHE}}
key: 'ubuntu-cache-dir ${{matrix.id}} ${{github.ref}} run-${{github.run_number}}'
restore-keys: |
ubuntu-cache-dir ${{matrix.id}} ${{github.ref}}
ubuntu-cache-dir ${{matrix.id}}
- name: Setup ramdrive for testsuites
run: |
sudo mkdir -p "/mnt/ramdisk/$USER"
sudo chmod 777 "/mnt/ramdisk/$USER"
sudo mount -t tmpfs -o size=2048M tmpfs "/mnt/ramdisk/$USER"
- name: Free disk space
run: ./scripts/githubci_free_space.sh
- name: Add confluentinc repositories
if: matrix.os != 'ubuntu-24.04'
run: |
# Adding librdkafka confluent repositories as in https://docs.confluent.io/platform/current/installation/installing_cp/deb-ubuntu.html#get-the-software
gpg_retrieve_keyserver() {
GNUPGHOME=$(mktemp -d)
GNUPGHOME="$GNUPGHOME" gpg --no-default-keyring --keyring "/usr/share/keyrings/$2.gpg" --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $1
rm -rf "$GNUPGHOME"
chmod a+r "/usr/share/keyrings/$2.gpg"
}
gpg_retrieve_keyserver 8B1DA6120C2BF624 confluent
printf "\
deb [arch=amd64 signed-by=/usr/share/keyrings/confluent.gpg] https://packages.confluent.io/deb/7.6 stable main\n\
deb [signed-by=/usr/share/keyrings/confluent.gpg] https://packages.confluent.io/clients/deb $(lsb_release -cs) main\n" \
| sudo tee /etc/apt/sources.list.d/confluent.list
- name: Add missing repositories
run: |
sudo apt update
# Instructions from https://clickhouse.com/docs/en/getting-started/install/
sudo apt install -y apt-transport-https ca-certificates dirmngr
curl -fsSL 'https://packages.clickhouse.com/rpm/lts/repodata/repomd.xml.key' | sudo gpg --dearmor -o /usr/share/keyrings/clickhouse-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/clickhouse-keyring.gpg arch=amd64] https://packages.clickhouse.com/deb stable main" | sudo tee /etc/apt/sources.list.d/clickhouse.list
# Adding mariadb repositories (from https://www.linuxcapable.com/how-to-install-mariadb-on-ubuntu-linux/ )
curl -fsSL https://mariadb.org/mariadb_release_signing_key.pgp | sudo gpg --dearmor -o "/usr/share/keyrings/mariadb.gpg"
sudo chmod a+r "/usr/share/keyrings/mariadb.gpg"
# Restore the correct URL after https://jira.mariadb.org/browse/MDBF-651
#echo "deb [arch=amd64,arm64,ppc64el signed-by=/usr/share/keyrings/mariadb.gpg] https://deb.mariadb.org/10.11/ubuntu $(lsb_release -cs) main" \
# | tee /etc/apt/sources.list.d/mariadb.list
echo "deb [arch=amd64,arm64,ppc64el signed-by=/usr/share/keyrings/mariadb.gpg] https://mirror.kumi.systems/mariadb/repo/10.11/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/mariadb.list
# Adding mongodb repositories
wget -qO- https://pgp.mongodb.com/server-7.0.asc | sudo gpg --dearmor | sudo tee /usr/share/keyrings/mongodb-server-7.0.gpg >/dev/null
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" \
| sudo tee -a /etc/apt/sources.list.d/mongodb-org-7.0.list
# Mongo is not officially supported on Ubuntu 24.04, so install it from jammy
- name: Install common deps
run: |
sudo apt update
sudo apt purge -y libpq5 libpq-dev postgresql-*
sudo apt install --allow-downgrades -y clickhouse-common-static redis-server postgresql mongodb-mongosh $(cat scripts/docs/en/deps/${{matrix.os}}.md | tr '\n' ' ')
- name: Setup ccache
run: |
ccache -M 2.0GB
ccache -s -v
- name: Install Kafka
run: |
sudo ./scripts/kafka/ubuntu_install_kafka.sh
- name: Install RabbitMQ packages
run: |
./scripts/rabbitmq/ubuntu_install_rabbitmq_server.sh
- name: Install gdb and pytest
run: |
sudo apt install -y gdb python3-pytest
- name: Run cmake
run: |
cmake -S . -B build_debug ${{matrix.cmake-flags}}
- name: Reconfigure cmake
run: |
cmake -S . -B build_debug ${{matrix.cmake-flags}}
- name: Compile
run: |
pwd
cd build_debug
cmake --build . -j $(nproc)
- name: Save cached directories
uses: actions/cache/save@v6
with:
path: |
${{env.CCACHE_DIR}}
${{env.CPM_SOURCE_CACHE}}
key: ${{ steps.restore-cache.outputs.cache-primary-key }}
- name: Show cache stats
run: |
du -h -d 1 ${{env.CCACHE_DIR}}
du -h -d 1 ${{env.CPM_SOURCE_CACHE}}
ccache -s -v
- name: Run tests
run: |-
echo "UBSAN_OPTIONS=${UBSAN_OPTIONS} ASAN_OPTIONS=${ASAN_OPTIONS}"
cd build_debug
ulimit -n 4096
GTEST_FILTER="${{matrix.tests-flags}}"
export GTEST_FILTER="${GTEST_FILTER#--gtest_filter=}"
# Tests not runnable on the GitHub Ubuntu runner:
# * grpc/mysql: skipped on Ubuntu 24.04 (the only matrix OS)
# * mongo (real DB): mongod replica set does not start on the runner
# * samples-mysql_service: needs mariadb-server (not installed)
# * websocket_client: runner curl lacks ws:// support
# * compile-err-msg: compile-fail test unstable under clang-18
# * ydb (gcc-13 only, YDB enabled there): no ydb server on the runner
excluded_tests=(
userver-grpc-unittest
userver-grpc-benchmark
userver-grpc-tests
userver-grpc-handlers
userver-mysql
userver-mongo-dbtest
testsuite-userver-mongo
userver-samples-mongo
samples-mysql_service
testsuite-userver-core-tests-websocket_client
userver-universal-compile-err-msg-test
userver-ydb
userver-samples-ydb
)
${{matrix.tests-env}} ctest -j2 --output-on-failure \
-E "$(IFS='|'; printf '%s' "${excluded_tests[*]}")"