Files
usbcheck.it/.gitlab-ci.yml

103 lines
2.4 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -------------------------------
# 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
variables:
NODE_ENV: production
# Directory where the static site is built
BUILD_DIR: dist
# Cache node_modules for faster builds
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
# -------------------------------
# 1. Install dependencies
# -------------------------------
install:
stage: install
image: node:20-bullseye
script:
- echo "🧩 Installing dependencies..."
- corepack enable
- corepack prepare pnpm@latest --activate
- pnpm install --frozen-lockfile --reporter=append-only
artifacts:
paths:
- node_modules/
expire_in: 1h
# -------------------------------
# 2. Build project
# -------------------------------
build:
stage: build
image: node:20-bullseye
script:
- echo "🏗️ Building project..."
- pnpm build
- echo "✅ Build complete."
artifacts:
paths:
- ${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:
DEPLOY_PATH: /www/htdocs/w020df28/projects/usbcheck/staging/
environment:
name: staging
url: https://staging.usbcheck.it
only:
- develop
- merge_requests
# -------------------------------
# 3b. Production deployment
# -------------------------------
deploy:production:
<<: *deploy
variables:
DEPLOY_PATH: /www/htdocs/w020df28/projects/usbcheck/web/
environment:
name: production
url: https://www.usbcheck.it
only:
- main
when: manual