From e95148ec61c394d5441e2f5ff4ea3afadb8e00b9 Mon Sep 17 00:00:00 2001 From: Notarin Steele <424c414e4b@gmail.com> Date: Tue, 14 Jul 2026 04:22:28 -0400 Subject: [PATCH 1/3] Introduced workflow for deploying developer packages Adds a GitHub workflow which builds all projects as packages, and pushes them to NuGet.org The workflow introduced provides new additional options to consumers/developers for dependency management. Developers now can cotntinue as-is with their submodule setup, or given some work, the option for loading nupkgs is available, via the official NuGet feed. This change introduces a new stateful dependency upon the repository. The owner or one in charge is expected to visit https://www.nuget.org/account/trustedpublishing and configure an entry for the repository that is deploying said nupkgs. There is two additional units of state that the owner or one in charge is expected to add. The `NUGET_USERNAME` secret to the GitHub repository configuration, and `EXCLUDE_NUGET_PACKAGES` which is a matching operator to nupkg file names. Two examples are as follows: *Avalonia* *Robust*|*Avalonia* This is available due to the fact that most likely not all package namespaces maintained by the robust team are actually owned by the team. Said convention violation results in a collision with claimed/protected namespaces on upload. Also, forks may wish to be able to be able to use this for debugging and developing purposes, like myself, so this is available. To what is known currently, the only namespace that collides with a protected namespace currently is `Avalonia`, however it *shouldn't* be an absolute requirement for this scope. As for everyone besides the robust team, most namespaces are available, except for of course, `Avalonia`, but also `SpaceWizards`. This workflow is dependent upon GitHub and NuGet, both owned by Microsoft. -# Also, this builds snupkgs too, the symbols files. --- .github/workflows/publish-packages.yml | 68 ++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 .github/workflows/publish-packages.yml diff --git a/.github/workflows/publish-packages.yml b/.github/workflows/publish-packages.yml new file mode 100644 index 00000000000..4661069c396 --- /dev/null +++ b/.github/workflows/publish-packages.yml @@ -0,0 +1,68 @@ +name: Publish nupkgs to NuGet feed/package repository + +on: + push: + tags: + - 'v*' + +jobs: + build-and-publish: + environment: dotnet + permissions: + id-token: write + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v7.0.0 + with: + submodules: true + + - name: Setup .NET + uses: actions/setup-dotnet@v6.0.0 + with: + dotnet-version: 10.0.x + + - name: Install dependencies + run: dotnet restore + + - name: Build packages + run: dotnet pack -c Release -p:IncludeSymbols=true -p:SymbolPackageFormat=snupkg + + - name: NuGet login + uses: NuGet/login@v1 + id: login + with: + user: "${{ vars.NUGET_USERNAME }}" + + - name: Push NuGet packages + run: | + for pkg in $(find . -name '*.nupkg'); do + case "$pkg" in + ${{ vars.EXCLUDE_NUGET_PACKAGES }}) + echo "Skipping $pkg" + continue + ;; + esac + + dotnet nuget push "$pkg" \ + --api-key "${{ steps.login.outputs.NUGET_API_KEY }}" \ + --source https://api.nuget.org/v3/index.json \ + --skip-duplicate + done + + - name: Push symbol packages + run: | + for pkg in $(find . -name '*.snupkg'); do + case "$pkg" in + ${{ vars.EXCLUDE_NUGET_PACKAGES }}) + echo "Skipping $pkg" + continue + ;; + esac + + dotnet nuget push "$pkg" \ + --api-key "${{ steps.login.outputs.NUGET_API_KEY }}" \ + --source https://api.nuget.org/v3/index.json \ + --skip-duplicate + done From 8a229f42ab09ae1848f18feac6588d227d242114 Mon Sep 17 00:00:00 2001 From: Notarin Steele <424c414e4b@gmail.com> Date: Fri, 17 Jul 2026 19:29:17 -0400 Subject: [PATCH 2/3] Made five projects packable The projects made package are: - Robust.Client - Robust.Shared - Robust.Shared.Maths - Robust.Server - Robust.Shared.Scripting The author that made it not so is no longer here. Assuming they did it out of a lack of need, this is now enabled. The output path of the nupkg is noncomformant, but making it conform may risk far more concerning breaking changes or regressions. --- Robust.Client/Robust.Client.csproj | 1 - Robust.Server/Robust.Server.csproj | 1 - Robust.Shared.Maths/Robust.Shared.Maths.csproj | 1 - Robust.Shared.Scripting/Robust.Shared.Scripting.csproj | 1 - Robust.Shared/Robust.Shared.csproj | 1 - 5 files changed, 5 deletions(-) diff --git a/Robust.Client/Robust.Client.csproj b/Robust.Client/Robust.Client.csproj index 6ee0278b6c4..4d13c5164c0 100644 --- a/Robust.Client/Robust.Client.csproj +++ b/Robust.Client/Robust.Client.csproj @@ -1,7 +1,6 @@  - false true WinExe false diff --git a/Robust.Server/Robust.Server.csproj b/Robust.Server/Robust.Server.csproj index 21caba7222d..b0edc62efbe 100644 --- a/Robust.Server/Robust.Server.csproj +++ b/Robust.Server/Robust.Server.csproj @@ -1,7 +1,6 @@  - false Exe false ../bin/Server diff --git a/Robust.Shared.Maths/Robust.Shared.Maths.csproj b/Robust.Shared.Maths/Robust.Shared.Maths.csproj index cb73478a39f..3e47425a3b7 100644 --- a/Robust.Shared.Maths/Robust.Shared.Maths.csproj +++ b/Robust.Shared.Maths/Robust.Shared.Maths.csproj @@ -1,7 +1,6 @@  - false false true diff --git a/Robust.Shared.Scripting/Robust.Shared.Scripting.csproj b/Robust.Shared.Scripting/Robust.Shared.Scripting.csproj index e9d3e0ab5ee..793987dbe1d 100644 --- a/Robust.Shared.Scripting/Robust.Shared.Scripting.csproj +++ b/Robust.Shared.Scripting/Robust.Shared.Scripting.csproj @@ -1,7 +1,6 @@ - false false true diff --git a/Robust.Shared/Robust.Shared.csproj b/Robust.Shared/Robust.Shared.csproj index 8750448cb22..8d1ac50f982 100644 --- a/Robust.Shared/Robust.Shared.csproj +++ b/Robust.Shared/Robust.Shared.csproj @@ -1,7 +1,6 @@ - false false true CA1416 From 5ec1d76e1e03fb1a84157a40c6fa12d62bae8814 Mon Sep 17 00:00:00 2001 From: Notarin Steele <424c414e4b@gmail.com> Date: Sun, 19 Jul 2026 00:45:19 -0400 Subject: [PATCH 3/3] Disabled unused Avalonia dependency in Robust.Client --- Robust.Client/Robust.Client.csproj | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Robust.Client/Robust.Client.csproj b/Robust.Client/Robust.Client.csproj index 4d13c5164c0..7d261635ba7 100644 --- a/Robust.Client/Robust.Client.csproj +++ b/Robust.Client/Robust.Client.csproj @@ -44,7 +44,8 @@ - + +