# This build file uses template features from YAML so it is generic enough for
# any Bob project. Don't modify it unless you know what you're doing.

# Definition of global variables (all stages)
variables:
  CONDA_ROOT: "${CI_PROJECT_DIR}/miniconda"
  DOCKER_REGISTRY: docker.idiap.ch
  TEST_PREFIX_PATH_FILE: 'test_prefix_$CI_JOB_ID.txt'


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


# Build targets
.build_template: &build_job
  stage: build
  before_script:
    - mkdir _ci
    - curl --silent "https://gitlab.idiap.ch/bob/bob.admin/raw/master/gitlab/install.sh" > _ci/install.sh
    - chmod 755 _ci/install.sh
    - ./_ci/install.sh _ci master #installs ci support scripts
    - ./_ci/before_build.sh
    - docker info
    - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN docker.idiap.ch
    - export BEAT_TEST_PREFIX=`mktemp -d --tmpdir=/var/tmp beat_test_prefix.XXXXXXXXX`
    - echo $BEAT_TEST_PREFIX > $TEST_PREFIX_PATH_FILE
    - ./scripts/before_build.sh
  script:
    - ./scripts/build.sh
  after_script:
    - ./scripts/after_build.sh
    - ./_ci/after_build.sh
  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-build
  cache:
    <<: *build_caches
    key: "linux-cache"


build_linux_36:
  <<: *linux_build_job
  variables:
    PYTHON_VERSION: "3.6"
  except:
    - /^v\d+\.\d+\.\d+([abc]\d*)?$/  # PEP-440 compliant version (tags)
  artifacts:
    expire_in: 1 week
    paths:
      - _ci/
      - dist/*.zip
      - sphinx


# Deploy targets
.deploy_template: &deploy_job
  stage: deploy
  before_script:
    - ./_ci/install.sh _ci master #updates ci support scripts
  script:
    - ./_ci/deploy.sh
  dependencies:
    - build_linux_36
  tags:
    - deployer


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
  before_script:
    - ./_ci/install.sh _ci master #updates ci support scripts
  script:
    - ./_ci/pypi.sh
  dependencies:
    - build_linux_36
  tags:
    - deployer
