Auto-refresh Watchtower status
All checks were successful
Build & Push Docker Image to Gitea Registry / build-and-push (push) Successful in 12s
All checks were successful
Build & Push Docker Image to Gitea Registry / build-and-push (push) Successful in 12s
This commit is contained in:
@@ -13,6 +13,7 @@ const DOCKER_SOCKET = process.env.DOCKER_SOCKET || '/var/run/docker.sock';
|
||||
const WATCHTOWER_CONTAINER = process.env.WATCHTOWER_CONTAINER || 'watchtower';
|
||||
const WATCHTOWER_RUN_IMAGE = process.env.WATCHTOWER_RUN_IMAGE || 'containrrr/watchtower';
|
||||
const WATCHTOWER_CONFIG_PATH = process.env.WATCHTOWER_CONFIG_PATH || '/volume2/docker/watchtower/config.json';
|
||||
const WATCHTOWER_LOG_TAIL = Number(process.env.WATCHTOWER_LOG_TAIL || 1200);
|
||||
const AUTHORITY = process.env.AUTHORITY || 'https://auth.mischlabs.de/realms/mischlabs';
|
||||
const ADMIN_CLIENT_ID = process.env.ADMIN_CLIENT_ID || 'mischlabs-admin';
|
||||
const ADMIN_USERS = (process.env.ADMIN_USERS || 'mrdiderot').split(',').map((user) => user.trim().toLowerCase()).filter(Boolean);
|
||||
@@ -523,7 +524,7 @@ function parseWatchtower(lines) {
|
||||
current.warnings.push(line.replace(/^.*msg="/, '').replace(/"$/, ''));
|
||||
}
|
||||
|
||||
const done = line.match(/Session done(?:\\"|") Failed=(\d+) Scanned=(\d+) Updated=(\d+)/);
|
||||
const done = line.match(/Session done.*Failed=(\d+)\s+Scanned=(\d+)\s+Updated=(\d+)/);
|
||||
if (done) {
|
||||
current = current || { startedAt: time, found: [], warnings: [] };
|
||||
current.finishedAt = time;
|
||||
@@ -538,7 +539,7 @@ function parseWatchtower(lines) {
|
||||
if (sessions.length) return sessions.at(-1);
|
||||
|
||||
const lastDoneLine = [...lines].reverse().find((line) => line.includes('Session done'));
|
||||
const done = lastDoneLine?.match(/Failed=(\d+) Scanned=(\d+) Updated=(\d+)/);
|
||||
const done = lastDoneLine?.match(/Failed=(\d+)\s+Scanned=(\d+)\s+Updated=(\d+)/);
|
||||
if (done) {
|
||||
const time = lastDoneLine.match(/time="([^"]+)"/)?.[1] || null;
|
||||
return {
|
||||
@@ -599,7 +600,7 @@ async function statusPayload() {
|
||||
const [containers, disks, logs, services] = await Promise.all([
|
||||
getContainers().catch((error) => ({ error: error.message })),
|
||||
getDisks(),
|
||||
dockerLogs(WATCHTOWER_CONTAINER).catch((error) => [`watchtower logs unavailable: ${error.message}`]),
|
||||
dockerLogs(WATCHTOWER_CONTAINER, WATCHTOWER_LOG_TAIL).catch((error) => [`watchtower logs unavailable: ${error.message}`]),
|
||||
getServices()
|
||||
]);
|
||||
|
||||
@@ -609,6 +610,8 @@ async function statusPayload() {
|
||||
disks,
|
||||
watchtower: {
|
||||
container: WATCHTOWER_CONTAINER,
|
||||
generatedAt: new Date().toISOString(),
|
||||
logTail: WATCHTOWER_LOG_TAIL,
|
||||
lastSession: Array.isArray(logs) ? parseWatchtower(logs) : null,
|
||||
tail: Array.isArray(logs) ? logs.slice(-20) : logs
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user