mirror of
https://github.com/silverqx/TinyORM.git
synced 2026-04-30 13:44:57 -05:00
added GitHub Actions Linux, MSYS2 UCRT64, MSVC ✨
- initial g++/clang build, ctest on MSYS2 UCRT64 on Windows Server 2022 - initial cmake build/ctest on Ubuntu 20.40 - initial cmake build/ctest on MSVC on Windows Server 2019 changed driver to QPSQL in tst_databasemanager This avoids crash when QMYSQL driver's dll is unavailable. QMYSQL driver is not shipped by default by Qt Windows MSVC installer.
This commit is contained in:
@@ -0,0 +1,213 @@
|
||||
name: Linux
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- gh-actions
|
||||
|
||||
jobs:
|
||||
|
||||
build:
|
||||
name: cmake build / ctest
|
||||
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
compiler:
|
||||
- key: clang13
|
||||
apt: [ clang-13, lld, g++-11 ]
|
||||
command: clang++-13
|
||||
|
||||
- key: gcc11
|
||||
apt: [ g++-11 ]
|
||||
command: g++-11
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: PostgreSQL start service
|
||||
run: |
|
||||
sudo systemctl start postgresql.service
|
||||
|
||||
- name: PostgreSQL check service status
|
||||
run: |
|
||||
sudo systemctl status postgresql.service
|
||||
pg_isready
|
||||
|
||||
- name: PostgreSQL create TinyORM user
|
||||
run: >-
|
||||
sudo -u postgres
|
||||
psql --command="CREATE USER $DB_PGSQL_USERNAME PASSWORD '$DB_PGSQL_PASSWORD'"
|
||||
env:
|
||||
DB_PGSQL_PASSWORD: ${{ secrets.DB_PGSQL_PASSWORD }}
|
||||
DB_PGSQL_USERNAME: ${{ secrets.DB_PGSQL_USERNAME }}
|
||||
|
||||
- name: PostgreSQL create TinyORM database
|
||||
run: |
|
||||
sudo -u postgres createdb --owner=$DB_PGSQL_USERNAME $DB_PGSQL_DATABASE
|
||||
env:
|
||||
DB_PGSQL_DATABASE: ${{ secrets.DB_PGSQL_DATABASE }}
|
||||
DB_PGSQL_USERNAME: ${{ secrets.DB_PGSQL_USERNAME }}
|
||||
|
||||
- name: MySQL start service
|
||||
run: |
|
||||
sudo systemctl start mysql.service
|
||||
|
||||
- name: MySQL change TinyORM password
|
||||
run: >-
|
||||
mysql --host=$DB_MYSQL_HOST --user=$DB_MYSQL_USERNAME --password=$DB_MYSQL_PASSWORD_DEFAULT
|
||||
--execute="ALTER USER '$DB_MYSQL_USERNAME'@'$DB_MYSQL_HOST'
|
||||
IDENTIFIED BY '$DB_MYSQL_PASSWORD';"
|
||||
env:
|
||||
DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }}
|
||||
DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }}
|
||||
DB_MYSQL_PASSWORD_DEFAULT: ${{ secrets.DB_MYSQL_PASSWORD_DEFAULT }}
|
||||
DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }}
|
||||
|
||||
- name: MySQL check service status
|
||||
run: >-
|
||||
sudo systemctl status mysql.service
|
||||
|
||||
mysqladmin --bind-address=$DB_MYSQL_HOST --user=$DB_MYSQL_USERNAME
|
||||
--password=$DB_MYSQL_PASSWORD ping
|
||||
env:
|
||||
DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }}
|
||||
DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }}
|
||||
DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }}
|
||||
|
||||
- name: MySQL create TinyORM database
|
||||
run: >-
|
||||
echo "
|
||||
create database if not exists $DB_MYSQL_DATABASE
|
||||
default character set utf8mb4
|
||||
default collate utf8mb4_0900_ai_ci;" |
|
||||
mysql --host=$DB_MYSQL_HOST --user=$DB_MYSQL_USERNAME --password=$DB_MYSQL_PASSWORD
|
||||
env:
|
||||
DB_MYSQL_DATABASE: ${{ secrets.DB_MYSQL_DATABASE }}
|
||||
DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }}
|
||||
DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }}
|
||||
DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }}
|
||||
|
||||
- name: SQLite create TinyORM database
|
||||
run: |
|
||||
touch "$DB_SQLITE_DATABASE"
|
||||
env:
|
||||
DB_SQLITE_DATABASE: ${{ runner.temp }}/${{ secrets.DB_SQLITE_DATABASE }}
|
||||
|
||||
- name: PHP disable Xdebug
|
||||
run: |
|
||||
sudo phpdismod -s cli xdebug
|
||||
|
||||
- name: testdata composer install (illuminate/database)
|
||||
uses: "ramsey/composer-install@v1"
|
||||
with:
|
||||
composer-options: >-
|
||||
--working-dir=${{ github.workspace }}/tests/testdata
|
||||
--prefer-dist --optimize-autoloader
|
||||
|
||||
- name: Create and Seed tables (MySQL, PostgreSQL, SQLite)
|
||||
working-directory: tests/testdata
|
||||
run: |
|
||||
php ./create_and_seed_database.php
|
||||
env:
|
||||
DB_MYSQL_CHARSET: utf8mb4
|
||||
DB_MYSQL_COLLATION: utf8mb4_0900_ai_ci
|
||||
DB_MYSQL_DATABASE: ${{ secrets.DB_MYSQL_DATABASE }}
|
||||
DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }}
|
||||
DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }}
|
||||
DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }}
|
||||
DB_PGSQL_CHARSET: utf8
|
||||
DB_PGSQL_DATABASE: ${{ secrets.DB_PGSQL_DATABASE }}
|
||||
DB_PGSQL_HOST: ${{ secrets.DB_PGSQL_HOST }}
|
||||
DB_PGSQL_PASSWORD: ${{ secrets.DB_PGSQL_PASSWORD }}
|
||||
DB_PGSQL_USERNAME: ${{ secrets.DB_PGSQL_USERNAME }}
|
||||
DB_SQLITE_DATABASE: ${{ runner.temp }}/${{ secrets.DB_SQLITE_DATABASE }}
|
||||
|
||||
- name: add-apt-repository gcc 11 and Qt 5.15.2
|
||||
run: |
|
||||
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
|
||||
sudo add-apt-repository -y ppa:beineri/opt-qt-5.15.2-focal
|
||||
|
||||
- name: add-apt-repository Clang 13
|
||||
if: ${{ matrix.compiler.key == 'clang13' }}
|
||||
run: |
|
||||
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
||||
sudo add-apt-repository -y "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-13 main"
|
||||
|
||||
- name: apt update
|
||||
run: |
|
||||
sudo apt update
|
||||
|
||||
- name: apt install ${{ join(matrix.compiler.apt, ', ') }}, Qt 5.15.2 base, and ccache
|
||||
run: |
|
||||
sudo apt install -y ${{ join(matrix.compiler.apt, ' ') }} qt515base ccache
|
||||
|
||||
- name: ninja install latest version
|
||||
uses: seanmiddleditch/gha-setup-ninja@master
|
||||
with:
|
||||
destination: ${{ runner.workspace }}/../ninja-build
|
||||
|
||||
- name: TinyORM create build folder (${{ matrix.compiler.key }}-cmake-debug)
|
||||
run: |
|
||||
mkdir -p ../TinyORM-builds-cmake/build-${{ matrix.compiler.key }}-cmake-debug
|
||||
|
||||
- name: ccache setup 🕺
|
||||
uses: Chocobo1/setup-ccache-action@v1
|
||||
with:
|
||||
install_ccache: false
|
||||
update_packager_index: false
|
||||
ccache_options: |
|
||||
compression = false
|
||||
max_size = 3G
|
||||
|
||||
# Doesn't work in the manifest mode, I'm using header library only (range-v3) so does not matter
|
||||
# for now, I leave it here anyway.
|
||||
- name: vcpkg set default triplet to x64-linux-dynamic
|
||||
run: |
|
||||
echo 'VCPKG_OVERLAY_TRIPLETS=${{ github.workspace }}/.github/resources/vcpkg-custom-triplets' \
|
||||
>> $GITHUB_ENV
|
||||
echo 'VCPKG_DEFAULT_TRIPLET=x64-linux-dynamic' >> $GITHUB_ENV
|
||||
|
||||
- name: TinyORM cmake configure (${{ matrix.compiler.key }}-cmake-debug)
|
||||
run: >-
|
||||
source .github/resources/qt5env.sh
|
||||
|
||||
cmake
|
||||
-S .
|
||||
-B ../TinyORM-builds-cmake/build-${{ matrix.compiler.key }}-cmake-debug
|
||||
-G Ninja
|
||||
-D CMAKE_CXX_COMPILER:FILEPATH="${{ env.ccache_symlinks_path }}/${{ matrix.compiler.command }}"
|
||||
-D CMAKE_TOOLCHAIN_FILE:FILEPATH="$VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake"
|
||||
-D CMAKE_DISABLE_PRECOMPILE_HEADERS:BOOL=ON
|
||||
-D CMAKE_BUILD_TYPE:BOOL=Debug
|
||||
-D VERBOSE_CONFIGURE:BOOL=ON
|
||||
-D MATCH_EQUAL_EXPORTED_BUILDTREE:BOOL=OFF
|
||||
-D MYSQL_PING:BOOL=ON
|
||||
-D BUILD_TESTS:BOOL=ON
|
||||
|
||||
- name: TinyORM cmake build ✨ (${{ matrix.compiler.key }}-cmake-debug)
|
||||
run: >-
|
||||
source .github/resources/qt5env.sh
|
||||
|
||||
cmake --build ../TinyORM-builds-cmake/build-${{ matrix.compiler.key }}-cmake-debug
|
||||
--target all --parallel 2
|
||||
|
||||
- name: TinyORM execute ctest 🔥
|
||||
working-directory: ../TinyORM-builds-cmake/build-${{ matrix.compiler.key }}-cmake-debug
|
||||
run: ctest
|
||||
env:
|
||||
DB_MYSQL_CHARSET: utf8mb4
|
||||
DB_MYSQL_COLLATION: utf8mb4_0900_ai_ci
|
||||
DB_MYSQL_DATABASE: ${{ secrets.DB_MYSQL_DATABASE }}
|
||||
DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }}
|
||||
DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }}
|
||||
DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }}
|
||||
DB_PGSQL_CHARSET: utf8
|
||||
DB_PGSQL_DATABASE: ${{ secrets.DB_PGSQL_DATABASE }}
|
||||
DB_PGSQL_HOST: ${{ secrets.DB_PGSQL_HOST }}
|
||||
DB_PGSQL_PASSWORD: ${{ secrets.DB_PGSQL_PASSWORD }}
|
||||
DB_PGSQL_USERNAME: ${{ secrets.DB_PGSQL_USERNAME }}
|
||||
DB_SQLITE_DATABASE: ${{ runner.temp }}/${{ secrets.DB_SQLITE_DATABASE }}
|
||||
@@ -0,0 +1,221 @@
|
||||
name: MSYS2 UCRT64
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- gh-actions
|
||||
|
||||
jobs:
|
||||
|
||||
build:
|
||||
name: cmake build / ctest
|
||||
|
||||
runs-on: windows-2022
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
compiler:
|
||||
- key: clang
|
||||
pacboy: [ 'clang:u', 'gcc:u' ]
|
||||
command: clang++.exe
|
||||
|
||||
- key: gcc
|
||||
pacboy: [ 'gcc:u' ]
|
||||
command: g++.exe
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: PostgreSQL start service
|
||||
run: |
|
||||
Set-Service -Name postgresql-x64-14 -StartupType Manual
|
||||
Start-Service postgresql-x64-14
|
||||
|
||||
- name: PostgreSQL add on the $env:Path
|
||||
run: |
|
||||
Write-Output "$env:PGBIN" | Out-File -FilePath $env:GITHUB_PATH -Append
|
||||
|
||||
- name: PostgreSQL check service status
|
||||
run: |
|
||||
$pgsqlService = Get-Service postgresql-x64-14
|
||||
Write-Output $pgsqlService
|
||||
$pgsqlService.status.ToString() -ceq "Running" `
|
||||
-or $(throw 'postgresql-x64-14 service is not running') > $null
|
||||
pg_isready.exe
|
||||
|
||||
- name: PostgreSQL create TinyORM user
|
||||
run: >-
|
||||
psql.exe
|
||||
--command="CREATE USER ${env:DB_PGSQL_USERNAME} PASSWORD '${env:DB_PGSQL_PASSWORD}'"
|
||||
env:
|
||||
DB_PGSQL_PASSWORD: ${{ secrets.DB_PGSQL_PASSWORD }}
|
||||
DB_PGSQL_USERNAME: ${{ secrets.DB_PGSQL_USERNAME }}
|
||||
|
||||
- name: PostgreSQL create TinyORM database
|
||||
run: |
|
||||
createdb.exe --owner=$env:DB_PGSQL_USERNAME $env:DB_PGSQL_DATABASE
|
||||
env:
|
||||
DB_PGSQL_DATABASE: ${{ secrets.DB_PGSQL_DATABASE }}
|
||||
DB_PGSQL_USERNAME: ${{ secrets.DB_PGSQL_USERNAME }}
|
||||
|
||||
- name: MySQL create data folder
|
||||
run: |
|
||||
New-Item -Type Directory '${{ runner.workspace }}/../mysql/data'
|
||||
|
||||
- name: MySQL initialize server and install/start service
|
||||
run: |
|
||||
Copy-Item .github/resources/my.ini C:/mysql
|
||||
mysqld.exe --initialize-insecure --console --datadir='${{ runner.workspace }}/../mysql/data'
|
||||
mysqld.exe --install MySQL --datadir='${{ runner.workspace }}/../mysql/data'
|
||||
Start-Service MySQL
|
||||
|
||||
- name: MySQL change TinyORM password
|
||||
run: >-
|
||||
mysql.exe --host=$env:DB_MYSQL_HOST --user=$env:DB_MYSQL_USERNAME --skip-password
|
||||
--execute="ALTER USER '${env:DB_MYSQL_USERNAME}'@'${env:DB_MYSQL_HOST}'
|
||||
IDENTIFIED BY '${env:DB_MYSQL_PASSWORD}';"
|
||||
env:
|
||||
DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }}
|
||||
DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }}
|
||||
DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }}
|
||||
|
||||
- name: MySQL check service status
|
||||
run: |
|
||||
$mysqlService = Get-Service MySQL
|
||||
Write-Output $mysqlService
|
||||
$mysqlService.status.ToString() -ceq "Running" `
|
||||
-or $(throw 'MySQL service is not running') > $null
|
||||
mysqladmin.exe --bind-address=$env:DB_MYSQL_HOST --user=$env:DB_MYSQL_USERNAME `
|
||||
--password=$env:DB_MYSQL_PASSWORD ping
|
||||
env:
|
||||
DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }}
|
||||
DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }}
|
||||
DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }}
|
||||
|
||||
- name: MySQL create TinyORM database
|
||||
run: >-
|
||||
echo "
|
||||
create database if not exists $env:DB_MYSQL_DATABASE
|
||||
default character set utf8mb4
|
||||
default collate utf8mb4_0900_ai_ci;" |
|
||||
mysql.exe --host=$env:DB_MYSQL_HOST --user=$env:DB_MYSQL_USERNAME
|
||||
--password=$env:DB_MYSQL_PASSWORD
|
||||
env:
|
||||
DB_MYSQL_DATABASE: ${{ secrets.DB_MYSQL_DATABASE }}
|
||||
DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }}
|
||||
DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }}
|
||||
DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }}
|
||||
|
||||
- name: SQLite create TinyORM database
|
||||
run: |
|
||||
touch "$env:DB_SQLITE_DATABASE"
|
||||
env:
|
||||
DB_SQLITE_DATABASE: ${{ runner.temp }}/${{ secrets.DB_SQLITE_DATABASE }}
|
||||
|
||||
- name: PHP enable PDO extensions (pdo_mysql, pdo_pgsql, pdo_sqlite)
|
||||
run: |
|
||||
Add-Content -Path "${env:PHPROOT}/php.ini" -Value `
|
||||
"[PHP]
|
||||
extension=pdo_mysql
|
||||
extension=pdo_pgsql
|
||||
extension=pdo_sqlite
|
||||
"
|
||||
|
||||
- name: testdata composer install (illuminate/database)
|
||||
uses: "ramsey/composer-install@v1"
|
||||
with:
|
||||
composer-options: >-
|
||||
--working-dir=${{ github.workspace }}/tests/testdata
|
||||
--prefer-dist --optimize-autoloader
|
||||
|
||||
- name: Create and Seed tables (MySQL, PostgreSQL, SQLite)
|
||||
working-directory: tests/testdata
|
||||
run: |
|
||||
php.exe ./create_and_seed_database.php
|
||||
env:
|
||||
DB_MYSQL_CHARSET: utf8mb4
|
||||
DB_MYSQL_COLLATION: utf8mb4_0900_ai_ci
|
||||
DB_MYSQL_DATABASE: ${{ secrets.DB_MYSQL_DATABASE }}
|
||||
DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }}
|
||||
DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }}
|
||||
DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }}
|
||||
DB_PGSQL_CHARSET: utf8
|
||||
DB_PGSQL_DATABASE: ${{ secrets.DB_PGSQL_DATABASE }}
|
||||
DB_PGSQL_HOST: ${{ secrets.DB_PGSQL_HOST }}
|
||||
DB_PGSQL_PASSWORD: ${{ secrets.DB_PGSQL_PASSWORD }}
|
||||
DB_PGSQL_USERNAME: ${{ secrets.DB_PGSQL_USERNAME }}
|
||||
DB_SQLITE_DATABASE: ${{ runner.temp }}/${{ secrets.DB_SQLITE_DATABASE }}
|
||||
|
||||
- name: TinyORM create build folder (${{ matrix.compiler.key }}-cmake-debug)
|
||||
run: |
|
||||
mkdir -p ../TinyORM-builds-cmake/build-${{ matrix.compiler.key }}-cmake-debug
|
||||
|
||||
- name: |
|
||||
MSYS2 UCRT64 setup (${{ join(matrix.compiler.pacboy, ', ') }}, lld:u, qt5-base:u, ccache:u)
|
||||
uses: msys2/setup-msys2@v2
|
||||
with:
|
||||
msystem: ucrt64
|
||||
path-type: minimal
|
||||
update: true
|
||||
install: |
|
||||
git
|
||||
pacboy: >-
|
||||
${{ join(matrix.compiler.pacboy, ' ') }} lld:u
|
||||
cmake:u ninja:u ccache:u
|
||||
qt5-base:u
|
||||
libmariadbclient:u postgresql:u
|
||||
|
||||
- name: ccache setup 🕺
|
||||
uses: Chocobo1/setup-ccache-action@v1
|
||||
with:
|
||||
windows_compile_environment: msys2
|
||||
prepend_symlinks_to_path: false
|
||||
install_ccache: false
|
||||
update_packager_index: false
|
||||
ccache_options: |
|
||||
compression = false
|
||||
max_size = 3G
|
||||
|
||||
- name: TinyORM cmake configure (${{ matrix.compiler.key }}-cmake-debug)
|
||||
shell: msys2 {0}
|
||||
run: >-
|
||||
cmake
|
||||
-S .
|
||||
-B ../TinyORM-builds-cmake/build-${{ matrix.compiler.key }}-cmake-debug
|
||||
-G Ninja
|
||||
-D CMAKE_CXX_COMPILER_LAUNCHER=ccache.exe
|
||||
-D CMAKE_CXX_COMPILER:FILEPATH=/ucrt64/bin/${{ matrix.compiler.command }}
|
||||
-D CMAKE_TOOLCHAIN_FILE:FILEPATH="$VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake"
|
||||
-D CMAKE_DISABLE_PRECOMPILE_HEADERS:BOOL=ON
|
||||
-D CMAKE_BUILD_TYPE:BOOL=Debug
|
||||
-D VERBOSE_CONFIGURE:BOOL=ON
|
||||
-D CMAKE_VERBOSE_MAKEFILE:BOOL=OFF
|
||||
-D MATCH_EQUAL_EXPORTED_BUILDTREE:BOOL=OFF
|
||||
-D MYSQL_PING:BOOL=ON
|
||||
-D BUILD_TESTS:BOOL=ON
|
||||
|
||||
- name: TinyORM cmake build ✨ (${{ matrix.compiler.key }}-cmake-debug)
|
||||
shell: msys2 {0}
|
||||
run: >-
|
||||
cmake --build ../TinyORM-builds-cmake/build-${{ matrix.compiler.key }}-cmake-debug
|
||||
--target all --parallel ${{ matrix.compiler.key == 'gcc' && 1 || 2 }}
|
||||
|
||||
- name: TinyORM execute ctest 🔥
|
||||
shell: msys2 {0}
|
||||
working-directory: ../TinyORM-builds-cmake/build-${{ matrix.compiler.key }}-cmake-debug
|
||||
run: ctest
|
||||
env:
|
||||
DB_MYSQL_CHARSET: utf8mb4
|
||||
DB_MYSQL_COLLATION: utf8mb4_0900_ai_ci
|
||||
DB_MYSQL_DATABASE: ${{ secrets.DB_MYSQL_DATABASE }}
|
||||
DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }}
|
||||
DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }}
|
||||
DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }}
|
||||
DB_PGSQL_CHARSET: utf8
|
||||
DB_PGSQL_DATABASE: ${{ secrets.DB_PGSQL_DATABASE }}
|
||||
DB_PGSQL_HOST: ${{ secrets.DB_PGSQL_HOST }}
|
||||
DB_PGSQL_PASSWORD: ${{ secrets.DB_PGSQL_PASSWORD }}
|
||||
DB_PGSQL_USERNAME: ${{ secrets.DB_PGSQL_USERNAME }}
|
||||
DB_SQLITE_DATABASE: ${{ runner.temp }}/${{ secrets.DB_SQLITE_DATABASE }}
|
||||
@@ -0,0 +1,215 @@
|
||||
name: MSVC
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- gh-actions
|
||||
|
||||
jobs:
|
||||
|
||||
build:
|
||||
name: cmake build / ctest
|
||||
|
||||
runs-on: windows-2019
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: PostgreSQL start service
|
||||
run: |
|
||||
Set-Service -Name postgresql-x64-14 -StartupType Manual
|
||||
Start-Service postgresql-x64-14
|
||||
|
||||
- name: PostgreSQL add on the $env:Path
|
||||
run: |
|
||||
Write-Output "$env:PGBIN" | Out-File -FilePath $env:GITHUB_PATH -Append
|
||||
|
||||
- name: PostgreSQL check service status
|
||||
run: |
|
||||
$pgsqlService = Get-Service postgresql-x64-14
|
||||
Write-Output $pgsqlService
|
||||
$pgsqlService.status.ToString() -ceq "Running" `
|
||||
-or $(throw 'postgresql-x64-14 service is not running') > $null
|
||||
pg_isready.exe
|
||||
|
||||
- name: PostgreSQL create TinyORM user
|
||||
run: >-
|
||||
psql.exe
|
||||
--command="CREATE USER ${env:DB_PGSQL_USERNAME} PASSWORD '${env:DB_PGSQL_PASSWORD}'"
|
||||
env:
|
||||
DB_PGSQL_PASSWORD: ${{ secrets.DB_PGSQL_PASSWORD }}
|
||||
DB_PGSQL_USERNAME: ${{ secrets.DB_PGSQL_USERNAME }}
|
||||
|
||||
- name: PostgreSQL create TinyORM database
|
||||
run: |
|
||||
createdb.exe --owner=$env:DB_PGSQL_USERNAME $env:DB_PGSQL_DATABASE
|
||||
env:
|
||||
DB_PGSQL_DATABASE: ${{ secrets.DB_PGSQL_DATABASE }}
|
||||
DB_PGSQL_USERNAME: ${{ secrets.DB_PGSQL_USERNAME }}
|
||||
|
||||
- name: Remove C:\mysql\bin from $env:Path
|
||||
run: |
|
||||
Rename-Item -Path C:\mysql -NewName C:\mysql.bak
|
||||
|
||||
- name: choco install mysql (MySQL 8)
|
||||
run: >-
|
||||
choco install mysql -y --no-progress
|
||||
--params "/port:3306 /serviceName:MySQL
|
||||
/dataLocation:'$(Resolve-Path ${{ runner.workspace }}/../)'"
|
||||
|
||||
Write-Output 'C:\tools\mysql\current\lib;C:\tools\mysql\current\bin' |
|
||||
Out-File -FilePath $env:GITHUB_PATH -Append
|
||||
|
||||
- name: MySQL change TinyORM password
|
||||
run: >-
|
||||
mysql.exe --host=$env:DB_MYSQL_HOST --user=$env:DB_MYSQL_USERNAME --skip-password
|
||||
--execute="ALTER USER '${env:DB_MYSQL_USERNAME}'@'${env:DB_MYSQL_HOST}'
|
||||
IDENTIFIED BY '${env:DB_MYSQL_PASSWORD}';"
|
||||
env:
|
||||
DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }}
|
||||
DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }}
|
||||
DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }}
|
||||
|
||||
- name: MySQL check service status
|
||||
run: |
|
||||
$mysqlService = Get-Service MySQL
|
||||
Write-Output $mysqlService
|
||||
$mysqlService.status.ToString() -ceq "Running" `
|
||||
-or $(throw 'MySQL service is not running') > $null
|
||||
mysqladmin.exe --bind-address=$env:DB_MYSQL_HOST --user=$env:DB_MYSQL_USERNAME `
|
||||
--password=$env:DB_MYSQL_PASSWORD ping
|
||||
env:
|
||||
DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }}
|
||||
DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }}
|
||||
DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }}
|
||||
|
||||
- name: MySQL create TinyORM database
|
||||
run: >-
|
||||
echo "
|
||||
create database if not exists $env:DB_MYSQL_DATABASE
|
||||
default character set utf8mb4
|
||||
default collate utf8mb4_0900_ai_ci;" |
|
||||
mysql.exe --host=$env:DB_MYSQL_HOST --user=$env:DB_MYSQL_USERNAME
|
||||
--password=$env:DB_MYSQL_PASSWORD
|
||||
env:
|
||||
DB_MYSQL_DATABASE: ${{ secrets.DB_MYSQL_DATABASE }}
|
||||
DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }}
|
||||
DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }}
|
||||
DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }}
|
||||
|
||||
- name: SQLite create TinyORM database
|
||||
run: |
|
||||
touch "$env:DB_SQLITE_DATABASE"
|
||||
env:
|
||||
DB_SQLITE_DATABASE: ${{ runner.temp }}/${{ secrets.DB_SQLITE_DATABASE }}
|
||||
|
||||
- name: PHP enable PDO extensions (pdo_mysql, pdo_pgsql, pdo_sqlite)
|
||||
run: |
|
||||
Add-Content -Path "${env:PHPROOT}/php.ini" -Value `
|
||||
"[PHP]
|
||||
extension=pdo_mysql
|
||||
extension=pdo_pgsql
|
||||
extension=pdo_sqlite
|
||||
"
|
||||
|
||||
- name: testdata composer install (illuminate/database)
|
||||
uses: "ramsey/composer-install@v1"
|
||||
with:
|
||||
composer-options: >-
|
||||
--working-dir=${{ github.workspace }}/tests/testdata
|
||||
--prefer-dist --optimize-autoloader
|
||||
|
||||
- name: Create and Seed tables (MySQL, PostgreSQL, SQLite)
|
||||
working-directory: tests/testdata
|
||||
run: |
|
||||
php.exe ./create_and_seed_database.php
|
||||
env:
|
||||
DB_MYSQL_CHARSET: utf8mb4
|
||||
DB_MYSQL_COLLATION: utf8mb4_0900_ai_ci
|
||||
DB_MYSQL_DATABASE: ${{ secrets.DB_MYSQL_DATABASE }}
|
||||
DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }}
|
||||
DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }}
|
||||
DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }}
|
||||
DB_PGSQL_CHARSET: utf8
|
||||
DB_PGSQL_DATABASE: ${{ secrets.DB_PGSQL_DATABASE }}
|
||||
DB_PGSQL_HOST: ${{ secrets.DB_PGSQL_HOST }}
|
||||
DB_PGSQL_PASSWORD: ${{ secrets.DB_PGSQL_PASSWORD }}
|
||||
DB_PGSQL_USERNAME: ${{ secrets.DB_PGSQL_USERNAME }}
|
||||
DB_SQLITE_DATABASE: ${{ runner.temp }}/${{ secrets.DB_SQLITE_DATABASE }}
|
||||
|
||||
- name: TinyORM create build folder (msvc-cmake-debug)
|
||||
run: |
|
||||
mkdir -p ../TinyORM-builds-cmake/build-msvc-cmake-debug
|
||||
|
||||
- name: Qt 5.15.2 install base components
|
||||
uses: jurplel/install-qt-action@v2
|
||||
with:
|
||||
version: 5.15.2
|
||||
arch: win64_msvc2019_64
|
||||
setup-python: false
|
||||
extra: --external 7z.exe
|
||||
dir: '${{ runner.workspace }}/../'
|
||||
|
||||
- name: QMYSQL install driver dlls (Qt 5.15.2)
|
||||
working-directory: ${{ runner.temp }}
|
||||
run: >-
|
||||
$response = Invoke-WebRequest -Uri $env:DOWNLOAD_QMYSQL_DLLS
|
||||
|
||||
$filename = [System.Net.Mime.ContentDisposition]::new(
|
||||
$response.Headers['Content-Disposition']).FileName
|
||||
|
||||
$filepath = Join-Path -Path $(Resolve-Path -Path .) -ChildPath $filename
|
||||
|
||||
$response | Select-Object -ExpandProperty Content |
|
||||
Set-Content -Path $filepath -AsByteStream
|
||||
|
||||
7z.exe x -o"${env:QT_PLUGIN_PATH}/sqldrivers" $filepath
|
||||
env:
|
||||
DOWNLOAD_QMYSQL_DLLS: ${{ secrets.DOWNLOAD_QMYSQL_DLLS }}
|
||||
|
||||
- name: vcpkg set default triplet to x64-windows
|
||||
run: >-
|
||||
Write-Output 'VCPKG_DEFAULT_TRIPLET=x64-windows' |
|
||||
Out-File -FilePath $env:GITHUB_ENV -Append
|
||||
|
||||
- name: Visual Studio 2019 pwsh shell setup
|
||||
uses: egor-tensin/vs-shell@v2
|
||||
with:
|
||||
arch: x64
|
||||
|
||||
- name: TinyORM cmake configure (msvc-cmake-debug)
|
||||
run: >-
|
||||
cmake
|
||||
-S .
|
||||
-B ../TinyORM-builds-cmake/build-msvc-cmake-debug
|
||||
-G Ninja
|
||||
-D CMAKE_TOOLCHAIN_FILE:FILEPATH="${env:VCPKG_INSTALLATION_ROOT}/scripts/buildsystems/vcpkg.cmake"
|
||||
-D CMAKE_BUILD_TYPE:BOOL=Debug
|
||||
-D VERBOSE_CONFIGURE:BOOL=ON
|
||||
-D CMAKE_VERBOSE_MAKEFILE:BOOL=OFF
|
||||
-D MATCH_EQUAL_EXPORTED_BUILDTREE:BOOL=OFF
|
||||
-D MYSQL_PING:BOOL=ON
|
||||
-D BUILD_TESTS:BOOL=ON
|
||||
|
||||
- name: TinyORM cmake build ✨ (msvc-cmake-debug)
|
||||
run: >-
|
||||
cmake --build ../TinyORM-builds-cmake/build-msvc-cmake-debug --target all --parallel 2
|
||||
|
||||
- name: TinyORM execute ctest 🔥
|
||||
working-directory: ../TinyORM-builds-cmake/build-msvc-cmake-debug
|
||||
run: ctest
|
||||
env:
|
||||
DB_MYSQL_CHARSET: utf8mb4
|
||||
DB_MYSQL_COLLATION: utf8mb4_0900_ai_ci
|
||||
DB_MYSQL_DATABASE: ${{ secrets.DB_MYSQL_DATABASE }}
|
||||
DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }}
|
||||
DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }}
|
||||
DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }}
|
||||
DB_PGSQL_CHARSET: utf8
|
||||
DB_PGSQL_DATABASE: ${{ secrets.DB_PGSQL_DATABASE }}
|
||||
DB_PGSQL_HOST: ${{ secrets.DB_PGSQL_HOST }}
|
||||
DB_PGSQL_PASSWORD: ${{ secrets.DB_PGSQL_PASSWORD }}
|
||||
DB_PGSQL_USERNAME: ${{ secrets.DB_PGSQL_USERNAME }}
|
||||
DB_SQLITE_DATABASE: ${{ runner.temp }}/${{ secrets.DB_SQLITE_DATABASE }}
|
||||
Reference in New Issue
Block a user