Skip to content

NuGet Release

NuGet Release #221

Workflow file for this run

name: NuGet Release
on:
push:
branches:
- master
- 2.6.x
tags:
- "**"
workflow_dispatch: {}
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
steps:
- name: Checkout CSFML
uses: actions/checkout@v6
with:
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@v6
with:
name: CSFML-win-x86-x64
path: CSFML/tools/nuget/CSFML/runtimes
windows-arm64:
name: Windows ARM64
runs-on: windows-11-arm
steps:
- name: Checkout CSFML
uses: actions/checkout@v6
with:
path: CSFML
- name: Build ARM64
shell: pwsh
run: |
cd CSFML/tools/nuget
./build.win.ps1 "win-arm64"
- name: Upload Artifact
uses: actions/upload-artifact@v6
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@v6
with:
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@v6
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@v6
with:
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@v6
with:
name: CSFML-linux-arm
path: CSFML/tools/nuget/CSFML/runtimes
linux-arm64:
name: Linux ARM64
runs-on: ubuntu-24.04
steps:
- name: Checkout CSFML
uses: actions/checkout@v6
with:
path: CSFML
- name: Install dependencies & cross compiler
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@v6
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@v6
with:
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@v6
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@v6
with:
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@v6
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@v6
with:
path: CSFML
- name: Download Artifacts
uses: actions/download-artifact@v7
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
run: dotnet new globaljson --sdk-version ${{ steps.setup-dotnet.outputs.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@v6
with:
name: CSFML-NuGet-Package
path: CSFML/tools/nuget/CSFML/bin/Release/*.nupkg