Skip to content

feat(collection): publish VRChat collector releases independently #7

feat(collection): publish VRChat collector releases independently

feat(collection): publish VRChat collector releases independently #7

name: Collector Contracts
on:
pull_request:
push:
branches: [main]
permissions:
contents: read
jobs:
portable:
name: Portable contracts and tests
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0
- uses: actions/setup-node@v6
with:
node-version: 24
cache: npm
cache-dependency-path: collection/collectors/Heartbeat.Collector.Browser/package-lock.json
- name: Build and test Browser Collector
working-directory: collection/collectors/Heartbeat.Collector.Browser
run: |
npm ci
npm test
npm run build
- name: Verify Fact Schema evolution and generated Browser payload
env:
CONTRACT_BASE_REF: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event.before }}
run: node scripts/collector-contracts.mjs check --base-ref "$CONTRACT_BASE_REF"
- uses: actions/setup-dotnet@v6
with:
dotnet-version: 10.0.x
- name: Restore .NET tools and dependencies
run: |
dotnet tool restore
dotnet restore Heartbeat.slnx
- name: Verify portable .NET behavior
run: |
dotnet test shared/Heartbeat.Core.Tests/Heartbeat.Core.Tests.csproj -c Release --no-restore
dotnet test collection/protocol/Heartbeat.Collection.CollectorProtocol.Tests/Heartbeat.Collection.CollectorProtocol.Tests.csproj -c Release --no-restore
dotnet test collection/collectors/Heartbeat.Collector.Reference.ManagedProcess.Tests/Heartbeat.Collector.Reference.ManagedProcess.Tests.csproj -c Release --no-restore
dotnet test collection/collectors/Heartbeat.Collector.VRChat.Tests/Heartbeat.Collector.VRChat.Tests.csproj -c Release --no-restore
dotnet test collection/hub/Heartbeat.Collection.Headless.Tests/Heartbeat.Collection.Headless.Tests.csproj -c Release --no-restore
dotnet test collection/hub/Heartbeat.Collection.Hub.Tests/Heartbeat.Collection.Hub.Tests.csproj -c Release --no-restore
dotnet test collection/desktop/Heartbeat.Collector.System.Tests/Heartbeat.Collector.System.Tests.csproj -c Release --no-restore
dotnet test collection/desktop/Heartbeat.Desktop.UI.Tests/Heartbeat.Desktop.UI.Tests.csproj -c Release --no-restore
dotnet test collection/desktop/Heartbeat.Desktop.Updater.Velopack.Tests/Heartbeat.Desktop.Updater.Velopack.Tests.csproj -c Release --no-restore
dotnet test server/Heartbeat.Server.Tests/Heartbeat.Server.Tests.csproj -c Release --no-restore
macos:
name: macOS desktop tests
runs-on: macos-15
timeout-minutes: 15
steps:
- uses: actions/checkout@v7
- uses: actions/setup-node@v6
with:
node-version: 24
- uses: actions/setup-dotnet@v6
with:
dotnet-version: 10.0.x
- name: Verify macOS platform head
run: dotnet test collection/desktop/Heartbeat.Desktop.Mac.Tests/Heartbeat.Desktop.Mac.Tests.csproj -c Release
windows:
name: Windows desktop tests
runs-on: windows-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v7
- uses: actions/setup-node@v6
with:
node-version: 24
- uses: actions/setup-dotnet@v6
with:
dotnet-version: 10.0.x
- name: Verify Browser Collector package payload on Windows
shell: bash
run: |
npm ci --prefix collection/collectors/Heartbeat.Collector.Browser
npm run build --prefix collection/collectors/Heartbeat.Collector.Browser
node scripts/collector-contracts.mjs check
- name: Verify Windows platform head
run: dotnet test collection/desktop/Heartbeat.Desktop.Windows.Tests/Heartbeat.Desktop.Windows.Tests.csproj -c Release
frontend:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v7
- uses: actions/setup-node@v6
with:
node-version: 24
cache: npm
cache-dependency-path: frontend/package-lock.json
- name: Install Frontend dependencies
working-directory: frontend
run: npm ci
- name: Verify Frontend types, behavior and production build
working-directory: frontend
run: |
npm run typecheck
npm test
npm run build