Added s3_storage backend (WIP) #150
Workflow file for this run
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 | |
on: | |
push: | |
branches: [ "main" ] | |
pull_request: | |
branches: [ "main" ] | |
env: | |
AWS_SDK_CPP_MAJOR: 1 | |
AWS_SDK_CPP_MINOR: 11 | |
AWS_SDK_CPP_PATCH: 286 | |
BOOST_MAJOR: 1 | |
BOOST_MINOR: 83 | |
BOOST_PATCH: 0 | |
BOOST_EXT: .tar.bz2 | |
jobs: | |
formatting-check: | |
runs-on: ubuntu-22.04 | |
name: Formatting checks | |
steps: | |
- name: Cheking out source tree | |
uses: actions/checkout@v4 | |
with: | |
path: src | |
fetch-depth: 0 | |
fetch-tags: true | |
- name: Check formatting with git diff --check | |
run: git diff --check --color HEAD~ | |
- name: Install dependencies on ubuntu | |
run: | | |
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc | |
echo deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-17 main | sudo tee /etc/apt/sources.list.d/llvm.list | |
sudo apt-get update | |
sudo apt-get install clang-format-17 | |
- name: Info Clang Format | |
run: clang-format-17 --version | |
- name: Check formatting with git clang-format-17 | |
working-directory: ${{github.workspace}}/src | |
run: git clang-format-17 --diff --binary=clang-format-17 HEAD~ | |
build: | |
# The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac. | |
# You can convert this to a matrix build if you need cross-platform coverage. | |
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix | |
name: ${{ matrix.config.name }} | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- { | |
name: "GCC 13 Debug", | |
build_type: "Debug", | |
cc: "gcc-13", | |
cxx: "g++-13", | |
label: "Debug-gcc13", | |
run_mtr: true | |
} | |
- { | |
name: "GCC 13 RelWithDebInfo", | |
build_type: "RelWithDebInfo", | |
cc: "gcc-13", | |
cxx: "g++-13", | |
label: "RelWithDebInfo-gcc13", | |
run_mtr: true | |
} | |
- { | |
name: "GCC 13 ASan", | |
build_type: "Debug", | |
cc: "gcc-13", | |
cxx: "g++-13", | |
sanitizer_cmake_flags: "-DWITH_ASAN=ON", | |
aws_sanitizer_cmake_flags: "-DENABLE_ADDRESS_SANITIZER=ON", | |
label: "ASan-gcc13", | |
run_mtr: true, | |
mtr_options: "--sanitize" | |
} | |
- { | |
name: "Clang 17 Debug", | |
build_type: "Debug", | |
cc: "clang-17", | |
cxx: "clang++-17", | |
libcxx_cmake_flags: "-DWITH_STDLIB_LIBCXX=ON", | |
aws_libcxx_cmake_flags: "-DCMAKE_CXX_FLAGS_INIT=-stdlib=libc++", | |
label: "Debug-clang17", | |
run_clang_tidy: true, | |
} | |
- { | |
name: "Clang 17 RelWithDebInfo", | |
build_type: "RelWithDebInfo", | |
cc: "clang-17", | |
cxx: "clang++-17", | |
libcxx_cmake_flags: "-DWITH_STDLIB_LIBCXX=ON", | |
aws_libcxx_cmake_flags: "-DCMAKE_CXX_FLAGS_INIT=-stdlib=libc++", | |
label: "RelWithDebInfo-clang17", | |
run_clang_tidy: true, | |
} | |
- { | |
name: "Clang 17 ASan", | |
build_type: "Debug", | |
cc: "clang-17", | |
cxx: "clang++-17", | |
libcxx_cmake_flags: "-DWITH_STDLIB_LIBCXX=ON", | |
aws_libcxx_cmake_flags: "-DCMAKE_CXX_FLAGS_INIT=-stdlib=libc++", | |
sanitizer_cmake_flags: "-DWITH_ASAN=ON", | |
aws_sanitizer_cmake_flags: "-DENABLE_ADDRESS_SANITIZER=ON", | |
label: "ASan-clang17", | |
run_mtr: true, | |
mtr_options: "--sanitize" | |
} | |
steps: | |
- name: Get number of CPU cores | |
uses: SimenB/github-actions-cpu-cores@v2 | |
id: cpu-cores | |
- name: Info CPU | |
run: cat /proc/cpuinfo | |
- name: Info mount | |
run: mount | |
- name: Info df | |
run: df -h | |
- name: Info GitHub directories | |
run: | | |
echo github.workspace: ${{github.workspace}} | |
echo runner.temp : ${{runner.temp}} | |
- name: Install MySQL client libraries and CURL Development libraries | |
run: | | |
sudo apt-get update | |
sudo apt-get install libmysqlclient-dev libcurl4-openssl-dev | |
- name: Install MySQL server and MTR | |
if: matrix.config.run_mtr | |
run: | | |
sudo apt-get install mysql-client mysql-server mysql-testsuite apparmor-utils | |
- name: Install Clang dependencies on ubuntu | |
if: startsWith(matrix.config.name, 'Clang') | |
run: | | |
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc | |
echo deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-17 main | sudo tee /etc/apt/sources.list.d/llvm.list | |
sudo apt-get update | |
sudo apt-get install clang-17 lld-17 clang-tidy-17 libc++-17-dev libc++1-17 libc++abi-17-dev libc++abi1-17 | |
- name: Install GCC dependencies on ubuntu | |
if: startsWith(matrix.config.name, 'GCC') | |
run: | | |
sudo add-apt-repository ppa:ubuntu-toolchain-r/test | |
sudo apt-get update | |
sudo apt-get install g++-13 | |
- name: Info CC compiler | |
run: ${{matrix.config.cc}} --version | |
- name: Info CXX compiler | |
run: ${{matrix.config.cxx}} --version | |
- name: Creating deps directory | |
run: mkdir -p ${{runner.temp}}/deps | |
- name: Cache boost libraries | |
id: cache-boost-libraries | |
uses: actions/cache@v4 | |
with: | |
path: ${{runner.temp}}/deps/${{format('boost_{0}_{1}_{2}', env.BOOST_MAJOR, env.BOOST_MINOR, env.BOOST_PATCH)}} | |
key: ${{format('boost-libraries-{0}-{1}-{2}', env.BOOST_MAJOR, env.BOOST_MINOR, env.BOOST_PATCH)}} | |
- name: Download and unpack boost libraries | |
if: steps.cache-boost-libraries.outputs.cache-hit != 'true' | |
working-directory: ${{runner.temp}}/deps | |
run: | | |
wget --quiet ${{format('https://boostorg.jfrog.io/artifactory/main/release/{0}.{1}.{2}/source/boost_{0}_{1}_{2}{3}', env.BOOST_MAJOR, env.BOOST_MINOR, env.BOOST_PATCH, env.BOOST_EXT)}} | |
tar xf ${{format('boost_{0}_{1}_{2}{3}', env.BOOST_MAJOR, env.BOOST_MINOR, env.BOOST_PATCH, env.BOOST_EXT)}} | |
rm -f ${{format('boost_{0}_{1}_{2}{3}', env.BOOST_MAJOR, env.BOOST_MINOR, env.BOOST_PATCH, env.BOOST_EXT)}} | |
- name: Cache AWS SDK C++ libraries | |
id: cache-aws-sdk-cpp-libraries | |
uses: actions/cache@v4 | |
with: | |
path: ${{runner.temp}}/deps/aws-sdk-cpp-install-${{matrix.config.label}} | |
key: ${{format('aws-cpp-sdk-libraries-{0}-{1}-{2}-{3}', env.AWS_SDK_CPP_MAJOR, env.AWS_SDK_CPP_MINOR, env.AWS_SDK_CPP_PATCH, matrix.config.label)}} | |
- name: Checking out AWS SDK C++ source tree | |
if: steps.cache-aws-sdk-cpp-libraries.outputs.cache-hit != 'true' | |
uses: actions/checkout@v4 | |
with: | |
repository: aws/aws-sdk-cpp | |
ref: ${{format('{0}.{1}.{2}', env.AWS_SDK_CPP_MAJOR, env.AWS_SDK_CPP_MINOR, env.AWS_SDK_CPP_PATCH)}} | |
path: aws-sdk-cpp | |
submodules: recursive | |
fetch-tags: true | |
- name: Configure CMake for AWS SDK C++ | |
if: steps.cache-aws-sdk-cpp-libraries.outputs.cache-hit != 'true' | |
run: | | |
cmake \ | |
-B ${{github.workspace}}/aws-sdk-cpp-build-${{matrix.config.label}} \ | |
-S ${{github.workspace}}/aws-sdk-cpp \ | |
-DCMAKE_INSTALL_PREFIX=${{runner.temp}}/deps/aws-sdk-cpp-install-${{matrix.config.label}} \ | |
-DCMAKE_BUILD_TYPE=${{matrix.config.build_type}} \ | |
-DCMAKE_C_COMPILER=${{matrix.config.cc}} \ | |
-DCMAKE_CXX_COMPILER=${{matrix.config.cxx}} \ | |
${{matrix.config.aws_libcxx_cmake_flags}} \ | |
${{matrix.config.aws_sanitizer_cmake_flags}} \ | |
-DCPP_STANDARD=20 \ | |
-DENABLE_UNITY_BUILD=ON \ | |
-DBUILD_SHARED_LIBS=OFF \ | |
-DFORCE_SHARED_CRT=OFF \ | |
-DENABLE_TESTING=OFF \ | |
-DAUTORUN_UNIT_TESTS=OFF \ | |
-DBUILD_ONLY=s3-crt | |
- name: CMake info for AWS SDK C++ | |
if: steps.cache-aws-sdk-cpp-libraries.outputs.cache-hit != 'true' | |
run: cmake -L ${{github.workspace}}/aws-sdk-cpp-build-${{matrix.config.label}} | |
- name: Build for AWS SDK C++ | |
if: steps.cache-aws-sdk-cpp-libraries.outputs.cache-hit != 'true' | |
run: cmake --build ${{github.workspace}}/aws-sdk-cpp-build-${{matrix.config.label}} --config ${{matrix.config.build_type}} --parallel | |
- name: Install for AWS SDK C++ | |
if: steps.cache-aws-sdk-cpp-libraries.outputs.cache-hit != 'true' | |
run: cmake --install ${{github.workspace}}/aws-sdk-cpp-build-${{matrix.config.label}} --config ${{matrix.config.build_type}} | |
- name: Checking out source tree | |
uses: actions/checkout@v4 | |
with: | |
path: src | |
fetch-depth: 0 | |
fetch-tags: true | |
- name: Configure CMake | |
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. | |
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type | |
run: | | |
cmake -Wdev -Werror=dev -Wdeprecated -Werror=deprecated \ | |
-B ${{github.workspace}}/build-${{matrix.config.label}} \ | |
-S ${{github.workspace}}/src \ | |
-DCMAKE_BUILD_TYPE=${{matrix.config.build_type}} \ | |
-DCMAKE_C_COMPILER=${{matrix.config.cc}} \ | |
-DCMAKE_CXX_COMPILER=${{matrix.config.cxx}} \ | |
${{matrix.config.libcxx_cmake_flags}} \ | |
${{matrix.config.sanitizer_cmake_flags}} \ | |
-DCMAKE_PREFIX_PATH=${{runner.temp}}/deps/aws-sdk-cpp-install-${{matrix.config.label}} \ | |
-DBoost_ROOT=${{runner.temp}}/deps/${{format('boost_{0}_{1}_{2}', env.BOOST_MAJOR, env.BOOST_MINOR, env.BOOST_PATCH)}} \ | |
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON | |
- name: CMake info | |
run: cmake -L ${{github.workspace}}/build-${{matrix.config.label}} | |
- name: Build | |
# Build your program with the given configuration | |
run: cmake --build ${{github.workspace}}/build-${{matrix.config.label}} --config ${{matrix.config.build_type}} --parallel | |
- name: Info Build artefacts | |
run: | | |
ls -la ${{github.workspace}} | |
ls -la ${{github.workspace}}/.. | |
ls -la ${{github.workspace}}/../.. | |
- name: Info Clang Tidy | |
if: matrix.config.run_clang_tidy | |
run: clang-tidy-17 --version | |
- name: Clang Tidy | |
if: matrix.config.run_clang_tidy | |
# Run Clang Tidy | |
run: run-clang-tidy-17 -header-filter=.* -j=${{steps.cpu-cores.outputs.count}} -use-color -p=${{github.workspace}}/build-${{matrix.config.label}} | |
- name: MTR tests | |
if: matrix.config.run_mtr | |
working-directory: /usr/lib/mysql-test | |
run: | | |
# Switching MySQL Server Apparmor profile to "complain" as we are creating a custom data directory | |
sudo aa-complain /usr/sbin/mysqld | |
# Linking the "binlog_streaming" from the source tree into the MTR suits directory on the system | |
sudo ln -s ${{github.workspace}}/src/mtr/binlog_streaming /usr/lib/mysql-test/suite/binlog_streaming | |
# Running MTR from the system package | |
BINSRV=${{github.workspace}}/build-${{matrix.config.label}}/binlog_server ./mtr \ | |
--client-bindir=/usr/lib/mysql-test/bin --vardir=${{github.workspace}}/mtrvardir \ | |
--force --max-test-fail=0 --retry=0 --nounit-tests --big-test --repeat=2 --parallel=${{steps.cpu-cores.outputs.count}} \ | |
--suite=binlog_streaming ${{matrix.config.mtr_options}} | |
- name: CTest | |
working-directory: ${{github.workspace}}/build-${{matrix.config.label}} | |
# Execute tests defined by the CMake configuration. | |
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail | |
run: ctest -C ${{matrix.config.build_type}} --parallel |