kind: pipeline
name: build
type: docker

platform:
  os: linux
  arch: amd64

steps:
  - name: build
    image: plugins/docker
    when:
      branch:
        - master
    settings:
      dockerfile: docker/Dockerfile
      tag:
        - ${DRONE_BRANCH}
        - latest
      username:
        from_secret: docker_login
      password:
        from_secret: docker_password
      repo:
        from_secret: docker_repo
      registry:
        from_secret: docker_registry
  - name: upload
    image: drillster/drone-rsync
    when:
      branch:
        - master
    environment:
      BUILD_PATH:
        from_secret: build_path
      PLUGIN_ARGS: -zz -O --no-perms
      PLUGIN_HOSTS:
        from_secret: rsync_host
    settings:
      user:
        from_secret: rsync_user
      key:
        from_secret: rsync_key
      port:
        from_secret: rsync_port
      source: ./docker/
      target: $${BUILD_PATH}/${DRONE_BRANCH}
      include:
        - "docker-compose.yml"
      exclude:
        - "wait-for-it.sh"
        - "Dockerfile"
  - name: deploy
    image: appleboy/drone-ssh
    when:
      branch:
        - master
    environment:
      BUILD_PATH:
        from_secret: build_path
      ENV_PATH:
        from_secret: env_path
      DOCKER_REGISTRY:
        from_secret: docker_registry
      DOCKER_REPO:
        from_secret: docker_repo
    settings:
      port:
        from_secret: rsync_port
      host:
        from_secret: rsync_host
      username:
        from_secret: rsync_user
      key:
        from_secret: rsync_key
      envs: [build_path, env_path, docker_registry, docker_repo]
      script_stop: true
      script:
        - cat $${ENV_PATH}/${DRONE_BRANCH}/.env > $${BUILD_PATH}/${DRONE_BRANCH}/.env
        - |
          echo -en "\nDRONE_BRANCH=${DRONE_BRANCH}\nCONFIG_PATH=$${ENV_PATH}/${DRONE_BRANCH}/config.yml\nDOCKER_REPO=$${DOCKER_REPO}\n"\
            >> $${BUILD_PATH}/${DRONE_BRANCH}/.env
        - |
          docker-compose \
            -f $${BUILD_PATH}/${DRONE_BRANCH}/docker-compose.yml \
            --env-file $${BUILD_PATH}/${DRONE_BRANCH}/.env \
            pull app
        - |
          docker-compose \
            -f $${BUILD_PATH}/${DRONE_BRANCH}/docker-compose.yml \
            --env-file $${BUILD_PATH}/${DRONE_BRANCH}/.env \
            up \
            -d --build