# This file defines a Drone pipeline that builds a static website with "npm run build". This
# pipeline must be marked as "Trusted" in the Drone project settings.
#
# We mount the target directory of the project at "/var/www/{project}" to the container
# "dist/" directory and the run the build. A caveat is that the container builds files
# with "root" permissions, so we need to fix those after each build with a second pipeline.

kind: pipeline
name: default

steps:
  - name: deploy
    image: node:22
    volumes:
      - name: host-website-dist
        path: /mnt/website
    commands:
      - uname -a
      - ldd --version
      - node -v
      - apt update && apt install -y libvips-dev
      - npm ci
      - node -e 'import Sharp from "sharp"; console.log(Sharp)'
      - npm run build
      - cp -rT ./dist /mnt/website

volumes:
  - name: host-website-dist
    host: # this volume is mounted on the host machine
      path: /var/www/website

trigger:
  branch:
    - main
  event:
    - push

---
kind: pipeline
type: exec # this job is executed on the host machine
name: caddy-permissions

depends_on:
  - default

steps:
  - name: chown
    commands:
      - chown -R caddy:caddy /var/www/website

trigger:
  branch:
    - main
  event:
    - push
