image: dtuwindenergy/topfarm2:latest

stages:
  - test
  - test_plugins
  - deploy

# ===== TEST PyWake debian=====
test_PyWake:  # name the job what we like
  image: continuumio/anaconda3
  stage:  # build, test, deploy defined by default [2]
    test
  script:
  - pip install -e .[test]
  - pytest
  tags:  # only runners with this tag can do the job [3]
  - ci-ubuntu

  
# ===== Check code style =====
check_code_style:  # name the job what we like
  stage:  # build, test, deploy defined by default [2]
    test
  script:
  - pip install -e .
  - pycodestyle --ignore=E501,W504,E741 py_wake
  tags:  # only runners with this tag can do the job [3]
  - python

# ===== TEST PyWake on Windows =====
test_PyWake_windows:  # name the job what we like
  stage:  # build, test, deploy defined by default [2]
    test
  script:  # runs on windows machine due to tag below
  - source activate py38
  - pip install -e .[test]
  - pytest --cov-report term-missing:skip-covered --cov=py_wake --cov-config .coveragerc
  tags:  # tag for shared runner on windows machine
  - ANMH_old

# ===== Trigger PyWakePark pipeline =====
trigger_pywake_park_test:
  stage: test_plugins
  variables:
    TRIGGER_BRANCH: $CI_COMMIT_REF_NAME
  trigger:
    project: TOPFARM/cuttingedge/pywake/pywake_park
    strategy: depend
  only:
    - schedules



# ===== Trigger PyWakeEllipSys pipeline =====
trigger_pywake_ellipsys_test:
  stage: test_plugins
  variables:
    TRIGGER_BRANCH: $CI_COMMIT_REF_NAME
  trigger:
    project: TOPFARM/cuttingedge/pywake/pywake_ellipsys
    strategy: depend
  only:
    - schedules




# ===== build documentation =====
pages:  # "pages" is a job specifically for GitLab pages [1]
  stage:  # build, test, deploy defined by default [2]
    deploy
  script:  # use sphinx to build docs, move to public page
  - pip install sphinx --upgrade
  - pip install nbsphinx --upgrade
  - pip install -e .
  - cd docs/validation_report
  - python generate_validation_figures.py
  - cd report
  - apt-get install -y texlive-latex-extra
  - pdflatex validation_report.tex
  - bibtex validation_report.aux
  - pdflatex validation_report.tex
  - pdflatex validation_report.tex
  - cd ../../
  - pwd
  - make html
  #- make latexpdf
  - cd ../; mv docs/build/html public/
  artifacts:  # required for GitLab pages [1]
    paths:
    - public
    #- docs/build/latex/PyWake.pdf
  only:  # only run for these branches
  - master
  - /^test_doc.*/ 
  tags:  # only runners with this tag can do the job [3]
  - python

pypi_linux:
  stage:  
    deploy
  only:
    - tags
    - test_pypi
  script:
    - apt-get update
    - pip install pypandoc
    - pip install -e . --upgrade
    - python3 -c 'from git_utils import get_tag; get_tag(verbose=True)'
    - python3 -m pip install -U setuptools wheel
    - python3 setup.py sdist bdist_wheel
    - python3 -m pip install -U twine
    - python3 -c 'from git_utils import rename_dist_file; rename_dist_file()'
    - twine upload dist/* -u $TWINE_USERNAME -p $TWINE_PASSWORD
    #- twine upload --repository-url https://test.pypi.org/legacy/ dist/* -u $TWINE_USERNAME -p $TWINE_PASSWORD # for testing purposes
  tags:  
    - python

# current
# pypi_windows:
#   stage:  
#     deploy
#   only:
#     - tags
#     - test_pypi
#   script:
#     - c:/Anaconda3/envs/pyTopfarm/python.exe setup.py bdist_wheel
#     - twine upload dist/* -u %TWINE_USERNAME% -p %TWINE_PASSWORD%
#     #- twine upload --repository-url https://test.pypi.org/legacy/ dist/* -u %TWINE_USERNAME% -p %TWINE_PASSWORD% # for testing purposes
#   tags:  
#     - CPAV_old_PC

