Update .gitlab-ci.yml file

This commit is contained in:
2025-11-14 01:20:19 +01:00
parent 2504a030e9
commit 4e5cbb0ff0

View File

@@ -1,48 +1,109 @@
stages: stages:
- deploy - deploy
# ------------------------- # -----------------------------------------
# Staging: Dateien hochladen # Deployment STAGING
# ------------------------- # -----------------------------------------
deploy:staging: deploy:staging:
stage: deploy stage: deploy
image: alpine:3.20 image: alpine:3.20
before_script: before_script:
- echo "📡 Installing lftp..." - echo "📡 Installing lftp..."
- apk add --no-cache lftp - apk add --no-cache lftp
- echo "📂 Dateien im CI-Workspace:"
- echo "📂 CI Workspace:"
- pwd - pwd
- ls -la - 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: 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" # Sicherstellen, dass alle drei Verzeichnisse existieren
- echo "✅ Deploy finished (staging)." 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: environment:
name: staging name: staging
url: https://staging.usbcheck.it url: https://staging.usbcheck.it
only: only:
- develop - develop
- merge_requests - merge_requests
# -------------------------
# Production: Dateien hochladen # -----------------------------------------
# ------------------------- # Deployment PRODUCTION
# -----------------------------------------
deploy:production: deploy:production:
stage: deploy stage: deploy
image: alpine:3.20 image: alpine:3.20
before_script: before_script:
- echo "📡 Installing lftp..." - echo "📡 Installing lftp..."
- apk add --no-cache lftp - apk add --no-cache lftp
- echo "📂 Dateien im CI-Workspace:"
- echo "📂 CI Workspace:"
- pwd - pwd
- ls -la - 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: 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" # Sicherstellen, dass alle drei Verzeichnisse existieren
- echo "✅ Deploy finished (production)." 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: environment:
name: production name: production
url: https://www.usbcheck.it url: https://www.usbcheck.it
only: only:
- main - main
when: manual when: manual