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

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

pipeline:
  deps:
    image: golang:1.11
    pull: true
    group: golang
    commands:
      - make deps
      - make embedmd

  lint:
    image: golang:1.11
    pull: true
    group: golang
    commands:
      - make vet
      - make lint

  vendor:
    image: golang:1.11
    pull: true
    group: golang
    commands:
      - make test-vendor
      - make misspell-check
      - make fmt-check

  go_module_build_linux_amd64:
    image: golang:1.11
    pull: true
    group: golang
    environment:
      - GO111MODULE=on
    commands:
      - make module
      - make build_linux_amd64

  build_linux_amd64:
    image: golang:1.11
    pull: true
    group: golang
    commands:
      - make build_linux_amd64

  build_linux_i386:
    image: golang:1.11
    pull: true
    group: golang
    commands:
      - make build_linux_i386

  build_linux_arm64:
    image: golang:1.11
    pull: true
    group: golang
    commands:
      - make build_linux_arm64

  build_linux_arm:
    image: golang:1.11
    pull: true
    group: golang
    commands:
      - make build_linux_arm

  # coverage:
  #   image: golang:1.11
  #   pull: true
  #   group: golang
  #   secrets: [ android_test_token, android_api_key ]
  #   commands:
  #     - make unit-test-coverage
  #   when:
  #     event: [ push, pull_request ]

  # generate-coverage:
  #   image: golang:1.11
  #   pull: true
  #   commands:
  #     - make coverage
  #   when:
  #     event: [ push, pull_request ]

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

  release:
    image: golang:1.11
    pull: true
    commands:
      - make release
    when:
      event: [ tag ]

  publish_linux_amd64:
    image: plugins/docker
    group: release
    pull: true
    secrets: [ docker_username, docker_password ]
    default_tags: true
    repo: ${DRONE_REPO}
    when:
      event: [ push, tag ]
      local: false

  publish_linux_alpine:
    image: plugins/docker
    group: release
    pull: true
    dockerfile: Dockerfile.alpine
    secrets: [ docker_username, docker_password ]
    default_tags: true
    default_suffix: alpine
    repo: ${DRONE_REPO}
    when:
      event: [ push, tag ]
      local: false

  publish_linux_i386:
    image: plugins/docker
    group: release
    pull: true
    dockerfile: Dockerfile.i386
    secrets: [ docker_username, docker_password ]
    default_tags: true
    default_suffix: i386
    repo: ${DRONE_REPO}
    when:
      event: [ push, tag ]
      local: false

  publish_linux_arm:
    image: plugins/docker
    group: release
    pull: true
    dockerfile: Dockerfile.arm
    secrets: [ docker_username, docker_password ]
    default_tags: true
    default_suffix: arm
    repo: ${DRONE_REPO}
    when:
      event: [ push, tag ]
      local: false

  publish_linux_arm64:
    image: plugins/docker
    group: release
    pull: true
    dockerfile: Dockerfile.arm64
    secrets: [ docker_username, docker_password ]
    default_tags: true
    default_suffix: arm64
    repo: ${DRONE_REPO}
    when:
      event: [ push, tag ]
      local: false

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

  discord:
    image: appleboy/drone-discord
    pull: true
    secrets: [ discord_webhook_id, discord_webhook_token ]
    when:
      status: [ success, failure ]

services:
  redis:
    image: redis:alpine
