From 53abc5359131d21409446e46dd4d73a596bf992c Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Thu, 13 Nov 2025 01:30:34 +0100 Subject: [PATCH] Update .gitlab-ci.yml file --- .gitlab-ci.yml | 105 +++++++++++++++++++++++++++++-------------------- 1 file changed, 62 insertions(+), 43 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6da40f1..02f5cc4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -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