---
kind: pipeline
name: testing

platform:
  os: linux
  arch: amd64

steps:
- name: python2.7-ansible
  pull: always
  image: python:2.7
  commands:
  - pip install tox -qq
  - "tox -e $(tox -l | grep py27 | xargs | sed 's/ /,/g') -q"
  environment:
    PY_COLORS: 1
  depends_on:
  - clone

- name: python3.5-ansible
  pull: always
  image: python:3.5
  commands:
  - pip install tox -qq
  - "tox -e $(tox -l | grep py35 | xargs | sed 's/ /,/g') -q"
  environment:
    PY_COLORS: 1
  depends_on:
  - clone

- name: python3.6-ansible
  pull: always
  image: python:3.6
  commands:
  - pip install tox -qq
  - "tox -e $(tox -l | grep py36 | xargs | sed 's/ /,/g') -q"
  environment:
    PY_COLORS: 1
  depends_on:
  - clone

- name: python3.7-ansible
  pull: always
  image: python:3.7
  commands:
  - pip install tox -qq
  - "tox -e $(tox -l | grep py37 | xargs | sed 's/ /,/g') -q"
  environment:
    PY_COLORS: 1
  depends_on:
  - clone

- name: python-flake8
  pull: always
  image: python:3.7
  commands:
  - pip install -r test-requirements.txt -qq
  - pip install -qq .
  - flake8 ./ansiblelater
  environment:
    PY_COLORS: 1
  depends_on:
  - clone

- name: python-bandit
  pull: always
  image: python:3.7
  commands:
  - pip install -r test-requirements.txt -qq
  - pip install -qq .
  - bandit -r ./ansiblelater -x ./ansiblelater/tests
  environment:
    PY_COLORS: 1
  depends_on:
  - clone

- name: codecov
  pull: always
  image: python:3.7
  commands:
  - pip install codecov
  - "coverage combine .tox/py*/.coverage"
  - codecov --required
  environment:
    CODECOV_TOKEN:
      from_secret: codecov_token
    PY_COLORS: 1
  depends_on:
  - python2.7-ansible
  - python3.5-ansible
  - python3.6-ansible
  - python3.7-ansible

trigger:
  ref:
  - refs/heads/master
  - "refs/tags/**"
  - "refs/pull/**"

---
kind: pipeline
name: build

platform:
  os: linux
  arch: amd64

steps:
- name: build
  pull: always
  image: python:3.7
  commands:
  - python setup.py sdist bdist_wheel

- name: checksum
  pull: always
  image: alpine
  commands:
  - apk add --no-cache coreutils
  - "sha256sum -b dist/* > sha256sum.txt"

- name: gpg-sign
  pull: always
  image: plugins/gpgsign:1
  settings:
    detach_sign: true
    files:
    - "dist/*"
    key:
      from_secret: gpgsign_key
    passphrase:
      from_secret: gpgsign_passphrase
  when:
    event:
      exclude:
      - pull_request

- name: publish-github
  pull: always
  image: plugins/github-release
  settings:
    api_key:
      from_secret: github_token
    files:
    - "dist/*"
    - sha256sum.txt
    note: CHANGELOG.md
    overwrite: true
    title: "${DRONE_TAG}"
  when:
    event:
    - tag

- name: publish-pypi
  pull: always
  image: plugins/pypi
  settings:
    password:
      from_secret: pypi_password
    repository: https://upload.pypi.org/legacy/
    skip_build: true
    username:
      from_secret: pypi_username
  when:
    event:
    - tag

trigger:
  ref:
  - refs/heads/master
  - "refs/tags/**"
  - "refs/pull/**"

depends_on:
- testing

---
kind: pipeline
name: notifications

platform:
  os: linux
  arch: amd64

steps:
- name: matrix
  image: plugins/matrix
  settings:
    homeserver: https://matrix.rknet.org
    password:
      from_secret: matrix_password
    roomid: MtidqQXWWAtQcByBhH:rknet.org
    template: "Status: **{{ build.status }}**<br/> Build: [{{ repo.Owner }}/{{ repo.Name }}]({{ build.link }}) ({{ build.branch }}) by {{ build.author }}<br/> Message: {{ build.message }}"
    username:
      from_secret: matrix_username

trigger:
  ref:
  - refs/heads/master
  - "refs/tags/**"
  status:
  - success
  - failure

depends_on:
- build

...
