This commit is contained in:
2025-11-24 02:32:26 +01:00
parent b2584bc828
commit 347d775f15
2 changed files with 279 additions and 107 deletions

209
.gitlab-ci (Kopie).yml Normal file
View File

@@ -0,0 +1,209 @@
stages:
- deploy
# -----------------------------------------
# Deployment auf 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!"
- echo "📂 Inhalt von partials/:"
- ls -la partials/ || echo "⚠️ partials/ existiert nicht!"
- echo "📂 Inhalt von api/:"
- ls -la api/ || echo "⚠️ api/ existiert nicht!"
- echo "📂 Inhalt von config/staging/:"
- ls -la config/staging/ || echo "⚠️ config/staging/ existiert nicht!"
script:
- |
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
fi
done
echo "🚀 Deploy STAGING → ${FTP_HOST}:${FTP_PATH_STAGING}"
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
"
echo "🔁 Sync api/ → ${FTP_PATH_STAGING}api/"
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 api/ ${FTP_PATH_STAGING}src/;
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
"
echo "🔁 Sync partials/ → ${FTP_PATH_STAGING}partials/"
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 partials/ ${FTP_PATH_STAGING}partials/;
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."
environment:
name: staging
url: https://staging.usbcheck.it
only:
- develop
- merge_requests
# -----------------------------------------
# Deployment auf 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!"
- echo "📂 Inhalt von partials/:"
- ls -la partials/ || echo "⚠️ partials/ existiert nicht!"
- echo "📂 Inhalt von api/:"
- ls -la api/ || echo "⚠️ api/ existiert nicht!"
- echo "📂 Inhalt von config/prod/:"
- ls -la config/prod/ || echo "⚠️ config/prod/ existiert nicht!"
script:
- |
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
fi
done
echo "🚀 Deploy PRODUCTION → ${FTP_HOST}:${FTP_PATH_PROD}"
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
"
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
"
echo "🔁 Sync api/ → ${FTP_PATH_PROD}api/"
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 api/ ${FTP_PATH_PROD}public/;
bye
"
echo "🔁 Sync partials/ → ${FTP_PATH_PROD}partials/"
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 partials/ ${FTP_PATH_PROD}partials/;
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."
environment:
name: production
url: https://www.usbcheck.it
only:
- main
# when: manual