# GitLab CI — Website deployment only
# All Rust CI (test, clippy, fmt, benchmarks, coverage) runs on GitHub Actions.
# This pipeline is only active on the `deploy` branch for website builds.

workflow:
  rules:
    - if: $CI_COMMIT_BRANCH == "deploy"
    - when: never

stages:
  - build
  - deploy

website_build:
  stage: build
  image: node:22.12.0
  variables:
    NPM_CONFIG_CACHE: "$CI_PROJECT_DIR/website/.npm"
  cache:
    key: "website-${CI_COMMIT_REF_SLUG}"
    paths:
      - website/.npm/
  script:
    - cd website
    - npm ci
    - npm run build

deploy_website:
  stage: deploy
  image: docker:24
  needs: []
  variables:
    CONTAINER_NAME: leanctx-web
    IMAGE_NAME: lean-ctx-web
    DOCKER_HOST: unix:///var/run/docker.sock
  script:
    - echo "Building website image from source (multi-stage Dockerfile)..."
    - test "$(git ls-files website/dist | wc -l)" -eq 0
    - test "$(git ls-files website/node_modules | wc -l)" -eq 0
    - cd website
    - docker build -t ${IMAGE_NAME}:latest .
    - echo "Stopping old container..."
    - docker stop ${CONTAINER_NAME} || true
    - docker rm ${CONTAINER_NAME} || true
    - echo "Starting new container..."
    - docker run -d
      --name ${CONTAINER_NAME}
      --network coolify
      --restart unless-stopped
      ${IMAGE_NAME}:latest
    - echo "Verifying..."
    - sleep 2
    - docker ps --filter name=${CONTAINER_NAME} --format "{{.Status}}"
    - echo "Deploy complete!"
