# kind: pipeline
# type: docker
# name: server_build_and_test
#
# trigger:
#   branch:
#     - main
#   event:
#     - push
#
# steps:
#   - name: build_server
#     image: node
#     commands:
#       - npm ci -w @calchat/shared
#       - npm ci -w @calchat/server
#       - npm run build -w @calchat/server
#
#   - name: jest_server
#     image: node
#     commands:
#       - npm run test -w @calchat/server
#
# ---
#
# kind: pipeline
# type: docker
# name: check_for_formatting
#
# trigger:
#   branch:
#     - main
#   event:
#     - push
#
# steps:
#   - name: format_check
#     image: node
#     commands:
#       - npm ci
#       - npm run check_format
#
# ---
#
kind: pipeline
type: docker
name: deploy_latest

trigger:
  branch:
    - main
  event:
    - push

steps:
  # - name: upload_latest
  #   image: plugins/docker
  #   settings:
  #     registry: gitea.gilmour109.de
  #     repo: gitea.gilmour109.de/gilmour109/calchat-server
  #     dockerfile: apps/server/docker/Dockerfile
  #     tags:
  #       - latest
  #     username:
  #       from_secret: gitea_username
  #     password:
  #       from_secret: gitea_password
  #
  # - name: deploy_to_vps
  #   image: appleboy/drone-ssh
  #   settings:
  #     host:
  #       - 10.0.0.1
  #     username: root
  #     password:
  #       from_secret: vps_ssh_password
  #     envs:
  #       - gitea_username
  #       - gitea_password
  #     port: 22
  #     command_timeout: 10m
  #     script:
  #       - docker login -u $GITEA_USERNAME -p $GITEA_PASSWORD gitea.gilmour109.de
  #       - docker pull gitea.gilmour109.de/gilmour109/calchat-server:latest
  #       - docker compose -f /root/calchat-mongo/docker-compose.yml up -d

  - name: build_apk
    image: alpine
    commands:
      - mkdir -p apps/client
      - echo "dummy apk" > apps/client/calchat.apk

  - name: upload_apk
    image: plugins/s3
    settings:
      endpoint: https://garage.gilmour109.de
      bucket: calchat-releases
      access_key:
        from_secret: calchat_drone_garage_access_key
      secret_key:
        from_secret: calchat_drone_garage_secret_key
      source: apps/client/calchat.apk
      target: /
      region: garage
      path_style: true

# depends_on:
#   - server_build_and_test
#   - check_for_formatting

---

kind: pipeline
type: docker
name: upload_tag

trigger:
  event:
    - tag

steps:
  - name: upload_tag
    image: plugins/docker
    settings:
      registry: gitea.gilmour109.de
      repo: gitea.gilmour109.de/gilmour109/calchat-server
      dockerfile: apps/server/docker/Dockerfile
      tags:
        - ${DRONE_TAG}
      username:
        from_secret: gitea_username
      password:
        from_secret: gitea_password

  - name: deploy_to_k3s
    image: appleboy/drone-ssh
    settings:
      host:
        - 192.168.178.201
      username: debian
      password:
        from_secret: k3s_ssh_password
      envs:
        - drone_tag
        - drone_commit_sha
      port: 22
      command_timeout: 10m
      script:
        - export TAG=$DRONE_TAG
        - export NAME=$(echo $DRONE_TAG | tr -d '.')
        - export COMMIT=$DRONE_COMMIT_SHA
        - envsubst < /home/debian/manifest.yml | sudo kubectl apply -f -

  - name: build_apk
    image: gitea.gilmour109.de/gilmour109/eas-build:latest
    environment:
      EXPO_TOKEN:
        from_secret: expo_token
    commands:
      - npm ci
      - npm run build -w @calchat/shared
      - npm run -w @calchat/client build:apk

  - name: release_apk
    image: plugins/gitea-release
    settings:
      api_key:
        from_secret: gitea_token
      base_url: https://gitea.gilmour109.de
      files:
        - calchat.apk
      title: ${DRONE_TAG}
