---
.molecule:
  tags: [ffci-vm-med]
  only: [/^pr-.*$/]
  except: ['triggers']
  image: quay.io/kubespray/vm-kubespray-ci:v13
  services: []
  stage: deploy-part1
  needs: []
  # - ci-not-authorized
  variables:
    VAGRANT_DEFAULT_PROVIDER: "libvirt"
    VAGRANT_HOME: "$CI_PROJECT_DIR/.vagrant.d"
    PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
  before_script:
  - mkdir -p $VAGRANT_HOME
  - groups
  - python3 -m venv citest
  - source citest/bin/activate
  - vagrant plugin expunge --reinstall --force --no-tty
  - vagrant plugin install vagrant-libvirt
  - pip install --no-compile --no-cache-dir pip -U
  - pip install --no-compile --no-cache-dir -r $CI_PROJECT_DIR/requirements.txt
  - pip install --no-compile --no-cache-dir -r $CI_PROJECT_DIR/tests/requirements.txt
  - ./tests/scripts/rebase.sh
  - ./tests/scripts/vagrant_clean.sh
  script:
  - ./tests/scripts/molecule_run.sh
  after_script:
  - ./tests/scripts/molecule_logs.sh
  artifacts:
    when: always
    paths:
    - molecule_logs/
  cache:
    key: $CI_JOB_NAME_SLUG
    paths:
    - .vagrant.d/boxes
    - .cache/pip
    policy: pull-push  # TODO: change to "pull" when not on main

# CI template for periodic CI jobs
# Enabled when PERIODIC_CI_ENABLED var is set
.molecule_periodic:
  only:
    variables:
    - $PERIODIC_CI_ENABLED
  allow_failure: true
  extends: .molecule

molecule_full:
  extends: .molecule_periodic

molecule_no_container_engines:
  extends: .molecule
  script:
  - ./tests/scripts/molecule_run.sh -e container-engine
  when: on_success

molecule_docker:
  extends: .molecule
  script:
  - ./tests/scripts/molecule_run.sh -i container-engine/cri-dockerd
  when: on_success

molecule_containerd:
  extends: .molecule
  script:
  - ./tests/scripts/molecule_run.sh -i container-engine/containerd
  when: on_success

molecule_cri-o:
  extends: .molecule
  stage: deploy-part1
  script:
  - ./tests/scripts/molecule_run.sh -i container-engine/cri-o
  allow_failure: true
  when: on_success

# # Stage 3 container engines don't get as much attention so allow them to fail
# molecule_kata:
#   extends: .molecule
#   stage: deploy-extended
#   script:
#     - ./tests/scripts/molecule_run.sh -i container-engine/kata-containers
#   when: manual
# # FIXME: this test is broken (perma-failing)

molecule_gvisor:
  extends: .molecule
  stage: deploy-extended
  script:
  - ./tests/scripts/molecule_run.sh -i container-engine/gvisor
  when: manual
# FIXME: this test is broken (perma-failing)

molecule_youki:
  extends: .molecule
  stage: deploy-extended
  script:
  - ./tests/scripts/molecule_run.sh -i container-engine/youki
  when: manual
# FIXME: this test is broken (perma-failing)
