name: Release on: release: types: [published] permissions: contents: write packages: write jobs: release: runs-on: windows-latest steps: - uses: actions/checkout@v4 # Der Tag traegt ein fuehrendes "v" (z.B. "v0.2"), die NuGet-/Zip-Versionen jedoch nicht — # einmal hier ableiten und ueber $env:RELEASE_VERSION ueberall unten verwenden, statt # github.event.release.tag_name an jeder Verwendungsstelle einzeln zu trimmen. - name: Version aus Tag ableiten shell: pwsh run: | $version = "${{ github.event.release.tag_name }}".TrimStart('v') echo "RELEASE_VERSION=$version" >> $env:GITHUB_ENV - uses: actions/setup-dotnet@v4 with: dotnet-version: 10.0.x - name: NuGet-Auth (GitHub Packages) run: dotnet nuget update source github-css --username ${{ secrets.GITHUBUSERNAME }} --password ${{ secrets.GITHUBPASSWORD }} --store-password-in-clear-text # Analog mesoxpo-business (.github/workflows/pr.yml): der Pfad ".config/DevExpress/..." # unterhalb des Benutzerprofils gilt fuer DevExpress-Lizenzen betriebssystemuebergreifend # (siehe mesoxpo-business/CLAUDE.md) — auf dem windows-latest-Runner via $HOME in pwsh. - name: DevExpress-Lizenz anlegen shell: pwsh run: | New-Item -ItemType Directory -Force -Path "$HOME/.config/DevExpress" | Out-Null Set-Content -Path "$HOME/.config/DevExpress/DevExpress_License.txt" -Value "${{ secrets.DEVEXPRESS_LICENSE }}" -NoNewline # ── (a) MesoAibe.Core + MesoAibe.Ingest als NuGet-Pakete nach GitHub Packages ── - name: Pack MesoAibe.Core run: dotnet pack MesoAibe.Core/MesoAibe.Core.csproj --configuration Release -p:Version=${{ env.RELEASE_VERSION }} --output nupkg - name: Pack MesoAibe.Ingest run: dotnet pack MesoAibe.Ingest/MesoAibe.Ingest.csproj --configuration Release -p:Version=${{ env.RELEASE_VERSION }} --output nupkg # Kein Glob im Push: "nupkg/*.nupkg" scheitert auf dem Windows-Runner mit # "File does not exist" (beobachtet beim ersten Release-Lauf) — deshalb je Datei pushen. - name: NuGet-Push (GitHub Packages) shell: pwsh run: | $pakete = Get-ChildItem nupkg -Filter *.nupkg if ($pakete.Count -eq 0) { Write-Error "Keine .nupkg-Dateien in nupkg/ gefunden."; exit 1 } foreach ($paket in $pakete) { dotnet nuget push $paket.FullName --source github-css --api-key ${{ secrets.GITHUB_TOKEN }} --skip-duplicate if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } } # ── (b) MesoAibe.Service als self-contained win-x64-Zip am Release anhaengen ── - name: Publish MesoAibe.Service (win-x64, self-contained) run: dotnet publish MesoAibe.Service/MesoAibe.Service.csproj --configuration Release --runtime win-x64 --self-contained -p:Version=${{ env.RELEASE_VERSION }} --output publish/MesoAibe.Service - name: Service-Zip erstellen shell: pwsh run: Compress-Archive -Path "publish/MesoAibe.Service/*" -DestinationPath "MesoAibe.Service-${{ env.RELEASE_VERSION }}-win-x64.zip" - name: Zip als Release-Asset hochladen env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} # gh release upload braucht den tatsaechlichen Tag (mit "v"-Praefix) als Ziel, nicht die # getrimmte Paketversion — deshalb hier bewusst tag_name statt env.RELEASE_VERSION. run: gh release upload "${{ github.event.release.tag_name }}" "MesoAibe.Service-${{ env.RELEASE_VERSION }}-win-x64.zip" --clobber