feat(notifications): implement notifications for gotify

This commit is contained in:
depado
2025-01-13 18:57:45 +01:00
parent 1f8a476264
commit e25d0c0c68
12 changed files with 4450 additions and 871 deletions

View File

@@ -6,6 +6,7 @@ import { and, eq } from "drizzle-orm";
import {
sendDiscordNotification,
sendEmailNotification,
sendGotifyNotification,
sendSlackNotification,
sendTelegramNotification,
} from "./utils";
@@ -39,11 +40,12 @@ export const sendBuildErrorNotifications = async ({
discord: true,
telegram: true,
slack: true,
gotify: true,
},
});
for (const notification of notificationList) {
const { email, discord, telegram, slack } = notification;
const { email, discord, telegram, slack, gotify } = notification;
if (email) {
const template = await renderAsync(
BuildFailedEmail({
@@ -112,6 +114,21 @@ export const sendBuildErrorNotifications = async ({
});
}
if (gotify) {
const decorate = (decoration: string, text: string) =>
`${gotify.decoration ? decoration : ""} ${text}`.trim();
await sendGotifyNotification(
gotify,
decorate("⚠️", "Build Failed"),
`${decorate("🛠️", `Project: ${projectName}`)}
${decorate("⚙️", `Application: ${applicationName}`)}
${decorate("❔", `Type: ${applicationType}`)}
${decorate("🕒", `Date: ${date.toLocaleString()}`)}
${decorate("⚠️", `Error:\n${errorMessage}`)}
${decorate("🔗", `Build details:\n${buildLink}`)}`,
);
}
if (telegram) {
await sendTelegramNotification(
telegram,