Skip to content

.NET Build and Publish Nuget #62

.NET Build and Publish Nuget

.NET Build and Publish Nuget #62

Workflow file for this run

name: .NET Build and Publish Nuget
permissions:
contents: write # required to create releases/tags
env:
PROJECT_PATH_CORE: src/Stride.CommunityToolkit/Stride.CommunityToolkit.csproj
PROJECT_PATH_BEPU: src/Stride.CommunityToolkit.Bepu/Stride.CommunityToolkit.Bepu.csproj
PROJECT_PATH_BULLET: src/Stride.CommunityToolkit.Bullet/Stride.CommunityToolkit.Bullet.csproj
PROJECT_PATH_DEBUG: src/Stride.CommunityToolkit.DebugShapes/Stride.CommunityToolkit.DebugShapes.csproj
PROJECT_PATH_IMGUI: src/Stride.CommunityToolkit.ImGui/Stride.CommunityToolkit.ImGui.csproj
PROJECT_PATH_SKYBOX: src/Stride.CommunityToolkit.Skyboxes/Stride.CommunityToolkit.Skyboxes.csproj
PROJECT_PATH_WINDOWS: src/Stride.CommunityToolkit.Windows/Stride.CommunityToolkit.Windows.csproj
PROJECT_PATH_LINUX: src/Stride.CommunityToolkit.Linux/Stride.CommunityToolkit.Linux.csproj
COMMON_SETTINGS_PATH: src/CommonSettings.props
VERSION: "1.0.0.0-preview.${{ github.run_number }}"
NUGET_SOURCE: "https://api.nuget.org/v3/index.json"
NUPKG_ROOT: nupkgs
on:
workflow_dispatch:
jobs:
build:
runs-on: windows-latest
steps:
- name: Checkout Stride Community Toolkit
uses: actions/checkout@v5
- name: .NET Setup
uses: actions/setup-dotnet@v5
with:
dotnet-version: 10.0.x
- name: Set Version in csproj
run: |
$settingsContent = Get-Content -Path "${{ env.COMMON_SETTINGS_PATH }}" -Raw
$updatedCsprojContent = $settingsContent -replace '<Version>.*?</Version>', "<Version>${{ env.VERSION }}</Version>"
Set-Content -Path "${{ env.COMMON_SETTINGS_PATH }}" -Value $updatedCsprojContent
# Not needed as Directory.Build.props added a condition to this target
# - name: Create .sarif Directory
# run: New-Item -ItemType Directory -Force -Path D:\.sarif
# shell: pwsh
# Stride.CommunityToolkit
- name: Restore dependencies - Stride.CommunityToolkit
run: dotnet restore ${{ env.PROJECT_PATH_CORE }}
- name: Build - Stride.CommunityToolkit
run: dotnet build ${{ env.PROJECT_PATH_CORE }} --no-restore -c Release
- name: Test - Stride.CommunityToolkit
run: dotnet test ${{ env.PROJECT_PATH_CORE }} --no-build --verbosity normal
- name: Pack - Stride.CommunityToolkit
run: dotnet pack ${{ env.PROJECT_PATH_CORE }} --no-build -c Release -o "${{ env.NUPKG_ROOT }}\core"
- name: Publish - Stride.CommunityToolkit
run: dotnet nuget push "${{ env.NUPKG_ROOT }}\core\*.nupkg" --source "${{ env.NUGET_SOURCE }}" --api-key "${{ secrets.NUGET_API_KEY }}" --skip-duplicate
# Stride.CommunityToolkit.Windows
- name: Restore dependencies - Stride.CommunityToolkit.Windows
run: dotnet restore ${{ env.PROJECT_PATH_WINDOWS }} --runtime win-x64
- name: Build - Stride.CommunityToolkit.Windows
run: dotnet build ${{ env.PROJECT_PATH_WINDOWS }} --no-restore -c Release
- name: Test - Stride.CommunityToolkit.Windows
run: dotnet test ${{ env.PROJECT_PATH_WINDOWS }} --no-build --verbosity normal
- name: Pack - Stride.CommunityToolkit.Windows
run: dotnet pack ${{ env.PROJECT_PATH_WINDOWS }} --no-build -c Release -o "${{ env.NUPKG_ROOT }}\windows"
- name: Publish - Stride.CommunityToolkit.Windows
run: dotnet nuget push "${{ env.NUPKG_ROOT }}\windows\*.nupkg" --source "${{ env.NUGET_SOURCE }}" --api-key "${{ secrets.NUGET_API_KEY }}" --skip-duplicate
# Stride.CommunityToolkit.Linux
- name: Restore dependencies - Stride.CommunityToolkit.Linux
run: dotnet restore ${{ env.PROJECT_PATH_LINUX }}
- name: Build - Stride.CommunityToolkit.Linux
run: dotnet build ${{ env.PROJECT_PATH_LINUX }} --no-restore -c Release
- name: Pack - Stride.CommunityToolkit.Linux
run: dotnet pack ${{ env.PROJECT_PATH_LINUX }} --no-build -c Release -o "${{ env.NUPKG_ROOT }}\linux"
- name: Publish - Stride.CommunityToolkit.Linux
run: dotnet nuget push "${{ env.NUPKG_ROOT }}\linux\*.nupkg" --source "${{ env.NUGET_SOURCE }}" --api-key "${{ secrets.NUGET_API_KEY }}" --skip-duplicate
# Stride.CommunityToolkit.Skyboxes
- name: Restore dependencies - Stride.CommunityToolkit.Skyboxes
run: dotnet restore ${{ env.PROJECT_PATH_SKYBOX }}
- name: Build - Stride.CommunityToolkit.Skyboxes
run: dotnet build ${{ env.PROJECT_PATH_SKYBOX }} --no-restore -c Release
- name: Test - Stride.CommunityToolkit.Skyboxes
run: dotnet test ${{ env.PROJECT_PATH_SKYBOX }} --no-build --verbosity normal
- name: Pack - Stride.CommunityToolkit.Skyboxes
run: dotnet pack ${{ env.PROJECT_PATH_SKYBOX }} --no-build -c Release -o "${{ env.NUPKG_ROOT }}\skyboxes"
- name: Publish - Stride.CommunityToolkit.Skyboxes
run: dotnet nuget push "${{ env.NUPKG_ROOT }}\skyboxes\*.nupkg" --source "${{ env.NUGET_SOURCE }}" --api-key "${{ secrets.NUGET_API_KEY }}" --skip-duplicate
# Stride.CommunityToolkit.Bepu
- name: Restore dependencies - Stride.CommunityToolkit.Bepu
run: dotnet restore ${{ env.PROJECT_PATH_BEPU }}
- name: Build - Stride.CommunityToolkit.Bepu
run: dotnet build ${{ env.PROJECT_PATH_BEPU }} --no-restore -c Release
- name: Test - Stride.CommunityToolkit.Bepu
run: dotnet test ${{ env.PROJECT_PATH_BEPU }} --no-build --verbosity normal
- name: Pack - Stride.CommunityToolkit.Bepu
run: dotnet pack ${{ env.PROJECT_PATH_BEPU }} --no-build -c Release -o "${{ env.NUPKG_ROOT }}\bepu"
- name: Publish - Stride.CommunityToolkit.Bepu
run: dotnet nuget push "${{ env.NUPKG_ROOT }}\bepu\*.nupkg" --source "${{ env.NUGET_SOURCE }}" --api-key "${{ secrets.NUGET_API_KEY }}" --skip-duplicate
# Stride.CommunityToolkit.Bullet
- name: Restore dependencies - Stride.CommunityToolkit.Bullet
run: dotnet restore ${{ env.PROJECT_PATH_BULLET }}
- name: Build - Stride.CommunityToolkit.Bullet
run: dotnet build ${{ env.PROJECT_PATH_BULLET }} --no-restore -c Release
- name: Test - Stride.CommunityToolkit.Bullet
run: dotnet test ${{ env.PROJECT_PATH_BULLET }} --no-build --verbosity normal
- name: Pack - Stride.CommunityToolkit.Bullet
run: dotnet pack ${{ env.PROJECT_PATH_BULLET }} --no-build -c Release -o "${{ env.NUPKG_ROOT }}\bullet"
- name: Publish - Stride.CommunityToolkit.Bullet
run: dotnet nuget push "${{ env.NUPKG_ROOT }}\bullet\*.nupkg" --source "${{ env.NUGET_SOURCE }}" --api-key "${{ secrets.NUGET_API_KEY }}" --skip-duplicate
# Stride.CommunityToolkit.DebugShapes
- name: Restore dependencies - Stride.CommunityToolkit.DebugShapes
run: dotnet restore ${{ env.PROJECT_PATH_DEBUG }}
- name: Build - Stride.CommunityToolkit.DebugShapes
run: dotnet build ${{ env.PROJECT_PATH_DEBUG }} --no-restore -c Release
- name: Test - Stride.CommunityToolkit.DebugShapes
run: dotnet test ${{ env.PROJECT_PATH_DEBUG }} --no-build --verbosity normal
- name: Pack - Stride.CommunityToolkit.DebugShapes
run: dotnet pack ${{ env.PROJECT_PATH_DEBUG }} --no-build -c Release -o "${{ env.NUPKG_ROOT }}\debug"
- name: Publish - Stride.CommunityToolkit.DebugShapes
run: dotnet nuget push "${{ env.NUPKG_ROOT }}\debug\*.nupkg" --source "${{ env.NUGET_SOURCE }}" --api-key "${{ secrets.NUGET_API_KEY }}" --skip-duplicate
# Stride.CommunityToolkit.ImGui
- name: Restore dependencies - Stride.CommunityToolkit.ImGui
run: dotnet restore ${{ env.PROJECT_PATH_IMGUI }}
- name: Build - Stride.CommunityToolkit.ImGui
run: dotnet build ${{ env.PROJECT_PATH_IMGUI }} --no-restore -c Release
- name: Test - Stride.CommunityToolkit.ImGui
run: dotnet test ${{ env.PROJECT_PATH_IMGUI }} --no-build --verbosity normal
- name: Pack - Stride.CommunityToolkit.ImGui
run: dotnet pack ${{ env.PROJECT_PATH_IMGUI }} --no-build -c Release -o "${{ env.NUPKG_ROOT }}\imgui"
- name: Publish - Stride.CommunityToolkit.ImGui
run: dotnet nuget push "${{ env.NUPKG_ROOT }}\imgui\*.nupkg" --source "${{ env.NUGET_SOURCE }}" --api-key "${{ secrets.NUGET_API_KEY }}" --skip-duplicate
# Create release
- name: Create GitHub Release
run: |
gh release create ${{ env.VERSION }} --title "v${{ env.VERSION }}" --notes "Release notes for ${{ env.VERSION }}" --draft
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}