# kind: pipeline
# type: docker
# name: Test Pipeline

# workspace:
#   path: /drone/looking

# steps:
# - name: yarn install
#   image: node:20-bullseye-slim
#   environment:
#     YARN_VERSION: 3.5.0
#   commands:
#   - yarn set version stable
#   - yarn install
#   volumes:
#   - name: yarnrc
#     path: /drone/auth/.yarnrc.yml
# - name: Code Style Checks
#   image: node:latest
#   commands:
#   - yarn prettier
# - name: Lint
#   image: node:latest
#   commands:
#   - yarn lint
# - name: Unit Tests
#   image: node:latest
#   commands:
#   - yarn test
# - name: Send Test Status Notification
#   image: plugins/webhook
#   settings:
#     urls: https://lab.mifi.dev/hooks/9p65zpagctgkmndo8nwwm4199r
#     content_type: application/json
#     template: |
#       {
#         "icon_url":"https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/120/apple/198/freezing-face_1f976.png",
#         "text": "[{{ repo.name }} - Build # {{ build.number }}] Code Quality Checks {{ build.status }} {{#success build.status}}:tada:{{else}}:poop:{{/success}}",
#         "username":"DroneBot"
#       }
#   when:
#     status:
#       - success
#       - failure
# - name: Build
#   image: node:latest
#   commands:
#   - yarn build:production
# - name: Send Build Status Notifications
#   image: plugins/webhook
#   settings:
#     urls: https://lab.mifi.dev/hooks/9p65zpagctgkmndo8nwwm4199r
#     content_type: application/json
#     template: |
#       {
#         "icon_url":"https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/120/apple/198/freezing-face_1f976.png",
#         "text": "[{{ repo.name }} - Build # {{ build.number }}] Build package {{ build.status }} {{#success build.status}}:tada:{{else}}:poop:{{/success}}",
#         "username":"DroneBot"
#       }
#   when:
#     status:
#       - success
#       - failure

# volumes:
# - name: yarnrc
#   host:
#     path: /volume1/docker/.yarnrc.yml

# trigger:
#   branch:
#   - master
#   - develop
#   event:
#   - pull_request

# ---
# kind: pipeline
# type: docker
# name: Publish Pipeline

# workspace:
#   path: /drone/auth

# steps:
# - name: Build Package
#   image: node:20-bullseye-slim
#   environment:
#     YARN_VERSION: 3.5.0
#   commands:
#   - yarn set version stable
#   - yarn install
#   - yarn build:package
#   volumes:
#   - name: yarnrc
#     path: /drone/auth/.yarnrc.yml
# - name: Publish NPM
#   image: node:20-bullseye-slim
#   commands:
#     - yarn npm publish
#   volumes:
#   - name: npmrc
#     path: /drone/auth/.npmrc
#   - name: yarnrc
#     path: /drone/auth/.yarnrc.yml
# - name: Report NPM Publish Status
#   image: plugins/webhook
#   settings:
#     urls: https://lab.mifi.dev/hooks/ccw34hdf7tgbjmzp96nptn938r
#     content_type: application/json
#     template: |
#       {
#         "icon_url":"https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/120/apple/198/freezing-face_1f976.png",
#         "text": "[{{ repo.name }} - New npm package release {{tag}} from # {{ build.number }}] Deploy {{ build.status }} {{#success build.status}}:tada:{{else}}:poop:{{/success}}",
#         "username":"DroneBot"
#       }
#   when:
#     status:
#       - success
#       - failure

# ---
kind: pipeline
type: docker
name: Publish Pipeline

workspace:
  path: /drone/looking

steps:
- name: Publish Image
  image: plugins/docker
  settings:
    auto_tag: true
    repo: git.mifi.dev/mifi/pfosi-looking-api
    registry: git.mifi.dev
    build_args:
      - MONGO_ENTRY_FILE=latest
      - MONGO_VERSION=latest
      - NPM_TOKEN:
        from_secret: reg_token
    ssh-agent-key:
      from_secret: reg_token    
    username: <token>
    password:
      from_secret: reg_token
  secrets: [reg_token]
- name: Report Image Publish Status
  image: plugins/webhook
  settings:
    urls: https://lab.mifi.dev/hooks/ccw34hdf7tgbjmzp96nptn938r
    content_type: application/json
    template: |
      {
        "icon_url":"https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/120/apple/198/freezing-face_1f976.png",
        "text": "[{{ repo.name }} - New docker image release {{tag}} from # {{ build.number }}] Deploy {{ build.status }} {{#success build.status}}:tada:{{else}}:poop:{{/success}}",
        "username":"DroneBot"
      }
  when:
    status:
      - success
      - failure

volumes:
- name: dockerconfig
  host:
    path: /volume1/docker/dockerconfig.json
- name: dockersock
  host:
    path: /var/run/docker.sock
# - name: npmrc
#   host:
#     path: /volume1/docker/beethoven/labs-pfosi-looking-api/.npmrc
# - name: yarnrc
#   host:
#     path: /volume1/docker/.yarnrc.yml

# depends_on:
#   - Test Pipeline

trigger:
  branch:
  - master
  - develop
  event:
  - push

# trigger:
#   event:
  # - tag

# ---
# kind: pipeline
# type: docker
# name: Staging Deploy Pipeline

# workspace:
#   path: /drone/auth

# steps:
# - name: Deploy Container
#   image: docker
#   privileged: true
#   environment:
#     CONTAINER_PREFIX: staging
#     HOST: area51.mifi.dev
#     ROUTE_PREFIX: /auth
#     PORT: 9001
#   commands:
#     - docker compose -f docker-compose.staging-build.yml build --pull --no-cache
#     - docker compose -f docker-compose.staging-build.yml up --remove-orphans --force-recreate --wait
#   volumes:
#   - name: env-secrets
#     path: /drone/auth/staging.env
#   - name: dockersock
#     path: /var/run/docker.sock
#   - name: dockerconfig
#     path: /drone/auth/.docker/config.json
# - name: Send Status Notifications
#   image: plugins/webhook
#   privileged: true
#   settings:
#     urls: https://lab.mifi.dev/hooks/ccw34hdf7tgbjmzp96nptn938r
#     content_type: application/json
#     template: |
#       {
#         "icon_url":"https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/120/apple/198/freezing-face_1f976.png",
#         "text": "[{{ repo.name }} - Build # {{ build.number }}] Staging Deploy {{ build.status }} {{#success build.status}}:tada:{{else}}:poop:{{/success}}",
#         "username":"DroneBot"
#       }
#   when:
#     status:
#       - success
#       - failure

# volumes:
# - name: dockerconfig
#   host:
#     path: /volume1/docker/dockerconfig.json
# - name: dockersock
#   host:
#     path: /var/run/docker.sock
# - name: env-secrets
#   host:
#     path: /volume1/docker/beethoven/labs-auth/staging.env

# depends_on:
#   - Test Pipeline

# trigger:
#   branch:
#   - develop
#   event:
#   - push

---
kind: pipeline
type: docker
name: Production Deploy Pipeline

workspace:
  path: /drone/looking

clone:
  disable: true

steps:
- name: Deploy Container
  image: plugins/webhook
  settings:
    # urls: https://portainer.mifi.dev/api/stacks/webhooks/968d2244-2548-4f0b-8c18-bbc9bc35305d
- name: Send Status Notifications
  image: plugins/webhook
  privileged: true
  settings:
    urls: https://lab.mifi.dev/hooks/ccw34hdf7tgbjmzp96nptn938r
    content_type: application/json
    template: |
      {
        "icon_url":"https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/120/apple/198/freezing-face_1f976.png",
        "text": "[{{ repo.name }} - Build # {{ build.number }}] Production Deploy {{ build.status }} {{#success build.status}}:tada:{{else}}:poop:{{/success}}",
        "username":"DroneBot"
      }
  when:
    status:
      - success
      - failure

depends_on:
  - Publish Pipeline

trigger:
  event:
  - promote
  target:
  - production

# kind: pipeline
# type: docker
# name: Deploy to miCloud

# steps:
# - name: deploy-dev
#   image: node:latest
#   commands:
#   - npm install -g forever
#   - npm install
#   - forever start bin/www

# trigger:
#   branch:
#   - master
#   event:
#   - push

