diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ab46b0c..6da40f1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -11,7 +11,7 @@ stages: variables: NODE_ENV: production - # Falls dein Build woanders hin schreibt (z.B. "build" oder ".output/public"): + # Wenn dein Build woanders hin schreibt (z.B. "build" oder ".output/public"): # HIER anpassen! BUILD_DIR: dist @@ -70,13 +70,13 @@ build: expire_in: 1 week # ----------------------------------------- -# 3. Template fΓΌr FTPS-Deployment +# 3a. Staging Deployment via FTPS # ----------------------------------------- -.deploy_ftps_template: &deploy_ftps +deploy:staging: stage: deploy image: alpine:3.20 dependencies: - - build # <<< ganz wichtig: lade Artefakte vom Build-Job + - build before_script: - echo "πŸ“‘ Installing lftp..." - apk add --no-cache lftp @@ -87,25 +87,9 @@ build: - if [ -d "${BUILD_DIR}" ]; then ls -la "${BUILD_DIR}"; else echo "❌ ${BUILD_DIR} existiert HIER nicht!"; fi script: - if [ ! -d "${BUILD_DIR}" ]; then echo "❌ Abbruch: Build-Verzeichnis ${BUILD_DIR} fehlt im Deploy-Job."; exit 1; fi - - echo "πŸš€ Deploy via FTPS to $FTP_HOST:$FTP_PATH ..." - - lftp -e " - set ftp:ssl-force true; - set ftp:passive-mode true; - set ftp:ssl-protect-data true; - set ssl:verify-certificate no; - open -u $FTP_USER,$FTP_PASSWORD $FTP_HOST; - mirror -R --delete --parallel=4 ${BUILD_DIR}/ $FTP_PATH; - bye - " - - echo "βœ… Deploy finished." - -# ----------------------------------------- -# 3a. Staging Deployment -# ----------------------------------------- -deploy:staging: - <<: *deploy_ftps - variables: - FTP_PATH: $FTP_PATH_STAGING + - echo "πŸš€ Deploy via FTPS to $FTP_HOST:$FTP_PATH_STAGING ..." + - lftp -e "set ftp:ssl-force true; set ftp:passive-mode true; set ftp:ssl-protect-data true; set ssl:verify-certificate no; open -u $FTP_USER,$FTP_PASSWORD $FTP_HOST; mirror -R --delete --parallel=4 ${BUILD_DIR}/ $FTP_PATH_STAGING; bye" + - echo "βœ… Deploy finished (staging)." environment: name: staging url: https://staging.usbcheck.it @@ -114,12 +98,26 @@ deploy:staging: - merge_requests # ----------------------------------------- -# 3b. Production Deployment +# 3b. Production Deployment via FTPS # ----------------------------------------- deploy:production: - <<: *deploy_ftps - variables: - FTP_PATH: $FTP_PATH_PROD + stage: deploy + image: alpine:3.20 + dependencies: + - build + before_script: + - echo "πŸ“‘ Installing lftp..." + - apk add --no-cache lftp + - echo "πŸ“‚ Dateien im CI-Workspace vor Deploy:" + - pwd + - ls -la + - echo "πŸ“‚ Inhalt von ${BUILD_DIR} (Deploy-Job):" + - if [ -d "${BUILD_DIR}" ]; then ls -la "${BUILD_DIR}"; else echo "❌ ${BUILD_DIR} existiert HIER nicht!"; fi + script: + - if [ ! -d "${BUILD_DIR}" ]; then echo "❌ Abbruch: Build-Verzeichnis ${BUILD_DIR} fehlt im Deploy-Job."; exit 1; fi + - echo "πŸš€ Deploy via FTPS to $FTP_HOST:$FTP_PATH_PROD ..." + - lftp -e "set ftp:ssl-force true; set ftp:passive-mode true; set ftp:ssl-protect-data true; set ssl:verify-certificate no; open -u $FTP_USER,$FTP_PASSWORD $FTP_HOST; mirror -R --delete --parallel=4 ${BUILD_DIR}/ $FTP_PATH_PROD; bye" + - echo "βœ… Deploy finished (production)." environment: name: production url: https://www.usbcheck.it