Compare commits

..
2 Commits
Author SHA1 Message Date
gregandClaude Opus 5.5 65cbb8cfd4 feat(ark): ready when advertising for join
Validate game templates / validate (push) Successful in 9m31s
Validate game templates / boot-test (push) Successful in 15m9s
Validate game templates / publish (push) Skipped
First boot with the install fix ran ARK for ~10 minutes and found, in
ShooterGame.log: "Server: ... has successfully started!", "EOS ownership
validation initialized: Success", "Full Startup: 36.26 seconds" and,
about two minutes later, "Server has completed startup and is now
advertising for join. (9.96GB Mem)". That last line is when players,
console players through EOS included, can join, so it is the
readyPattern; the real line is test.yaml's readyExample. Boot tests now
wait for it instead of only checking ARK stays up for 10 minutes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 02:35:52 -04:00
gregandClaude Opus 5.5 9fef27cd40 fix(ark): retry the server install before handing over to the image
The image's start_server runs SteamCMD once and carries on even when it
fails; SteamCMD's intermittent "Missing configuration" error then left
no server installed, so ARK exited and only the node's restart policy
saved it (a boot test would fail on the restart). First boot showed it.

The startup command now downloads SteamCMD if missing, runs the usual
"+login anonymous +quit" warm-up and installs app 2430930, retrying up
to three times until ArkAscendedServer.exe exists. start_server's own
install step then only validates.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 02:25:45 -04:00
2 changed files with 5 additions and 4 deletions

No files matched your search

@@ -3,7 +3,7 @@ id: ark-survival-ascended-crossplay
name: 'ARK: Survival Ascended (Crossplay Dedicated Server)' name: 'ARK: Survival Ascended (Crossplay Dedicated Server)'
defaultDockerImage: mschnitzer/asa-linux-server:latest defaultDockerImage: mschnitzer/asa-linux-server:latest
containerUser: "25000:25000" containerUser: "25000:25000"
defaultStartupCommand: bash -c 'mkdir -p /server /data/Steam /data/steamcmd /data/cluster-shared && rm -rf /home/gameserver/server-files /home/gameserver/Steam /home/gameserver/steamcmd /home/gameserver/cluster-shared && ln -sfn /server /home/gameserver/server-files && ln -sfn /data/Steam /home/gameserver/Steam && ln -sfn /data/steamcmd /home/gameserver/steamcmd && ln -sfn /data/cluster-shared /home/gameserver/cluster-shared && export ASA_START_PARAMS="${ASA_START_PARAMS:-${SERVER_MAP:-TheIsland_WP}?listen?Port=${PORT:-7777}?RCONPort=${RCONPORT:-27020}?RCONEnabled=True -WinLiveMaxPlayers=${MAX_PLAYERS:-70} -ServerPlatform=ALL}" && exec /usr/bin/start_server' defaultStartupCommand: bash -c 'mkdir -p /server /data/Steam /data/steamcmd /data/cluster-shared && rm -rf /home/gameserver/server-files /home/gameserver/Steam /home/gameserver/steamcmd /home/gameserver/cluster-shared && ln -sfn /server /home/gameserver/server-files && ln -sfn /data/Steam /home/gameserver/Steam && ln -sfn /data/steamcmd /home/gameserver/steamcmd && ln -sfn /data/cluster-shared /home/gameserver/cluster-shared && (cd /home/gameserver/steamcmd && { [ -x steamcmd.sh ] || wget -qO- https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz | tar xz; } && for i in 1 2 3; do ./steamcmd.sh +login anonymous +quit; ./steamcmd.sh +force_install_dir /home/gameserver/server-files +login anonymous +app_update 2430930 validate +quit; [ -f /home/gameserver/server-files/ShooterGame/Binaries/Win64/ArkAscendedServer.exe ] && break; echo "ARK install attempt $i failed, retrying in 15s"; sleep 15; done) && export ASA_START_PARAMS="${ASA_START_PARAMS:-${SERVER_MAP:-TheIsland_WP}?listen?Port=${PORT:-7777}?RCONPort=${RCONPORT:-27020}?RCONEnabled=True -WinLiveMaxPlayers=${MAX_PLAYERS:-70} -ServerPlatform=ALL}" && exec /usr/bin/start_server'
requiredMemoryMb: 16384 requiredMemoryMb: 16384
requiredDiskMb: 32768 requiredDiskMb: 32768
defaultPorts: defaultPorts:
@@ -325,6 +325,7 @@ agnosticCommandConfig:
restPortKey: null restPortKey: null
restUser: null restUser: null
logFilePath: ShooterGame/Saved/Logs/ShooterGame.log logFilePath: ShooterGame/Saved/Logs/ShooterGame.log
readyPattern: Server has completed startup and is now advertising for join
backupPaths: backupPaths:
- ShooterGame/Saved - ShooterGame/Saved
maxBackupSizeMb: 4096 maxBackupSizeMb: 4096
@@ -1,6 +1,6 @@
# yaml-language-server: $schema=../../schema/test.schema.json # yaml-language-server: $schema=../../schema/test.schema.json
# Values CI uses to boot-test this game. Never put real credentials here: map them under 'secrets'. # Values CI uses to boot-test this game. Never put real credentials here: map them under 'secrets'.
# No readyPattern yet: the server must stay up for 10 minutes, which covers the ~13 GB first # Ready means advertising for join, which comes about 2 minutes after "Full Startup"; the first boot also
# download and Proton's slow first start. # installs ~13 GB and Proton, so the timeout is generous.
settleSec: 600 readyExample: '[2026.10.25-06.32.24:246][239]Server has completed startup and is now advertising for join. (9.96GB Mem)'
timeoutSec: 2400 timeoutSec: 2400