name: Dotnet Build on: [push] jobs: build: runs-on: win11 steps: - name: Checkout code uses: actions/checkout@v4 - name: MSBuild version run: | msbuild -version - name: Extract project version run: | $version = Select-String -Path "WeeXnes/WeeXnes.csproj" -Pattern "(.+?)" | ForEach-Object { ($_ -match "(.+?)") | Out-Null $matches[1] } Write-Output "Version extracted: $version" "PROJECT_VERSION=$version" | Out-File -FilePath $Env:GITHUB_ENV -Encoding ASCII -Append - name: Test exported version variable run: | Write-Output "The extracted project version is: $env:PROJECT_VERSION" if (-not $env:PROJECT_VERSION) { Write-Error "PROJECT_VERSION variable is not set!" exit 1 } - name: Restore Packages run: nuget restore WeeXnes.sln - name: Build Solution run: | msbuild WeeXnes.sln /p:DeleteExistingFiles=True /p:platform="Any CPU" /p:configuration="Release" - name: Packing Zip run: | $zipName = "currentRelease_$env:PROJECT_VERSION.zip" Compress-Archive -Path ` WeeXnes\bin\Release\WeeXnes.exe, ` WeeXnes\bin\Release\System.Drawing.Common.dll, ` WeeXnes\bin\Release\Wpf.Ui.dll, ` WeeXnes_UAC\bin\Release\WeeXnes_UAC.exe, ` WeeXnes\bin\Release\DiscordRPC.dll, ` WeeXnes\bin\Release\Newtonsoft.Json.dll, ` Autostart\bin\Release\Autostart.exe, ` WXPlugin\bin\Release\WXPlugin.dll, ` Update\bin\Release\Update.exe ` -CompressionLevel Optimal ` -DestinationPath $zipName Write-Output "Created zip: $zipName" - name: Prepare release directory run: | mkdir release move currentRelease_$env:PROJECT_VERSION.zip release\ - name: Create Git tag run: | git config user.name "WeeXnes" git config user.email "weexnes@weexnes.dev" git tag $env:PROJECT_VERSION git push origin $env:PROJECT_VERSION - name: Upload Release Asset to Forgejo env: RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }} PROJECT_VERSION: ${{ env.PROJECT_VERSION }} run: | $tag = "$env:PROJECT_VERSION" $fileName = "currentRelease_$tag.zip" $filePath = "release/$fileName" $apiUrl = "https://git.weexnes.dev/api/v1/repos/WeeXnes/WeeXnesSuite/releases/tags/$tag" $release = Invoke-RestMethod -Uri $apiUrl -Headers @{ Authorization = "token $env:RELEASE_TOKEN" } $uploadUrl = $release.upload_url -replace "\{\?name,label\}", "?name=$fileName" Invoke-RestMethod -Uri $uploadUrl ` -Headers @{ Authorization = "token $env:RELEASE_TOKEN" } ` -Method Post ` -ContentType "application/zip" ` -InFile $filePath