Compare commits

..
5 Commits
Author SHA1 Message Date
mmintelandClaude Haiku 5.5 7daa90dd89 content(messen): shorten fair names to Windenergietage and Intersolar
Build & Deploy / 🔔 Notify (push) Successful in 3s
Build & Deploy / 🔍 Prepare (push) Successful in 22s
Build & Deploy / 🧪 QA (push) Successful in 1m44s
Build & Deploy / 🏗️ Build (push) Successful in 3m54s
Build & Deploy / 🚀 Deploy (push) Successful in 47s
Build & Deploy / 🧪 Post-Deploy Verification (push) Successful in 1m31s
The location already appears in its own field, so repeating it in the
name is redundant. Use "Windenergietage" and "Intersolar" in DE, and
"Wind Energy Days" and "Intersolar" in EN.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-11-15 15:37:56 +01:00
mmintelandClaude Haiku 5.5 23d72f5287 Merge origin/main into main
Build & Deploy / 🔍 Prepare (push) Successful in 34s
Build & Deploy / 🧪 QA (push) Successful in 3m28s
Build & Deploy / 🏗️ Build (push) Successful in 9m7s
Build & Deploy / 🚀 Deploy (push) Successful in 2m34s
Build & Deploy / 🧪 Post-Deploy Verification (push) Successful in 4m10s
Build & Deploy / 🔔 Notify (push) Successful in 5s
Integrate the remote CI retarget (88886a991) before pushing the
v2.4.62 release.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-11-13 14:01:35 +01:00
mmintelandClaude Haiku 5.5 6283a4e5ad chore(release): bump version to 2.4.62
Build & Deploy / 🔍 Prepare (push) Successful in 1m19s
Build & Deploy / 🧪 QA (push) Successful in 4m16s
Build & Deploy / 🏗️ Build (push) Successful in 6m38s
Build & Deploy / 🚀 Deploy (push) Successful in 2m8s
Build & Deploy / 🧪 Post-Deploy Verification (push) Successful in 2m25s
Build & Deploy / 🔔 Notify (push) Successful in 4s
package.json was still at 2.4.58 while tags up to v2.4.61 existed.
Align the version with the release tag v2.4.62.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-11-13 13:40:05 +01:00
mmintelandClaude Haiku 5.5 9765d28b6d content(messen): replace Linstow 2026 with Windenergietage Potsdam 2027
The Windenergietage Linstow 2026 (10.–12. Nov 2026) has already taken
place, so it is removed from the DE and EN fairs list. Windenergietage
Potsdam (09.–11. Nov 2027) is added. The content test is updated to
match the new expectations.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-11-13 13:00:14 +01:00
mmintel 88886a9916 chore(ci): retarget deployments to infra.mintel.me (server consolidation)
Build & Deploy / 🔍 Prepare (push) Successful in 22s
Build & Deploy / 🧪 QA (push) Successful in 1m26s
Build & Deploy / 🏗️ Build (push) Successful in 2m16s
Build & Deploy / 🚀 Deploy (push) Failing after 1s
Build & Deploy / 🧪 Post-Deploy Verification (push) Skipped
Build & Deploy / 🔔 Notify (push) Failing after 1s
2026-10-01 22:45:27 +02:00
6 changed files with 36 additions and 34 deletions
+12 -12
View File
@@ -391,7 +391,7 @@ jobs:
mkdir -p ~/.ssh
echo "${{ secrets.ALPHA_SSH_KEY }}" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
ssh-keyscan -H alpha.mintel.me >> ~/.ssh/known_hosts 2>/dev/null
ssh-keyscan -H infra.mintel.me >> ~/.ssh/known_hosts 2>/dev/null
if [[ "$TARGET" == "production" ]]; then
SITE_DIR="/home/deploy/sites/e-tib.com"
@@ -403,25 +403,25 @@ jobs:
SITE_DIR="/home/deploy/sites/branch.e-tib.com/$SLUG"
fi
ssh root@alpha.mintel.me "mkdir -p $SITE_DIR"
scp .env.deploy root@alpha.mintel.me:$SITE_DIR/$ENV_FILE
scp docker-compose.yml root@alpha.mintel.me:$SITE_DIR/docker-compose.yml
ssh root@infra.mintel.me "mkdir -p $SITE_DIR"
scp .env.deploy root@infra.mintel.me:$SITE_DIR/$ENV_FILE
scp docker-compose.yml root@infra.mintel.me:$SITE_DIR/docker-compose.yml
ssh root@alpha.mintel.me "docker system prune -f"
ssh root@infra.mintel.me "docker system prune -f"
# ── Deterministic cleanup: stop the EXACT compose project we're about to redeploy ──
ssh root@alpha.mintel.me "cd $SITE_DIR && docker compose -p '${PROJECT_NAME}' --env-file '$ENV_FILE' down --remove-orphans 2>/dev/null || true"
ssh root@infra.mintel.me "cd $SITE_DIR && docker compose -p '${PROJECT_NAME}' --env-file '$ENV_FILE' down --remove-orphans 2>/dev/null || true"
# ── Safety net: kill ANY container whose Traefik host rule matches our target domain ──
# This catches ghost containers from prior deployments that used a different project name
# (e.g. 'e-tibcom' vs 'etib-production' due to Docker Compose defaulting to dir name)
ssh root@alpha.mintel.me "docker ps -q --filter label=traefik.http.routers.${PROJECT_NAME}.rule 2>/dev/null | xargs -r docker rm -f 2>/dev/null || true"
ssh root@alpha.mintel.me "docker ps --format '{{.Names}}' | grep -E '^e-tibcom-' | xargs -r docker rm -f 2>/dev/null || true"
ssh root@infra.mintel.me "docker ps -q --filter label=traefik.http.routers.${PROJECT_NAME}.rule 2>/dev/null | xargs -r docker rm -f 2>/dev/null || true"
ssh root@infra.mintel.me "docker ps --format '{{.Names}}' | grep -E '^e-tibcom-' | xargs -r docker rm -f 2>/dev/null || true"
ssh root@alpha.mintel.me "cd $SITE_DIR && echo '${{ secrets.REGISTRY_PASS }}' | docker login registry.infra.mintel.me -u '${{ secrets.REGISTRY_USER }}' --password-stdin"
ssh root@alpha.mintel.me "cd $SITE_DIR && docker compose -p '${PROJECT_NAME}' --env-file '$ENV_FILE' pull"
ssh root@alpha.mintel.me "cd $SITE_DIR && docker compose -p '${PROJECT_NAME}' --env-file '$ENV_FILE' up -d --remove-orphans"
ssh root@alpha.mintel.me "docker system prune -f --filter 'until=24h'"
ssh root@infra.mintel.me "cd $SITE_DIR && echo '${{ secrets.REGISTRY_PASS }}' | docker login registry.infra.mintel.me -u '${{ secrets.REGISTRY_USER }}' --password-stdin"
ssh root@infra.mintel.me "cd $SITE_DIR && docker compose -p '${PROJECT_NAME}' --env-file '$ENV_FILE' pull"
ssh root@infra.mintel.me "cd $SITE_DIR && docker compose -p '${PROJECT_NAME}' --env-file '$ENV_FILE' up -d --remove-orphans"
ssh root@infra.mintel.me "docker system prune -f --filter 'until=24h'"
# ──────────────────────────────────────────────────────────────────────────────
# JOB 5: Post-Deploy Verification
+2 -2
View File
@@ -20,9 +20,9 @@ layout: "fullBleed"
showFairs={true}
showJobs={false}
fairs={[
{ name: 'Windenergietage Linstow', date: '10. - 12. November 2026', type: 'Fachkongress', location: 'Linstow', url: 'https://www.windenergietage.de/' },
{ name: 'Werkstatt Kabel 2026', date: '24. - 25. November 2026', type: 'Fachtagung', location: 'Wiesbaden', url: 'https://werkstatt-kabel.essociation.de/' },
{ name: 'Intersolar München', date: '8. - 10. Juni 2027', type: 'Messe', location: 'München', url: 'https://www.intersolar.de/' }
{ name: 'Intersolar', date: '8. - 10. Juni 2027', type: 'Messe', location: 'München', url: 'https://www.intersolar.de/' },
{ name: 'Windenergietage', date: '09. - 11. November 2027', type: 'Fachkongress', location: 'Potsdam', url: 'https://www.windenergietage.de/' }
]}
/>
</div>
+2 -2
View File
@@ -20,9 +20,9 @@ layout: "fullBleed"
showFairs={true}
showJobs={false}
fairs={[
{ name: 'Wind Energy Days Linstow', date: 'November 10–12, 2026', type: 'Specialist Congress', location: 'Linstow', url: 'https://www.windenergietage.de/' },
{ name: 'Werkstatt Kabel 2026', date: 'November 24–25, 2026', type: 'Symposium', location: 'Wiesbaden', url: 'https://werkstatt-kabel.essociation.de/' },
{ name: 'Intersolar Munich', date: 'June 8–10, 2027', type: 'Fair', location: 'Munich', url: 'https://www.intersolar.de/' }
{ name: 'Intersolar', date: 'June 8–10, 2027', type: 'Fair', location: 'Munich', url: 'https://www.intersolar.de/' },
{ name: 'Wind Energy Days', date: 'November 9–11, 2027', type: 'Specialist Congress', location: 'Potsdam', url: 'https://www.windenergietage.de/' }
]}
/>
</div>
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "e-tib-nextjs",
"version": "2.4.58",
"version": "2.4.62",
"type": "module",
"private": true,
+1 -1
View File
@@ -13,7 +13,7 @@ fi
# ── Configuration ──────────────────────────────────────────────────────────
SOURCE_ENV="${1:-}" # local | testing | staging | prod
TARGET_ENV="${2:-}" # testing | staging | prod
SSH_HOST="root@alpha.mintel.me"
SSH_HOST="root@infra.mintel.me"
LOCAL_MEDIA_DIR="./public/media"
DRY_RUN=""
+18 -16
View File
@@ -10,46 +10,48 @@ describe('Messen Content and Translations', () => {
const content = fs.readFileSync(deMessenPath, 'utf8');
// 1. Intersolar München
expect(content).toContain("name: 'Intersolar München'");
expect(content).toContain("name: 'Intersolar'");
expect(content).toContain("date: '8. - 10. Juni 2027'");
expect(content).toContain("type: 'Messe'");
expect(content).toContain("location: 'München'");
// 2. Windenergietage Linstow
expect(content).toContain("name: 'Windenergietage Linstow'");
expect(content).toContain("date: '10. - 12. November 2026'");
expect(content).toContain("type: 'Fachkongress'");
expect(content).toContain("location: 'Linstow'");
// 3. Werkstatt Kabel 2026 (No "Kabel-Workshop")
// 2. Werkstatt Kabel 2026 (No "Kabel-Workshop")
expect(content).not.toContain("Kabel-Workshop");
expect(content).toContain("name: 'Werkstatt Kabel 2026'");
expect(content).toContain("date: '24. - 25. November 2026'");
expect(content).toContain("type: 'Fachtagung'");
expect(content).toContain("location: 'Wiesbaden'");
// 3. Windenergietage Potsdam (replaces Linstow 2026)
expect(content).not.toContain("Linstow");
expect(content).toContain("name: 'Windenergietage'");
expect(content).toContain("date: '09. - 11. November 2027'");
expect(content).toContain("type: 'Fachkongress'");
expect(content).toContain("location: 'Potsdam'");
});
it('should have updated English trade fair dates and names for 2026', () => {
const content = fs.readFileSync(enMessenPath, 'utf8');
// 1. Intersolar Munich
expect(content).toContain("name: 'Intersolar Munich'");
expect(content).toContain("name: 'Intersolar'");
expect(content).toContain("date: 'June 8–10, 2027'");
expect(content).toContain("type: 'Fair'");
expect(content).toContain("location: 'Munich'");
// 2. Wind Energy Days Linstow
expect(content).toContain("name: 'Wind Energy Days Linstow'");
expect(content).toContain("date: 'November 10–12, 2026'");
expect(content).toContain("type: 'Specialist Congress'");
expect(content).toContain("location: 'Linstow'");
// 3. Werkstatt Kabel 2026 (No "Cable Workshop" or "Kabel Workshop")
// 2. Werkstatt Kabel 2026 (No "Cable Workshop" or "Kabel Workshop")
expect(content).not.toContain("Cable Workshop");
expect(content).not.toContain("Kabel Workshop");
expect(content).toContain("name: 'Werkstatt Kabel 2026'");
expect(content).toContain("date: 'November 24–25, 2026'");
expect(content).toContain("type: 'Symposium'");
expect(content).toContain("location: 'Wiesbaden'");
// 3. Wind Energy Days Potsdam (replaces Linstow 2026)
expect(content).not.toContain("Linstow");
expect(content).toContain("name: 'Wind Energy Days'");
expect(content).toContain("date: 'November 9–11, 2027'");
expect(content).toContain("type: 'Specialist Congress'");
expect(content).toContain("location: 'Potsdam'");
});
});