# Drone CI/CD for iLED shop # Repo secrets (Drone UI → Settings → Secrets): # ssh_host, ssh_user, ssh_key — deploy host # ssh_port — optional, default 22 # deploy_path — absolute path on host (e.g. /opt/iled-shop) # # Homelab runner: Pi-hole DNS → Traefik LAN; /drone-cache for npm/nuget. # Steps stay serial + single-worker so builds fit under DRONE_MEMORY_LIMIT (~2GiB). kind: pipeline type: docker name: ci platform: os: linux arch: arm64 dns: - 192.168.0.64 clone: depth: 50 concurrency: limit: 1 steps: - name: api image: mcr.microsoft.com/dotnet/sdk:10.0 pull: false environment: DOTNET_CLI_TELEMETRY_OPTOUT: "1" DOTNET_NOLOGO: "1" MSBUILDDISABLENODEREUSE: "1" NUGET_PACKAGES: /drone-cache/nuget NUGET_HTTP_CACHE_PATH: /drone-cache/nuget-http DOTNET_CLI_HOME: /drone-cache/dotnet NUGET_XMLDOC_MODE: skip commands: - cd src/backend - dotnet restore iLED.slnx - dotnet build iLED.slnx -c Release --no-restore -m:1 - name: shop image: node:22-bookworm pull: false environment: NG_BUILD_MAX_WORKERS: "1" NODE_OPTIONS: "--max-old-space-size=1536" npm_config_cache: /drone-cache/npm commands: - cd src/shop - npm ci --prefer-offline - npm run build -- --configuration=production depends_on: - api - name: admin image: node:22-bookworm pull: false environment: NG_BUILD_MAX_WORKERS: "1" NODE_OPTIONS: "--max-old-space-size=1536" npm_config_cache: /drone-cache/npm commands: - cd src/admin - npm ci --prefer-offline - npm run build -- --configuration=production depends_on: - shop trigger: event: - push - pull_request - custom --- kind: pipeline type: docker name: deploy platform: os: linux arch: arm64 dns: - 192.168.0.64 depends_on: - ci clone: disable: true concurrency: limit: 1 steps: - name: ssh-deploy image: appleboy/drone-ssh pull: false settings: host: from_secret: ssh_host username: from_secret: ssh_user key: from_secret: ssh_key port: from_secret: ssh_port script_stop: true envs: - DEPLOY_PATH script: - set -euo pipefail - cd "${DEPLOY_PATH}" - git fetch origin - git checkout "${DRONE_COMMIT_SHA}" - cd docker - docker compose --profile full pull || true - docker compose --profile full up -d --build --remove-orphans - docker compose --profile full ps environment: DEPLOY_PATH: from_secret: deploy_path trigger: branch: - master - main event: - push