Skip to content

Commit 39001dd

Browse files
committed
workflows drivers for msvc2022 Qt6
1 parent 98b67a5 commit 39001dd

File tree

1 file changed

+259
-0
lines changed

1 file changed

+259
-0
lines changed
+259
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,259 @@
1+
# MySQL
2+
# ---
3+
# Forces TLS connections with the caching_sha2_password and certificate validation, also validates
4+
# issuer == CN=MySQL_Server_TinyORM_Auto_Generated_CA_Certificate and
5+
# subject == CN=MySQL_Server_TinyORM_Auto_Generated_Client_Certificate.
6+
7+
# PostgreSQL
8+
# ---
9+
# Forces TLS connections with the certificate authentication and full certificate validation
10+
# using the clientname=DN map=dn in the pg_hba.conf, so the username is matched against
11+
# the entire Distinguished Name (DN) of the client certificate and sslmode=verify-full
12+
# on the libpq client side, so the the server host name is matched against the CN (Common Name)
13+
# stored in the server certificate.
14+
15+
name: MSVC2022 Qt6.7 TinyDrivers
16+
17+
on:
18+
push:
19+
branches:
20+
- main
21+
- gh-actions
22+
- silverqx-develop
23+
24+
# I will not remove the build folders before a job execution it's not necessary and
25+
# it will be faster this way. I can still remove them manually if needed or
26+
# if something goes wrong.
27+
28+
jobs:
29+
30+
build:
31+
name: cmake build / ctest
32+
33+
# Self-hosted runner is Windows 11 (Release Preview channel - 23H2)
34+
runs-on: [self-hosted, windows]
35+
36+
strategy:
37+
matrix:
38+
build-type:
39+
- key: debug
40+
name: Debug
41+
42+
- key: release
43+
name: Release
44+
45+
steps:
46+
- uses: actions/checkout@v4
47+
with:
48+
path: main
49+
50+
- name: TinyORM prepare environment
51+
run: |
52+
$runnerWorkPath = Resolve-Path -Path '${{ runner.workspace }}/..'
53+
"TinyRunnerWorkPath=$runnerWorkPath" >> $env:GITHUB_ENV
54+
55+
$mysqlExePath = (Get-Command -Name mysql.exe).Source
56+
$mysqlInstallationPath = Split-Path -Parent -Path (Split-Path -Parent -Path $mysqlExePath)
57+
"TinyMySQLInstallationPath=$mysqlInstallationPath" >> $env:GITHUB_ENV
58+
59+
"TinyParallel=5" >> $env:GITHUB_ENV
60+
61+
$tinyormPath = Resolve-Path -Path ./main
62+
"TinyORMPath=$tinyormPath" >> $env:GITHUB_ENV
63+
env:
64+
DB_SQLITE_DATABASE: ${{ secrets.DB_SQLITE_DATABASE }}
65+
66+
- name: MySQL add libmysql.dll on the $env:Path, INCLUDE, and LIB
67+
run: |
68+
'${{ env.TinyMySQLInstallationPath }}\lib' >> $env:GITHUB_PATH
69+
# Needed by the lastest FindMySQL.cmake module, it stopped working without this
70+
'INCLUDE=${{ env.TinyMySQLInstallationPath }}\include' >> $env:GITHUB_ENV
71+
'LIB=${{ env.TinyMySQLInstallationPath }}\lib' >> $env:GITHUB_ENV
72+
73+
- name: MySQL service check status
74+
run: |
75+
$serviceName = 'MySQL83'
76+
77+
Write-Output '::group::Get-Service'
78+
$mysqlService = Get-Service $serviceName
79+
Write-Output $mysqlService
80+
Write-Output '::endgroup::'
81+
82+
Write-Output '::group::Service running check'
83+
$mysqlService.status.ToString() -ceq 'Running' -or `
84+
$(throw "$serviceName service is not running") > $null
85+
Write-Output '::endgroup::'
86+
87+
# Write-Output '::group::Ping'
88+
# mysqladmin.exe --user=$env:DB_MYSQL_USERNAME --password=$env:DB_MYSQL_PASSWORD ping
89+
# Write-Output '::endgroup::'
90+
env:
91+
DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD_SELF }}
92+
DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME_SELF }}
93+
94+
- name: Print MySQL database versions
95+
run: |
96+
Write-Output '::group::MySQL version'
97+
mysql.exe --version
98+
Write-Output '::endgroup::'
99+
100+
- name: Ninja install latest version
101+
uses: seanmiddleditch/gha-setup-ninja@master
102+
with:
103+
destination: ${{ env.TinyRunnerWorkPath }}/ninja-build
104+
105+
- name: Visual Studio 2022 pwsh shell setup
106+
uses: ilammy/msvc-dev-cmd@v1
107+
with:
108+
arch: x64
109+
110+
# Don't use the default CCACHE_DIR path on self-hosted runners
111+
- name: Ccache prepare environment
112+
run: |
113+
$ccacheDirPath = Join-Path -Path '${{ runner.workspace }}' -ChildPath ccache
114+
"CCACHE_DIR=$ccacheDirPath" >> $env:GITHUB_ENV
115+
116+
# I'm managing the ccache configuration manually on self-hosted runners using the ccache.conf
117+
# because it's used by more actions.
118+
119+
- name: Ccache print version and configuration
120+
run: |
121+
Write-Output '::group::Print version'
122+
ccache.exe --version
123+
Write-Output '::endgroup::'
124+
125+
Write-Output '::group::Print ccache config'
126+
ccache.exe --show-config
127+
Write-Output '::endgroup::'
128+
129+
# Must be after the ilammy/msvc-dev-cmd@v1 because vcvars64 overrides the VCPKG_ROOT
130+
- name: vcpkg prepare environment
131+
run: |
132+
"VCPKG_ROOT=$env:VCPKG_INSTALLATION_ROOT" >> $env:GITHUB_ENV
133+
'VCPKG_DEFAULT_TRIPLET=x64-windows' >> $env:GITHUB_ENV
134+
'VCPKG_MAX_CONCURRENCY=2' >> $env:GITHUB_ENV
135+
136+
- name: Self-hosted runner prepare environment
137+
run: |
138+
'C:\Program Files\CMake\bin' >> $env:GITHUB_PATH
139+
"$env:VCPKG_INSTALLATION_ROOT" >> $env:GITHUB_PATH
140+
"$env:TINY_QT_ROOT\6.7.0\msvc2019_64\bin" >> $env:GITHUB_PATH
141+
142+
- name: CMake print version
143+
run: |
144+
cmake.exe --version
145+
146+
- name: vcpkg print version
147+
run: |
148+
vcpkg.exe --version
149+
150+
- name: TinyORM create build folder (TinyDrivers-msvc-${{ matrix.build-type.key }})
151+
run: >-
152+
$buildTreesPath =
153+
'../TinyORM-builds-cmake/TinyDrivers-msvc-${{ matrix.build-type.key }}'
154+
155+
if (-not (Test-Path $buildTreesPath)) {
156+
New-Item -Type Directory $buildTreesPath
157+
}
158+
159+
- name: Ccache clear statistics
160+
run: |
161+
ccache.exe --zero-stats
162+
163+
- name: TinyORM cmake configure (TinyDrivers-msvc-${{ matrix.build-type.key }})
164+
working-directory: ${{ env.TinyORMPath }}
165+
run: >-
166+
cmake.exe
167+
-S .
168+
-B '${{ runner.workspace }}/TinyORM-builds-cmake/TinyDrivers-msvc-${{ matrix.build-type.key }}'
169+
-G Ninja
170+
-D CMAKE_CXX_COMPILER_LAUNCHER:FILEPATH='C:/ProgramData/chocolatey/bin/ccache.exe'
171+
-D CMAKE_TOOLCHAIN_FILE:FILEPATH="$env:VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake"
172+
-D CMAKE_DISABLE_PRECOMPILE_HEADERS:BOOL=ON
173+
-D CMAKE_EXPORT_PACKAGE_REGISTRY:BOOL=OFF
174+
-D CMAKE_BUILD_TYPE:STRING=${{ matrix.build-type.name }}
175+
-D CMAKE_CXX_SCAN_FOR_MODULES:BOOL=OFF
176+
-D VCPKG_APPLOCAL_DEPS:BOOL=OFF
177+
-D VERBOSE_CONFIGURE:BOOL=ON
178+
-D MATCH_EQUAL_EXPORTED_BUILDTREE:BOOL=ON
179+
-D MYSQL_PING:BOOL=ON
180+
-D BUILD_TESTS:BOOL=ON
181+
-D ORM:BOOL=ON
182+
-D TOM:BOOL=ON
183+
-D TOM_EXAMPLE:BOOL=ON
184+
-D BUILD_DRIVERS:BOOL=ON
185+
-D DRIVERS_TYPE:STRING=Loadable
186+
187+
- name: TinyORM cmake build ✨ (TinyDrivers-msvc-${{ matrix.build-type.key }})
188+
working-directory: >-
189+
../TinyORM-builds-cmake/TinyDrivers-msvc-${{ matrix.build-type.key }}
190+
run: |
191+
cmake.exe --build . --target all --parallel ${{ env.TinyParallel }}
192+
193+
- name: Ccache print statistics
194+
run: |
195+
ccache.exe --show-stats -vv
196+
197+
# Used migrate:fresh instead (is safer)
198+
- name: Create and Seed tables for unit tests 🎉
199+
working-directory: >-
200+
../TinyORM-builds-cmake/TinyDrivers-msvc-${{ matrix.build-type.key }}/tests/testdata_tom
201+
run: |
202+
$env:Path = '..\..;' + $env:Path
203+
204+
.\tom_testdata.exe migrate:fresh --database=tinyorm_testdata_tom_mysql --seed --no-ansi
205+
env:
206+
DB_MYSQL_CHARSET: ${{ secrets.DB_MYSQL_CHARSET }}
207+
DB_MYSQL_COLLATION: ${{ secrets.DB_MYSQL_COLLATION }}
208+
DB_MYSQL_DATABASE: ${{ secrets.DB_MYSQL_DATABASE }}
209+
DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST_SELF }}
210+
DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD_SELF }}
211+
DB_MYSQL_SSL_CA: ${{ secrets.DB_MYSQL_DATA_SELF }}/ca.pem
212+
DB_MYSQL_SSL_CERT: ${{ secrets.DB_MYSQL_DATA_SELF }}/client-cert.pem
213+
DB_MYSQL_SSL_KEY: ${{ secrets.DB_MYSQL_DATA_SELF }}/client-key.pem
214+
DB_MYSQL_SSL_MODE: ${{ secrets.DB_MYSQL_SSL_MODE }}
215+
DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME_SELF }}
216+
TOM_TESTDATA_ENV: testing
217+
218+
- name: TinyORM execute ctest 🔥
219+
working-directory: ../TinyORM-builds-cmake/TinyDrivers-msvc-${{ matrix.build-type.key }}
220+
run: |
221+
ctest.exe --output-on-failure
222+
env:
223+
DB_MYSQL_CHARSET: ${{ secrets.DB_MYSQL_CHARSET }}
224+
DB_MYSQL_COLLATION: ${{ secrets.DB_MYSQL_COLLATION }}
225+
DB_MYSQL_DATABASE: ${{ secrets.DB_MYSQL_DATABASE }}
226+
DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST_SELF }}
227+
DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD_SELF }}
228+
DB_MYSQL_SSL_CA: ${{ secrets.DB_MYSQL_DATA_SELF }}/ca.pem
229+
DB_MYSQL_SSL_CERT: ${{ secrets.DB_MYSQL_DATA_SELF }}/client-cert.pem
230+
DB_MYSQL_SSL_KEY: ${{ secrets.DB_MYSQL_DATA_SELF }}/client-key.pem
231+
DB_MYSQL_SSL_MODE: ${{ secrets.DB_MYSQL_SSL_MODE }}
232+
DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME_SELF }}
233+
TOM_TESTS_ENV: testing
234+
235+
- name: Tom example test some commands (MySQL) 🚀
236+
working-directory: >-
237+
../TinyORM-builds-cmake/TinyDrivers-msvc-${{ matrix.build-type.key }}/examples/tom
238+
run: |
239+
$env:Path = '..\..;' + $env:Path
240+
241+
.\tom.exe migrate:reset --database=tinyorm_tom_mysql --no-ansi
242+
.\tom.exe migrate:uninstall --reset --database=tinyorm_tom_mysql --no-ansi
243+
.\tom.exe migrate:install --database=tinyorm_tom_mysql --no-ansi
244+
.\tom.exe migrate:status --database=tinyorm_tom_mysql --no-ansi
245+
.\tom.exe migrate --database=tinyorm_tom_mysql --seed --no-ansi
246+
.\tom.exe migrate:refresh --database=tinyorm_tom_mysql --seed --no-ansi
247+
.\tom.exe migrate:status --database=tinyorm_tom_mysql --no-ansi
248+
env:
249+
DB_MYSQL_CHARSET: ${{ secrets.DB_MYSQL_CHARSET }}
250+
DB_MYSQL_COLLATION: ${{ secrets.DB_MYSQL_COLLATION }}
251+
DB_MYSQL_DATABASE: ${{ secrets.DB_MYSQL_DATABASE }}
252+
DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST_SELF }}
253+
DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD_SELF }}
254+
DB_MYSQL_SSL_CA: ${{ secrets.DB_MYSQL_DATA_SELF }}/ca.pem
255+
DB_MYSQL_SSL_CERT: ${{ secrets.DB_MYSQL_DATA_SELF }}/client-cert.pem
256+
DB_MYSQL_SSL_KEY: ${{ secrets.DB_MYSQL_DATA_SELF }}/client-key.pem
257+
DB_MYSQL_SSL_MODE: ${{ secrets.DB_MYSQL_SSL_MODE }}
258+
DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME_SELF }}
259+
TOM_EXAMPLE_ENV: testing

0 commit comments

Comments
 (0)