Update .gitlab-ci.yml file

This commit is contained in:
2025-11-13 01:30:34 +01:00
parent 091a7ff218
commit 53abc53591

View File

@@ -1,9 +1,3 @@
# -----------------------------------------
# USBcheck.it GitLab CI/CD Pipeline
# Build: pnpm (z.B. Astro)
# Deploy: FTPS (lftp) → all-inkl
# -----------------------------------------
stages:
- install
- build
@@ -11,38 +5,31 @@ stages:
variables:
NODE_ENV: production
# Wenn dein Build woanders hin schreibt (z.B. "build" oder ".output/public"):
# HIER anpassen!
BUILD_DIR: dist
# -----------------------------------------
# Gemeinsames Setup für Node + pnpm
# -----------------------------------------
.node_pnpm: &node_pnpm
image: node:20-bullseye
before_script:
- echo "🧩 Corepack/Pnpm aktivieren..."
- corepack enable
- corepack prepare pnpm@9.12.0 --activate
- pnpm -v
# -----------------------------------------
# Cache für node_modules
# -----------------------------------------
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
# -----------------------------------------
# 1. Dependencies installieren
# -----------------------------------------
install:
stage: install
<<: *node_pnpm
image: node:20-bullseye
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
script:
- echo "📦 Installing deps..."
- if [ -f pnpm-lock.yaml ]; then pnpm install --frozen-lockfile --reporter=append-only; else pnpm install --reporter=append-only; fi
- 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
artifacts:
paths:
- node_modules/
@@ -53,16 +40,28 @@ install:
# -----------------------------------------
build:
stage: build
<<: *node_pnpm
image: node:20-bullseye
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
dependencies:
- install
script:
- echo "🏗️ Building..."
- corepack enable
- corepack prepare pnpm@9.12.0 --activate
- pnpm -v
- pnpm build
- echo "📂 Build-Output (Top-Level):"
- ls -la
- echo "📂 Inhalt von ${BUILD_DIR} (falls vorhanden):"
- if [ -d "${BUILD_DIR}" ]; then ls -la "${BUILD_DIR}"; else echo "⚠️ Verzeichnis ${BUILD_DIR} existiert NICHT!"; fi
- |
if [ -d "${BUILD_DIR}" ]; then
ls -la "${BUILD_DIR}"
else
echo "⚠️ Verzeichnis ${BUILD_DIR} existiert NICHT!"
fi
- echo "✅ Build complete."
artifacts:
paths:
@@ -83,13 +82,23 @@ deploy:staging:
- 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
- echo "📂 Inhalt von ${BUILD_DIR} im 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_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)."
- |
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_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
@@ -111,13 +120,23 @@ deploy:production:
- 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
- echo "📂 Inhalt von ${BUILD_DIR} im 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)."
- |
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