workspace:
  base: /srv/app
  path: src/code.vikunja.io/api

clone:
  git:
    image: plugins/git
    depth: 50
    tags: true

pipeline:
  build:
    image: vikunja/golang-build:latest
    pull: true
    group: build
    environment:
      TAGS: bindata sqlite
    commands:
      - make lint
      - make fmt-check
      # - make swagger-check # Inactive until go-swagger works with go modules
      - make ineffassign-check
      - make misspell-check
      - make build
    when:
      event: [ push, tag, pull_request ]

  test:
      image: webhippie/golang:edge
      pull: true
      environment:
        GOPATH: /srv/app
      commands:
        - make test
      when:
        event: [ push, tag, pull_request ]

# Build a release when tagging
  before-static-build:
    image: karalabe/xgo-latest:latest
    pull: true
    environment:
      TAGS: bindata sqlite
      GOPATH: /srv/app
    commands:
      - make release-dirs
    when:
      event: [tag, push]

  static-build-windows:
    image: karalabe/xgo-latest:latest
    pull: true
    group: build-static
    environment:
      TAGS: bindata sqlite
      GOPATH: /srv/app
    commands:
      - make release-windows
    when:
      event: [tag, push]

  static-build-linux:
    image: karalabe/xgo-latest:latest
    pull: true
    group: build-static
    environment:
      TAGS: bindata sqlite
      GOPATH: /srv/app
    commands:
      - make release-linux
    when:
      event: [tag, push]

  static-build-darwin:
    image: karalabe/xgo-latest:latest
    pull: true
    group: build-static
    environment:
      TAGS: bindata sqlite
      GOPATH: /srv/app
    commands:
      - make release-darwin
    when:
      event: [tag, push]

#  static-build-frontend:
#    image: webhippie/nodejs:current
#    pull: true
#    group: build-static
#    commands:
#      - make release-frontend
#    when:
#      event: [push, tag ]

  after-build-static:
    image: karalabe/xgo-latest:latest
    pull: true
    environment:
      TAGS: bindata sqlite
      GOPATH: /srv/app
    commands:
      - make release-copy
      - make release-check
      - make release-os-package
      - make release-zip
    when:
      event: [tag, push]

# Push the releases to our pseudo-s3-bucket
  release:
    image: plugins/s3:1
    pull: true
    secrets: [ aws_access_key_id, aws_secret_access_key ]
    bucket: vikunja
    endpoint: https://storage.kolaente.de
    path_style: true
    strip_prefix: dist/zip/
    source: dist/zip/*
    target: /${DRONE_TAG##v}
    when:
      event: [ tag ]

  release:
    image: plugins/s3:1
    pull: true
    secrets: [ aws_access_key_id, aws_secret_access_key ]
    bucket: vikunja
    endpoint: https://storage.kolaente.de
    path_style: true
    strip_prefix: dist/zip/
    source: dist/zip/*
    target: /master
    when:
      event: [ push ]
      branch: [ master ]

# Build the docker image and push it to docker hub
  docker:
    image: plugins/docker
    pull: true
    secrets: [ docker_username, docker_password ]
    repo: vikunja/api
    auto_tag: true
    when:
      event: [ push, tag ]
      branch: [ master ]

# Update the instance on try.vikunja.io
  rancher:
    image: peloton/drone-rancher
    url: http://server01.kolaente.de:8080/v1
    secrets: [ RANCHER_ACCESS_KEY, RANCHER_SECRET_KEY ]
    service: vikunja-dev/api
    docker_image: vikunja/api
    confirm: true
    when:
      event: [ push, tag ]
      branch: [ master ]

# Tell people vikunja was updated
  telegram:
    image: appleboy/drone-telegram
    secrets: [ TELEGRAM_TOKEN, TELEGRAM_TO ]
    message: >
      {{repo.owner}}/{{repo.name}}: \[{{build.status}}] Build {{build.number}}
      {{commit.author}} pushed to {{commit.branch}} {{commit.sha}}: `{{commit.message}}`
      Build started at {{datetime build.started "2006-Jan-02T15:04:05Z" "GMT+2"}} finished at {{datetime build.finished "2006-Jan-02T15:04:05Z" "GMT+2"}}.

