diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0bc8d0bb4..65eaa7271 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -74,3 +74,121 @@ jobs: - name: Build run: msbuild "Scripts/nightly.proj" /t:Rebuild /p:Configuration=Release /p:Platform="Any CPU" + + release: + runs-on: windows-2022 + if: github.ref == 'refs/heads/master' && github.event_name == 'push' + needs: build + + steps: + - name: Checkout + uses: actions/checkout@v5 + + # .NET 9 (GA) + - name: Setup .NET 9 + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 9.0.x + + # .NET 10 (Preview) + - name: Setup .NET 10 (preview) + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 10.0.x + dotnet-quality: preview + + # global.json dynamisch erzeugen + - name: Force .NET 10 SDK via global.json + run: | + $sdkVersion = (dotnet --list-sdks | Select-String "10.0").ToString().Split(" ")[0] + Write-Output "Using SDK $sdkVersion" + @" + { + "sdk": { + "version": "$sdkVersion", + "rollForward": "latestFeature" + } + } + "@ | Out-File -Encoding utf8 global.json + + - name: Setup MSBuild + uses: microsoft/setup-msbuild@v2 + with: + msbuild-architecture: x64 + + - name: Setup NuGet + uses: NuGet/setup-nuget@v1.2.0 + + - name: Cache NuGet + uses: actions/cache@v4 + with: + path: ~/.nuget/packages + key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }} + restore-keys: | + ${{ runner.os }}-nuget- + + - name: Restore + run: dotnet restore "Source/Krypton Components/Krypton Toolkit Suite 2022 - VS2022.sln" + + - name: Build Release + run: msbuild "Scripts/build.proj" /t:Build /p:Configuration=Release /p:Platform="Any CPU" + + - name: Pack Release + run: msbuild "Scripts/build.proj" /t:Pack /p:Configuration=Release /p:Platform="Any CPU" + + - name: Create Release Archives + run: msbuild "Scripts/build.proj" /t:CreateAllReleaseArchives /p:Configuration=Release /p:Platform="Any CPU" + + - name: Get Version + id: get_version + run: | + $version = (dotnet build "Source/Krypton Components/Krypton.Toolkit/Krypton.Toolkit.csproj" --no-restore --verbosity quiet | Select-String "Version" | ForEach-Object { $_.Line.Split('=')[1].Trim() }) + if (-not $version) { + $version = "100.25.1.1" # Fallback version + } + echo "version=$version" >> $env:GITHUB_OUTPUT + echo "tag=v$version" >> $env:GITHUB_OUTPUT + + - name: Create Release + run: | + $releaseBody = @" + ## Krypton Toolkit Suite Release ${{ steps.get_version.outputs.version }} + + This release includes: + - All Krypton Toolkit components + - NuGet packages for multiple target frameworks + - Release archives (ZIP and TAR.GZ formats) + + ### Downloads + - **ZIP Archive**: `Krypton-Release_*.zip` + - **TAR.GZ Archive**: `Krypton-Release_*.tar.gz` + + ### Target Frameworks + - .NET Framework 4.7.2 + - .NET Framework 4.8 + - .NET Framework 4.8.1 + - .NET 8.0 Windows + - .NET 9.0 Windows + - .NET 10.0 Windows + "@ + + gh release create ${{ steps.get_version.outputs.tag }} ` + --title "Release ${{ steps.get_version.outputs.version }}" ` + --notes "$releaseBody" ` + --latest + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Upload Release Assets + run: | + $zipFile = Get-ChildItem "Bin/Release/Zips/Krypton-Release_*.zip" | Select-Object -First 1 + $tarFile = Get-ChildItem "Bin/Release/Zips/Krypton-Release_*.tar.gz" | Select-Object -First 1 + + if ($zipFile) { + gh release upload ${{ steps.get_version.outputs.tag }} "$($zipFile.FullName)" --clobber + } + if ($tarFile) { + gh release upload ${{ steps.get_version.outputs.tag }} "$($tarFile.FullName)" --clobber + } + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/Documents/Changelog/Changelog.md b/Documents/Changelog/Changelog.md index 732427446..8b182588b 100644 --- a/Documents/Changelog/Changelog.md +++ b/Documents/Changelog/Changelog.md @@ -3,6 +3,7 @@ ==== ## 2025-11-xx - Build 2511 (V10 - alpha) - November 2025 +* Implemented [#2503](https://github.com/Krypton-Suite/Standard-Toolkit/issues/2503), Add the ability to create zip files for binaries * Resolved [#2492](https://github.com/Krypton-Suite/Standard-Toolkit/issues/2492), `KryptonForm` does not display '(Administrator)' when elevated * Resolved [#2502](https://github.com/Krypton-Suite/Standard-Toolkit/issues/2502), **[Breaking Change]** `KryptonCommandLinkButton` updates several properties and their behaviour. See issue for full details. * Resolved [#2495](https://github.com/Krypton-Suite/Standard-Toolkit/issues/2495), `KryptonProgressBar` private field `_mementoContent` can be null. diff --git a/Scripts/build.proj b/Scripts/build.proj index 97ece149d..03c987c0f 100644 --- a/Scripts/build.proj +++ b/Scripts/build.proj @@ -1,9 +1,11 @@ - + $(MSBuildProjectDirectory) Release + ..\Bin\Release\Zips + Krypton-Release @@ -11,7 +13,7 @@ - + @@ -19,14 +21,14 @@ - + - + @@ -49,7 +51,7 @@ - + @@ -65,13 +67,62 @@ - + - + + + + + $([System.DateTime]::Now.ToString('yyyyMMdd')) + + + + + + + + + + + + + + + + $([System.DateTime]::Now.ToString('yyyyMMdd')) + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Scripts/canary.proj b/Scripts/canary.proj index 5a0d908b2..c5790ac3a 100644 --- a/Scripts/canary.proj +++ b/Scripts/canary.proj @@ -1,9 +1,11 @@ - + $(MSBuildProjectDirectory) Canary + ..\Bin\Canary\Zips + Krypton-Canary @@ -11,7 +13,7 @@ - + @@ -19,21 +21,21 @@ - + - + - + @@ -49,9 +51,10 @@ - - - + + + + @@ -59,17 +62,54 @@ - + + + + + $([System.DateTime]::Now.ToString('yyyyMMdd')) + + + + + + + + + + + + + + $([System.DateTime]::Now.ToString('yyyyMMdd')) - + - - + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Scripts/nightly.proj b/Scripts/nightly.proj index 5a3015e3c..0ccbf37ef 100644 --- a/Scripts/nightly.proj +++ b/Scripts/nightly.proj @@ -1,9 +1,11 @@ - + $(MSBuildProjectDirectory) Nightly + ..\Bin\Nightly\Zips + Krypton-Nightly @@ -11,7 +13,7 @@ - + @@ -19,7 +21,7 @@ - + @@ -28,14 +30,14 @@ - + - + @@ -51,9 +53,9 @@ - + - + @@ -66,12 +68,47 @@ $([System.DateTime]::Now.ToString('yyyyMMdd')) - + - + + + + + + + + + + $([System.DateTime]::Now.ToString('yyyyMMdd')) + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/run.cmd b/run.cmd index cf31c1ee6..6dff671f7 100644 --- a/run.cmd +++ b/run.cmd @@ -1,4 +1,4 @@ -:: Last updated: Wednesday 21st August, 2024 @ 19:00 +:: Last updated: Saturday 16th August, 2025 @ 19:00 @echo off @@ -6,7 +6,7 @@ title Krypton Toolkit Build System cls -@echo Welcome to the Krypton Toolkit Build system, version: 2.4. Please select an option below. +@echo Welcome to the Krypton Toolkit Build system, version: 3.0. Please select an option below. echo: @echo ============================================================================================== echo: @@ -16,17 +16,19 @@ echo 3. Create NuGet packages echo 4. Build and Pack Toolkit echo 5. Debug project echo 6. NuGet Tools -::echo 7. Miscellaneous tasks -echo 7. End +echo 7. Create Archives (ZIP/TAR) +::echo 8. Miscellaneous tasks +echo 8. End echo: -set /p answer="Enter number (1 - 7): " +set /p answer="Enter number (1 - 8): " if %answer%==1 (goto cleanproject) if %answer%==2 (goto buildproject) if %answer%==3 (goto createnugetpackages) if %answer%==4 (goto buildandpacktoolkit) if %answer%==5 (goto debugproject) if %answer%==6 (goto nugettools) -if %answer%==7 (goto exitbuildsystem) +if %answer%==7 (goto createarchives) +if %answer%==8 (goto exitbuildsystem) @echo Invalid input, please try again. @@ -46,8 +48,9 @@ echo 3. Create NuGet packages echo 4. Build and Pack Toolkit echo 5. Debug project echo 6. NuGet Tools -::echo 7. Miscellaneous tasks -echo 7. End +echo 7. Create Archives (ZIP/TAR) +::echo 8. Miscellaneous tasks +echo 8. End echo: set /p answer="Enter number (1 - 8): " if %answer%==1 (goto cleanproject) @@ -56,8 +59,9 @@ if %answer%==3 (goto createnugetpackages) if %answer%==4 (goto buildandpacktoolkit) if %answer%==5 (goto debugproject) if %answer%==6 (goto nugettools) -::if %answer%==7 (goto miscellaneoustasks) -if %answer%==7 (goto exitbuildsystem) +if %answer%==7 (goto createarchives) +::if %answer%==8 (goto miscellaneoustasks) +if %answer%==8 (goto exitbuildsystem) @echo Invalid input, please try again. @@ -237,7 +241,181 @@ goto packmenu goto debugmenu :nugettools -goto nugettools +goto createarchives + +:createarchives +cls + +echo 1. Create ZIP archive (Nightly) +echo 2. Create TAR archive (Nightly) +echo 3. Create both ZIP and TAR archives (Nightly) +echo 4. Create ZIP archive (Canary) +echo 5. Create TAR archive (Canary) +echo 6. Create both ZIP and TAR archives (Canary) +echo 7. Create ZIP archive (Stable) +echo 8. Create TAR archive (Stable) +echo 9. Create both ZIP and TAR archives (Stable) +echo 10. Update NuGet tools +echo 11. Go back to main menu +echo: +set /p answer="Enter number (1 - 11): " +if %answer%==1 (goto createzipnightly) +if %answer%==2 (goto createtarnightly) +if %answer%==3 (goto createallarchivesnightly) +if %answer%==4 (goto createzipcanary) +if %answer%==5 (goto createtarcanary) +if %answer%==6 (goto createallarchivescanary) +if %answer%==7 (goto createzipstable) +if %answer%==8 (goto createtarstable) +if %answer%==9 (goto createallarchivesstable) +if %answer%==10 (goto updatenuget) +if %answer%==11 (goto mainmenu) + +@echo Invalid input, please try again. + +pause + +goto createarchives + +:: =================================================================================================== + +:updatenuget +cls + +cd Scripts + +update-nuget.cmd + +cd .. + +pause + +goto mainmenu + +:: =================================================================================================== + +:createzipnightly +cls + +cd Scripts + +build-nightly.cmd CreateNightlyZip + +cd .. + +pause + +goto mainmenu + +:createtarnightly +cls + +cd Scripts + +build-nightly.cmd CreateNightlyTar + +cd .. + +pause + +goto mainmenu + +:createallarchivesnightly +cls + +cd Scripts + +build-nightly.cmd CreateAllArchives + +cd .. + +pause + +goto mainmenu + +:: =================================================================================================== + +:createzipcanary +cls + +cd Scripts + +build-canary.cmd CreateCanaryZip + +cd .. + +pause + +goto mainmenu + +:createtarcanary +cls + +cd Scripts + +build-canary.cmd CreateCanaryTar + +cd .. + +pause + +goto mainmenu + +:createallarchivescanary +cls + +cd Scripts + +build-canary.cmd CreateAllCanaryArchives + +cd .. + +pause + +goto mainmenu + +:: =================================================================================================== + +:createzipstable +cls + +cd Scripts + +build-stable.cmd CreateReleaseZip + +cd .. + +pause + +goto mainmenu + +:createtarstable +cls + +cd Scripts + +build-stable.cmd CreateReleaseTar + +cd .. + +pause + +goto mainmenu + +:createallarchivesstable +cls + +cd Scripts + +build-stable.cmd CreateAllReleaseArchives + +cd .. + +pause + +goto mainmenu + +:: =================================================================================================== :buildandpacktoolkit goto buildandpacktoolkitmenu