trigger: none
pr: none
# Unstable. Disable trigger.
# schedules:
# - cron: 0 16 * * *
#   branches:
#     include: [ master ]

# variables set on VSO: (mostly for security concern)
#   manager_ip
#   docker_hub_password

jobs:
- job: kubeflow
  pool: NNI CI KUBE CLI
  timeoutInMinutes: 120

  steps:
  - script: |
      export NNI_RELEASE=999.$(date -u +%Y%m%d%H%M%S)
      echo "##vso[task.setvariable variable=PATH]${PATH}:${HOME}/.local/bin"
      echo "##vso[task.setvariable variable=NNI_RELEASE]${NNI_RELEASE}"

      echo "Working directory: ${PWD}"
      echo "NNI version: ${NNI_RELEASE}"

      python3 -m pip install --upgrade pip setuptools
    displayName: Prepare

  - script: |
      set -e
      python3 setup.py build_ts
      python3 setup.py bdist_wheel -p manylinux1_x86_64
      python3 -m pip install dist/nni-$(NNI_RELEASE)-py3-none-manylinux1_x86_64.whl[SMAC,BOHB]
    displayName: Build and install NNI

  - script: |
      set -e
      cd examples/tuners/customized_tuner
      python3 setup.py develop --user
      nnictl algo register --meta meta_file.yml
    displayName: Install customized tuner

  - script: |
      set -e
      docker login -u nnidev -p $(docker_hub_password)
      docker build --build-arg NNI_RELEASE=$(NNI_RELEASE) -t nnidev/nni-nightly .
      docker push nnidev/nni-nightly
    displayName: Build and upload docker image

  - script: |
      set -e
      cd test
      az login --service-principal -u $(client_id) -p $(client_secret) --tenant $(tenant_id)
      python3 training_service/nnitest/generate_ts_config.py \
          --ts kubeflow \
          --keyvault_vaultname $(keyvault_vaultname) \
          --keyvault_name $(keyvault_name) \
          --azs_account $(azs_account) \
          --azs_share $(azs_share) \
          --nni_docker_image nnidev/nni-nightly \
          --nni_manager_ip $(manager_ip)
      python3 training_service/nnitest/run_tests.py --config training_service/config/integration_tests.yml --ts kubeflow --exclude multi-phase,multi-thread
    displayName: Integration test

  - script: |
      set -e
      cd test
      az login --service-principal -u $(client_id) -p $(client_secret) --tenant $(tenant_id)
      python3 training_service/nnitest/generate_ts_config.py \
          --ts kubeflow \
          --keyvault_vaultname $(keyvault_vaultname) \
          --keyvault_name $(keyvault_name) \
          --azs_account $(azs_account) \
          --azs_share $(azs_share) \
          --nni_docker_image nnidev/nni-nightly \
          --nni_manager_ip $(manager_ip) \
          --reuse_mode True \
          --config_version v2
      python3 training_service/nnitest/run_tests.py --config training_service/config/integration_tests_config_v2.yml --ts kubeflow --reuse_mode True --exclude multi-phase,multi-thread
    displayName: Integration test (reuse mode)
