Skip to content

DeltaAndAstraUpdate #7030

DeltaAndAstraUpdate

DeltaAndAstraUpdate #7030

name: Build & Test Debug
# Single workflow, sequential jobs (needs:): core → backmen → maps → heavy
# Suites split via [Category("CiHeavy"|"CiMaps")] + ci-*.runsettings TestCaseFilter.
# GNU timeout is the hang wall.
on:
push:
branches: [ master, staging, stable ]
merge_group:
pull_request:
types: [ opened, reopened, synchronize, ready_for_review ]
branches: [ master, staging, stable ]
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name != 'merge_group' }}
env:
DOTNET_VERSION: 10.0.x
CONFIG: DebugOpt
DOTNET_gcServer: "1"
jobs:
core:
if: github.actor != 'PJBot' && github.event.pull_request.draft == false
runs-on: ubuntu-latest
timeout-minutes: 40
steps:
- uses: actions/checkout@v4.2.2
- name: Setup Submodule
run: git submodule update --init --recursive
- name: Pull engine updates
uses: space-wizards/submodule-dependency@v0.1.5
- name: Update Engine Submodules
run: |
cd RobustToolbox/
git submodule update --init --recursive
- uses: actions/setup-dotnet@v4.1.0
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- run: dotnet restore
- run: dotnet build --configuration ${{ env.CONFIG }} --no-restore /m
- name: Run Content.Tests
run: >
dotnet test --no-build --configuration ${{ env.CONFIG }}
Content.Tests/Content.Tests.csproj --
NUnit.ConsoleOut=0
NUnit.TestOutputXml=logs
NUnit.WorkDirectory=${{ github.workspace }}/test_results
- name: Run Content.IntegrationTests (core)
run: |
set -euo pipefail
# TERM first → exit 124 on wall; OOM stays 137. Do not use --blame-hang (false + on teardown).
timeout -k 30s 30m \
dotnet test --no-build --configuration "${CONFIG}" \
Content.IntegrationTests/Content.IntegrationTests.csproj \
--settings Content.IntegrationTests/ci-core.runsettings \
-- \
NUnit.ConsoleOut=1 \
NUnit.MapWarningTo=Failed \
NUnit.TestOutputXml=logs \
NUnit.WorkDirectory="${GITHUB_WORKSPACE}/test_results"
- name: Archive core test results
if: always()
uses: actions/upload-artifact@v4
with:
name: nunit3-results-core
path: |
test_results/**
**/TestResults/**
pool-death-report.txt
retention-days: 7
if-no-files-found: ignore
compression-level: 9
backmen:
needs: core
if: github.actor != 'PJBot' && github.event.pull_request.draft == false
runs-on: ubuntu-latest
timeout-minutes: 40
steps:
- uses: actions/checkout@v4.2.2
- name: Setup Submodule
run: git submodule update --init --recursive
- name: Pull engine updates
uses: space-wizards/submodule-dependency@v0.1.5
- name: Update Engine Submodules
run: |
cd RobustToolbox/
git submodule update --init --recursive
- uses: actions/setup-dotnet@v4.1.0
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- run: dotnet restore
- run: dotnet build --configuration ${{ env.CONFIG }} --no-restore /m
- name: Run Content.IntegrationTests (Backmen)
env:
SS14_TEST_POOL_MINUTES: "25"
run: |
set -euo pipefail
timeout -k 30s 28m \
dotnet test --no-build --configuration "${CONFIG}" \
Content.IntegrationTests/Content.IntegrationTests.csproj \
--settings Content.IntegrationTests/ci-backmen.runsettings \
-- \
NUnit.ConsoleOut=1 \
NUnit.MapWarningTo=Failed \
NUnit.TestOutputXml=logs \
NUnit.WorkDirectory="${GITHUB_WORKSPACE}/test_results_backmen"
- name: Archive Backmen test results
if: always()
uses: actions/upload-artifact@v4
with:
name: nunit3-results-backmen
path: |
test_results_backmen/**
**/TestResults/**
pool-death-report.txt
retention-days: 7
if-no-files-found: ignore
compression-level: 9
maps:
needs: backmen
if: github.actor != 'PJBot' && github.event.pull_request.draft == false
runs-on: ubuntu-latest
timeout-minutes: 120
steps:
- uses: actions/checkout@v4.2.2
- name: Setup Submodule
run: git submodule update --init --recursive
- name: Pull engine updates
uses: space-wizards/submodule-dependency@v0.1.5
- name: Update Engine Submodules
run: |
cd RobustToolbox/
git submodule update --init --recursive
- uses: actions/setup-dotnet@v4.1.0
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- run: dotnet restore
- run: dotnet build --configuration ${{ env.CONFIG }} --no-restore /m
- name: Run Content.IntegrationTests (maps)
env:
SS14_TEST_POOL_MINUTES: "90"
run: |
set -euo pipefail
timeout -k 30s 100m \
dotnet test --no-build --configuration "${CONFIG}" \
Content.IntegrationTests/Content.IntegrationTests.csproj \
--settings Content.IntegrationTests/ci-maps.runsettings \
-- \
NUnit.ConsoleOut=1 \
NUnit.MapWarningTo=Failed \
NUnit.TestOutputXml=logs \
NUnit.WorkDirectory="${GITHUB_WORKSPACE}/test_results_maps"
- name: Archive map test results
if: always()
uses: actions/upload-artifact@v4
with:
name: nunit3-results-maps
path: |
test_results_maps/**
**/TestResults/**
pool-death-report.txt
retention-days: 7
if-no-files-found: ignore
compression-level: 9
heavy:
needs: maps
if: github.actor != 'PJBot' && github.event.pull_request.draft == false
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v4.2.2
- name: Setup Submodule
run: git submodule update --init --recursive
- name: Pull engine updates
uses: space-wizards/submodule-dependency@v0.1.5
- name: Update Engine Submodules
run: |
cd RobustToolbox/
git submodule update --init --recursive
- uses: actions/setup-dotnet@v4.1.0
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- run: dotnet restore
- run: dotnet build --configuration ${{ env.CONFIG }} --no-restore /m
- name: Run Content.IntegrationTests (heavy)
env:
SS14_TEST_POOL_MINUTES: "45"
run: |
set -euo pipefail
timeout -k 30s 50m \
dotnet test --no-build --configuration "${CONFIG}" \
Content.IntegrationTests/Content.IntegrationTests.csproj \
--settings Content.IntegrationTests/ci-heavy.runsettings \
-- \
NUnit.ConsoleOut=1 \
NUnit.MapWarningTo=Failed \
NUnit.TestOutputXml=logs \
NUnit.WorkDirectory="${GITHUB_WORKSPACE}/test_results_heavy"
- name: Archive heavy test results
if: always()
uses: actions/upload-artifact@v4
with:
name: nunit3-results-heavy
path: |
test_results_heavy/**
**/TestResults/**
pool-death-report.txt
retention-days: 7
if-no-files-found: ignore
compression-level: 9
ci-success:
name: Build & Test Debug
needs: [core, backmen, maps, heavy]
if: always() && github.actor != 'PJBot' && github.event.pull_request.draft == false
runs-on: ubuntu-latest
steps:
- name: Require all test jobs
run: |
echo "core=${{ needs.core.result }}"
echo "backmen=${{ needs.backmen.result }}"
echo "maps=${{ needs.maps.result }}"
echo "heavy=${{ needs.heavy.result }}"
test "${{ needs.core.result }}" = "success"
test "${{ needs.backmen.result }}" = "success"
test "${{ needs.maps.result }}" = "success"
test "${{ needs.heavy.result }}" = "success"