workspace:
  base: /go/src
  path: github.com/appleboy/gorush

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

pipeline:
  deps:
    image: appleboy/golang-testing:1.9
    group: golang
    commands:
      - make deps
      - make embedmd

  lint:
    image: appleboy/golang-testing:1.9
    group: golang
    commands:
      - make vet
      - make lint

  vendor:
    image: appleboy/golang-testing:1.9
    group: golang
    commands:
      - make test-vendor
      - make misspell-check
      - make fmt-check

  build_linux_amd64:
    image: appleboy/golang-testing:1.9
    group: golang
    commands:
      - make docker_build

  build_linux_arm64:
    image: appleboy/golang-testing:1.9
    group: golang
    commands:
      - make docker_build_arm64

  build_linux_arm:
    image: appleboy/golang-testing:1.9
    group: golang
    commands:
      - make docker_build_arm

  coverage:
    image: appleboy/golang-testing:1.9
    group: golang
    secrets: [ android_test_token, android_api_key ]
    commands:
      - coverage all

  codecov:
    image: robertstettner/drone-codecov
    secrets: [ codecov_token ]
    files:
      - .cover/coverage.txt
    when:
      event: [ push, pull_request ]

  release:
    image: appleboy/golang-testing:1.9
    pull: true
    environment:
      GOPATH: /srv/app
      TAGS: netgo
    commands:
      - make release
    when:
      event: [ tag ]
      branch: [ refs/tags/* ]

  publish_linux_amd64:
    image: plugins/docker
    group: publish
    repo: ${DRONE_REPO}
    tags: [ 'latest' ]
    secrets: [ docker_username, docker_password ]
    when:
      event: [ push ]
      branch: [ master ]
      local: false

  publish_linux_arm:
    image: plugins/docker
    group: publish
    repo: ${DRONE_REPO}
    tags: [ linux-arm ]
    dockerfile: Dockerfile.arm
    secrets: [ docker_username, docker_password ]
    when:
      event: [ push ]
      branch: [ master ]
      local: false

  publish_linux_arm64:
    image: plugins/docker
    group: publish
    repo: ${DRONE_REPO}
    tags: [ linux-arm64 ]
    dockerfile: Dockerfile.arm64
    secrets: [ docker_username, docker_password ]
    when:
      event: [ push ]
      branch: [ master ]
      local: false

  publish_tag_linux_amd64:
    image: plugins/docker
    group: tag
    repo: ${DRONE_REPO}
    tags: [ '${DRONE_TAG}' ]
    secrets: [ docker_username, docker_password ]
    group: release
    when:
      event: [ tag ]
      branch: [ refs/tags/* ]
      local: false

  release_tag:
    image: plugins/github-release
    secrets: [ github_release_api_key ]
    group: release
    files:
      - dist/release/*
    when:
      event: [ tag ]
      branch: [ refs/tags/* ]
      local: false

  facebook:
    image: appleboy/drone-facebook
    secrets: [ fb_page_token, fb_verify_token ]
    pull: true
    to: 1234973386524610
    when:
      status: [ changed, failure ]

services:
  redis:
    image: redis:alpine
