deploy
Some checks failed
Build & Deploy MB Grid Solutions / build-and-deploy (push) Failing after 27s

This commit is contained in:
2026-01-29 15:18:38 +01:00
parent 5a5f96f15c
commit c3a2114064
5 changed files with 78 additions and 20 deletions

View File

@@ -80,6 +80,9 @@ jobs:
docker buildx build \ docker buildx build \
--pull \ --pull \
--platform linux/arm64 \ --platform linux/arm64 \
--build-arg NEXT_PUBLIC_BASE_URL="${{ secrets.NEXT_PUBLIC_BASE_URL }}" \
--build-arg NEXT_PUBLIC_UMAMI_WEBSITE_ID="${{ secrets.NEXT_PUBLIC_UMAMI_WEBSITE_ID }}" \
--build-arg NEXT_PUBLIC_UMAMI_SCRIPT_URL="${{ secrets.NEXT_PUBLIC_UMAMI_SCRIPT_URL }}" \
-t registry.infra.mintel.me/mintel/mb-grid-solutions:latest \ -t registry.infra.mintel.me/mintel/mb-grid-solutions:latest \
--push . --push .
@@ -166,6 +169,10 @@ jobs:
SMTP_PORT='${{ secrets.SMTP_PORT }}' \ SMTP_PORT='${{ secrets.SMTP_PORT }}' \
SMTP_SECURE='${{ secrets.SMTP_SECURE }}' \ SMTP_SECURE='${{ secrets.SMTP_SECURE }}' \
SMTP_USER='${{ secrets.SMTP_USER }}' \ SMTP_USER='${{ secrets.SMTP_USER }}' \
NEXT_PUBLIC_BASE_URL='${{ secrets.NEXT_PUBLIC_BASE_URL }}' \
NEXT_PUBLIC_UMAMI_WEBSITE_ID='${{ secrets.NEXT_PUBLIC_UMAMI_WEBSITE_ID }}' \
NEXT_PUBLIC_UMAMI_SCRIPT_URL='${{ secrets.NEXT_PUBLIC_UMAMI_SCRIPT_URL }}' \
SENTRY_DSN='${{ secrets.SENTRY_DSN }}' \
SITE_NAME='mb-grid-solutions.com' \ SITE_NAME='mb-grid-solutions.com' \
sudo -u deploy -E HOME=/home/deploy /home/deploy/deploy.sh --zero-downtime" sudo -u deploy -E HOME=/home/deploy /home/deploy/deploy.sh --zero-downtime"
@@ -218,3 +225,56 @@ jobs:
echo "║ ❌ DEPLOYMENT FAILED ║" echo "║ ❌ DEPLOYMENT FAILED ║"
fi fi
echo "╚══════════════════════════════════════════════════════════════════════════════╝" echo "╚══════════════════════════════════════════════════════════════════════════════╝"
# ═══════════════════════════════════════════════════════════════════════════════
# NOTIFICATION: Gotify
# ═══════════════════════════════════════════════════════════════════════════════
- name: 🔔 Gotify Notification (Success)
if: success()
run: |
echo "Sending success notification to Gotify..."
RESPONSE=$(curl -k -s -w "\n%{http_code}" -X POST "${{ secrets.GOTIFY_URL }}/message?token=${{ secrets.GOTIFY_TOKEN }}" \
-F "title=✅ Deployment Success: ${{ github.repository }}" \
-F "message=The deployment of ${{ github.repository }} (branch: ${{ github.ref }}) was successful.
Commit: ${{ github.sha }}
Actor: ${{ github.actor }}
Run ID: ${{ github.run_id }}" \
-F "priority=5")
HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
BODY=$(echo "$RESPONSE" | sed '$d')
echo "HTTP Status: $HTTP_CODE"
echo "Response Body: $BODY"
if [ "$HTTP_CODE" -lt 200 ] || [ "$HTTP_CODE" -ge 300 ]; then
echo "Failed to send Gotify notification"
exit 0 # Don't fail the workflow because of notification failure
fi
- name: 🔔 Gotify Notification (Failure)
if: failure()
run: |
echo "Sending failure notification to Gotify..."
RESPONSE=$(curl -k -s -w "\n%{http_code}" -X POST "${{ secrets.GOTIFY_URL }}/message?token=${{ secrets.GOTIFY_TOKEN }}" \
-F "title=❌ Deployment Failed: ${{ github.repository }}" \
-F "message=The deployment of ${{ github.repository }} (branch: ${{ github.ref }}) failed!
Commit: ${{ github.sha }}
Actor: ${{ github.actor }}
Run ID: ${{ github.run_id }}
Please check the logs for details." \
-F "priority=8")
HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
BODY=$(echo "$RESPONSE" | sed '$d')
echo "HTTP Status: $HTTP_CODE"
echo "Response Body: $BODY"
if [ "$HTTP_CODE" -lt 200 ] || [ "$HTTP_CODE" -ge 300 ]; then
echo "Failed to send Gotify notification"
exit 0 # Don't fail the workflow because of notification failure
fi

View File

@@ -1,7 +1,7 @@
import Layout from "@/components/Layout";
import type { Metadata } from "next"; import type { Metadata } from "next";
import { Inter } from "next/font/google"; import { Inter } from "next/font/google";
import "./globals.css"; import "./globals.css";
import Layout from "@/components/Layout";
const inter = Inter({ const inter = Inter({
subsets: ["latin"], subsets: ["latin"],
@@ -16,9 +16,9 @@ export const metadata: Metadata = {
}, },
description: "Ihr spezialisierter Partner für herstellerneutrale technische Beratung und Projektbegleitung bei Energiekabelprojekten bis 110 kV. Expertise in Mittel- und Hochspannungsnetzen.", description: "Ihr spezialisierter Partner für herstellerneutrale technische Beratung und Projektbegleitung bei Energiekabelprojekten bis 110 kV. Expertise in Mittel- und Hochspannungsnetzen.",
keywords: ["Energiekabel", "Hochspannung", "Mittelspannung", "Kabelprojekte", "Technische Beratung", "Engineering", "Energiewende", "110 kV"], keywords: ["Energiekabel", "Hochspannung", "Mittelspannung", "Kabelprojekte", "Technische Beratung", "Engineering", "Energiewende", "110 kV"],
authors: [{ name: "MB Grid Solutions GmbH" }], authors: [{ name: "MB Grid Solutions & Services GmbH" }],
creator: "MB Grid Solutions GmbH", creator: "MB Grid Solutions & Services GmbH",
publisher: "MB Grid Solutions GmbH", publisher: "MB Grid Solutions & Services GmbH",
formatDetection: { formatDetection: {
email: false, email: false,
address: false, address: false,
@@ -67,7 +67,7 @@ export default function RootLayout({
const jsonLd = { const jsonLd = {
"@context": "https://schema.org", "@context": "https://schema.org",
"@type": "Organization", "@type": "Organization",
"name": "MB Grid Solutions GmbH", "name": "MB Grid Solutions & Services GmbH",
"url": "https://www.mb-grid-solutions.com", "url": "https://www.mb-grid-solutions.com",
"logo": "https://www.mb-grid-solutions.com/assets/logo.png", "logo": "https://www.mb-grid-solutions.com/assets/logo.png",
"description": "Ihr spezialisierter Partner für herstellerneutrale technische Beratung und Projektbegleitung bei Energiekabelprojekten bis 110 kV.", "description": "Ihr spezialisierter Partner für herstellerneutrale technische Beratung und Projektbegleitung bei Energiekabelprojekten bis 110 kV.",

View File

@@ -1,11 +1,10 @@
'use client'; 'use client';
import { CheckCircle, Mail, MapPin, Send } from 'lucide-react';
import React, { useState } from 'react'; import React, { useState } from 'react';
import { Button } from './Button';
import { Counter } from './Counter';
import { Reveal } from './Reveal'; import { Reveal } from './Reveal';
import { TechBackground } from './TechBackground'; import { TechBackground } from './TechBackground';
import { Counter } from './Counter';
import { Button } from './Button';
export default function Contact() { export default function Contact() {
const [submitted, setSubmitted] = useState(false); const [submitted, setSubmitted] = useState(false);
@@ -97,7 +96,7 @@ export default function Contact() {
<div className="relative z-10"> <div className="relative z-10">
<h4 className="text-slate-400 font-bold text-xs uppercase tracking-widest mb-2">Anschrift</h4> <h4 className="text-slate-400 font-bold text-xs uppercase tracking-widest mb-2">Anschrift</h4>
<p className="text-white text-xl font-bold leading-relaxed"> <p className="text-white text-xl font-bold leading-relaxed">
MB Grid Solutions GmbH<br /> MB Grid Solutions & Services GmbH<br />
Raiffeisenstraße 22<br /> Raiffeisenstraße 22<br />
73630 Remshalden 73630 Remshalden
</p> </p>

View File

@@ -1,12 +1,11 @@
'use client'; 'use client';
import Link from 'next/link';
import { Shield, Zap, BarChart3, CheckCircle2, ChevronRight } from 'lucide-react';
import { motion } from 'framer-motion'; import { motion } from 'framer-motion';
import { Reveal, Stagger } from './Reveal'; import { BarChart3, CheckCircle2, ChevronRight, Shield, Zap } from 'lucide-react';
import { TechBackground } from './TechBackground'; import Link from 'next/link';
import { Counter } from './Counter'; import { Counter } from './Counter';
import { Button } from './Button'; import { Reveal } from './Reveal';
import { TechBackground } from './TechBackground';
import { TileGrid } from './TileGrid'; import { TileGrid } from './TileGrid';
export default function Home() { export default function Home() {
@@ -16,7 +15,7 @@ export default function Home() {
"name": "Technische Beratung für Energiekabelprojekte", "name": "Technische Beratung für Energiekabelprojekte",
"provider": { "provider": {
"@type": "Organization", "@type": "Organization",
"name": "MB Grid Solutions GmbH" "name": "MB Grid Solutions & Services GmbH"
}, },
"description": "Herstellerneutrale technische Beratung für Ihre Projekte in Mittel- und Hochspannungsnetzen bis zu 110 kV.", "description": "Herstellerneutrale technische Beratung für Ihre Projekte in Mittel- und Hochspannungsnetzen bis zu 110 kV.",
"areaServed": "Europe", "areaServed": "Europe",

View File

@@ -1,12 +1,12 @@
'use client'; 'use client';
import { ArrowUp, Home, Info, Mail, Menu, X } from 'lucide-react'; import { AnimatePresence } from 'framer-motion';
import React, { useEffect, useState } from 'react'; import { ArrowUp, Home, Info, Menu, X } from 'lucide-react';
import Link from 'next/link'; import Link from 'next/link';
import { usePathname } from 'next/navigation'; import { usePathname } from 'next/navigation';
import { motion, AnimatePresence } from 'framer-motion'; import React, { useEffect, useState } from 'react';
import { Reveal } from './Reveal';
import { Button } from './Button'; import { Button } from './Button';
import { Reveal } from './Reveal';
const Layout = ({ children }: { children: React.ReactNode }) => { const Layout = ({ children }: { children: React.ReactNode }) => {
const pathname = usePathname(); const pathname = usePathname();
@@ -211,7 +211,7 @@ const Layout = ({ children }: { children: React.ReactNode }) => {
<div className="pt-8 border-t border-slate-800 flex flex-col md:flex-row justify-between items-center gap-4 text-sm text-slate-500 relative"> <div className="pt-8 border-t border-slate-800 flex flex-col md:flex-row justify-between items-center gap-4 text-sm text-slate-500 relative">
<div className="absolute -top-px left-0 w-12 h-px bg-accent/50" /> <div className="absolute -top-px left-0 w-12 h-px bg-accent/50" />
<p>&copy; {new Date().getFullYear()} MB Grid Solutions GmbH. Alle Rechte vorbehalten.</p> <p>&copy; {new Date().getFullYear()} MB Grid Solutions & Services GmbH. Alle Rechte vorbehalten.</p>
<p className="flex items-center gap-2"> <p className="flex items-center gap-2">
<span className="relative flex h-2 w-2"> <span className="relative flex h-2 w-2">
<span className="animate-ping absolute inline-flex h-full w-full rounded-full bg-accent opacity-75"></span> <span className="animate-ping absolute inline-flex h-full w-full rounded-full bg-accent opacity-75"></span>