From dbb2e70a252268ae6ac3de58a597b6c2dfc25d4a Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Fri, 14 Nov 2025 02:25:57 +0100 Subject: [PATCH] Update .gitlab-ci.yml file --- .gitlab-ci.yml | 100 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 82 insertions(+), 18 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3e87a87..3d8c334 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,7 +2,7 @@ stages: - deploy # ----------------------------------------- -# Deployment STAGING +# Deployment auf STAGING # ----------------------------------------- deploy:staging: stage: deploy @@ -22,11 +22,15 @@ deploy:staging: - ls -la public/ || echo "⚠️ public/ existiert nicht!" - echo "📂 Inhalt von config/:" - ls -la config/ || echo "⚠️ config/ existiert nicht!" + - echo "📂 Inhalt von config/staging/:" + - ls -la config/staging/ || echo "⚠️ config/staging/ existiert nicht!" script: - | - # Sicherstellen, dass alle drei Verzeichnisse existieren - for d in src public config; do + set -e + + # Sicherstellen, dass Basisverzeichnisse existieren + for d in src public config config/staging; do if [ ! -d "$d" ]; then echo "❌ Verzeichnis '$d/' fehlt im Repo! Abbruch." exit 1 @@ -35,14 +39,42 @@ deploy:staging: echo "🚀 Deploy STAGING → ${FTP_HOST}:${FTP_PATH_STAGING}" - # src deployen - lftp -u "${FTP_USER}","${FTP_PASSWORD}" "${FTP_HOST}" -e "set ftp:ssl-force true; set ftp:passive-mode true; set ftp:ssl-protect-data true; set ssl:verify-certificate no; mirror -R --delete src/ ${FTP_PATH_STAGING}src/; bye" + echo "🔁 Sync src/ → ${FTP_PATH_STAGING}src/" + lftp -u "${FTP_USER}","${FTP_PASSWORD}" "${FTP_HOST}" -e " + set ftp:ssl-force true; + set ftp:passive-mode true; + set ftp:ssl-protect-data true; + set ssl:verify-certificate no; + mirror -R --delete \ + --exclude .gitkeep \ + src/ ${FTP_PATH_STAGING}src/; + bye + " - # public deployen - lftp -u "${FTP_USER}","${FTP_PASSWORD}" "${FTP_HOST}" -e "set ftp:ssl-force true; set ftp:passive-mode true; set ftp:ssl-protect-data true; set ssl:verify-certificate no; mirror -R --delete public/ ${FTP_PATH_STAGING}public/; bye" + echo "🔁 Sync public/ → ${FTP_PATH_STAGING}public/" + lftp -u "${FTP_USER}","${FTP_PASSWORD}" "${FTP_HOST}" -e " + set ftp:ssl-force true; + set ftp:passive-mode true; + set ftp:ssl-protect-data true; + set ssl:verify-certificate no; + mirror -R --delete \ + --exclude .gitkeep \ + public/ ${FTP_PATH_STAGING}public/; + bye + " - # config deployen - lftp -u "${FTP_USER}","${FTP_PASSWORD}" "${FTP_HOST}" -e "set ftp:ssl-force true; set ftp:passive-mode true; set ftp:ssl-protect-data true; set ssl:verify-certificate no; mirror -R --delete config/ ${FTP_PATH_STAGING}config/; bye" + echo "🔁 Sync config/staging/ (nur Inhalt) → ${FTP_PATH_STAGING}config/" + lftp -u "${FTP_USER}","${FTP_PASSWORD}" "${FTP_HOST}" -e " + set ftp:ssl-force true; + set ftp:passive-mode true; + set ftp:ssl-protect-data true; + set ssl:verify-certificate no; + lcd config/staging; + mirror -R --delete \ + --exclude .gitkeep \ + ./ ${FTP_PATH_STAGING}config/; + bye + " echo "✅ Deploy STAGING abgeschlossen." @@ -56,7 +88,7 @@ deploy:staging: # ----------------------------------------- -# Deployment PRODUCTION +# Deployment auf PRODUCTION # ----------------------------------------- deploy:production: stage: deploy @@ -76,11 +108,15 @@ deploy:production: - ls -la public/ || echo "⚠️ public/ existiert nicht!" - echo "📂 Inhalt von config/:" - ls -la config/ || echo "⚠️ config/ existiert nicht!" + - echo "📂 Inhalt von config/prod/:" + - ls -la config/prod/ || echo "⚠️ config/prod/ existiert nicht!" script: - | - # Sicherstellen, dass alle drei Verzeichnisse existieren - for d in src public config; do + set -e + + # Sicherstellen, dass Basisverzeichnisse existieren + for d in src public config config/prod; do if [ ! -d "$d" ]; then echo "❌ Verzeichnis '$d/' fehlt im Repo! Abbruch." exit 1 @@ -89,14 +125,42 @@ deploy:production: echo "🚀 Deploy PRODUCTION → ${FTP_HOST}:${FTP_PATH_PROD}" - # src deployen - lftp -u "${FTP_USER}","${FTP_PASSWORD}" "${FTP_HOST}" -e "set ftp:ssl-force true; set ftp:passive-mode true; set ftp:ssl-protect-data true; set ssl:verify-certificate no; mirror -R --delete src/ ${FTP_PATH_PROD}src/; bye" + echo "🔁 Sync src/ → ${FTP_PATH_PROD}src/" + lftp -u "${FTP_USER}","${FTP_PASSWORD}" "${FTP_HOST}" -e " + set ftp:ssl-force true; + set ftp:passive-mode true; + set ftp:ssl-protect-data true; + set ssl:verify-certificate no; + mirror -R --delete \ + --exclude .gitkeep \ + src/ ${FTP_PATH_PROD}src/; + bye + " - # public deployen - lftp -u "${FTP_USER}","${FTP_PASSWORD}" "${FTP_HOST}" -e "set ftp:ssl-force true; set ftp:passive-mode true; set ftp:ssl-protect-data true; set ssl:verify-certificate no; mirror -R --delete public/ ${FTP_PATH_PROD}public/; bye" + echo "🔁 Sync public/ → ${FTP_PATH_PROD}public/" + lftp -u "${FTP_USER}","${FTP_PASSWORD}" "${FTP_HOST}" -e " + set ftp:ssl-force true; + set ftp:passive-mode true; + set ftp:ssl-protect-data true; + set ssl:verify-certificate no; + mirror -R --delete \ + --exclude .gitkeep \ + public/ ${FTP_PATH_PROD}public/; + bye + " - # config deployen - lftp -u "${FTP_USER}","${FTP_PASSWORD}" "${FTP_HOST}" -e "set ftp:ssl-force true; set ftp:passive-mode true; set ftp:ssl-protect-data true; set ssl:verify-certificate no; mirror -R --delete config/ ${FTP_PATH_PROD}config/; bye" + echo "🔁 Sync config/prod/ (nur Inhalt) → ${FTP_PATH_PROD}config/" + lftp -u "${FTP_USER}","${FTP_PASSWORD}" "${FTP_HOST}" -e " + set ftp:ssl-force true; + set ftp:passive-mode true; + set ftp:ssl-protect-data true; + set ssl:verify-certificate no; + lcd config/prod; + mirror -R --delete \ + --exclude .gitkeep \ + ./ ${FTP_PATH_PROD}config/; + bye + " echo "✅ Deploy PRODUCTION abgeschlossen."