From 0eada91e81d7d40e40fe43499d6cdd83e94181fe Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Thu, 13 Nov 2025 22:26:12 +0100 Subject: [PATCH] Update .gitlab-ci.yml file --- .gitlab-ci.yml | 128 +++++++++++++++++++------------------------------ 1 file changed, 48 insertions(+), 80 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3e0a2b5..a10414e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,51 +1,33 @@ stages: - deploy -variables: - NODE_ENV: production - BUILD_DIR: dist - -# ----------------------------------------- -# Staging: baut & deployed in einem Job -# ----------------------------------------- +# ------------------------- +# Staging: Dateien hochladen +# ------------------------- deploy:staging: stage: deploy - image: node:20-bullseye + image: alpine:3.20 + before_script: + - echo "📡 Installing lftp..." + - apk add --no-cache lftp + - echo "📂 Dateien im CI-Workspace:" + - pwd + - ls -la script: - - | - set -e - - echo "📦 Install & Build (staging)..." - apt-get update && apt-get install -y lftp - - corepack enable - corepack prepare pnpm@9.12.0 --activate - pnpm -v - - if [ -f pnpm-lock.yaml ]; then - echo "pnpm-lock.yaml gefunden – nutze --frozen-lockfile" - pnpm install --frozen-lockfile --reporter=append-only - else - echo "Keine pnpm-lock.yaml – normales pnpm install" - pnpm install --reporter=append-only - fi - - pnpm build - - echo "📂 Build-Output (Top-Level):" - ls -la - echo "📂 Inhalt von ${BUILD_DIR}:" - if [ -d "${BUILD_DIR}" ]; then - ls -la "${BUILD_DIR}" - else - echo "❌ Verzeichnis ${BUILD_DIR} existiert NICHT – Abbruch." - exit 1 - fi - - 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)." + - echo "🚀 Deploy (staging) 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 \ + --exclude .git/ \ + --exclude .gitlab-ci.yml \ + ./ ${FTP_PATH_STAGING}; + bye + " + - echo "✅ Deploy finished (staging)." environment: name: staging url: https://staging.usbcheck.it @@ -53,47 +35,33 @@ deploy:staging: - develop - merge_requests -# ----------------------------------------- -# Production: baut & deployed in einem Job -# ----------------------------------------- +# ------------------------- +# Production: Dateien hochladen +# ------------------------- deploy:production: stage: deploy - image: node:20-bullseye + image: alpine:3.20 + before_script: + - echo "📡 Installing lftp..." + - apk add --no-cache lftp + - echo "📂 Dateien im CI-Workspace:" + - pwd + - ls -la script: - - | - set -e - - echo "📦 Install & Build (production)..." - apt-get update && apt-get install -y lftp - - corepack enable - corepack prepare pnpm@9.12.0 --activate - pnpm -v - - if [ -f pnpm-lock.yaml ]; then - echo "pnpm-lock.yaml gefunden – nutze --frozen-lockfile" - pnpm install --frozen-lockfile --reporter=append-only - else - echo "Keine pnpm-lock.yaml – normales pnpm install" - pnpm install --reporter=append-only - fi - - pnpm build - - echo "📂 Build-Output (Top-Level):" - ls -la - echo "📂 Inhalt von ${BUILD_DIR}:" - if [ -d "${BUILD_DIR}" ]; then - ls -la "${BUILD_DIR}" - else - echo "❌ Verzeichnis ${BUILD_DIR} existiert NICHT – Abbruch." - 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)." + - echo "🚀 Deploy (production) 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 \ + --exclude .git/ \ + --exclude .gitlab-ci.yml \ + ./ ${FTP_PATH_PROD}; + bye + " + - echo "✅ Deploy finished (production)." environment: name: production url: https://www.usbcheck.it