workspace:
  base: /go
  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-without-gcc:
    image: golang:1.8
    pull: true
    commands:
      - go build -o gitea_no_gcc # test if build succeeds without the sqlite tag
    when:
      event: [ push, tag, pull_request ]

  build:
    image: golang:1.10
    pull: true
    environment:
      TAGS: bindata sqlite
    commands:
      - make clean
      - make generate
      - make vet
      - make lint
      - make fmt-check
      - make swagger-check
      - make misspell-check
      - make test-vendor
      - make build
    when:
      event: [ push, tag, pull_request ]

  test:
    image: golang:1.10
    pull: true
    group: test
    environment:
      TAGS: bindata sqlite
    commands:
      - make unit-test-coverage
    when:
      event: [ push, pull_request ]
      branch: [ master ]

  test:
    image: golang:1.10
    pull: true
    group: test
    environment:
      TAGS: bindata sqlite
    commands:
      - make test
    when:
      event: [ push, pull_request ]
      branch: [ release/* ]

  test:
    image: golang:1.10
    pull: true
    group: test
    environment:
      TAGS: bindata
    commands:
      - make test
    when:
      event: [ tag ]

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

  test-mysql:
    image: golang:1.10
    pull: true
    group: test
    environment:
      TAGS: bindata
      TEST_LDAP: "1"
    commands:
      - curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash
      - apt-get install -y git-lfs
      - make integration-test-coverage
    when:
      event: [ push, pull_request ]
      branch: [ master ]

  test-mysql:
    image: golang:1.10
    pull: true
    group: test
    environment:
      TAGS: bindata
      TEST_LDAP: "1"
    commands:
      - curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash
      - apt-get install -y git-lfs
      - make test-mysql
    when:
      event: [ tag ]

  test-pgsql:
    image: golang:1.10
    pull: true
    group: test
    environment:
      TAGS: bindata
      TEST_LDAP: "1"
    commands:
      - curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash
      - apt-get install -y git-lfs
      - make test-pgsql
    when:
      event: [ push, tag, pull_request ]

  generate-coverage:
    image: golang:1.10
    pull: true
    environment:
      TAGS: bindata
    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
    commands:
      - export PATH=$PATH:$GOPATH/bin
      - make release
    when:
      event: [ push, tag ]

  build_docs:
    image: webhippie/hugo:latest
    pull: true
    commands:
      - cd docs
      - make trans-copy
      - make clean
      - make build

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

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

  docker:
    image: plugins/docker:17.12
    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.12
    secrets: [ docker_username, docker_password ]
    pull: true
    repo: gitea/gitea
    default_tags: true
    when:
      event: [ push, 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_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 ]

  ldap:
    image: gitea/test-openldap:latest
    when:
      event: [ push, tag, pull_request ]