From 347d775f15ef8409383f614ab2453d58251885a0 Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Mon, 24 Nov 2025 02:32:26 +0100 Subject: [PATCH] update --- .gitlab-ci (Kopie).yml | 209 +++++++++++++++++++++++++++++++++++++++++ .gitlab-ci.yml | 177 ++++++++++++++-------------------- 2 files changed, 279 insertions(+), 107 deletions(-) create mode 100644 .gitlab-ci (Kopie).yml diff --git a/.gitlab-ci (Kopie).yml b/.gitlab-ci (Kopie).yml new file mode 100644 index 0000000..bfbeb42 --- /dev/null +++ b/.gitlab-ci (Kopie).yml @@ -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 diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5dedcb6..0e3118a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,13 @@ stages: - deploy +# ----------------------------------------- +# Globale Variablen +# ----------------------------------------- +variables: + BASE_DIRS: "src public api partials" # alle zu deployenden dirs + CONFIG_BASE_DIR: "config" # Basis-Konfigordner + # ----------------------------------------- # Deployment auf STAGING # ----------------------------------------- @@ -8,6 +15,10 @@ deploy:staging: stage: deploy image: alpine:3.20 + variables: + TARGET_PATH: "${FTP_PATH_STAGING}" + CONFIG_ENV_DIR: "config/staging" + before_script: - echo "πŸ“‘ Installing lftp..." - apk add --no-cache lftp @@ -16,72 +27,79 @@ deploy:staging: - 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 config/staging/:" - - ls -la config/staging/ || echo "⚠️ config/staging/ existiert nicht!" + - echo "πŸ“ PrΓΌfe & zeige Projektverzeichnisse:" + - | + for d in $BASE_DIRS $CONFIG_BASE_DIR $CONFIG_ENV_DIR; do + echo "----------------------------------------" + if [ -d "$d" ]; then + echo "πŸ“‚ Inhalt von $d/:" + ls -la "$d/" + else + echo "⚠️ Verzeichnis '$d' existiert nicht!" + fi + done - script: + script: &deploy_script - | set -e - # Sicherstellen, dass Basisverzeichnisse existieren - for d in src public config config/staging; do + echo "πŸ“ PrΓΌfe lokale Basisverzeichnisse..." + for d in $BASE_DIRS; do if [ ! -d "$d" ]; then echo "❌ Verzeichnis '$d/' fehlt im Repo! Abbruch." exit 1 fi done - echo "πŸš€ Deploy STAGING β†’ ${FTP_HOST}:${FTP_PATH_STAGING}" + if [ ! -d "$CONFIG_BASE_DIR" ]; then + echo "❌ Basis-Konfig-Verzeichnis '$CONFIG_BASE_DIR/' fehlt! Abbruch." + exit 1 + fi - echo "πŸ” Sync src/ β†’ ${FTP_PATH_STAGING}src/" + if [ ! -d "$CONFIG_ENV_DIR" ]; then + echo "❌ Env-Konfiguration '$CONFIG_ENV_DIR/' fehlt! Abbruch." + exit 1 + fi + + echo "πŸ“ Erstelle Basisverzeichnisse auf FTP (falls nicht vorhanden)..." 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/; + mkdir -p ${TARGET_PATH}${CONFIG_BASE_DIR}; + $(for d in $BASE_DIRS; do echo "mkdir -p ${TARGET_PATH}${d};"; done) bye " - echo "πŸ” Sync public/ β†’ ${FTP_PATH_STAGING}public/" + echo "πŸš€ Deploy ${CI_ENVIRONMENT_NAME} β†’ ${FTP_HOST}:${TARGET_PATH}" + + # Dynamisches Syncen aller Verzeichnisse + for d in $BASE_DIRS; do + echo "πŸ” Sync ${d}/ β†’ ${TARGET_PATH}${d}/" + 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 --make-dirs --delete --exclude .gitkeep ${d}/ ${TARGET_PATH}${d}/; + bye + " + done + + # Config separat behandeln + echo "πŸ” Sync ${CONFIG_ENV_DIR}/ β†’ ${TARGET_PATH}${CONFIG_BASE_DIR}/" 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/; + lcd ${CONFIG_ENV_DIR}; + mirror -R --make-dirs --delete --exclude .gitkeep ./ ${TARGET_PATH}${CONFIG_BASE_DIR}/; 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." + echo "βœ… Deploy ${CI_ENVIRONMENT_NAME} abgeschlossen." environment: name: staging @@ -99,81 +117,27 @@ deploy:production: stage: deploy image: alpine:3.20 + variables: + TARGET_PATH: "${FTP_PATH_PROD}" + CONFIG_ENV_DIR: "config/prod" + 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 config/prod/:" - - ls -la config/prod/ || echo "⚠️ config/prod/ existiert nicht!" - - script: + - echo "πŸ“ PrΓΌfe & zeige Projektverzeichnisse:" - | - 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 + for d in $BASE_DIRS $CONFIG_BASE_DIR $CONFIG_ENV_DIR; do + echo "----------------------------------------" + if [ -d "$d" ]; then + echo "πŸ“‚ Inhalt von $d/:" + ls -la "$d/" + else + echo "⚠️ Verzeichnis '$d' existiert nicht!" 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 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." + script: *deploy_script environment: name: production @@ -181,4 +145,3 @@ deploy:production: only: - main -# when: manual