Update .gitlab-ci.yml file
This commit is contained in:
139
.gitlab-ci.yml
139
.gitlab-ci.yml
@@ -1,6 +1,4 @@
|
|||||||
stages:
|
stages:
|
||||||
- install
|
|
||||||
- build
|
|
||||||
- deploy
|
- deploy
|
||||||
|
|
||||||
variables:
|
variables:
|
||||||
@@ -8,21 +6,22 @@ variables:
|
|||||||
BUILD_DIR: dist
|
BUILD_DIR: dist
|
||||||
|
|
||||||
# -----------------------------------------
|
# -----------------------------------------
|
||||||
# 1. Dependencies installieren
|
# Staging: baut & deployed in einem Job
|
||||||
# -----------------------------------------
|
# -----------------------------------------
|
||||||
install:
|
deploy:staging:
|
||||||
stage: install
|
stage: deploy
|
||||||
image: node:20-bullseye
|
image: node:20-bullseye
|
||||||
cache:
|
|
||||||
key: ${CI_COMMIT_REF_SLUG}
|
|
||||||
paths:
|
|
||||||
- node_modules/
|
|
||||||
script:
|
script:
|
||||||
- echo "📦 Installing deps..."
|
|
||||||
- corepack enable
|
|
||||||
- corepack prepare pnpm@9.12.0 --activate
|
|
||||||
- pnpm -v
|
|
||||||
- |
|
- |
|
||||||
|
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
|
if [ -f pnpm-lock.yaml ]; then
|
||||||
echo "pnpm-lock.yaml gefunden – nutze --frozen-lockfile"
|
echo "pnpm-lock.yaml gefunden – nutze --frozen-lockfile"
|
||||||
pnpm install --frozen-lockfile --reporter=append-only
|
pnpm install --frozen-lockfile --reporter=append-only
|
||||||
@@ -30,75 +29,23 @@ install:
|
|||||||
echo "Keine pnpm-lock.yaml – normales pnpm install"
|
echo "Keine pnpm-lock.yaml – normales pnpm install"
|
||||||
pnpm install --reporter=append-only
|
pnpm install --reporter=append-only
|
||||||
fi
|
fi
|
||||||
artifacts:
|
|
||||||
paths:
|
|
||||||
- node_modules/
|
|
||||||
expire_in: 1h
|
|
||||||
|
|
||||||
# -----------------------------------------
|
pnpm build
|
||||||
# 2. Projekt bauen
|
|
||||||
# -----------------------------------------
|
echo "📂 Build-Output (Top-Level):"
|
||||||
build:
|
ls -la
|
||||||
stage: build
|
echo "📂 Inhalt von ${BUILD_DIR}:"
|
||||||
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
|
if [ -d "${BUILD_DIR}" ]; then
|
||||||
ls -la "${BUILD_DIR}"
|
ls -la "${BUILD_DIR}"
|
||||||
else
|
else
|
||||||
echo "⚠️ Verzeichnis ${BUILD_DIR} existiert NICHT!"
|
echo "❌ Verzeichnis ${BUILD_DIR} existiert NICHT – Abbruch."
|
||||||
fi
|
|
||||||
- echo "✅ Build complete."
|
|
||||||
artifacts:
|
|
||||||
paths:
|
|
||||||
- ${BUILD_DIR}/
|
|
||||||
expire_in: 1 week
|
|
||||||
|
|
||||||
# -----------------------------------------
|
|
||||||
# 3a. Staging Deployment via FTPS
|
|
||||||
# -----------------------------------------
|
|
||||||
deploy:staging:
|
|
||||||
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} 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
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "🚀 Deploy via FTPS to ${FTP_HOST}:${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"
|
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 finished (staging)."
|
||||||
environment:
|
environment:
|
||||||
name: staging
|
name: staging
|
||||||
url: https://staging.usbcheck.it
|
url: https://staging.usbcheck.it
|
||||||
@@ -107,36 +54,46 @@ deploy:staging:
|
|||||||
- merge_requests
|
- merge_requests
|
||||||
|
|
||||||
# -----------------------------------------
|
# -----------------------------------------
|
||||||
# 3b. Production Deployment via FTPS
|
# Production: baut & deployed in einem Job
|
||||||
# -----------------------------------------
|
# -----------------------------------------
|
||||||
deploy:production:
|
deploy:production:
|
||||||
stage: deploy
|
stage: deploy
|
||||||
image: alpine:3.20
|
image: node:20-bullseye
|
||||||
dependencies:
|
script:
|
||||||
- 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} im Deploy-Job:"
|
|
||||||
- |
|
- |
|
||||||
|
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
|
if [ -d "${BUILD_DIR}" ]; then
|
||||||
ls -la "${BUILD_DIR}"
|
ls -la "${BUILD_DIR}"
|
||||||
else
|
else
|
||||||
echo "❌ ${BUILD_DIR} existiert HIER nicht!"
|
echo "❌ Verzeichnis ${BUILD_DIR} existiert NICHT – Abbruch."
|
||||||
fi
|
|
||||||
script:
|
|
||||||
- |
|
|
||||||
if [ ! -d "${BUILD_DIR}" ]; then
|
|
||||||
echo "❌ Abbruch: Build-Verzeichnis ${BUILD_DIR} fehlt im Deploy-Job."
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "🚀 Deploy via FTPS to ${FTP_HOST}:${FTP_PATH_PROD} ..."
|
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"
|
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 finished (production)."
|
||||||
environment:
|
environment:
|
||||||
name: production
|
name: production
|
||||||
url: https://www.usbcheck.it
|
url: https://www.usbcheck.it
|
||||||
|
|||||||
Reference in New Issue
Block a user