stages: - deploy # ----------------------------------------- # Deployment STAGING # ----------------------------------------- deploy:staging: stage: deploy image: alpine:3.20 before_script: - echo "📡 Installing lftp..." - apk add --no-cache lftp - 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: - | # 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 # ----------------------------------------- # Deployment PRODUCTION # ----------------------------------------- deploy:production: stage: deploy image: alpine:3.20 before_script: - echo "📡 Installing lftp..." - apk add --no-cache lftp - 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: - | # 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