Docker-Images bauen und veroeffentlichen / build-and-push (push) Failing after 1m32s
35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
/**
|
|
* Hintergrundlauf fuer Reservierungen, Folgeraten, Zahlungsmethoden und
|
|
* E-Mails. Im Cluster als Kubernetes-CronJob (k8s/base/cronjob-worker.yaml),
|
|
* lokal per `pnpm worker`.
|
|
*
|
|
* Endet mit Exit-Code 1, wenn etwas fehlschlaegt — der CronJob-Lauf wird
|
|
* dann als fehlgeschlagen sichtbar statt still im Log zu verschwinden.
|
|
*/
|
|
import { getDb } from "@/lib/db";
|
|
import { env, requireAppSecret } from "@/lib/env";
|
|
import { getGateway } from "@/lib/payment-gateway";
|
|
import { runWorker } from "@/lib/worker-jobs";
|
|
|
|
try {
|
|
process.loadEnvFile();
|
|
} catch {
|
|
// Im Container kommen die Variablen aus der Umgebung.
|
|
}
|
|
|
|
const db = getDb();
|
|
try {
|
|
const result = await runWorker(db, getGateway(), {
|
|
now: new Date(),
|
|
secret: requireAppSecret(),
|
|
adminEmail: env().ADMIN_NOTIFY_EMAIL ?? null,
|
|
});
|
|
console.log(`[worker] ${new Date().toISOString()} ${JSON.stringify(result)}`);
|
|
process.exitCode = result.emails.failed > 0 ? 1 : 0;
|
|
} catch (error) {
|
|
console.error(`[worker] Abbruch: ${error instanceof Error ? error.message : "unbekannter Fehler"}`);
|
|
process.exitCode = 1;
|
|
} finally {
|
|
await db.$disconnect();
|
|
}
|