workspace:
  base: /srv/app
  path: src/code.gitea.io/gitea

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

pipeline:
  download_translations:
    image: jonasfranz/crowdin
    pull: true
    secrets: [ crowdin_key ]
    project_identifier: gitea
    ignore_branch: true
    download: true
    export_dir: options/locale/
    when:
      event: [ push ]
      branch: [ master ]

  update-translations:
    image: alpine:3.6
    commands:
      - mv ./options/locale/locale_en-US.ini ./options/
      - sed -i -e 's/="/=/g' -e 's/"$$//g' ./options/locale/*.ini
      - sed -i -e 's/\\\\"/"/g' ./options/locale/*.ini
      - mv ./options/locale_en-US.ini ./options/locale/
    when:
      event: [ push ]
      branch: [ master ]

  git_push:
    image: appleboy/drone-git-push
    pull: true
    secrets: [ git_push_ssh_key ]
    remote: git@github.com:go-gitea/gitea.git
    force: false
    commit: true
    commit_message: "[skip ci] Updated translations via Crowdin"
    author_name: GiteaBot
    author_email: teabot@gitea.io
    when:
      event: [ push ]
      branch: [ master ]

  pre-build:
    image: webhippie/nodejs:latest
    pull: true
    commands:
      - npm install
      - make stylesheets-check
    when:
      event: [ push, tag, pull_request ]

  build:
    image: webhippie/golang:edge
    pull: true
    environment:
      TAGS: bindata sqlite
      GOPATH: /srv/app
    commands:
      - make clean
      - make generate
      - make vet
      - make lint
      - make fmt-check
      - make misspell-check
      - make test-vendor
      - make build
    when:
      event: [ push, tag, pull_request ]

  test:
    image: webhippie/golang:edge
    pull: true
    group: test
    environment:
      TAGS: bindata sqlite
      GOPATH: /srv/app
    commands:
      - make unit-test-coverage
    when:
      event: [ push, pull_request ]
      branch: [ master ]

  test:
    image: webhippie/golang:edge
    pull: true
    group: test
    environment:
      TAGS: bindata
      GOPATH: /srv/app
    commands:
      - make test
    when:
      event: [ tag ]

  # Commented until db locking have been resolved!
  # test-sqlite:
  #   image: webhippie/golang:edge
  #   pull: true
  #   group: test
  #   environment:
  #     TAGS: bindata
  #     GOPATH: /srv/app
  #   commands:
  #     - make test-sqlite
  #   when:
  #     event: [ push, tag, pull_request ]

  test-mysql:
    image: webhippie/golang:edge
    pull: true
    group: test
    environment:
      TAGS: bindata
      GOPATH: /srv/app
    commands:
      - make integration-test-coverage
    when:
      event: [ push, pull_request ]
      branch: [ master ]

  test-mysql:
    image: webhippie/golang:edge
    pull: true
    group: test
    environment:
      TAGS: bindata
      GOPATH: /srv/app
    commands:
      - make test-mysql
    when:
      event: [ tag ]

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

  generate-coverage:
    image: webhippie/golang:edge
    pull: true
    environment:
      TAGS: bindata
      GOPATH: /srv/app
    commands:
      - make coverage
    when:
      event: [ push, pull_request ]
      branch: [ master ]

  coverage:
    image: robertstettner/drone-codecov
    secrets: [ codecov_token ]
    files:
      - coverage.all
    when:
      event: [ push, pull_request ]
      branch: [ master ]

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

  docker:
    image: plugins/docker:17.05
    pull: true
    secrets: [ docker_username, docker_password ]
    repo: gitea/gitea
    tags: [ '${DRONE_TAG##v}' ]
    when:
      event: [ tag ]

  docker:
    image: plugins/docker:17.05
    pull: true
    secrets: [ docker_username, docker_password ]
    repo: gitea/gitea
    tags: [ '${DRONE_BRANCH##release/v}' ]
    when:
      event: [ push ]
      branch: [ release/* ]

  docker:
    image: plugins/docker:17.05
    pull: true
    secrets: [ docker_username, docker_password ]
    repo: gitea/gitea
    tags: [ 'latest' ]
    when:
      event: [ push ]
      branch: [ master ]

  release:
    image: plugins/s3:1
    pull: true
    secrets: [ aws_access_key_id, aws_secret_access_key ]
    bucket: releases
    endpoint: https://storage.gitea.io
    path_style: true
    strip_prefix: dist/release/
    source: dist/release/*
    target: /gitea/${DRONE_TAG##v}
    when:
      event: [ tag ]

  release:
    image: plugins/s3:1
    pull: true
    secrets: [ aws_access_key_id, aws_secret_access_key ]
    bucket: releases
    endpoint: https://storage.gitea.io
    path_style: true
    strip_prefix: dist/release/
    source: dist/release/*
    target: /gitea/${DRONE_BRANCH##release/v}
    when:
      event: [ push ]
      branch: [ release/* ]

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

  github:
    image: plugins/github-release:1
    pull: true
    secrets: [ github_token ]
    files:
      - dist/release/*
    when:
      event: [ tag ]

  upload_translations:
    image: jonasfranz/crowdin
    pull: true
    secrets: [ crowdin_key ]
    project_identifier: gitea
    ignore_branch: true
    download: false
    files:
      locale_en-US.ini: options/locale/locale_en-US.ini
    when:
      event: [ push ]
      branch: [ master ]

  discord:
    image: appleboy/drone-discord:1.0.0
    pull: true
    secrets: [ discord_webhook_id, discord_webhook_token ]
    when:
      event: [ push, tag, pull_request ]
      status: [ changed, failure ]

services:
  mysql:
    image: mysql:5.7
    environment:
      - MYSQL_DATABASE=test
      - MYSQL_ALLOW_EMPTY_PASSWORD=yes
    when:
      event: [ push, tag, pull_request ]

  pgsql:
    image: postgres:9.5
    environment:
      - POSTGRES_DB=test
    when:
      event: [ push, tag, pull_request ]
