image: python:3.8

variables:
  PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"

cache:
  paths:
    - .cache/pip

before_script:
  - python --version


stages:          # List of stages for jobs, and their order of execution
  - build
  - test
#  - deploy

code-quality-job:
  stage: test
  script: 
    - pip install flake8
    - flake8 .


build-job:       # This job runs in the build stage, which runs first.
  stage: build
  script:
    - echo "Installing dependencies"
    - pip install -Ur requirements.txt #-f https://download.pytorch.org/whl/torch_stable.html
    #- python main.py
    - echo "Build complete."

unit-test-job:   # This job runs in the test stage.
  stage: test    # It only starts when the job in the build stage completes successfully.
  before_script:
    - echo "Installing dependencies"
    - pip install -Ur requirements.txt #-f https://download.pytorch.org/whl/torch_stable.html
  script:
    - echo "Running unit tests... This will take about 60 seconds."
    - pytest --junitxml report.xml
    - coverage run -m pytest
    - coverage report organ/*.py organ/*/*.py
    - coverage xml
  coverage: '/(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/'
  artifacts:
    when: always
    reports:
      junit: report.xml
      coverage_report:
        coverage_format: cobertura
        path: coverage.xml
#    - sleep 60
#    - echo "Code coverage is 90%"

#lint-test-job:   # This job also runs in the test stage.
#  stage: test    # It can run at the same time as unit-test-job (in parallel).
#  script:
#    - echo "Linting code... This will take about 10 seconds."
#    - sleep 10
#    - echo "No lint issues found."

#deploy-job:      # This job runs in the deploy stage.
#  stage: deploy  # It only runs when *both* jobs in the test stage complete successfully.
#  script:
#    - echo "Deploying application..."
#    - echo "Application successfully deployed."
