From 51e022ae52451672cd8d2891b3d96c7cfd51009c Mon Sep 17 00:00:00 2001 From: root Date: Wed, 24 Sep 2025 15:31:31 +0000 Subject: [PATCH] Update --- backend/index.js | 11 +++++++- scripts/docker-release.sh | 58 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 scripts/docker-release.sh diff --git a/backend/index.js b/backend/index.js index dcc837e..1a26dfc 100644 --- a/backend/index.js +++ b/backend/index.js @@ -64,8 +64,17 @@ app.get('/api/stacks', async (req, res) => { // Filter nach Endpoint-ID const filteredStacks = stacksRes.data.filter(stack => stack.EndpointId === ENDPOINT_ID); + // Deduplication nach Name: nur einmal pro Name + const uniqueStacksMap = {}; + filteredStacks.forEach(stack => { + if (!uniqueStacksMap[stack.Name]) { + uniqueStacksMap[stack.Name] = stack; + } + }); + const uniqueStacks = Object.values(uniqueStacksMap); + const stacksWithStatus = await Promise.all( - filteredStacks.map(async (stack) => { + uniqueStacks.map(async (stack) => { try { const statusRes = await axiosInstance.get( `/api/stacks/${stack.Id}/images_status?refresh=true` diff --git a/scripts/docker-release.sh b/scripts/docker-release.sh new file mode 100644 index 0000000..c079f8e --- /dev/null +++ b/scripts/docker-release.sh @@ -0,0 +1,58 @@ +#!/bin/bash +set -e + +# --- Konfiguration --- +GHCR_USERNAME="" +REPO_NAME="" + +# --- Branch prüfen --- +BRANCH=$(git rev-parse --abbrev-ref HEAD) +if [[ "$BRANCH" != "master" ]]; then + echo "Fehler: Du musst auf 'master' sein, um ein Release zu machen." + exit 1 +fi + +# --- Versionsnummer abfragen --- +while true; do + read -p "Bitte Versionsnummer für das Release eingeben (z.B. v0.2.0): " VERSION_TAG + if [[ -n "$VERSION_TAG" ]]; then break; else echo "Versionsnummer darf nicht leer sein."; fi +done + +# --- Git: Pull und Merge sicherstellen --- +git pull origin master + +# --- Git: Commit ausstehender Änderungen --- +git add . +read -p "Commit-Nachricht eingeben (default: 'Release $VERSION_TAG'): " COMMIT_MSG +COMMIT_MSG=${COMMIT_MSG:-"Release $VERSION_TAG"} +git commit -m "$COMMIT_MSG" || echo "Keine Änderungen zum Committen." + +# --- Git: Tag setzen --- +if git rev-parse "$VERSION_TAG" >/dev/null 2>&1; then + echo "Tag $VERSION_TAG existiert bereits. Bitte zuerst löschen oder neuen Tag wählen." + exit 1 +fi + +git tag -a "$VERSION_TAG" -m "Release $VERSION_TAG" + +# --- Git: Push master + Tag --- +git push origin master +git push origin "$VERSION_TAG" +echo "Tag $VERSION_TAG gesetzt und auf master gepusht." + +# --- Docker: Login --- +if [ -z "$CR_PAT" ]; then + echo "CR_PAT (GitHub Token) nicht gesetzt! Bitte export CR_PAT=" + exit 1 +fi +echo $CR_PAT | docker login ghcr.io -u $GHCR_USERNAME --password-stdin + +# --- Docker: Build & Tag --- +docker build -t ghcr.io/$GHCR_USERNAME/$REPO_NAME:$VERSION_TAG . +docker tag ghcr.io/$GHCR_USERNAME/$REPO_NAME:$VERSION_TAG ghcr.io/$GHCR_USERNAME/$REPO_NAME:latest + +# --- Docker: Push --- +docker push ghcr.io/$GHCR_USERNAME/$REPO_NAME:$VERSION_TAG +docker push ghcr.io/$GHCR_USERNAME/$REPO_NAME:latest + +echo "Release $VERSION_TAG erfolgreich auf master + GHCR gepusht!"