# Drone CI/CD for iLED shop — build on desktop agent, deploy to Pi via SSH. kind: pipeline type: docker name: ci platform: os: linux arch: amd64 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" 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 - name: shop image: node:22-bookworm pull: false environment: 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: npm_config_cache: /drone-cache/npm commands: - cd src/admin - npm ci --prefer-offline - npm run build -- --configuration=production depends_on: - api - name: docker-api image: plugins/docker pull: false settings: repo: registry.zea.lt/miczek/iled-api registry: registry.zea.lt username: from_secret: registry_username password: from_secret: registry_password dockerfile: docker/Dockerfile.api context: . tags: - latest - ${DRONE_COMMIT_SHA:0:7} depends_on: - api - name: docker-shop image: plugins/docker pull: false settings: repo: registry.zea.lt/miczek/iled-shop registry: registry.zea.lt username: from_secret: registry_username password: from_secret: registry_password dockerfile: docker/Dockerfile.shop context: . tags: - latest - ${DRONE_COMMIT_SHA:0:7} depends_on: - shop - name: docker-admin image: plugins/docker pull: false settings: repo: registry.zea.lt/miczek/iled-admin registry: registry.zea.lt username: from_secret: registry_username password: from_secret: registry_password dockerfile: docker/Dockerfile.admin context: . tags: - latest - ${DRONE_COMMIT_SHA:0:7} depends_on: - admin trigger: event: - push - pull_request - custom --- kind: pipeline type: docker name: deploy platform: os: linux arch: amd64 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 - REGISTRY_USERNAME - REGISTRY_PASSWORD script: - set -euo pipefail - DEPLOY_PATH="${DEPLOY_PATH:-/opt/iled-shop}" - cd "${DEPLOY_PATH}" - git fetch origin - git checkout "${DRONE_COMMIT_SHA}" - echo "${REGISTRY_PASSWORD}" | docker login registry.zea.lt -u "${REGISTRY_USERNAME}" --password-stdin - cd docker - docker compose pull - docker compose up -d --remove-orphans - docker compose ps - docker logout registry.zea.lt || true environment: DEPLOY_PATH: from_secret: deploy_path REGISTRY_USERNAME: from_secret: registry_username REGISTRY_PASSWORD: from_secret: registry_password trigger: branch: - master - main event: - push - custom