@@ -156,14 +156,13 @@ jobs:
156156 if : github.ref_type != 'tag'
157157 runs-on : ${{ matrix.os }}
158158 env :
159- VS_VERSION : ${{ (matrix.os == 'windows-2019' && '2019' || (matrix.os == 'windows- 2022' && '2022' || '')) }}
159+ VS_VERSION : 2022
160160
161161 strategy :
162162 fail-fast : false
163163 matrix :
164164 os :
165- - windows-2022
166- - windows-2019
165+ - windows-2025
167166 platform : [x64, x86]
168167
169168 steps :
@@ -186,7 +185,7 @@ jobs:
186185 shell : cmd
187186 env :
188187 PLATFORM : ${{ matrix.platform }}
189- VS_SCRIPT : ${{ matrix.os == 'windows-2022' && ' C:\Program Files\Microsoft Visual Studio\%VS_VERSION%\Enterprise\Common7\Tools\VsDevCmd.bat' || 'C:\Program Files (x86)\Microsoft Visual Studio\%VS_VERSION%\Enterprise\Common7\Tools\VsDevCmd.bat' }}
188+ VS_SCRIPT : C:\Program Files\Microsoft Visual Studio\%VS_VERSION%\Enterprise\Common7\Tools\VsDevCmd.bat
190189 run : |
191190 set SEVENZIP=C:\Program Files\7-Zip
192191 set INNO6_SETUP_PATH=C:\Program Files (x86)\Inno Setup 6
@@ -211,6 +210,78 @@ jobs:
211210 name : firebird-windows-vs-${{ env.VS_VERSION }}-${{ matrix.platform }}-installer
212211 path : builds/install_images/*-windows-${{ matrix.platform }}.exe
213212
213+ # Windows ARM container is not yet available, so official build is done directly in Windows 11 runner
214+ build-windows-arm64 :
215+ # if: github.ref_type != 'tag'
216+ runs-on : windows-11-arm
217+ env :
218+ VS_VERSION : 2022
219+
220+ steps :
221+ - name : Checkout
222+ uses : actions/checkout@v4
223+ with :
224+ fetch-depth : 10
225+
226+ - name : Adjust snapshot build number
227+ uses : ./.github/actions/adjust-snapshot-buildno
228+
229+ - name : Prepare
230+ shell : cmd
231+ run : |
232+ for /r %%i in (*.bat) do unix2dos "%%i"
233+ REM choco uninstall --no-progress --yes innosetup
234+ choco install --no-progress --yes innosetup --version=6.4.0
235+
236+ - name : Build
237+ shell : cmd
238+ env :
239+ VS_SCRIPT : C:\Program Files\Microsoft Visual Studio\%VS_VERSION%\Enterprise\Common7\Tools\VsDevCmd.bat
240+ run : |
241+ set SEVENZIP=C:\Program Files\7-Zip
242+ set INNO6_SETUP_PATH=C:\Program Files (x86)\Inno Setup 6
243+ set FB_VS_ARCH=arm64
244+ set FB_PROCESSOR_ARCHITECTURE=ARM64
245+ call "%VS_SCRIPT%" -arch=%FB_VS_ARCH%
246+ cd builds\win32
247+ call run_all.bat PDB
248+ call run_tests.bat
249+
250+ - name : Upload zip
251+ uses : actions/upload-artifact@v4
252+ with :
253+ name : firebird-windows-arm64-zip
254+ path : builds/install_images/Firebird-*-windows-arm64.zip
255+
256+ - name : Upload zip (withDebugSymbols)
257+ uses : actions/upload-artifact@v4
258+ with :
259+ name : firebird-windows-arm64-withDebugSymbols-zip
260+ path : builds/install_images/Firebird-*-windows-arm64-withDebugSymbols.zip
261+
262+ - name : Upload installer
263+ uses : actions/upload-artifact@v4
264+ with :
265+ name : firebird-windows-arm64-installer
266+ path : builds/install_images/*-windows-arm64.exe
267+
268+ - name : Upload installer (withDebugSymbols)
269+ uses : actions/upload-artifact@v4
270+ with :
271+ name : firebird-windows-arm64-withDebugSymbols-installer
272+ path : builds/install_images/*-windows-arm64-withDebugSymbols.exe
273+
274+ - name : Create release
275+ uses : ./.github/actions/create-release
276+ with :
277+ token : ${{ secrets.SNAPSHOT_RELEASE_TOKEN }}
278+ deletePatterns : |
279+ Firebird-*-windows-arm64*.exe
280+ Firebird-*-windows-arm64*.zip
281+ uploadFiles : |
282+ builds/install_images/Firebird-*-windows-arm64*.exe
283+ builds/install_images/Firebird-*-windows-arm64*.zip
284+
214285 build-windows-docker :
215286 runs-on : windows-2022
216287
@@ -290,8 +361,6 @@ jobs:
290361 build-macos :
291362 name : build-macos-${{ matrix.arch }}
292363 runs-on : ${{ (matrix.arch == 'arm64' && 'macos-14') || 'macos-13' }}
293- env :
294- VCPKG_BINARY_SOURCES : " clear;x-gha,readwrite"
295364
296365 strategy :
297366 fail-fast : false
@@ -312,14 +381,16 @@ jobs:
312381
313382 - name : Prepare - Install tools
314383 run : |
315- brew install automake autoconf-archive cmake libtool ninja
384+ brew install --quiet automake autoconf-archive libtool ninja
316385
317- - name : Export GitHub Actions cache environment variables
318- uses : actions/github-script@v7
386+ - name : Restore vcpkg cache
387+ uses : actions/cache/restore@v4
388+ id : restore-vcpkg-cache
319389 with :
320- script : |
321- core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
322- core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
390+ path : ~/.cache/vcpkg/archives
391+ key : vcpkg-cache-${{ runner.os }}-${{ matrix.arch }}-${{ hashFiles('vcpkg-custom/**', 'vcpkg.json', 'vcpkg-configuration.json') }}
392+ restore-keys : |
393+ vcpkg-cache-${{ runner.os }}-${{ matrix.arch }}-
323394
324395 - name : Build
325396 run : |
@@ -347,6 +418,14 @@ jobs:
347418 mkdir gen/artifacts
348419 mv gen/Release/*.pkg gen/artifacts
349420
421+ - name : Save vcpkg cache
422+ uses : actions/cache/save@v4
423+ # Saves if the key changed (hashes on vcpkg/**, vcpkg.json, vcpkg-configuration.json)
424+ if : steps.restore-vcpkg-cache.outputs.cache-hit != 'true'
425+ with :
426+ path : ~/.cache/vcpkg/archives
427+ key : ${{ steps.restore-vcpkg-cache.outputs.cache-primary-key }}
428+
350429 - name : Upload installer
351430 uses : actions/upload-artifact@v4
352431 with :
0 commit comments