Skip to content

Filter inactive connections from tracked player snapshots #35

Filter inactive connections from tracked player snapshots

Filter inactive connections from tracked player snapshots #35

Workflow file for this run

name: Build and Test
on:
push:
branches: [ master, develop ]
pull_request:
branches: [ master, develop ]
workflow_dispatch:
inputs:
assembly_branch:
description: "Assembly branch to use (main/master or beta)"
required: false
default: "main"
type: choice
options:
- main
- master
- beta
jobs:
build-mono:
runs-on: windows-latest
steps:
- name: Checkout DedicatedServerMod
uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: "8.0.x"
- name: Determine Assembly Branch
id: assembly-branch
shell: bash
run: |
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]] && [[ -n "${{ inputs.assembly_branch }}" ]]; then
requested_branch="${{ inputs.assembly_branch }}"
else
requested_branch="master"
fi
case "$requested_branch" in
main|master)
resolved_branch="main"
;;
beta)
resolved_branch="beta"
;;
*)
echo "Unsupported assembly branch: $requested_branch"
exit 1
;;
esac
echo "branch=$resolved_branch" >> "$GITHUB_OUTPUT"
echo "Using $resolved_branch assemblies (requested: $requested_branch)"
- name: Create Assembly Directory Structure
shell: bash
run: |
mkdir -p ScheduleOneAssemblies/Managed
mkdir -p ScheduleOneAssemblies/MelonLoader
- name: Restore Game Assemblies from Cache
id: cache-assemblies
uses: actions/cache/restore@v4
with:
path: ScheduleOneAssemblies
key: game-assemblies-v4-${{ steps.assembly-branch.outputs.branch }}-${{ hashFiles('DedicatedServerMod.csproj') }}
restore-keys: |
game-assemblies-v4-${{ steps.assembly-branch.outputs.branch }}-
- name: Checkout Game Assemblies
uses: actions/checkout@v4
with:
repository: ${{ secrets.GAME_ASSEMBLIES_REPO }}
token: ${{ secrets.GAME_ASSEMBLIES_TOKEN }}
ref: ${{ steps.assembly-branch.outputs.branch }}
path: game-assemblies
fetch-depth: 1
if: steps.cache-assemblies.outputs.cache-hit != 'true' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository)
- name: Copy Game Assemblies
shell: bash
run: |
if [ -d "game-assemblies/Managed" ]; then
cp -r game-assemblies/Managed/* ScheduleOneAssemblies/Managed/ || echo "Failed to copy Mono assemblies"
echo "Copied Mono assemblies"
fi
if [ -d "game-assemblies/MelonLoader" ]; then
cp -r game-assemblies/MelonLoader/* ScheduleOneAssemblies/MelonLoader/ || echo "Failed to copy MelonLoader assemblies"
echo "Copied MelonLoader assemblies"
fi
if: steps.cache-assemblies.outputs.cache-hit != 'true' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository)
- name: Check Assembly Files
id: assembly-files
shell: bash
run: |
ready=true
if [ ! -f "ScheduleOneAssemblies/Managed/Assembly-CSharp.dll" ]; then
echo "Missing Assembly-CSharp.dll"
ready=false
fi
if [ ! -f "ScheduleOneAssemblies/MelonLoader/MelonLoader.dll" ]; then
echo "Missing MelonLoader.dll"
ready=false
fi
echo "ready=$ready" >> "$GITHUB_OUTPUT"
- name: Verify Assemblies
shell: bash
run: |
if [ -f "ScheduleOneAssemblies/Managed/Assembly-CSharp.dll" ]; then
echo "Found Assembly-CSharp.dll"
else
echo "Missing Assembly-CSharp.dll"
exit 1
fi
if [ -f "ScheduleOneAssemblies/MelonLoader/MelonLoader.dll" ]; then
echo "Found MelonLoader.dll"
else
echo "Missing MelonLoader.dll"
exit 1
fi
- name: Create CI Build Properties
shell: bash
run: |
cat > ci.build.props << 'EOF'
<Project>
<PropertyGroup>
<AutomateLocalDeployment>false</AutomateLocalDeployment>
<MelonLoaderAssembliesPath>$(MSBuildThisFileDirectory)ScheduleOneAssemblies/MelonLoader</MelonLoaderAssembliesPath>
<MonoAssembliesPath>$(MSBuildThisFileDirectory)ScheduleOneAssemblies/Managed</MonoAssembliesPath>
</PropertyGroup>
</Project>
EOF
- name: Restore Dependencies
run: dotnet restore DedicatedServerMod.csproj
- name: Build Mono Server
run: dotnet build DedicatedServerMod.csproj --no-restore -c Mono_Server -v normal
- name: Build Mono Client
run: dotnet build DedicatedServerMod.csproj --no-restore -c Mono_Client -v normal
- name: Upload Mono Server Artifact
uses: actions/upload-artifact@v4
with:
name: DedicatedServerMod-Mono-Server
path: bin/Mono_Server/netstandard2.1/*.dll
- name: Upload Mono Client Artifact
uses: actions/upload-artifact@v4
with:
name: DedicatedServerMod-Mono-Client
path: bin/Mono_Client/netstandard2.1/*.dll
- name: Save Game Assemblies to Cache
uses: actions/cache/save@v4
if: always() && steps.cache-assemblies.outputs.cache-hit != 'true' && steps.assembly-files.outputs.ready == 'true'
with:
path: ScheduleOneAssemblies
key: game-assemblies-v4-${{ steps.assembly-branch.outputs.branch }}-${{ hashFiles('DedicatedServerMod.csproj') }}
summary:
runs-on: ubuntu-latest
needs: [build-mono]
if: always()
steps:
- name: Build Summary
run: |
echo "=== Build Complete ==="
echo "Mono Server: ${{ needs.build-mono.result }}"
echo "Mono Client: ${{ needs.build-mono.result }}"