Compare commits

...
3 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
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
5 changed files with 21 additions and 21 deletions
+12 -12
View File
@@ -391,7 +391,7 @@ jobs:
mkdir -p ~/.ssh mkdir -p ~/.ssh
echo "${{ secrets.ALPHA_SSH_KEY }}" > ~/.ssh/id_ed25519 echo "${{ secrets.ALPHA_SSH_KEY }}" > ~/.ssh/id_ed25519
chmod 600 ~/.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 if [[ "$TARGET" == "production" ]]; then
SITE_DIR="/home/deploy/sites/e-tib.com" SITE_DIR="/home/deploy/sites/e-tib.com"
@@ -403,25 +403,25 @@ jobs:
SITE_DIR="/home/deploy/sites/branch.e-tib.com/$SLUG" SITE_DIR="/home/deploy/sites/branch.e-tib.com/$SLUG"
fi fi
ssh root@alpha.mintel.me "mkdir -p $SITE_DIR" ssh root@infra.mintel.me "mkdir -p $SITE_DIR"
scp .env.deploy root@alpha.mintel.me:$SITE_DIR/$ENV_FILE scp .env.deploy root@infra.mintel.me:$SITE_DIR/$ENV_FILE
scp docker-compose.yml root@alpha.mintel.me:$SITE_DIR/docker-compose.yml 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 ── # ── 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 ── # ── 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 # 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) # (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@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@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 --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@infra.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@infra.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@infra.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 "docker system prune -f --filter 'until=24h'"
# ────────────────────────────────────────────────────────────────────────────── # ──────────────────────────────────────────────────────────────────────────────
# JOB 5: Post-Deploy Verification # JOB 5: Post-Deploy Verification
+2 -2
View File
@@ -21,8 +21,8 @@ layout: "fullBleed"
showJobs={false} showJobs={false}
fairs={[ fairs={[
{ name: 'Werkstatt Kabel 2026', date: '24. - 25. November 2026', type: 'Fachtagung', location: 'Wiesbaden', url: 'https://werkstatt-kabel.essociation.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 Potsdam', date: '09. - 11. November 2027', type: 'Fachkongress', location: 'Potsdam', url: 'https://www.windenergietage.de/' } { name: 'Windenergietage', date: '09. - 11. November 2027', type: 'Fachkongress', location: 'Potsdam', url: 'https://www.windenergietage.de/' }
]} ]}
/> />
</div> </div>
+2 -2
View File
@@ -21,8 +21,8 @@ layout: "fullBleed"
showJobs={false} showJobs={false}
fairs={[ fairs={[
{ name: 'Werkstatt Kabel 2026', date: 'November 24–25, 2026', type: 'Symposium', location: 'Wiesbaden', url: 'https://werkstatt-kabel.essociation.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 Potsdam', date: 'November 9–11, 2027', type: 'Specialist Congress', location: 'Potsdam', url: 'https://www.windenergietage.de/' } { name: 'Wind Energy Days', date: 'November 9–11, 2027', type: 'Specialist Congress', location: 'Potsdam', url: 'https://www.windenergietage.de/' }
]} ]}
/> />
</div> </div>
+1 -1
View File
@@ -13,7 +13,7 @@ fi
# ── Configuration ────────────────────────────────────────────────────────── # ── Configuration ──────────────────────────────────────────────────────────
SOURCE_ENV="${1:-}" # local | testing | staging | prod SOURCE_ENV="${1:-}" # local | testing | staging | prod
TARGET_ENV="${2:-}" # 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" LOCAL_MEDIA_DIR="./public/media"
DRY_RUN="" DRY_RUN=""
+4 -4
View File
@@ -10,7 +10,7 @@ describe('Messen Content and Translations', () => {
const content = fs.readFileSync(deMessenPath, 'utf8'); const content = fs.readFileSync(deMessenPath, 'utf8');
// 1. Intersolar München // 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("date: '8. - 10. Juni 2027'");
expect(content).toContain("type: 'Messe'"); expect(content).toContain("type: 'Messe'");
expect(content).toContain("location: 'München'"); expect(content).toContain("location: 'München'");
@@ -24,7 +24,7 @@ describe('Messen Content and Translations', () => {
// 3. Windenergietage Potsdam (replaces Linstow 2026) // 3. Windenergietage Potsdam (replaces Linstow 2026)
expect(content).not.toContain("Linstow"); expect(content).not.toContain("Linstow");
expect(content).toContain("name: 'Windenergietage Potsdam'"); expect(content).toContain("name: 'Windenergietage'");
expect(content).toContain("date: '09. - 11. November 2027'"); expect(content).toContain("date: '09. - 11. November 2027'");
expect(content).toContain("type: 'Fachkongress'"); expect(content).toContain("type: 'Fachkongress'");
expect(content).toContain("location: 'Potsdam'"); expect(content).toContain("location: 'Potsdam'");
@@ -34,7 +34,7 @@ describe('Messen Content and Translations', () => {
const content = fs.readFileSync(enMessenPath, 'utf8'); const content = fs.readFileSync(enMessenPath, 'utf8');
// 1. Intersolar Munich // 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("date: 'June 8–10, 2027'");
expect(content).toContain("type: 'Fair'"); expect(content).toContain("type: 'Fair'");
expect(content).toContain("location: 'Munich'"); expect(content).toContain("location: 'Munich'");
@@ -49,7 +49,7 @@ describe('Messen Content and Translations', () => {
// 3. Wind Energy Days Potsdam (replaces Linstow 2026) // 3. Wind Energy Days Potsdam (replaces Linstow 2026)
expect(content).not.toContain("Linstow"); expect(content).not.toContain("Linstow");
expect(content).toContain("name: 'Wind Energy Days Potsdam'"); expect(content).toContain("name: 'Wind Energy Days'");
expect(content).toContain("date: 'November 9–11, 2027'"); expect(content).toContain("date: 'November 9–11, 2027'");
expect(content).toContain("type: 'Specialist Congress'"); expect(content).toContain("type: 'Specialist Congress'");
expect(content).toContain("location: 'Potsdam'"); expect(content).toContain("location: 'Potsdam'");