kind: pipeline
type: docker
name: default

workspace:
    path: /drone/nami

steps:
    - name: submodules
      image: alpine/git
      environment:
          SSH_KEY:
              from_secret: private_key
          KNOWN_HOSTS:
              from_secret: known_hosts
      commands:
          - mkdir $HOME/.ssh
          - echo "$SSH_KEY" > $HOME/.ssh/id_rsa
          - echo "$KNOWN_HOSTS" > $HOME/.ssh/known_hosts
          - chmod 600 $HOME/.ssh/id_rsa
          - git submodule update --init --recursive

    - name: composer_dev
      image: composer:2.2.7
      commands:
          - composer install --ignore-platform-reqs --dev

    - name: mysql_healthcheck
      image: mariadb/server:10.3
      commands:
          - while ! mysqladmin ping -h db -u db -pdb --silent; do sleep 1; done

    - name: node
      image: node:17.9.0-slim
      commands:
          - npm ci && npm run prod && npm run img && rm -R node_modules

    - name: phpunit_tests
      image: php:8.1.6
      commands:
          - apt-get update && apt-get install -y libcurl3-dev apt-utils zlib1g-dev libpng-dev libicu-dev libonig-dev rsync texlive-base texlive-xetex texlive-lang-german texlive-fonts-extra
          - docker-php-ext-install pdo_mysql curl gd intl mbstring
          - pecl install redis && docker-php-ext-enable redis
          - cp .docker/fonts/* /usr/share/fonts/
          - php artisan migrate
          - php artisan test
          - rm -f .env
      environment:
          APP_NAME: Scoutrobot
          APP_KEY:
              from_secret: app_key
          APP_ENV: local
          APP_DEBUG: true
          APP_URL: http://scoutrobot.test
          APP_MODE: stamm
          LOG_CHANNEL: stack
          DB_CONNECTION: mysql
          DB_HOST: db
          REDIS_HOST: redis
          DB_PORT: 3306
          DB_DATABASE: db
          DB_USERNAME: db
          DB_PASSWORD: db
          BROADCAST_DRIVER: log
          CACHE_DRIVER: file
          QUEUE_CONNECTION: sync
          SESSION_DRIVER: file
          SESSION_LIFETIME: 120
          MAIL_FROM_NAME: '${APP_NAME}'
          PDFLATEX_BIN: /usr/bin/pdflatex
          XELATEX_BIN: /usr/bin/xelatex

    - name: phpstan_tests
      image: php:8.1.6
      commands:
          - apt-get update && apt-get install -y libcurl3-dev apt-utils zlib1g-dev libpng-dev libicu-dev libonig-dev rsync
          - pecl install redis && docker-php-ext-enable redis
          - vendor/bin/phpstan analyse --memory-limit=2G

    - name: composer_no_dev
      image: composer:2.2.7
      commands:
          - composer install --ignore-platform-reqs --no-dev

    - name: compress
      image: php:7.3
      commands:
          - apt-get update -yqq
          - apt-get install -yqq zip tar
          - cd .. && tar -cvzf nami.tar.gz ./nami && mv nami.tar.gz nami/ && cd nami
      when:
          event: tag

    - name: gitea_release
      image: plugins/gitea-release
      settings:
          api_key:
              from_secret: gitea_api_key
          base_url: https://git.zoomyboy.de
          files: ./nami.tar.gz
      when:
          event: tag

    - name: deploy silva
      image: drillster/drone-rsync
      settings:
          hosts: ['zoomyboy.de']
          user: stammsilva
          source: ./
          target: ~/nami
          exclude: ['.git']
          key:
              from_secret: private_key
          script:
              - cd ~/nami
              - /usr/bin/php8.1 artisan migrate --force
      when:
          branch: master
          event: push

    - name: deploy lennep
      image: drillster/drone-rsync
      settings:
          hosts: ['zoomyboy.de']
          user: dpsg-lennep
          source: ./
          target: ~/nami
          exclude: ['.git']
          key:
              from_secret: private_key
          script:
              - cd ~/nami
              - /usr/bin/php8.1 artisan migrate --force
      when:
          branch: master
          event: push

services:
    - name: db
      image: mariadb/server:10.3
      environment:
          MARIADB_DATABASE: db
          MARIADB_USER: db
          MARIADB_PASSWORD: db
          MARIADB_ALLOW_EMPTY_PASSWORD: yes
    - name: redis
      image: redis

trigger:
    event:
        - push
        - tag