100 lines
3.2 KiB
YAML
100 lines
3.2 KiB
YAML
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 "<Version>(.+?)</Version>" | ForEach-Object {
|
|
($_ -match "<Version>(.+?)</Version>") | 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 v$env:PROJECT_VERSION
|
|
git push origin v$env:PROJECT_VERSION
|
|
|
|
- name: Upload Release Asset to Forgejo
|
|
env:
|
|
RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }}
|
|
PROJECT_VERSION: ${{ env.PROJECT_VERSION }}
|
|
run: |
|
|
$repoOwner = "WeeXnes"
|
|
$repoName = "WeeXnesSuite"
|
|
$tag = "$env:PROJECT_VERSION"
|
|
$fileName = "currentRelease_$env:PROJECT_VERSION.zip"
|
|
$filePath = "release/$fileName"
|
|
$uploadUrl = "https://git.weexnes.dev/api/v1/repos/$repoOwner/$repoName/releases/tags/$tag"
|
|
|
|
|
|
$release = Invoke-RestMethod -Headers @{ Authorization = "token $env:RELEASE_TOKEN" } -Uri $uploadUrl
|
|
$uploadUrlTemplate = $release.upload_url
|
|
$uploadUrlFinal = $uploadUrlTemplate -replace "\{\?name,label\}", "?name=$fileName"
|
|
|
|
|
|
Invoke-RestMethod -Uri $uploadUrlFinal `
|
|
-Headers @{ Authorization = "token $env:RELEASE_TOKEN" } `
|
|
-Method Post `
|
|
-ContentType "application/zip" `
|
|
-InFile $filePath
|