Compare commits

..

5 Commits

Author SHA1 Message Date
1023ef978e feat: assign unique hero videos to each page to avoid duplicates
All checks were successful
Build & Deploy / 🔍 Prepare (push) Successful in 43s
Build & Deploy / 🧪 QA (push) Successful in 2m39s
Build & Deploy / 🏗️ Build (push) Successful in 4m48s
Build & Deploy / 🚀 Deploy (push) Successful in 56s
Build & Deploy / 🧪 Post-Deploy Verification (push) Successful in 1m1s
Build & Deploy / 🔔 Notify (push) Successful in 1s
2026-05-12 15:46:20 +02:00
2a1f6864c9 fix(deploy): use latest gatekeeper image instead of outdated testing tag
All checks were successful
Build & Deploy / 🔍 Prepare (push) Successful in 35s
Build & Deploy / 🧪 QA (push) Successful in 1m25s
Build & Deploy / 🏗️ Build (push) Successful in 2m52s
Build & Deploy / 🚀 Deploy (push) Successful in 43s
Build & Deploy / 🧪 Post-Deploy Verification (push) Successful in 59s
Build & Deploy / 🔔 Notify (push) Successful in 1s
2026-05-12 15:20:20 +02:00
fa9fb60dec fix(deploy): allow insecure internal fetches for gatekeeper images
All checks were successful
Build & Deploy / 🔍 Prepare (push) Successful in 35s
Build & Deploy / 🧪 QA (push) Successful in 1m20s
Build & Deploy / 🏗️ Build (push) Successful in 2m50s
Build & Deploy / 🚀 Deploy (push) Successful in 43s
Build & Deploy / 🧪 Post-Deploy Verification (push) Successful in 58s
Build & Deploy / 🔔 Notify (push) Successful in 1s
2026-05-12 15:06:41 +02:00
3abe4f419f fix(deploy): fix gatekeeper network to allow DB access
All checks were successful
Build & Deploy / 🔍 Prepare (push) Successful in 35s
Build & Deploy / 🧪 QA (push) Successful in 1m20s
Build & Deploy / 🏗️ Build (push) Successful in 2m51s
Build & Deploy / 🚀 Deploy (push) Successful in 42s
Build & Deploy / 🧪 Post-Deploy Verification (push) Successful in 58s
Build & Deploy / 🔔 Notify (push) Successful in 1s
2026-05-12 14:50:39 +02:00
ba3a711d5b fix(deploy): remove testing.e-tib.com from TRAEFIK_HOST to prevent ACME challenge failure
All checks were successful
Build & Deploy / 🔍 Prepare (push) Successful in 37s
Build & Deploy / 🧪 QA (push) Successful in 1m20s
Build & Deploy / 🏗️ Build (push) Successful in 2m46s
Build & Deploy / 🚀 Deploy (push) Successful in 43s
Build & Deploy / 🧪 Post-Deploy Verification (push) Successful in 58s
Build & Deploy / 🔔 Notify (push) Successful in 1s
2026-05-12 14:43:42 +02:00
9 changed files with 13 additions and 13 deletions

View File

@@ -65,7 +65,7 @@ jobs:
TARGET="testing" TARGET="testing"
IMAGE_TAG="main-${SHORT_SHA}" IMAGE_TAG="main-${SHORT_SHA}"
ENV_FILE=".env.testing" ENV_FILE=".env.testing"
TRAEFIK_HOST="test.${DOMAIN}, testing.${DOMAIN}" TRAEFIK_HOST="test.${DOMAIN}"
elif [[ "${{ github.ref_type }}" == "tag" ]]; then elif [[ "${{ github.ref_type }}" == "tag" ]]; then
if [[ "$REF" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then if [[ "$REF" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
TARGET="production" TARGET="production"

View File

@@ -9,7 +9,7 @@ layout: "fullBleed"
badge="Karriere" badge="Karriere"
title="Zukunft bauen" title="Zukunft bauen"
description="Suchen Sie eine neue Herausforderung in einem zukunftssicheren Markt? Bei E-TIB arbeiten wir täglich daran, Deutschland zu vernetzen und die Energiewende voranzutreiben." description="Suchen Sie eine neue Herausforderung in einem zukunftssicheren Markt? Bei E-TIB arbeiten wir täglich daran, Deutschland zu vernetzen und die Energiewende voranzutreiben."
videoUrl="/assets/videos/web/hero-bohrung.mp4" videoUrl="/assets/videos/web/hero-kabelpflug.mp4"
linkText="Offene Stellen" linkText="Offene Stellen"
linkHref="#stellen" linkHref="#stellen"
/> />

View File

@@ -9,7 +9,7 @@ layout: "fullBleed"
badge="Unsere Leistungen" badge="Unsere Leistungen"
title="Alles aus einer Hand" title="Alles aus einer Hand"
description="Als Full-Service-Partner im Bereich Kabelleitungstiefbau decken wir das gesamte Spektrum moderner Infrastrukturprojekte ab." description="Als Full-Service-Partner im Bereich Kabelleitungstiefbau decken wir das gesamte Spektrum moderner Infrastrukturprojekte ab."
videoUrl="/assets/videos/web/hero-kabelpflug.mp4" videoUrl="/assets/videos/web/hero-bohrung.mp4"
linkText="Kontakt aufnehmen" linkText="Kontakt aufnehmen"
linkHref="/de/kontakt" linkHref="/de/kontakt"
secondaryCtaLabel="Referenzen ansehen" secondaryCtaLabel="Referenzen ansehen"

View File

@@ -9,7 +9,7 @@ layout: "fullBleed"
badge="Events" badge="Events"
title="Treffen Sie uns\nvor Ort" title="Treffen Sie uns\nvor Ort"
description="Kommen Sie mit unseren Experten ins Gespräch. Wir sind auf den wichtigsten Branchenmessen vertreten und freuen uns auf den persönlichen Austausch mit Ihnen." description="Kommen Sie mit unseren Experten ins Gespräch. Wir sind auf den wichtigsten Branchenmessen vertreten und freuen uns auf den persönlichen Austausch mit Ihnen."
videoUrl="/assets/videos/web/hero-bohrung.mp4" videoUrl="/assets/videos/web/hero-messe.mp4"
linkText="Zu den Terminen" linkText="Zu den Terminen"
linkHref="#termine" linkHref="#termine"
/> />

View File

@@ -9,7 +9,7 @@ layout: "fullBleed"
badge="Careers" badge="Careers"
title="Build the Future\nwith Us" title="Build the Future\nwith Us"
description="We are looking for motivated talents who want to shape the digital and energy infrastructure of tomorrow. Join the E-TIB team." description="We are looking for motivated talents who want to shape the digital and energy infrastructure of tomorrow. Join the E-TIB team."
videoUrl="/assets/videos/web/hero-bahnkreuzung.mp4" videoUrl="/assets/videos/web/hero-kabelpflug.mp4"
linkText="View Open Positions" linkText="View Open Positions"
linkHref="#jobs" linkHref="#jobs"
/> />

View File

@@ -9,7 +9,7 @@ layout: "fullBleed"
badge="Competencies" badge="Competencies"
title="Everything from a\nsingle source" title="Everything from a\nsingle source"
description="From the first planning sketch to the final documentation we are your reliable partner for complex infrastructure projects." description="From the first planning sketch to the final documentation we are your reliable partner for complex infrastructure projects."
videoUrl="/assets/videos/web/hero-bahnkreuzung.mp4" videoUrl="/assets/videos/web/hero-bohrung.mp4"
linkText="Get in Touch" linkText="Get in Touch"
linkHref="/en/kontakt" linkHref="/en/kontakt"
/> />

View File

@@ -9,7 +9,7 @@ layout: "fullBleed"
badge="Events" badge="Events"
title="Meet us\nin person" title="Meet us\nin person"
description="Get in touch with our experts. We are represented at the most important industry trade fairs and look forward to speaking with you personally." description="Get in touch with our experts. We are represented at the most important industry trade fairs and look forward to speaking with you personally."
videoUrl="/assets/videos/web/hero-bohrung.mp4" videoUrl="/assets/videos/web/hero-messe.mp4"
linkText="View dates" linkText="View dates"
linkHref="#dates" linkHref="#dates"
/> />

View File

@@ -27,7 +27,7 @@ services:
- "traefik.http.routers.${PROJECT_NAME:-klz}.middlewares=${AUTH_MIDDLEWARE:-etib-ratelimit,etib-forward,etib-compress}" - "traefik.http.routers.${PROJECT_NAME:-klz}.middlewares=${AUTH_MIDDLEWARE:-etib-ratelimit,etib-forward,etib-compress}"
# Public Router paths that bypass Gatekeeper auth (health, SEO, static assets, OG images) # Public Router paths that bypass Gatekeeper auth (health, SEO, static assets, OG images)
- "traefik.http.routers.${PROJECT_NAME:-klz}-public.rule=(${TRAEFIK_HOST_RULE:-Host(`${TRAEFIK_HOST:-e-tib.com}`) || Host(`staging.${TRAEFIK_HOST:-e-tib.com}`) || Host(`testing.${TRAEFIK_HOST:-e-tib.com}`)}) && PathRegexp(`^/([a-z]{2}/)?(health|login|gatekeeper|uploads|media|assets|robots\\.txt|manifest\\.webmanifest|sitemap(-[0-9]+)?\\.xml|(.*/)?api/og(/.*)?|(.*/)?opengraph-image.*)`)" - "traefik.http.routers.${PROJECT_NAME:-klz}-public.rule=(${TRAEFIK_HOST_RULE:-Host(`${TRAEFIK_HOST:-e-tib.com}`) || Host(`staging.${TRAEFIK_HOST:-e-tib.com}`) || Host(`testing.${TRAEFIK_HOST:-e-tib.com}`)}) && PathRegexp(`^/([a-z]{2}/)?(health|login|gatekeeper|uploads|media|robots\\.txt|manifest\\.webmanifest|sitemap(-[0-9]+)?\\.xml|(.*/)?api/og(/.*)?|(.*/)?opengraph-image.*)`)"
- "traefik.http.routers.${PROJECT_NAME:-klz}-public.entrypoints=${TRAEFIK_ENTRYPOINT:-web}" - "traefik.http.routers.${PROJECT_NAME:-klz}-public.entrypoints=${TRAEFIK_ENTRYPOINT:-web}"
- "traefik.http.routers.${PROJECT_NAME:-klz}-public.tls.certresolver=${TRAEFIK_CERT_RESOLVER:-}" - "traefik.http.routers.${PROJECT_NAME:-klz}-public.tls.certresolver=${TRAEFIK_CERT_RESOLVER:-}"
- "traefik.http.routers.${PROJECT_NAME:-klz}-public.tls=${TRAEFIK_TLS:-false}" - "traefik.http.routers.${PROJECT_NAME:-klz}-public.tls=${TRAEFIK_TLS:-false}"
@@ -58,9 +58,10 @@ services:
etib-gatekeeper: etib-gatekeeper:
profiles: [ "gatekeeper" ] profiles: [ "gatekeeper" ]
image: registry.infra.mintel.me/mintel/gatekeeper:testing image: registry.infra.mintel.me/mintel/gatekeeper:latest
restart: unless-stopped restart: unless-stopped
networks: networks:
default:
infra: infra:
aliases: aliases:
- ${PROJECT_NAME:-klz}-gatekeeper - ${PROJECT_NAME:-klz}-gatekeeper
@@ -68,6 +69,8 @@ services:
- ${ENV_FILE:-.env} - ${ENV_FILE:-.env}
environment: environment:
PORT: 3000 PORT: 3000
NODE_TLS_REJECT_UNAUTHORIZED: 0
NODE_ENV: production
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.services.${PROJECT_NAME:-klz}-gatekeeper-svc.loadbalancer.server.port=3000" - "traefik.http.services.${PROJECT_NAME:-klz}-gatekeeper-svc.loadbalancer.server.port=3000"

View File

@@ -32,10 +32,7 @@ async function run() {
for (const p of pages) { for (const p of pages) {
console.log(`📄 Checking ${p}...`); console.log(`📄 Checking ${p}...`);
const res = await page.goto(`${targetUrl}${p}`, { waitUntil: 'domcontentloaded' }); const res = await page.goto(`${targetUrl}${p}`, { waitUntil: 'domcontentloaded' });
const status = res?.status(); if (res?.status() !== 200) throw new Error(`Page ${p} returned ${res?.status()}`);
if (status !== 200 && status !== 304 && status !== 307 && status !== 308) {
throw new Error(`Page ${p} returned ${status}`);
}
// Check for broken images (using in-page fetch to preserve session and avoid heavy navigation) // Check for broken images (using in-page fetch to preserve session and avoid heavy navigation)
const images = await page.$$eval('img', (imgs) => imgs.map((img) => img.src).filter(Boolean)); const images = await page.$$eval('img', (imgs) => imgs.map((img) => img.src).filter(Boolean));