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: | $owner = "WeeXnes" $repo = "WeeXnesSuite" $tag = "$env:PROJECT_VERSION" $fileName = "currentRelease_$tag.zip" $filePath = "release/$fileName" # Get release info by tag to get release ID $releaseInfoUrl = "https://git.weexnes.dev/api/v1/repos/$owner/$repo/releases/tags/$tag" try { $release = Invoke-RestMethod -Uri $releaseInfoUrl -Headers @{ Authorization = "token $env:RELEASE_TOKEN" } $releaseId = $release.id Write-Host "Found release ID: $releaseId" } catch { Write-Error "Failed to find release with tag '$tag'. Make sure the release exists." exit 1 } # Upload the asset to the release by ID $uploadUrl = "https://git.weexnes.dev/api/v1/repos/$owner/$repo/releases/$releaseId/assets?name=$fileName" Write-Host "Uploading asset to: $uploadUrl" Invoke-RestMethod -Uri $uploadUrl ` -Headers @{ Authorization = "token $env:RELEASE_TOKEN" } ` -Method Post ` -ContentType "application/zip" ` -InFile $filePath Write-Host "Upload complete."