From f870e29edf7fb9935e15908281527ccb4affb3fa Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Mon, 17 Nov 2025 00:46:07 +0100 Subject: [PATCH 1/9] Add new file --- .gitlab-ci.yml | 161 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..53fb306 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,161 @@ +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 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 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 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 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 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 From f0fba7e44db787e75893c5d4279c10548618b945 Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Mon, 17 Nov 2025 00:47:57 +0100 Subject: [PATCH 2/9] Add new directory --- config/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 config/.gitkeep diff --git a/config/.gitkeep b/config/.gitkeep new file mode 100644 index 0000000..e69de29 From 163defa0b8988cfebbbfed2c12a9f5f6c211a7c4 Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Mon, 17 Nov 2025 00:48:20 +0100 Subject: [PATCH 3/9] Add new directory --- config/prod/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 config/prod/.gitkeep diff --git a/config/prod/.gitkeep b/config/prod/.gitkeep new file mode 100644 index 0000000..e69de29 From c2d189a05e2b8f2305ffcdbebe70ac800c2c4a4e Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Mon, 17 Nov 2025 00:48:30 +0100 Subject: [PATCH 4/9] Add new directory --- config/staging/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 config/staging/.gitkeep diff --git a/config/staging/.gitkeep b/config/staging/.gitkeep new file mode 100644 index 0000000..e69de29 From ae36e4218d393f108e058f3d7919255e90137564 Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Mon, 17 Nov 2025 00:49:03 +0100 Subject: [PATCH 5/9] Add new directory --- public/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 public/.gitkeep diff --git a/public/.gitkeep b/public/.gitkeep new file mode 100644 index 0000000..e69de29 From faf2734597c519f2cebeccadc6efd13e82307612 Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Mon, 17 Nov 2025 00:49:12 +0100 Subject: [PATCH 6/9] Add new directory --- public/src/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 public/src/.gitkeep diff --git a/public/src/.gitkeep b/public/src/.gitkeep new file mode 100644 index 0000000..e69de29 From b283f43ae7214dd0513a94aca9c604cc5100302a Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Mon, 17 Nov 2025 00:49:48 +0100 Subject: [PATCH 7/9] Delete .gitkeep --- public/src/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 public/src/.gitkeep diff --git a/public/src/.gitkeep b/public/src/.gitkeep deleted file mode 100644 index e69de29..0000000 From 1b31652e39049da0dfae2b05d56bdba9ce3ced42 Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Mon, 17 Nov 2025 01:11:49 +0100 Subject: [PATCH 8/9] Add new directory --- src/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/.gitkeep diff --git a/src/.gitkeep b/src/.gitkeep new file mode 100644 index 0000000..e69de29 From 0c4451dc2cd785b6fbc24ed97d6aa30719966d48 Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Mon, 17 Nov 2025 22:56:43 +0100 Subject: [PATCH 9/9] Update .gitlab-ci.yml file --- .gitlab-ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 53fb306..90de217 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -14,8 +14,11 @@ deploy:staging: - echo "📂 CI Workspace:" - pwd - - ls -la + - echo "host ${FTP_HOST}" + - echo "path ${FTP_PATH_STAGING}" + - echo "user ${FTP_USER}" + - ls -la - echo "📂 Inhalt von src/:" - ls -la src/ || echo "⚠️ src/ existiert nicht!" - echo "📂 Inhalt von public/:"