Skip to content

Replace foreign_key_schema with type-safe fk_attr attributes #66

Replace foreign_key_schema with type-safe fk_attr attributes

Replace foreign_key_schema with type-safe fk_attr attributes #66

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
jobs:
tests-gcc:
runs-on: ubuntu-latest
env:
DS_MYSQL_TEST_HOST: 127.0.0.1
DS_MYSQL_TEST_PORT: 3306
DS_MYSQL_TEST_DATABASE: ds_mysql_test
DS_MYSQL_TEST_USER: ds_mysql_test_user
DS_MYSQL_TEST_PASSWORD: ds_mysql_test_password
services:
mysql:
image: mysql:8.0
env:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: ds_mysql_test
MYSQL_USER: ds_mysql_test_user
MYSQL_PASSWORD: ds_mysql_test_password
ports:
- 3306:3306
options: >-
--health-cmd="mysqladmin ping -h 127.0.0.1 --protocol=tcp"
--health-interval=5s
--health-timeout=10s
--health-retries=10
steps:
- uses: actions/checkout@v6
- name: Install dependencies
run: |
sudo apt-get update -q
sudo apt-get install -y software-properties-common ca-certificates gpg wget mysql-client
# Kitware APT repo for CMake 3.31+
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc \
| gpg --dearmor \
| sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg > /dev/null
echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ noble main' \
| sudo tee /etc/apt/sources.list.d/kitware.list
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
sudo apt-get update -q
sudo apt-get install -y cmake ninja-build g++-15 \
libmysqlclient-dev pkg-config
- name: Configure
run: cmake --preset release -DSKIP_DOCKER_MANAGEMENT=ON
env:
CXX: g++-15
CC: gcc-15
- name: Build
run: cmake --build build -j4
- name: Unit tests
run: ctest --preset release -R tests_unit_ds_mysql
- name: Initialize database
run: |
mysql -h 127.0.0.1 -P 3306 -u root -proot
- name: Integration tests
run: ctest --preset release -R tests_integration_ds_mysql
tests-clang:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Install dependencies
run: |
sudo apt-get update -q
sudo apt-get install -y software-properties-common ca-certificates gpg wget
# Kitware APT repo for CMake 3.31+
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc \
| gpg --dearmor \
| sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg > /dev/null
echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ noble main' \
| sudo tee /etc/apt/sources.list.d/kitware.list
sudo apt-get update -q
sudo apt-get install -y cmake ninja-build clang-20 \
libmysqlclient-dev pkg-config
- name: Configure
run: cmake --preset release -DSKIP_DOCKER_MANAGEMENT=ON -DBUILD_INTEGRATION_TESTS=OFF -DBUILD_EXAMPLES=OFF
env:
CXX: clang++-20
CC: clang-20
- name: Build
run: cmake --build build -j4
- name: Unit tests
run: ctest --preset release -R tests_unit_ds_mysql
tests-msvc:
runs-on: windows-latest
steps:
- uses: actions/checkout@v6
- name: Install dependencies
run: |
choco install cmake ninja --no-progress -y
shell: pwsh
- name: Detect MySQL root
shell: pwsh
run: |
$dirs = Get-ChildItem "C:\Program Files\MySQL" -Directory -ErrorAction SilentlyContinue |
Where-Object { $_.Name -like "MySQL Server *" } |
Sort-Object Name -Descending
if (-not $dirs) { throw "MySQL installation not found" }
$root = $dirs[0].FullName
echo "MYSQL_ROOT_DIR=$root" >> $env:GITHUB_ENV
echo "$root\lib" >> $env:GITHUB_PATH
- name: Configure
shell: pwsh
run: |
cmake -B build `
-G "Visual Studio 17 2022" -A x64 `
-DBUILD_INTEGRATION_TESTS=OFF `
-DBUILD_EXAMPLES=OFF `
"-DMYSQL_ROOT_DIR=$env:MYSQL_ROOT_DIR"
- name: Build
run: cmake --build build --config Release -j4
- name: Unit tests
run: ctest --test-dir build -C Release -R tests_unit_ds_mysql --output-on-failure