diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d5c0814..3e87a87 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,48 +1,109 @@ stages: - deploy -# ------------------------- -# Staging: Dateien hochladen -# ------------------------- +# ----------------------------------------- +# Deployment STAGING +# ----------------------------------------- deploy:staging: stage: deploy image: alpine:3.20 + before_script: - echo "📡 Installing lftp..." - apk add --no-cache lftp - - echo "📂 Dateien im CI-Workspace:" + + - echo "📂 CI Workspace:" - pwd - ls -la + + - echo "📂 Inhalt von src/:" + - ls -la src/ || echo "⚠️ src/ existiert nicht!" + - echo "📂 Inhalt von public/:" + - ls -la public/ || echo "⚠️ public/ existiert nicht!" + - echo "📂 Inhalt von config/:" + - ls -la config/ || echo "⚠️ config/ existiert nicht!" + script: - - echo "🚀 Deploy (staging) via FTPS to ${FTP_HOST}:${FTP_PATH_STAGING} ..." - - 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 .git --exclude .gitlab-ci.yml --exclude node_modules --exclude .vscode --exclude .DS_Store --exclude README.md ./ ${FTP_PATH_STAGING}; bye" - - echo "✅ Deploy finished (staging)." + - | + # Sicherstellen, dass alle drei Verzeichnisse existieren + for d in src public config; do + if [ ! -d "$d" ]; then + echo "❌ Verzeichnis '$d/' fehlt im Repo! Abbruch." + exit 1 + fi + done + + 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" + + # 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" + + # 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 "✅ Deploy STAGING abgeschlossen." + environment: name: staging url: https://staging.usbcheck.it + only: - develop - merge_requests -# ------------------------- -# Production: Dateien hochladen -# ------------------------- + +# ----------------------------------------- +# Deployment PRODUCTION +# ----------------------------------------- deploy:production: stage: deploy image: alpine:3.20 + before_script: - echo "📡 Installing lftp..." - apk add --no-cache lftp - - echo "📂 Dateien im CI-Workspace:" + + - echo "📂 CI Workspace:" - pwd - ls -la + + - echo "📂 Inhalt von src/:" + - ls -la src/ || echo "⚠️ src/ existiert nicht!" + - echo "📂 Inhalt von public/:" + - ls -la public/ || echo "⚠️ public/ existiert nicht!" + - echo "📂 Inhalt von config/:" + - ls -la config/ || echo "⚠️ config/ existiert nicht!" + script: - - echo "🚀 Deploy (production) via FTPS to ${FTP_HOST}:${FTP_PATH_PROD} ..." - - 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 .git --exclude .gitlab-ci.yml --exclude node_modules --exclude .vscode --exclude .DS_Store --exclude README.md ./ ${FTP_PATH_PROD}; bye" - - echo "✅ Deploy finished (production)." + - | + # Sicherstellen, dass alle drei Verzeichnisse existieren + for d in src public config; do + if [ ! -d "$d" ]; then + echo "❌ Verzeichnis '$d/' fehlt im Repo! Abbruch." + exit 1 + fi + done + + 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" + + # 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" + + # 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 "✅ Deploy PRODUCTION abgeschlossen." + environment: name: production url: https://www.usbcheck.it + only: - main when: manual