SHA256
build apps / apps:uptimekuma (push) Failing after 2m3s
build oses / base:alpine (push) Failing after 38s
build oses / base:debian (push) Failing after 41s
build oses / base:ubuntu (push) Failing after 41s
build bot / bot:bastion (push) Failing after 1m20s
build bot / bot:parkertron (push) Failing after 43s
build bot / bot:red (push) Failing after 44s
build bot / bot:sinusbot (push) Failing after 37s
build box64 / box64:box64 (push) Failing after 38s
build bun / bun:canary (push) Failing after 42s
build bun / bun:latest (push) Failing after 35s
build cassandra / cassandra:java11_python3 (push) Failing after 46s
build cassandra / cassandra:java8_python2 (push) Failing after 38s
build dart / dart:2.17 (push) Failing after 36s
build dart / dart:2.18 (push) Failing after 34s
build dart / dart:2.19 (push) Failing after 39s
build dart / dart:3.3 (push) Failing after 40s
build dart / dart:stable (push) Failing after 35s
build dotnet / dotnet:2.1 (push) Failing after 41s
build dotnet / dotnet:3.1 (push) Failing after 38s
build dotnet / dotnet:5 (push) Failing after 45s
build dotnet / dotnet:6 (push) Failing after 47s
build dotnet / dotnet:7 (push) Failing after 42s
build dotnet / dotnet:8 (push) Failing after 36s
build dotnet / dotnet:9 (push) Failing after 43s
build elixir / elixir:1.12 (push) Failing after 1m55s
build elixir / elixir:1.13 (push) Failing after 40s
build elixir / elixir:1.14 (push) Failing after 37s
build elixir / elixir:1.15 (push) Failing after 41s
build elixir / elixir:latest (push) Failing after 34s
build erlang / erlang:22 (push) Failing after 35s
build erlang / erlang:23 (push) Failing after 41s
build erlang / erlang:24 (push) Failing after 46s
build erlang / erlang:25 (push) Failing after 40s
build erlang / erlang:26 (push) Failing after 36s
build games / games_AMD64:altv (push) Failing after 42s
build games / games_AMD64:arma3 (push) Failing after 50s
build games / games_AMD64:dayz (push) Failing after 1m9s
build games / games_AMD64:mohaa (push) Failing after 44s
build games / games_AMD64:rust (push) Failing after 40s
build games / games_AMD64:samp (push) Failing after 34s
build games / games_AMD64:source (push) Failing after 34s
build games / games_AMD64:thebattleforwesnoth (push) Failing after 32s
build games / games_AMD64:valheim (push) Failing after 28s
build games / games_All:minetest (push) Failing after 34s
build games / games_All:mta (push) Failing after 41s
build go / go:1.14 (push) Failing after 39s
build go / go:1.15 (push) Failing after 37s
build go / go:1.16 (push) Failing after 38s
build go / go:1.17 (push) Failing after 47s
build go / go:1.18 (push) Failing after 42s
build go / go:1.19 (push) Failing after 31s
build go / go:1.20 (push) Failing after 44s
build go / go:1.21 (push) Failing after 47s
build go / go:1.22 (push) Failing after 41s
build go / go:1.23 (push) Failing after 39s
build installers / installers:ubuntu-amd64 (push) Failing after 42s
build installers / installers:alpine (push) Failing after 44s
build installers / installers:debian (push) Failing after 36s
build installers / installers:ubuntu (push) Failing after 43s
build java / java:11 (push) Failing after 43s
build java / java:16 (push) Failing after 38s
build java / java:17 (push) Failing after 34s
build java / java:19 (push) Failing after 37s
build java / java:21 (push) Failing after 41s
build java / java:22 (push) Failing after 42s
build java / java:25 (push) Failing after 44s
build java / java:8 (push) Failing after 45s
build mariadb / mariadb:10.3 (push) Failing after 44s
build mariadb / mariadb:10.4 (push) Failing after 45s
build mariadb / mariadb:10.5 (push) Failing after 43s
build mariadb / mariadb:10.6 (push) Failing after 44s
build mariadb / mariadb:10.7 (push) Failing after 39s
build mariadb / mariadb:11.2 (push) Failing after 45s
build mariadb / mariadb:11.3 (push) Failing after 45s
build mariadb / mariadb:11.4 (push) Failing after 38s
build mariadb / mariadb:11.5 (push) Failing after 46s
build mariadb / mariadb:11.6 (push) Failing after 37s
build mongodb / mongodb:6 (push) Failing after 36s
build mongodb / mongodb:7 (push) Failing after 45s
build mongodb / mongodb:8 (push) Failing after 41s
build mono / mono:latest (push) Failing after 44s
build nodejs / nodejs:12 (push) Failing after 44s
build nodejs / nodejs:14 (push) Failing after 46s
build nodejs / nodejs:16 (push) Failing after 39s
build nodejs / nodejs:17 (push) Failing after 35s
build nodejs / nodejs:18 (push) Failing after 43s
build nodejs / nodejs:19 (push) Failing after 35s
build nodejs / nodejs:20 (push) Failing after 43s
build nodejs / nodejs:21 (push) Failing after 37s
build nodejs / nodejs:22 (push) Failing after 46s
build nodejs / nodejs:23 (push) Failing after 33s
build nodejs / nodejs:24 (push) Failing after 32s
build postgres / postgres:10 (push) Failing after 42s
build postgres / postgres:11 (push) Failing after 38s
build postgres / postgres:12 (push) Failing after 40s
build postgres / postgres:13 (push) Failing after 42s
build postgres / postgres:14 (push) Failing after 40s
build postgres / postgres:16 (push) Failing after 39s
build postgres / postgres:9 (push) Failing after 35s
build python / python:2.7 (push) Failing after 32s
build python / python:3.10 (push) Failing after 33s
build python / python:3.11 (push) Failing after 37s
build python / python:3.12 (push) Failing after 40s
build python / python:3.13 (push) Failing after 44s
build python / python:3.7 (push) Failing after 36s
build python / python:3.8 (push) Failing after 48s
build python / python:3.9 (push) Failing after 39s
build redis / redis:5 (push) Failing after 38s
build redis / redis:6 (push) Failing after 43s
build redis / redis:7 (push) Failing after 46s
build redis / redis:8 (push) Failing after 47s
build rust / rust:1.56 (push) Failing after 38s
build rust / rust:1.60 (push) Failing after 41s
build rust / rust:latest (push) Failing after 32s
build shareforge / kylehost:shareforge_1.41.4 (push) Failing after 43s
build steamcmd / steamcmd:debian (push) Failing after 38s
build steamcmd / steamcmd:dotnet (push) Failing after 38s
build steamcmd / steamcmd:proton (push) Failing after 46s
build steamcmd / steamcmd:proton_8 (push) Failing after 43s
build steamcmd / steamcmd:sniper (push) Failing after 38s
build steamcmd / steamcmd:ubuntu (push) Failing after 32s
build tarkov / tarkov:v4.0.11 (push) Failing after 41s
build voice / voice:teaspeak (push) Failing after 34s
build voice / yolks:voice_mumble (push) Failing after 39s
build wine / wine:10 (push) Failing after 36s
build wine / wine:7 (push) Failing after 47s
build wine / wine:8 (push) Failing after 40s
build wine / wine:9 (push) Failing after 44s
build wine / wine:devel (push) Failing after 42s
build wine / wine:latest (push) Failing after 34s
build wine / wine:staging (push) Failing after 39s
140 lines
3.5 KiB
JavaScript
140 lines
3.5 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
var startupCmd = "";
|
|
const fs = require("fs");
|
|
fs.writeFile("latest.log", "", (err) => {
|
|
if (err) console.log("Callback error in appendFile:" + err);
|
|
});
|
|
|
|
var args = process.argv.splice(process.execArgv.length + 2);
|
|
for (var i = 0; i < args.length; i++) {
|
|
if (i === args.length - 1) {
|
|
startupCmd += args[i];
|
|
} else {
|
|
startupCmd += args[i] + " ";
|
|
}
|
|
}
|
|
|
|
if (startupCmd.length < 1) {
|
|
console.log("Error: Please specify a startup command.");
|
|
process.exit();
|
|
}
|
|
|
|
const seenPercentage = {};
|
|
|
|
function filter(data) {
|
|
const str = data.toString();
|
|
if (str.startsWith("Loading Prefab Bundle ")) { // Rust seems to spam the same percentage, so filter out any duplicates.
|
|
const percentage = str.substr("Loading Prefab Bundle ".length);
|
|
if (seenPercentage[percentage]) return;
|
|
|
|
seenPercentage[percentage] = true;
|
|
}
|
|
|
|
console.log(str);
|
|
}
|
|
|
|
var exec = require("child_process").exec;
|
|
console.log("Starting Rust...");
|
|
|
|
var exited = false;
|
|
const gameProcess = exec(startupCmd);
|
|
gameProcess.stdout.on('data', filter);
|
|
gameProcess.stderr.on('data', filter);
|
|
gameProcess.on('exit', function (code, signal) {
|
|
exited = true;
|
|
|
|
if (code) {
|
|
console.log("Main game process exited with code " + code);
|
|
// process.exit(code);
|
|
}
|
|
});
|
|
|
|
function initialListener(data) {
|
|
const command = data.toString().trim();
|
|
if (command === 'quit') {
|
|
gameProcess.kill('SIGTERM');
|
|
} else {
|
|
console.log('Unable to run "' + command + '" due to RCON not being connected yet.');
|
|
}
|
|
}
|
|
process.stdin.resume();
|
|
process.stdin.setEncoding("utf8");
|
|
process.stdin.on('data', initialListener);
|
|
|
|
process.on('exit', function (code) {
|
|
if (exited) return;
|
|
|
|
console.log("Received request to stop the process, stopping the game...");
|
|
gameProcess.kill('SIGTERM');
|
|
});
|
|
|
|
var waiting = true;
|
|
var poll = function () {
|
|
function createPacket(command) {
|
|
var packet = {
|
|
Identifier: -1,
|
|
Message: command,
|
|
Name: "WebRcon"
|
|
};
|
|
return JSON.stringify(packet);
|
|
}
|
|
|
|
var serverHostname = process.env.RCON_IP ? process.env.RCON_IP : "localhost";
|
|
var serverPort = process.env.RCON_PORT;
|
|
var serverPassword = process.env.RCON_PASS;
|
|
var WebSocket = require("ws");
|
|
var ws = new WebSocket("ws://" + serverHostname + ":" + serverPort + "/" + serverPassword);
|
|
|
|
ws.on("open", function open() {
|
|
console.log("Connected to RCON. Generating the map now. Please wait until the server status switches to \"Running\".");
|
|
waiting = false;
|
|
|
|
// Hack to fix broken console output
|
|
ws.send(createPacket('status'));
|
|
|
|
process.stdin.removeListener('data', initialListener);
|
|
gameProcess.stdout.removeListener('data', filter);
|
|
gameProcess.stderr.removeListener('data', filter);
|
|
process.stdin.on('data', function (text) {
|
|
ws.send(createPacket(text));
|
|
});
|
|
});
|
|
|
|
ws.on("message", function (data, flags) {
|
|
try {
|
|
var json = JSON.parse(data);
|
|
if (json !== undefined) {
|
|
if (json.Message !== undefined && json.Message.length > 0) {
|
|
console.log(json.Message);
|
|
const fs = require("fs");
|
|
fs.appendFile("latest.log", "\n" + json.Message, (err) => {
|
|
if (err) console.log("Callback error in appendFile:" + err);
|
|
});
|
|
}
|
|
} else {
|
|
console.log("Error: Invalid JSON received");
|
|
}
|
|
} catch (e) {
|
|
if (e) {
|
|
console.log(e);
|
|
}
|
|
}
|
|
});
|
|
|
|
ws.on("error", function (err) {
|
|
waiting = true;
|
|
console.log("Waiting for RCON to come up...");
|
|
setTimeout(poll, 5000);
|
|
});
|
|
|
|
ws.on("close", function () {
|
|
if (!waiting) {
|
|
console.log("Connection to server closed.");
|
|
|
|
exited = true;
|
|
process.exit();
|
|
}
|
|
});
|
|
}
|
|
poll(); |