Private
Public Access
1
0

Merge pull request 'fix cleanup' (#12) from add-new-player-skin into main
All checks were successful
Dynamic Branch Deploy / build-and-deploy (push) Successful in 1m11s

Reviewed-on: #12
This commit is contained in:
2025-11-26 18:41:28 +00:00

View File

@@ -4,34 +4,65 @@ on: [delete]
jobs: jobs:
cleanup: cleanup:
runs-on: ubuntu-latest runs-on: ubuntu-latest
# Nur ausführen, wenn ein Branch gelöscht wurde (keine Tags)
if: github.event.ref_type == 'branch' if: github.event.ref_type == 'branch'
steps: steps:
# 1. Variablen berechnen (MIT FIX FÜR REFS/HEADS & MAIN-CHECK)
- name: Prepare Variables - name: Prepare Variables
run: | run: |
# Repo Name klein (z.B. "it232abschied")
REPO_LOWER=$(echo "${{ gitea.repository }}" | cut -d'/' -f2 | tr '[:upper:]' '[:lower:]') REPO_LOWER=$(echo "${{ gitea.repository }}" | cut -d'/' -f2 | tr '[:upper:]' '[:lower:]')
BRANCH_NAME=${{ github.event.ref }}
BRANCH_LOWER=$(echo "$BRANCH_NAME" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9-]/-/g')
TARGET_NS="${REPO_LOWER}-${BRANCH_LOWER}"
echo "TARGET_NS=$TARGET_NS" >> $GITHUB_ENV
# Branch Name aus Event (z.B. "refs/heads/feature-x")
RAW_REF="${{ github.event.ref }}"
# "refs/heads/" entfernen
BRANCH_CLEAN=${RAW_REF#refs/heads/}
# Kleinschreiben & Sonderzeichen
BRANCH_LOWER=$(echo "$BRANCH_CLEAN" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9-]/-/g')
# Logik synchron zum Deploy:
# Main/Master -> Namespace ist nur der Repo-Name
# Anderes -> Namespace ist Repo-Branch
if [ "$BRANCH_LOWER" = "main" ] || [ "$BRANCH_LOWER" = "master" ]; then
TARGET_NS="${REPO_LOWER}"
IS_MAIN="true"
else
TARGET_NS="${REPO_LOWER}-${BRANCH_LOWER}"
IS_MAIN="false"
fi
echo "DEBUG: Clean Branch: $BRANCH_LOWER"
echo "DEBUG: Target NS: $TARGET_NS"
echo "TARGET_NS=$TARGET_NS" >> $GITHUB_ENV
echo "IS_MAIN=$IS_MAIN" >> $GITHUB_ENV
# 2. Sicherheits-Check: Niemals Main/Master löschen!
# Wir prüfen jetzt die Variable IS_MAIN, statt den Namen hart zu codieren
- name: Protect Main - name: Protect Main
if: env.TARGET_NS == 'escape-teacher-main' || env.TARGET_NS == 'escape-teacher-master' if: env.IS_MAIN == 'true'
run: | run: |
echo "❌ Main darf nicht gelöscht werden!" echo "❌ ABBRUCH: Der Produktions-Namespace ${{ env.TARGET_NS }} darf nicht gelöscht werden!"
exit 1 exit 1
# 3. Kubectl einrichten
- name: Setup Kubectl - name: Setup Kubectl
run: | run: |
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl chmod +x kubectl
mv kubectl /usr/local/bin/ mv kubectl /usr/local/bin/
mkdir -p $HOME/.kube mkdir -p $HOME/.kube
echo "${{ secrets.KUBE_CONFIG }}" > $HOME/.kube/config echo "${{ secrets.KUBE_CONFIG }}" > $HOME/.kube/config
chmod 600 $HOME/.kube/config chmod 600 $HOME/.kube/config
# Der Trick für interne Kommunikation
sed -i 's|server: https://.*:6443|server: https://kubernetes.default.svc:443|g' $HOME/.kube/config sed -i 's|server: https://.*:6443|server: https://kubernetes.default.svc:443|g' $HOME/.kube/config
# 4. Namespace löschen
- name: Delete Namespace - name: Delete Namespace
run: | run: |
echo "🗑️ Lösche Namespace: ${{ env.TARGET_NS }}" echo "🗑️ Lösche Namespace: ${{ env.TARGET_NS }}"
# Wir löschen den Namespace ohne zu warten (async), das geht schneller
kubectl delete namespace ${{ env.TARGET_NS }} --ignore-not-found --wait=false kubectl delete namespace ${{ env.TARGET_NS }} --ignore-not-found --wait=false