Skip to content

perf(windows): optimize Windows CI build and bump GitHub Actions versions - #45

Merged
mcoliver merged 13 commits into
mainfrom
feat/windows-build-optimizations
Sep 25, 2026
Merged

mcoliver merged 13 commits into
mainfrom
feat/windows-build-optimizations

Conversation

@mcoliver

Copy link
Copy Markdown
Collaborator

Summary

Addresses Windows CI build times (currently 45-60 min) by targeting root bottleneck causes identified in profiling and modernizing our GitHub Actions ecosystem.

Closes #44

Changes

1. Windows Build Speedups

  • Trim Qt6 Modules: Reduced windows_qt6_modules in .github/actions/build-windows/action.yml from 27 modules (which included heavy, unused packages like qtwebengine and debug_info) to only required desktop runtime modules (qt5compat qtimageformats qtmultimedia qtpdf qtshadertools). Saves ~10–12 minutes previously spent downloading and extracting archives.
  • Cache Vulkan SDK: Added explicit actions/cache@v6 for C:\VulkanSDK (vulkan-sdk-1.4.350). Skips downloading the 800MB installer via Chocolatey on cache hits.
  • Disable Windows Defender Overhead: Added a step disabling real-time monitoring and adding exclusions for the build workspace, C:\.sccache, C:\Program Files\OpenUTVDeps, and C:\VulkanSDK to eliminate antivirus I/O contention during compilation.
  • sccache Persistence: Upgraded mozilla-actions/sccache-action to @v0.0.11, configured SCCACHE_DIR: C:\.sccache, and added explicit actions/cache/restore@v6 and actions/cache/save@v6 (if: always()) so compilation caches persist across workflow runs.
  • MSVC Compiler Optimization Flags: Added /Zc:inline and /Gw (whole program data optimization) in cmake/defaults/cxx_msvc_defaults.cmake to eliminate unreferenced COMDAT data and speed up link times.
  • Vulkan Version Bump: Updated fallback Git tag in cmake/dependencies/vulkan.cmake from v1.4.304 to v1.4.354.

2. GitHub Actions Modernization Across All Workflows

Bumped actions across all workflow files (branch-build.yml, dev-build.yml, pr-checks.yml, release.yml, publish-packages.yml, codeql.yml):

  • actions/checkout -> @v7
  • actions/cache, actions/cache/restore, actions/cache/save -> @v6
  • actions/upload-artifact -> @v7
  • actions/download-artifact -> @v8
  • actions/setup-python -> @v7
  • actions/setup-node -> @v7
  • github/codeql-action -> @v4
  • Added explicit actions: write permission to workflows using actions/cache save.

…ions

- Trim unused Qt6 modules in Windows CI to cut ~10-12 min download/extract time
- Cache Vulkan SDK in C:\VulkanSDK to skip redundant 800MB Chocolatey downloads
- Disable Windows Defender real-time scanning & add exclusions for build directories
- Enable sccache disk persistence via actions/cache@v6 for C:\.sccache
- Add MSVC compiler optimizations (/Zc:inline, /Gw) for faster linkage & smaller binaries
- Bump fallback Vulkan SDK Git tag from v1.4.304 to v1.4.354 in vulkan.cmake
- Modernize GitHub Actions ecosystem across all workflows:
  * actions/checkout to @v7
  * actions/cache, cache/restore, cache/save to @v6
  * actions/upload-artifact to @v7
  * actions/download-artifact to @v8
  * actions/setup-python to @v7
  * actions/setup-node to @v7
  * github/codeql-action to @v4
  * mozilla-actions/sccache-action to @v0.0.11
- Grant explicit actions: write permissions for cache persistence

Refs #44

Signed-off-by: Michael Oliver <mcoliver@gmail.com>
…community flair

Signed-off-by: Michael Oliver <mcoliver@gmail.com>
Unexcludes the workspace and triggers an on-demand scan with MpCmdRun.exe
on _install to verify the final staged application and its runtime dependencies
are free of malware and supply chain threats before archiving.

Refs #44

Signed-off-by: Michael Oliver <mcoliver@gmail.com>
Signed-off-by: Michael Oliver <mcoliver@gmail.com>
Signed-off-by: Michael Oliver <mcoliver@gmail.com>
Signed-off-by: Michael Oliver <mcoliver@gmail.com>
@mcoliver
mcoliver marked this pull request as ready for review September 24, 2026 18:48
Signed-off-by: Michael Oliver <mcoliver@gmail.com>
…t Vulkan tag to v1.4.304

- In cmake/dependencies/vulkan.cmake, revert fallback Vulkan tag to v1.4.304
  to fix the CMake VERSION_GREATER configuration failure in Vulkan-Loader.
- In .github/actions/build-windows/action.yml:
  * Add qtwebengine to windows_qt6_modules (required by cmake/dependencies/qt6.cmake)
    and remove unused qt5compat.
  * Ensure 7-Zip is added to PATH via PowerShell.
  * Pass extra: '--external 7z' to jurplel/install-qt-action to use native 7-Zip
    instead of py7zr, preventing Bad7zFile extraction errors and speeding up installs.

Refs #44

Signed-off-by: Michael Oliver <mcoliver@gmail.com>
…ngine submodules to Windows Qt

Signed-off-by: Michael Oliver <mcoliver@gmail.com>
…llision in aqtinstall

Signed-off-by: Michael Oliver <mcoliver@gmail.com>
…Linux

Signed-off-by: Michael Oliver <mcoliver@gmail.com>
Signed-off-by: Michael Oliver <mcoliver@gmail.com>
…pping

Signed-off-by: Michael Oliver <mcoliver@gmail.com>
@mcoliver
mcoliver merged commit 85001b8 into main Sep 25, 2026
9 checks passed
@mcoliver
mcoliver deleted the feat/windows-build-optimizations branch September 25, 2026 17:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

perf(windows): optimize Windows build times and CI pipeline performance

1 participant