ci: add GitHub Actions workflow for Windows x64 GUI build
- MSVC + vcpkg + Qt6 + OpenCV + LibRaw - vcpkg binary caching for faster CI runs - windeployqt for Qt DLL bundling - Upload artifact on every push - Create ZIP and attach to GitHub Release on git tags Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
87
.github/workflows/windows.yml
vendored
Normal file
87
.github/workflows/windows.yml
vendored
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
name: Windows Build
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main]
|
||||||
|
tags: ['v*']
|
||||||
|
pull_request:
|
||||||
|
branches: [main]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-windows:
|
||||||
|
name: Windows x64 (MSVC + vcpkg)
|
||||||
|
runs-on: windows-latest
|
||||||
|
|
||||||
|
env:
|
||||||
|
VCPKG_DEFAULT_TRIPLET: x64-windows
|
||||||
|
# vcpkg Binary Caching → deutlich schnellere CI-Durchläufe
|
||||||
|
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
# vcpkg Binary Cache via GitHub Actions Cache
|
||||||
|
- name: Export GitHub Actions cache vars
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
|
||||||
|
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
|
||||||
|
|
||||||
|
- name: Setup vcpkg
|
||||||
|
uses: lukka/run-vcpkg@v11
|
||||||
|
with:
|
||||||
|
vcpkgGitCommitId: '0a66b5fd01fc1515eb7a48c6dc5b1dcc1ce2f6bc' # stable snapshot
|
||||||
|
|
||||||
|
- name: Install dependencies via vcpkg
|
||||||
|
run: |
|
||||||
|
vcpkg install opencv4:x64-windows libraw:x64-windows qt:x64-windows
|
||||||
|
shell: pwsh
|
||||||
|
|
||||||
|
- name: Configure CMake
|
||||||
|
run: |
|
||||||
|
cmake -B build -G Ninja `
|
||||||
|
-DCMAKE_BUILD_TYPE=Release `
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" `
|
||||||
|
-DVCPKG_TARGET_TRIPLET=x64-windows `
|
||||||
|
-DBUILD_GUI=ON `
|
||||||
|
-DBUILD_TESTS=OFF
|
||||||
|
shell: pwsh
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: cmake --build build --config Release --parallel
|
||||||
|
shell: pwsh
|
||||||
|
|
||||||
|
- name: Install (collect EXE + DLLs)
|
||||||
|
run: cmake --install build --prefix dist
|
||||||
|
shell: pwsh
|
||||||
|
|
||||||
|
- name: Deploy Qt DLLs (windeployqt)
|
||||||
|
run: |
|
||||||
|
$qtBin = (Get-ChildItem "$env:VCPKG_ROOT/installed/x64-windows/tools/qt6/bin" -Filter "windeployqt*.exe" -ErrorAction SilentlyContinue | Select-Object -First 1)?.FullName
|
||||||
|
if ($qtBin) {
|
||||||
|
& $qtBin --release --no-translations dist/bin/negative-converter.exe
|
||||||
|
} else {
|
||||||
|
Write-Warning "windeployqt not found, skipping Qt DLL deployment"
|
||||||
|
}
|
||||||
|
shell: pwsh
|
||||||
|
|
||||||
|
- name: Upload artifact
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: negative-converter-windows-x64
|
||||||
|
path: dist/
|
||||||
|
if-no-files-found: error
|
||||||
|
|
||||||
|
# Nur bei Git-Tags: Release erstellen und ZIP anhängen
|
||||||
|
- name: Create ZIP for release
|
||||||
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
|
run: Compress-Archive -Path dist/* -DestinationPath negative-converter-windows-x64.zip
|
||||||
|
shell: pwsh
|
||||||
|
|
||||||
|
- name: Upload to GitHub Release
|
||||||
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
|
uses: softprops/action-gh-release@v2
|
||||||
|
with:
|
||||||
|
files: negative-converter-windows-x64.zip
|
||||||
Reference in New Issue
Block a user