workspace:
  base: /go
  path: src/github.com/drone/drone

pipeline:
  test:
    image: golang:1.8
    commands:
      - go get -u github.com/drone/drone-ui/dist
      - go get -u golang.org/x/tools/cmd/cover
      - go get -u golang.org/x/net/context
      - go get -u golang.org/x/net/context/ctxhttp
      - go get -u github.com/golang/protobuf/proto
      - go get -u github.com/golang/protobuf/protoc-gen-go
      - go test -cover $(go list ./... | grep -v /vendor/)

  test_postgres:
    image: golang:1.8
    environment:
      - DATABASE_DRIVER=postgres
      - DATABASE_CONFIG=host=postgres user=postgres dbname=postgres sslmode=disable
    commands:
      - go test github.com/drone/drone/store/datastore

  test_mysql:
    image: golang:1.8
    environment:
      - DATABASE_DRIVER=mysql
      - DATABASE_CONFIG=root@tcp(mysql:3306)/test?parseTime=true
    commands:
      - go test github.com/drone/drone/store/datastore

  build:
    image: golang:1.8
    commands: sh .drone.sh
    secrets: [ ssh_key ]
    when:
      event: [ push, tag ]

  publish_server:
    image: plugins/docker
    repo: drone/drone
    secrets: [ docker_username, docker_password ]
    tag: [ latest ]
    when:
      branch: master
      event: push

  publish_agent_arm:
    image: plugins/docker
    repo: drone/agent
    dockerfile: Dockerfile.agent.linux.arm
    secrets: [ docker_username, docker_password ]
    tag: [ linux-arm ]
    when:
      branch: master
      event: push

  publish_agent_arm64:
    image: plugins/docker
    repo: drone/agent
    dockerfile: Dockerfile.agent.linux.arm64
    secrets: [ docker_username, docker_password ]
    tag: [ linux-arm64 ]
    when:
      branch: master
      event: push

  publish_agent_amd64:
    image: plugins/docker
    repo: drone/agent
    dockerfile: Dockerfile.agent
    secrets: [ docker_username, docker_password ]
    tag: [ latest ]
    when:
      branch: master
      event: push

  release_server:
    image: plugins/docker
    repo: drone/drone
    secrets: [ docker_username, docker_password ]
    tag: [ 0.8, 0.8.0 ]
    when:
      event: tag

  release_agent:
    image: plugins/docker
    repo: drone/agent
    dockerfile: Dockerfile.agent
    secrets: [ docker_username, docker_password ]
    tag: [ 0.8, 0.8.0 ]
    when:
      event: tag

  notify:
    image: plugins/gitter
    secrets: [ gitter_webhook ]
    when:
      status: [ success, failure ]

services:
  postgres:
    image: postgres:9.6
    environment:
      - POSTGRES_USER=postgres
  mysql:
    image: mysql:5.6.27
    environment:
      - MYSQL_DATABASE=test
      - MYSQL_ALLOW_EMPTY_PASSWORD=yes
