---
kind: pipeline
name: testing
platform:
  arch: amd64
  os: linux
steps:
- commands:
  - make vet
  image: golang:1.18
  name: vet
  pull: always
  volumes:
  - name: gopath
    path: /go
- image: robertstettner/drone-codecov
  name: codecov
  pull: always
  settings:
    token:
      from_secret: codecov_token
volumes:
- name: gopath
  temp: {}
---
depends_on:
- testing
kind: pipeline
name: linux-amd64
platform:
  arch: amd64
  os: linux
steps:
- commands:
  - go build -v -ldflags '-X main.build=${DRONE_BUILD_NUMBER}' -a -o release/linux/amd64/drone-ssh
  environment:
    CGO_ENABLED: "0"
  image: golang:1.18
  name: build-push
  pull: always
  when:
    event:
      exclude:
      - tag
- commands:
  - go build -v -ldflags '-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}'
    -a -o release/linux/amd64/drone-ssh
  environment:
    CGO_ENABLED: "0"
  image: golang:1.18
  name: build-tag
  pull: always
  when:
    event:
    - tag
- commands:
  - ./release/linux/amd64/drone-ssh --help
  image: golang:1.18
  name: executable
  pull: always
- image: plugins/docker:linux-amd64
  name: dryrun
  pull: always
  settings:
    cache_from: appleboy/drone-ssh
    daemon_off: false
    dockerfile: docker/Dockerfile.linux.amd64
    dry_run: true
    repo: appleboy/drone-ssh
    tags: linux-amd64
  when:
    event:
    - pull_request
- image: plugins/docker:linux-amd64
  name: publish
  pull: always
  settings:
    auto_tag: true
    auto_tag_suffix: linux-amd64
    cache_from: appleboy/drone-ssh
    daemon_off: "false"
    dockerfile: docker/Dockerfile.linux.amd64
    password:
      from_secret: docker_password
    repo: appleboy/drone-ssh
    username:
      from_secret: docker_username
  when:
    event:
      exclude:
      - pull_request
trigger:
  ref:
  - refs/heads/master
  - refs/pull/**
  - refs/tags/**
---
depends_on:
- testing
kind: pipeline
name: linux-arm64
platform:
  arch: arm64
  os: linux
steps:
- commands:
  - go build -v -ldflags '-X main.build=${DRONE_BUILD_NUMBER}' -a -o release/linux/arm64/drone-ssh
  environment:
    CGO_ENABLED: "0"
  image: golang:1.18
  name: build-push
  pull: always
  when:
    event:
      exclude:
      - tag
- commands:
  - go build -v -ldflags '-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}'
    -a -o release/linux/arm64/drone-ssh
  environment:
    CGO_ENABLED: "0"
  image: golang:1.18
  name: build-tag
  pull: always
  when:
    event:
    - tag
- commands:
  - ./release/linux/arm64/drone-ssh --help
  image: golang:1.18
  name: executable
  pull: always
- image: plugins/docker:linux-arm64
  name: dryrun
  pull: always
  settings:
    cache_from: appleboy/drone-ssh
    daemon_off: false
    dockerfile: docker/Dockerfile.linux.arm64
    dry_run: true
    repo: appleboy/drone-ssh
    tags: linux-arm64
  when:
    event:
    - pull_request
- image: plugins/docker:linux-arm64
  name: publish
  pull: always
  settings:
    auto_tag: true
    auto_tag_suffix: linux-arm64
    cache_from: appleboy/drone-ssh
    daemon_off: "false"
    dockerfile: docker/Dockerfile.linux.arm64
    password:
      from_secret: docker_password
    repo: appleboy/drone-ssh
    username:
      from_secret: docker_username
  when:
    event:
      exclude:
      - pull_request
trigger:
  ref:
  - refs/heads/master
  - refs/pull/**
  - refs/tags/**
---
depends_on:
- testing
kind: pipeline
name: linux-arm
platform:
  arch: arm
  os: linux
steps:
- commands:
  - go build -v -ldflags '-X main.build=${DRONE_BUILD_NUMBER}' -a -o release/linux/arm/drone-ssh
  environment:
    CGO_ENABLED: "0"
  image: golang:1.18
  name: build-push
  pull: always
  when:
    event:
      exclude:
      - tag
- commands:
  - go build -v -ldflags '-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}'
    -a -o release/linux/arm/drone-ssh
  environment:
    CGO_ENABLED: "0"
  image: golang:1.18
  name: build-tag
  pull: always
  when:
    event:
    - tag
- commands:
  - ./release/linux/arm/drone-ssh --help
  image: golang:1.18
  name: executable
  pull: always
- image: plugins/docker:linux-arm
  name: dryrun
  pull: always
  settings:
    cache_from: appleboy/drone-ssh
    daemon_off: false
    dockerfile: docker/Dockerfile.linux.arm
    dry_run: true
    repo: appleboy/drone-ssh
    tags: linux-arm
  when:
    event:
    - pull_request
- image: plugins/docker:linux-arm
  name: publish
  pull: always
  settings:
    auto_tag: true
    auto_tag_suffix: linux-arm
    cache_from: appleboy/drone-ssh
    daemon_off: "false"
    dockerfile: docker/Dockerfile.linux.arm
    password:
      from_secret: docker_password
    repo: appleboy/drone-ssh
    username:
      from_secret: docker_username
  when:
    event:
      exclude:
      - pull_request
trigger:
  ref:
  - refs/heads/master
  - refs/pull/**
  - refs/tags/**
---
depends_on:
- testing
kind: pipeline
name: release-binary
platform:
  arch: amd64
  os: linux
steps:
- commands:
  - export PATH=$PATH:$GOPATH/bin
  - make release
  image: techknowlogick/xgo:go-1.18.x
  name: build-all-binary
  pull: always
  when:
    event:
    - tag
- image: plugins/github-release
  name: deploy-all-binary
  pull: always
  settings:
    api_key:
      from_secret: github_release_api_key
    files:
    - dist/release/*
  when:
    event:
    - tag
trigger:
  ref:
  - refs/tags/**
---
depends_on:
- linux-amd64
- linux-arm64
- linux-arm
- release-binary
kind: pipeline
name: notifications
platform:
  arch: amd64
  os: linux
steps:
- image: plugins/manifest
  name: manifest
  pull: always
  settings:
    ignore_missing: true
    password:
      from_secret: docker_password
    spec: docker/manifest.tmpl
    username:
      from_secret: docker_username
trigger:
  ref:
  - refs/heads/master
  - refs/tags/**
