# Definition of global variables (all stages)
variables:
  PYTHONUNBUFFERED: "1"
  CONDA_ROOT: "${CI_PROJECT_DIR}/miniconda"


# Definition of our build pipeline order
stages:
  - build
  - deploy
  - pypi


# Build targets
.build_template: &build_job
  stage: build
  script:
    - python3 ./bob/devtools/bootstrap.py -vv build
    - source ${CONDA_ROOT}/etc/profile.d/conda.sh
    - conda activate base
    - python3 ./bob/devtools/build.py -vv
  cache: &build_caches
    paths:
      - miniconda.sh
      - ${CONDA_ROOT}/pkgs/*.tar.bz2
      - ${CONDA_ROOT}/pkgs/urls.txt


.build_linux_template: &linux_build_job
  <<: *build_job
  tags:
    - docker
  image: continuumio/conda-concourse-ci
  artifacts:
    expire_in: 1 week
    paths:
      - ${CONDA_ROOT}/conda-bld/linux-64/*.tar.bz2
  cache:
    <<: *build_caches
    key: "linux-cache"


.build_macosx_template: &macosx_build_job
  <<: *build_job
  tags:
    - macosx
  artifacts:
    expire_in: 1 week
    paths:
      - ${CONDA_ROOT}/conda-bld/osx-64/*.tar.bz2
  cache:
    <<: *build_caches
    key: "macosx-cache"


build_linux_36:
  <<: *linux_build_job
  variables:
    PYTHON_VERSION: "3.6"


build_linux_37:
  <<: *linux_build_job
  variables:
    PYTHON_VERSION: "3.7"
    BUILD_EGG: "true"
  script:
    - python3 ./bob/devtools/bootstrap.py -vv build
    - source ${CONDA_ROOT}/etc/profile.d/conda.sh
    - conda activate base
    - python3 ./bob/devtools/build.py -vv --twine-check
  artifacts:
    expire_in: 1 week
    paths:
      - dist/*.zip
      - sphinx
      - ${CONDA_ROOT}/conda-bld/linux-64/*.tar.bz2


build_macosx_36:
  <<: *macosx_build_job
  variables:
    PYTHON_VERSION: "3.6"


build_macosx_37:
  <<: *macosx_build_job
  variables:
    PYTHON_VERSION: "3.7"


# Deploy targets
.deploy_template: &deploy_job
  stage: deploy
  script:
    - python3 ./bob/devtools/bootstrap.py -vv local base
    - source ${CONDA_ROOT}/etc/profile.d/conda.sh
    - conda activate base
    - bdt ci base-deploy -vv
    - bdt ci deploy -vv
    - bdt ci clean -vv
  dependencies:
    - build_linux_36
    - build_linux_37
    - build_macosx_36
    - build_macosx_37
  tags:
    - docker
  cache: &build_caches
    paths:
      - miniconda.sh
      - ${CONDA_ROOT}/pkgs/*.tar.bz2
      - ${CONDA_ROOT}/pkgs/urls.txt


deploy_beta:
  <<: *deploy_job
  environment: beta
  only:
    - master


deploy_stable:
  <<: *deploy_job
  environment: stable
  only:
    - /^v\d+\.\d+\.\d+([abc]\d*)?$/  # PEP-440 compliant version (tags)
  except:
    - branches


pypi:
  stage: pypi
  environment: pypi
  only:
    - /^v\d+\.\d+\.\d+([abc]\d*)?$/  # PEP-440 compliant version (tags)
  except:
    - branches
  script:
    - python3 ./bob/devtools/bootstrap.py -vv local base
    - source ${CONDA_ROOT}/etc/profile.d/conda.sh
    - conda activate base
    - bdt ci pypi -vv dist/*.zip
    - bdt ci clean -vv
  dependencies:
    - build_linux_36
    - build_linux_37
    - build_macosx_36
    - build_macosx_37
  tags:
    - docker
  cache: &build_caches
    paths:
      - miniconda.sh
      - ${CONDA_ROOT}/pkgs/*.tar.bz2
      - ${CONDA_ROOT}/pkgs/urls.txt