name: NuGet Release on: push: branches: - master - 2.6.x tags: - "**" workflow_dispatch: {} permissions: {} concurrency: group: nuget-${{github.ref}} cancel-in-progress: true env: DOTNET_CLI_TELEMETRY_OPTOUT: 1 jobs: windows-x86-x64: name: Windows x86 x64 runs-on: windows-2025-vs2026 steps: - name: Checkout CSFML uses: actions/checkout@v7 with: persist-credentials: false path: CSFML - name: Build x86 shell: pwsh run: | cd CSFML/tools/nuget ./build.win.ps1 "win-x86" - name: Build x64 shell: pwsh run: | cd CSFML/tools/nuget ./build.win.ps1 "win-x64" - name: Upload Artifact uses: actions/upload-artifact@v7 with: name: CSFML-win-x86-x64 path: CSFML/tools/nuget/CSFML/runtimes windows-arm64: name: Windows ARM64 runs-on: windows-11-vs2026-arm steps: - name: Checkout CSFML uses: actions/checkout@v7 with: persist-credentials: false path: CSFML - name: Build ARM64 shell: pwsh run: | cd CSFML/tools/nuget ./build.win.ps1 "win-arm64" - name: Upload Artifact uses: actions/upload-artifact@v7 with: name: CSFML-win-arm64 path: CSFML/tools/nuget/CSFML/runtimes linux-x64: name: Linux x64 runs-on: ubuntu-24.04 container: image: ubuntu:24.04 steps: - name: Checkout CSFML uses: actions/checkout@v7 with: persist-credentials: false path: CSFML - name: Build shell: bash run: | cd ./CSFML/tools/nuget chmod +x ./docker.linux-x64.sh ./docker.linux-x64.sh - name: Upload Artifact uses: actions/upload-artifact@v7 with: name: CSFML-linux-x64 path: CSFML/tools/nuget/CSFML/runtimes linux-arm: name: Linux ARM runs-on: ubuntu-24.04-arm steps: - name: Checkout CSFML uses: actions/checkout@v7 with: persist-credentials: false path: CSFML - name: Install dependencies & cross compiler run: | sudo dpkg --add-architecture armhf sudo apt-get update sudo apt-get install -y git libfreetype6-dev:armhf xorg-dev libxrandr-dev:armhf libxcursor-dev:armhf libxi-dev:armhf libudev-dev:armhf libgl1-mesa-dev:armhf libflac-dev:armhf libogg-dev:armhf libvorbis-dev:armhf cmake g++-arm-linux-gnueabihf gcc-arm-linux-gnueabihf - name: Build shell: bash run: | cd ./CSFML/tools/nuget chmod +x ./build.linux.sh ./build.linux.sh linux-arm arm-linux-gnueabihf-g++ arm-linux-gnueabihf-gcc - name: Upload Artifact uses: actions/upload-artifact@v7 with: name: CSFML-linux-arm path: CSFML/tools/nuget/CSFML/runtimes linux-arm64: name: Linux ARM64 runs-on: ubuntu-24.04-arm steps: - name: Checkout CSFML uses: actions/checkout@v7 with: persist-credentials: false path: CSFML - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y git libfreetype6-dev xorg-dev libxrandr-dev libxcursor-dev libxi-dev libudev-dev libgl1-mesa-dev libflac-dev libogg-dev libvorbis-dev cmake gcc g++ - name: Build shell: bash run: | cd ./CSFML/tools/nuget chmod +x ./build.linux.sh ./build.linux.sh linux-arm64 - name: Upload Artifact uses: actions/upload-artifact@v7 with: name: CSFML-linux-arm64 path: CSFML/tools/nuget/CSFML/runtimes linux-musl-x64: name: Linux MUSL x64 runs-on: ubuntu-24.04 container: image: alpine:3.20.7 steps: - name: Checkout CSFML uses: actions/checkout@v7 with: persist-credentials: false path: CSFML - name: Build shell: sh run: | cd ./CSFML/tools/nuget chmod +x ./docker.linux-musl-x64.sh ./docker.linux-musl-x64.sh - name: Upload Artifact uses: actions/upload-artifact@v7 with: name: CSFML-linux-musl-x64 path: CSFML/tools/nuget/CSFML/runtimes macos-x64-arm64: name: macOS x64 and ARM64 runs-on: macos-15 steps: - name: Checkout CSFML uses: actions/checkout@v7 with: persist-credentials: false path: CSFML - name: Install necessary tooling run: brew install coreutils - name: Build x64 run: | cd CSFML/tools/nuget ./build.macos.sh "osx-x64" - name: Build ARM64 run: | cd CSFML/tools/nuget ./build.macos.sh "osx-arm64" - name: Upload Artifact uses: actions/upload-artifact@v7 with: name: CSFML-macOS-x64-arm64 path: CSFML/tools/nuget/CSFML/runtimes package: name: Package Builds runs-on: ubuntu-24.04 needs: - windows-x86-x64 - windows-arm64 - linux-x64 - linux-arm - linux-arm64 - linux-musl-x64 - macos-x64-arm64 steps: - name: Checkout CSFML uses: actions/checkout@v7 with: persist-credentials: false path: CSFML - name: Download Artifacts uses: actions/download-artifact@v8 with: path: CSFML/tools/nuget/CSFML/runtimes merge-multiple: true - name: Setup .NET 10 SDK id: setup-dotnet uses: actions/setup-dotnet@v5 with: dotnet-version: 10.0.x - name: Enforce SDK Version env: DOTNET_VERSION: ${{ steps.setup-dotnet.outputs.dotnet-version }} run: dotnet new globaljson --sdk-version "$DOTNET_VERSION" --force - name: Verify SDK Installation run: dotnet --info - name: Build NuGet Package run: | cd CSFML/tools/nuget dotnet build --configuration Release --verbosity detailed - name: Upload NuGet Package uses: actions/upload-artifact@v7 with: name: CSFML-NuGet-Package path: CSFML/tools/nuget/CSFML/bin/Release/*.nupkg