Fix SCUM SteamCMD lifecycle install
This commit is contained in:
@@ -9,8 +9,8 @@
|
||||
"SERVER_TEMPLATE": "scum-server",
|
||||
"SERVER_STEAM_APP_ID": "3792580",
|
||||
"SERVER_STEAMCMD_INSTALL_DIR_ARG": "+force_install_dir",
|
||||
"SERVER_STEAMCMD_UPDATE_ARGS": "+login anonymous +app_update 3792580 validate +quit",
|
||||
"SERVER_STEAMCMD_UPDATE_ARGS": "+login anonymous +app_update 3792580 +quit",
|
||||
"SERVER_EXECUTABLE_REF": "SCUM/Binaries/Win64/SCUMServer.exe"
|
||||
},
|
||||
"timeoutMs": 300000
|
||||
"timeoutMs": 7200000
|
||||
}
|
||||
|
||||
@@ -5,21 +5,24 @@ if "%SERVER_ROOT%"=="" set "SERVER_ROOT=C:\scumserver"
|
||||
set "SERVER_ROOT_WINDOWS=%SERVER_ROOT:/=\%"
|
||||
if "%SERVER_STEAM_APP_ID%"=="" set "SERVER_STEAM_APP_ID=3792580"
|
||||
if "%SERVER_STEAMCMD_INSTALL_DIR_ARG%"=="" set "SERVER_STEAMCMD_INSTALL_DIR_ARG=+force_install_dir"
|
||||
if "%SERVER_STEAMCMD_UPDATE_ARGS%"=="" set "SERVER_STEAMCMD_UPDATE_ARGS=+login anonymous +app_update 3792580 validate +quit"
|
||||
if "%SERVER_STEAMCMD_UPDATE_ARGS%"=="" set "SERVER_STEAMCMD_UPDATE_ARGS=+login anonymous +app_update 3792580 +quit"
|
||||
if "%SERVER_EXECUTABLE_REF%"=="" set "SERVER_EXECUTABLE_REF=SCUM\Binaries\Win64\SCUMServer.exe"
|
||||
if "%SERVER_INSTALL_DIR%"=="" set "SERVER_INSTALL_DIR=%SERVER_ROOT_WINDOWS%"
|
||||
set "SERVER_INSTALL_DIR_WINDOWS=%SERVER_INSTALL_DIR:/=\%"
|
||||
set "SERVER_INSTALL_DIR_STEAM=%SERVER_INSTALL_DIR_WINDOWS:\=/%"
|
||||
if "%SERVER_STEAMCMD_DIR%"=="" call :default_steamcmd_dir
|
||||
set "SERVER_STEAMCMD_DIR_WINDOWS=%SERVER_STEAMCMD_DIR:/=\%"
|
||||
if "%SERVER_STEAMCMD_MAX_ATTEMPTS%"=="" set "SERVER_STEAMCMD_MAX_ATTEMPTS=3"
|
||||
if "%SERVER_STEAMCMD_RETRY_SECONDS%"=="" set "SERVER_STEAMCMD_RETRY_SECONDS=30"
|
||||
|
||||
set "STEAMCMD_DIR=%SERVER_ROOT_WINDOWS%\steamcmd"
|
||||
set "STEAMCMD_DIR=%SERVER_STEAMCMD_DIR_WINDOWS%"
|
||||
set "STEAMCMD_EXE=%STEAMCMD_DIR%\steamcmd.exe"
|
||||
set "SCUM_EXE_MARKER=%SERVER_ROOT_WINDOWS%\.scum-exe-path"
|
||||
|
||||
if not exist "%SERVER_ROOT_WINDOWS%" mkdir "%SERVER_ROOT_WINDOWS%"
|
||||
if not exist "%STEAMCMD_DIR%" mkdir "%STEAMCMD_DIR%"
|
||||
if not exist "%SERVER_INSTALL_DIR_WINDOWS%" mkdir "%SERVER_INSTALL_DIR_WINDOWS%"
|
||||
if /I "%STEAMCMD_DIR%"=="%SERVER_INSTALL_DIR_WINDOWS%" exit /b 3
|
||||
|
||||
if not exist "%STEAMCMD_EXE%" (
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -Command "[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12; $zip=Join-Path $env:STEAMCMD_DIR 'steamcmd.zip'; Invoke-WebRequest -Uri 'https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip' -OutFile $zip; Expand-Archive -Path $zip -DestinationPath $env:STEAMCMD_DIR -Force; Remove-Item $zip -Force"
|
||||
@@ -54,3 +57,12 @@ set "SCUM_EXE=%SERVER_ROOT_WINDOWS%\steamcmd\steamapps\common\SCUM Server\%SERVE
|
||||
if exist "%SCUM_EXE%" exit /b 0
|
||||
set "SCUM_EXE=%SERVER_ROOT_WINDOWS%\SCUM Server\%SERVER_EXECUTABLE_REF:/=\%"
|
||||
exit /b 0
|
||||
|
||||
:default_steamcmd_dir
|
||||
for %%I in ("%SERVER_ROOT_WINDOWS%") do set "SERVER_ROOT_DRIVE=%%~dI"
|
||||
if "%SERVER_ROOT_DRIVE%"=="" (
|
||||
set "SERVER_STEAMCMD_DIR=%SERVER_ROOT_WINDOWS%-steamcmd"
|
||||
) else (
|
||||
set "SERVER_STEAMCMD_DIR=%SERVER_ROOT_DRIVE%\steamcmd"
|
||||
)
|
||||
exit /b 0
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"id": "game.scum",
|
||||
"name": "SCUM Server",
|
||||
"description": "First-party SCUM game server operations plugin with platform-mediated lifecycle and companion bridge support.",
|
||||
"version": "0.1.2",
|
||||
"version": "0.1.4",
|
||||
"kind": "game-plugin",
|
||||
"tags": [
|
||||
"scum",
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
"additionalProperties": { "type": "string", "maxLength": 512 },
|
||||
"maxProperties": 32
|
||||
},
|
||||
"timeoutMs": { "type": "integer", "minimum": 1, "maximum": 300000 },
|
||||
"timeoutMs": { "type": "integer", "minimum": 1, "maximum": 7200000 },
|
||||
"stopTimeoutMs": { "type": "integer", "minimum": 1, "maximum": 60000 }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,11 +199,14 @@ describe("plugin manifest validation", () => {
|
||||
const startScript = fs.readFileSync(path.join(pluginDir, startAction.executableKey), "utf8");
|
||||
expect(manifest.runtimeProfiles.serverDeployments).toBeUndefined();
|
||||
expect(assetPaths).toEqual(expect.arrayContaining(["actions/install.json", "actions/start.json", "bin/scum-install-update.cmd", "bin/scum-start.cmd"]));
|
||||
expect(installAction).toMatchObject({ executableKey: "bin/scum-install-update.cmd", environment: { SERVER_STEAM_APP_ID: "3792580", SERVER_STEAMCMD_UPDATE_ARGS: "+login anonymous +app_update 3792580 validate +quit" } });
|
||||
expect(installAction).toMatchObject({ executableKey: "bin/scum-install-update.cmd", environment: { SERVER_STEAM_APP_ID: "3792580", SERVER_STEAMCMD_UPDATE_ARGS: "+login anonymous +app_update 3792580 +quit" } });
|
||||
expect(installAction.timeoutMs).toBe(7200000);
|
||||
expect(startAction).toMatchObject({ executableKey: "bin/scum-start.cmd", environment: { SERVER_LOG_FLAG: "-log" } });
|
||||
expect(installScript).toContain("taskkill /IM SCUMServer.exe /F");
|
||||
expect(installScript).toContain("SERVER_ROOT_WINDOWS=%SERVER_ROOT:/=\\%");
|
||||
expect(installScript).toContain("SERVER_INSTALL_DIR=%SERVER_ROOT_WINDOWS%");
|
||||
expect(installScript).toContain("SERVER_STEAMCMD_DIR=%SERVER_ROOT_DRIVE%\\steamcmd");
|
||||
expect(installScript).toContain("STEAMCMD_DIR=%SERVER_STEAMCMD_DIR_WINDOWS%");
|
||||
expect(installScript).toContain("SERVER_INSTALL_DIR_STEAM=%SERVER_INSTALL_DIR_WINDOWS:\\=/%");
|
||||
expect(installScript).toContain("%SERVER_STEAMCMD_INSTALL_DIR_ARG% \"%SERVER_INSTALL_DIR_STEAM%\" %SERVER_STEAMCMD_UPDATE_ARGS%");
|
||||
expect(installScript).toContain("SERVER_STEAMCMD_MAX_ATTEMPTS=3");
|
||||
|
||||
Reference in New Issue
Block a user