18
18
19
19
runs-on : windows-2019
20
20
21
+ env :
22
+ TINY_QT_VERSION : 5.15.2
23
+ TINY_QT_SPEC : win64_msvc2019_64
24
+ # First value is a compressed data size
25
+ # ~ 175 * 3 + 100
26
+ TINY_CCACHE_MAX_SIZE : 650M
27
+ TINY_MYSQL_SERVICE : MySQL
28
+ TINY_POSTGRES_SERVICE : postgresql-x64-14
29
+
21
30
steps :
22
31
- uses : actions/checkout@v4
23
32
35
44
36
45
$mysqlDataPath = Join-Path -Path $runnerWorkPath -ChildPath 'mysql/data'
37
46
"TinyMySQLDataPath=$mysqlDataPath" >> $env:GITHUB_ENV
47
+
48
+ "TinyParallel=$env:NUMBER_OF_PROCESSORS" >> $env:GITHUB_ENV
38
49
env :
39
50
DB_SQLITE_DATABASE : ${{ secrets.DB_SQLITE_DATABASE }}
40
51
@@ -44,21 +55,19 @@ jobs:
44
55
45
56
- name : PostgreSQL service start
46
57
run : |
47
- Set-Service -Name postgresql-x64-14 -StartupType Manual
48
- Start-Service postgresql-x64-14
58
+ Set-Service -Name $env:TINY_POSTGRES_SERVICE -StartupType Manual
59
+ Start-Service $env:TINY_POSTGRES_SERVICE
49
60
50
61
- name : PostgreSQL service check status
51
62
run : |
52
- $serviceName = 'postgresql-x64-14'
53
-
54
63
Write-Output '::group::Get-Service'
55
- $pgsqlService = Get-Service $serviceName
64
+ $pgsqlService = Get-Service $env:TINY_POSTGRES_SERVICE
56
65
Write-Output $pgsqlService
57
66
Write-Output '::endgroup::'
58
67
59
68
Write-Output '::group::Service running check'
60
69
$pgsqlService.status.ToString() -ceq 'Running' -or `
61
- $(throw "$serviceName service is not running") > $null
70
+ $(throw "$env:TINY_POSTGRES_SERVICE service is not running") > $null
62
71
Write-Output '::endgroup::'
63
72
64
73
Write-Output '::group::pg_isready'
@@ -109,8 +118,8 @@ jobs:
109
118
110
119
- name : MySQL service install/start
111
120
run : |
112
- mysqld.exe --install MySQL
113
- Start-Service MySQL
121
+ mysqld.exe --install $env:TINY_MYSQL_SERVICE
122
+ Start-Service $env:TINY_MYSQL_SERVICE
114
123
115
124
# The secured_password is store in the string form so we have to re-create the [SecureString]
116
125
# from this encrypted string and then it can be decrypted as normally would 😬
@@ -178,24 +187,22 @@ jobs:
178
187
"source $filepath" |
179
188
mysql.exe --user=$env:DB_MYSQL_ROOT_USERNAME --password=$env:DB_MYSQL_ROOT_PASSWORD mysql
180
189
181
- Restart-Service MySQL
190
+ Restart-Service $env:TINY_MYSQL_SERVICE
182
191
env :
183
192
extracted_folder : ${{ steps.downloads-initialize-mysql-timezone-tables.outputs.ExtractedFolder }}
184
193
DB_MYSQL_ROOT_PASSWORD : ${{ secrets.DB_MYSQL_ROOT_PASSWORD }}
185
194
DB_MYSQL_ROOT_USERNAME : ${{ secrets.DB_MYSQL_ROOT_USERNAME }}
186
195
187
196
- name : MySQL service check status
188
197
run : |
189
- $serviceName = 'MySQL'
190
-
191
198
Write-Output '::group::Get-Service'
192
- $mysqlService = Get-Service $serviceName
199
+ $mysqlService = Get-Service $env:TINY_MYSQL_SERVICE
193
200
Write-Output $mysqlService
194
201
Write-Output '::endgroup::'
195
202
196
203
Write-Output '::group::Service running check'
197
204
$mysqlService.status.ToString() -ceq 'Running' -or `
198
- $(throw "$serviceName service is not running") > $null
205
+ $(throw "$env:TINY_MYSQL_SERVICE service is not running") > $null
199
206
Write-Output '::endgroup::'
200
207
201
208
Write-Output '::group::Ping'
@@ -261,18 +268,18 @@ jobs:
261
268
postgres.exe --version
262
269
Write-Output '::endgroup::'
263
270
264
- - name : Qt 5.15.2 install base components
271
+ - name : Qt ${{ env.TINY_QT_VERSION }} install base components
265
272
uses : jurplel/install-qt-action@v3
266
273
with :
267
274
archives : qtbase
268
- version : 5.15.2
269
- arch : win64_msvc2019_64
275
+ version : ${{ env.TINY_QT_VERSION }}
276
+ arch : ${{ env.TINY_QT_SPEC }}
270
277
cache : true
271
278
setup-python : false
272
279
extra : --external 7z.exe
273
280
dir : ${{ env.TinyRunnerWorkPath }}
274
281
275
- - name : QMYSQL driver dlls initialize download (Qt 5.15.2 )
282
+ - name : QMYSQL driver dlls initialize download (Qt ${{ env.TINY_QT_VERSION }} )
276
283
id : downloads-initialize-qmysql-dlls
277
284
run : |
278
285
$filename = (Split-Path -Path $env:URL_QMYSQL_DLLS_MSVC_X64_QT_5 -Leaf)
@@ -298,7 +305,7 @@ jobs:
298
305
cache_hash : ${{ steps.downloads-initialize-qmysql-dlls.outputs.Hash }}
299
306
cache_name : qmysql-dlls-qt5
300
307
301
- - name : QMYSQL driver dlls download (Qt 5.15.2 )
308
+ - name : QMYSQL driver dlls download (Qt ${{ env.TINY_QT_VERSION }} )
302
309
if : steps.downloads-cache-qmysql-dlls.outputs.cache-hit != 'true'
303
310
run : >-
304
311
$response = Invoke-WebRequest -Uri $env:URL_QMYSQL_DLLS_MSVC_X64_QT_5
@@ -309,13 +316,13 @@ jobs:
309
316
archive_filepath : ${{ steps.downloads-initialize-qmysql-dlls.outputs.Filepath }}
310
317
URL_QMYSQL_DLLS_MSVC_X64_QT_5 : ${{ secrets.URL_QMYSQL_DLLS_MSVC_X64_QT_5 }}
311
318
312
- - name : QMYSQL driver dlls install (Qt 5.15.2 )
319
+ - name : QMYSQL driver dlls install (Qt ${{ env.TINY_QT_VERSION }} )
313
320
run : |
314
321
7z.exe x -y -o"$env:QT_PLUGIN_PATH/sqldrivers" $env:archive_filepath
315
322
env :
316
323
archive_filepath : ${{ steps.downloads-initialize-qmysql-dlls.outputs.Filepath }}
317
324
318
- - name : MySQL 8 libmysql.dll initialize download (Qt 5.15.2 )
325
+ - name : MySQL 8 libmysql.dll initialize download (Qt ${{ env.TINY_QT_VERSION }} )
319
326
id : downloads-initialize-mysql_8-libmysql-dll
320
327
run : |
321
328
$filename = (Split-Path -Path $env:URL_LIBMYSQL_DLL_MYSQL_8_MSVC_X64_QT_5 -Leaf)
@@ -341,7 +348,7 @@ jobs:
341
348
cache_hash : ${{ steps.downloads-initialize-mysql_8-libmysql-dll.outputs.Hash }}
342
349
cache_name : mysql_8-libmysql-dll
343
350
344
- - name : MySQL 8 libmysql.dll download (Qt 5.15.2 )
351
+ - name : MySQL 8 libmysql.dll download (Qt ${{ env.TINY_QT_VERSION }} )
345
352
if : steps.downloads-cache-mysql_8-libmysql-dll.outputs.cache-hit != 'true'
346
353
run : |
347
354
$response = Invoke-WebRequest -Uri $env:URL_LIBMYSQL_DLL_MYSQL_8_MSVC_X64_QT_5
@@ -352,7 +359,7 @@ jobs:
352
359
archive_filepath : ${{ steps.downloads-initialize-mysql_8-libmysql-dll.outputs.Filepath }}
353
360
URL_LIBMYSQL_DLL_MYSQL_8_MSVC_X64_QT_5 : ${{ secrets.URL_LIBMYSQL_DLL_MYSQL_8_MSVC_X64_QT_5 }}
354
361
355
- - name : MySQL 8 libmysql.dll install (Qt 5.15.2 )
362
+ - name : MySQL 8 libmysql.dll install (Qt ${{ env.TINY_QT_VERSION }} )
356
363
run : |
357
364
7z.exe x -y -o"$env:TinyRunnerWorkPath/TinyORM-bin" $env:archive_filepath
358
365
env :
@@ -390,9 +397,7 @@ jobs:
390
397
391
398
- name : Ccache prepare configuration 🥳
392
399
run : |
393
- # First value is compressed data size
394
- # ~ 175 * 3 + 100
395
- ccache.exe --set-config max_size=650M
400
+ ccache.exe --set-config max_size=$env:TINY_CCACHE_MAX_SIZE
396
401
ccache.exe --set-config sloppiness=pch_defines,time_macros
397
402
ccache.exe --set-config depend_mode=true
398
403
ccache.exe --set-config inode_cache=true
@@ -417,7 +422,7 @@ jobs:
417
422
run : |
418
423
"VCPKG_ROOT=$env:VCPKG_INSTALLATION_ROOT" >> $env:GITHUB_ENV
419
424
'VCPKG_DEFAULT_TRIPLET=x64-windows' >> $env:GITHUB_ENV
420
- ' VCPKG_MAX_CONCURRENCY=2' >> $env:GITHUB_ENV
425
+ " VCPKG_MAX_CONCURRENCY=$env:TinyParallel" >> $env:GITHUB_ENV
421
426
422
427
- name : CMake print version
423
428
run : |
@@ -457,8 +462,9 @@ jobs:
457
462
-D BUILD_DRIVERS:BOOL=OFF
458
463
459
464
- name : TinyORM cmake build ✨ (msvc-cmake-debug)
460
- run : |
461
- cmake.exe --build ../TinyORM-builds-cmake/build-msvc-cmake-debug --target all --parallel 2
465
+ run : >-
466
+ cmake.exe --build ../TinyORM-builds-cmake/build-msvc-cmake-debug --target all
467
+ --parallel $env:TinyParallel
462
468
463
469
- name : Ccache print statistics
464
470
run : |
@@ -488,10 +494,12 @@ jobs:
488
494
DB_SQLITE_DATABASE : ${{ env.TinySQLitePath }}
489
495
TOM_TESTDATA_ENV : ${{ vars.TOM_TESTDATA_ENV }}
490
496
497
+ # $env:NUMBER_OF_PROCESSORS / 2 : rounds down
491
498
- name : TinyORM execute ctest 🔥
492
499
working-directory : ../TinyORM-builds-cmake/build-msvc-cmake-debug
493
- run : |
494
- ctest.exe --output-on-failure --parallel 4
500
+ run : >-
501
+ ctest.exe --output-on-failure
502
+ --parallel ([int] $env:TinyParallel + $env:NUMBER_OF_PROCESSORS / 2)
495
503
env :
496
504
DB_MYSQL_CHARSET : ${{ secrets.DB_MYSQL_CHARSET }}
497
505
DB_MYSQL_COLLATION : ${{ secrets.DB_MYSQL_57_COLLATION }}
0 commit comments