workspace:
  base: /go
  path: src/code.gitea.io/gitea

clone:
  git:
    image: plugins/git:next
    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.7
    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.9
    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.11
    pull: true
    environment:
      TAGS: bindata sqlite sqlite_unlock_notify
    commands:
      - make clean
      - make generate
      - make vet
      - make lint
      - make fmt-check
      - make swagger-check
      - make swagger-validate
      - make misspell-check
      - make test-vendor
      - make build
    when:
      event: [ push, tag, pull_request ]

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

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

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

  test-sqlite:
    image: golang:1.11
    pull: true
    group: test
    environment:
      TAGS: bindata
    commands:
      - curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash
      - apt-get install -y git-lfs
      - (sleep 1200 && (echo 'kill -ABRT $(pidof gitea) $(pidof integrations.sqlite.test)' | sh)) &
      - make test-sqlite-migration
      - make test-sqlite
    when:
      event: [ push, tag, pull_request ]

  test-mysql:
    image: golang:1.11
    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-migration
      - make integration-test-coverage
    when:
      event: [ push, pull_request ]
      branch: [ master ]

  test-mysql:
    image: golang:1.11
    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
      - (sleep 1200 && (echo 'kill -ABRT $(pidof gitea) $(pidof integrations.test)' | sh)) &
      - make test-mysql-migration
      - make test-mysql
    when:
      event: [ tag ]

  test-pgsql:
    image: golang:1.11
    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
      - (sleep 1200 && (echo 'kill -ABRT $(pidof gitea) $(pidof integrations.test)' | sh)) &
      - make test-pgsql-migration
      - make test-pgsql
    when:
      event: [ push, tag, pull_request ]

  test-mssql:
    image: golang:1.11
    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-mssql-migration
      - make test-mssql
    when:
      event: [ push, tag, pull_request ]

  bench-sqlite:
    image: golang:1.11
    pull: true
    group: bench
    commands:
      - make bench-sqlite
    when:
      event: [ tag ]

  bench-mysql:
    image: golang:1.11
    pull: true
    group: bench
    commands:
      - make bench-mysql
    when:
      event: [ tag ]

  bench-mssql:
    image: golang:1.11
    pull: true
    group: bench
    commands:
      - make bench-mssql
    when:
      event: [ tag ]

  bench-pgsql:
    image: golang:1.11
    pull: true
    group: bench
    commands:
      - make bench-pgsql
    when:
      event: [ tag ]

  generate-coverage:
    image: golang:1.11
    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 sqlite_unlock_notify
    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

  publish-docs:
    image: lucap/drone-netlify:latest
    pull: true
    secrets: [ netlify_token ]
    site_id: d2260bae-7861-4c02-8646-8f6440b12672
    path: docs/public/
    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 ]

  gpg-sign:
    image: plugins/gpgsign:1
    pull: true
    secrets: [ gpgsign_key, gpgsign_passphrase ]
    detach_sign: true
    files:
      - dist/release/*
    excludes:
      - dist/release/*.sha256
    when:
      event: [ push, tag ]

  release:
    image: plugins/s3:1
    pull: true
    secrets: [ aws_access_key_id, aws_secret_access_key ]
    bucket: releases
    acl: public-read
    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
    acl: public-read
    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
    acl: public-read
    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 ]

  mssql:
    image: microsoft/mssql-server-linux:latest
    environment:
      - ACCEPT_EULA=Y
      - SA_PASSWORD=MwantsaSecurePassword1
      - MSSQL_PID=Standard
    when:
      event: [ push, tag, pull_request ]

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