diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 83e806c..5fe9a21 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,52 +1,40 @@ -# ------------------------------- -# USBcheck.it – GitLab CI/CD Setup -# ------------------------------- -# Features: -# - Build static site (Astro, Hugo, Next, etc.) -# - Deploys via SSH to all-inkl (staging + production) -# - Separate environments for safety -# ------------------------------- - -stages: - - install - - build - - deploy +stages: [install, build, deploy] variables: NODE_ENV: production - # Directory where the static site is built BUILD_DIR: dist -# Cache node_modules for faster builds +# Gemeinsames pnpm-Setup fΓΌr alle Node-Jobs +.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: key: ${CI_COMMIT_REF_SLUG} paths: - node_modules/ -# ------------------------------- -# 1. Install dependencies -# ------------------------------- install: stage: install - image: node:20-bullseye + <<: *node_pnpm script: - - echo "🧩 Installing dependencies..." - - corepack enable - - corepack prepare pnpm@latest --activate - - pnpm install --frozen-lockfile --reporter=append-only + - echo "πŸ“¦ Installing deps..." + # Nutze --frozen-lockfile nur, wenn pnpm-lock.yaml im Repo committed ist + - if [ -f pnpm-lock.yaml ]; then pnpm install --frozen-lockfile --reporter=append-only; else pnpm install --reporter=append-only; fi artifacts: paths: - node_modules/ expire_in: 1h -# ------------------------------- -# 2. Build project -# ------------------------------- build: stage: build - image: node:20-bullseye + <<: *node_pnpm script: - - echo "πŸ—οΈ Building project..." + - echo "πŸ—οΈ Building..." - pnpm build - echo "βœ… Build complete." artifacts: @@ -54,28 +42,18 @@ build: - ${BUILD_DIR}/ expire_in: 1 week -# ------------------------------- -# 3. Deployment template -# ------------------------------- .deploy_template: &deploy stage: deploy image: alpine:3.20 before_script: - - echo "πŸš€ Preparing SSH..." - apk add --no-cache openssh-client rsync - mkdir -p ~/.ssh - echo "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_ed25519 - chmod 600 ~/.ssh/id_ed25519 - ssh-keyscan -H "$DEPLOY_HOST" >> ~/.ssh/known_hosts script: - - echo "πŸ”„ Deploying to $DEPLOY_PATH ..." - rsync -az --delete ${BUILD_DIR}/ $DEPLOY_USER@$DEPLOY_HOST:$DEPLOY_PATH - - echo "βœ… Deployment complete." - only: [] -# ------------------------------- -# 3a. Staging deployment -# ------------------------------- deploy:staging: <<: *deploy variables: @@ -87,9 +65,6 @@ deploy:staging: - develop - merge_requests -# ------------------------------- -# 3b. Production deployment -# ------------------------------- deploy:production: <<: *deploy variables: