From d3b62bcee370a080bce3d3b4de44f2a16e5ef06f Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 27 Aug 2025 02:41:40 +0300 Subject: [PATCH] Refactor Windows build workflow for clarity and artifact handling Replaces universal build script calls with explicit build, MSI, and ZIP steps for both standard and FFmpeg versions. Cleans previous build artifacts before building, and updates artifact preparation to source files from the 'dist' directory instead of 'releases'. Improves reliability and transparency of build and release artifact management. --- .github/workflows/build-windows.yml | 50 ++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml index 0f941a2..b07500c 100644 --- a/.github/workflows/build-windows.yml +++ b/.github/workflows/build-windows.yml @@ -75,14 +75,48 @@ jobs: run: | .\venv\Scripts\Activate.ps1 Write-Host "Building Standard Version..." - python build\windows\windows_build_universal.py --verbose + + # Clean previous build artifacts + if (Test-Path "build\exe.*") { Remove-Item "build\exe.*" -Recurse -Force } + if (Test-Path "dist") { Remove-Item "dist" -Recurse -Force } + + # Build executable + python build\windows\setup.py build + + # Build MSI installer + python build\windows\setup.py bdist_msi + + # Create ZIP distribution + $exeDir = Get-ChildItem -Path "build" -Directory -Filter "exe.*" | Select-Object -First 1 + if ($exeDir) { + $version = "${{ steps.get_version.outputs.VERSION }}" + Compress-Archive -Path "$($exeDir.FullName)\*" -DestinationPath "dist\YTSage-v$version.zip" -Force + Write-Host "Created ZIP: YTSage-v$version.zip" + } - name: Build FFmpeg Version (MSI + ZIP) shell: powershell run: | .\venv\Scripts\Activate.ps1 Write-Host "Building FFmpeg Version..." - python build\windows\windows_build_universal.py --ffmpeg --verbose + + # Clean previous build artifacts + if (Test-Path "build\exe.*") { Remove-Item "build\exe.*" -Recurse -Force } + if (Test-Path "dist\*.msi") { Remove-Item "dist\*.msi" -Force } + + # Build executable with FFmpeg + python build\windows\setup-ffmpeg.py build + + # Build MSI installer with FFmpeg + python build\windows\setup-ffmpeg.py bdist_msi + + # Create ZIP distribution with FFmpeg + $exeDir = Get-ChildItem -Path "build" -Directory -Filter "exe.*" | Select-Object -First 1 + if ($exeDir) { + $version = "${{ steps.get_version.outputs.VERSION }}" + Compress-Archive -Path "$($exeDir.FullName)\*" -DestinationPath "dist\YTSage-v$version-ffmpeg.zip" -Force + Write-Host "Created ZIP: YTSage-v$version-ffmpeg.zip" + } - name: Prepare release artifacts shell: powershell @@ -92,27 +126,27 @@ jobs: Write-Host "Preparing artifacts for version: $version" New-Item -ItemType Directory -Path "artifacts" -Force - # Find and copy standard build artifacts - $standardMsi = Get-ChildItem -Path "releases" -Filter "YTSage-v$version.msi" -Recurse | Select-Object -First 1 + # Find and copy standard build artifacts from dist directory + $standardMsi = Get-ChildItem -Path "dist" -Filter "*.msi" | Where-Object { $_.Name -notlike "*ffmpeg*" } | Select-Object -First 1 if ($standardMsi) { Copy-Item $standardMsi.FullName "artifacts\YTSage-v$version.msi" Write-Host "Copied: $($standardMsi.Name) -> YTSage-v$version.msi" } - $standardZip = Get-ChildItem -Path "releases" -Filter "YTSage-v$version.zip" -Recurse | Select-Object -First 1 + $standardZip = Get-ChildItem -Path "dist" -Filter "YTSage-v$version.zip" | Select-Object -First 1 if ($standardZip) { Copy-Item $standardZip.FullName "artifacts\YTSage-v$version.zip" Write-Host "Copied: $($standardZip.Name) -> YTSage-v$version.zip" } - # Find and copy FFmpeg build artifacts - $ffmpegMsi = Get-ChildItem -Path "releases" -Filter "YTSage-v$version-ffmpeg.msi" -Recurse | Select-Object -First 1 + # Find and copy FFmpeg build artifacts from dist directory + $ffmpegMsi = Get-ChildItem -Path "dist" -Filter "*.msi" | Where-Object { $_.Name -like "*ffmpeg*" } | Select-Object -First 1 if ($ffmpegMsi) { Copy-Item $ffmpegMsi.FullName "artifacts\YTSage-v$version-ffmpeg.msi" Write-Host "Copied: $($ffmpegMsi.Name) -> YTSage-v$version-ffmpeg.msi" } - $ffmpegZip = Get-ChildItem -Path "releases" -Filter "YTSage-v$version-ffmpeg.zip" -Recurse | Select-Object -First 1 + $ffmpegZip = Get-ChildItem -Path "dist" -Filter "YTSage-v$version-ffmpeg.zip" | Select-Object -First 1 if ($ffmpegZip) { Copy-Item $ffmpegZip.FullName "artifacts\YTSage-v$version-ffmpeg.zip" Write-Host "Copied: $($ffmpegZip.Name) -> YTSage-v$version-ffmpeg.zip"