---
stages:
  - unit-tests
  - moderator
  - deploy-part1
  - deploy-part2
  - deploy-gce
  - deploy-special

variables:
  FAILFASTCI_NAMESPACE: 'kargo-ci'
  GITLAB_REPOSITORY: 'kargo-ci/kubernetes-sigs-kubespray'
  # DOCKER_HOST: tcp://localhost:2375
  ANSIBLE_FORCE_COLOR: "true"
  MAGIC: "ci check this"
  TEST_ID: "$CI_PIPELINE_ID-$CI_BUILD_ID"
  CI_TEST_VARS: "./tests/files/${CI_JOB_NAME}.yml"
  GS_ACCESS_KEY_ID: $GS_KEY
  GS_SECRET_ACCESS_KEY: $GS_SECRET
  CONTAINER_ENGINE: docker
  SSH_USER: root
  GCE_PREEMPTIBLE: "false"
  ANSIBLE_KEEP_REMOTE_FILES: "1"
  ANSIBLE_CONFIG: ./tests/ansible.cfg
  ANSIBLE_INVENTORY: ./inventory/sample/${CI_JOB_NAME}-${BUILD_NUMBER}.ini
  IDEMPOT_CHECK: "false"
  RESET_CHECK: "false"
  UPGRADE_TEST: "false"
  LOG_LEVEL: "-vv"

before_script:
  - ./tests/scripts/rebase.sh
  - /usr/bin/python -m pip install -r tests/requirements.txt
  - mkdir -p /.ssh

.job: &job
  tags:
    - packet
  variables:
    KUBESPRAY_VERSION: v2.10.0
  image: quay.io/kubespray/kubespray:$KUBESPRAY_VERSION

.testcases: &testcases
  <<: *job
  services:
    - docker:dind
  before_script:
    - ./tests/scripts/rebase.sh
    - ./tests/scripts/testcases_prepare.sh
  script:
    - ./tests/scripts/testcases_run.sh
  after_script:
    - ./tests/scripts/testcases_cleanup.sh

# For failfast, at least 1 job must be defined in .gitlab-ci.yml
# Premoderated with manual actions
ci-authorized:
  extends: .job
  stage: moderator
  script:
    - /bin/sh scripts/premoderator.sh
  except: ['triggers', 'master']

include:
  - .gitlab-ci/lint.yml
  - .gitlab-ci/shellcheck.yml
  - .gitlab-ci/gce.yml
  - .gitlab-ci/digital-ocean.yml
  - .gitlab-ci/terraform.yml
  - .gitlab-ci/packet.yml
