---
stages:
  - build # build docker image used in most other jobs
  - test # unit tests
  - deploy-part1 # kubespray runs - common setup
  - deploy-extended # kubespray runs - rarer or costlier (to test) setups

variables:
  FAILFASTCI_NAMESPACE: 'kargo-ci'
  GITLAB_REPOSITORY: 'kargo-ci/kubernetes-sigs-kubespray'
  GIT_CONFIG_COUNT: 2
  GIT_CONFIG_KEY_0: user.email
  GIT_CONFIG_VALUE_0: "ci@kubespray.io"
  GIT_CONFIG_KEY_1: user.name
  GIT_CONFIG_VALUE_1: "Kubespray CI"
  ANSIBLE_FORCE_COLOR: "true"
  MAGIC: "ci check this"
  GS_ACCESS_KEY_ID: $GS_KEY
  GS_SECRET_ACCESS_KEY: $GS_SECRET
  CONTAINER_ENGINE: docker
  GCE_PREEMPTIBLE: "false"
  ANSIBLE_KEEP_REMOTE_FILES: "1"
  ANSIBLE_CONFIG: ./tests/ansible.cfg
  ANSIBLE_REMOTE_USER: kubespray
  ANSIBLE_PRIVATE_KEY_FILE: /tmp/id_rsa
  ANSIBLE_INVENTORY: /tmp/inventory
  ANSIBLE_STDOUT_CALLBACK: "default"
  RESET_CHECK: "false"
  REMOVE_NODE_CHECK: "false"
  UPGRADE_TEST: "false"
  MITOGEN_ENABLE: "false"
  ANSIBLE_VERBOSITY: 2
  RECOVER_CONTROL_PLANE_TEST: "false"
  RECOVER_CONTROL_PLANE_TEST_GROUPS: "etcd[2:]:kube_control_plane[1:]"
  OPENTOFU_VERSION: v1.9.1
  PIPELINE_IMAGE: "$CI_REGISTRY_IMAGE/pipeline:${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}"

before_script:
  - ./tests/scripts/rebase.sh
  - mkdir -p cluster-dump $ANSIBLE_INVENTORY

.job: &job
  tags:
    - ffci
  image: $PIPELINE_IMAGE
  artifacts:
    when: always
    paths:
      - cluster-dump/
  needs:
    - pipeline-image

.job-moderated:
  extends: .job
  needs:
    - pipeline-image
    - pre-commit            # lint
    - vagrant-validate      # lint

include:
  - .gitlab-ci/build.yml
  - .gitlab-ci/lint.yml
  - .gitlab-ci/terraform.yml
  - .gitlab-ci/kubevirt.yml
  - .gitlab-ci/vagrant.yml
  - .gitlab-ci/molecule.yml
