stages:
- gitlab
- test
- deploy

include:
- template: Dependency-Scanning.gitlab-ci.yml
- template: Security/SAST.gitlab-ci.yml

before_script:
  - apt-get update && apt-get install redis-server -y
  - redis-server --daemonize yes
  - python -V
  - pip install wheel tox

sast:
  stage: gitlab
  before_script: []

dependency_scanning:
  stage: gitlab
  before_script:
  - apt-get update && apt-get install redis-server libmariadbclient-dev -y
  - redis-server --daemonize yes
  - python -V
  - pip install wheel tox

test-3.7-core:
  image: python:3.7-buster
  script:  
  - tox -e py37-core
  artifacts:
    when: always
    reports:
      cobertura: coverage.xml

test-3.8-core:
  image: python:3.8-buster
  script:  
  - tox -e py38-core
  artifacts:
    when: always
    reports:
      cobertura: coverage.xml

test-3.9-core:
  image: python:3.9-buster
  script:  
  - tox -e py39-core
  artifacts:
    when: always
    reports:
      cobertura: coverage.xml

test-3.7-all:
  image: python:3.7-buster
  script:  
  - tox -e py37-all
  artifacts:
    when: always
    reports:
      cobertura: coverage.xml

test-3.8-all:
  image: python:3.8-buster
  script:  
  - tox -e py38-all
  artifacts:
    when: always
    reports:
      cobertura: coverage.xml

test-3.9-all:
  image: python:3.9-buster
  script:  
  - tox -e py39-all
  artifacts:
    when: always
    reports:
      cobertura: coverage.xml

deploy_production:
  stage: deploy
  image: python:3.9-buster

  before_script:
    - pip install twine wheel

  script:
    - python setup.py sdist bdist_wheel
    - twine upload dist/*

  rules:
    - if: $CI_COMMIT_TAG