---
# A pipeline is composed of independent jobs that run scripts, grouped into stages.
# Stages run in sequential order, but jobs within stages run in parallel.
#
# For more information, see: https://docs.gitlab.com/ee/ci/yaml/index.html#stages

stages:          # List of stages for jobs, and their order of execution
  - test

default:
  before_script:
    - source /opt/molecule/bin/activate
    - ansible --version
    - molecule --version
  after_script:
    - source /opt/molecule/bin/activate
    - molecule destroy --scenario-name ${SCENARIO}

variables:
  SCENARIO: "default"
  ANSIBLE_VAULT_PASSWORD_FILE: "${CI_PROJECT_DIR}/molecule/${SCENARIO}/../../../lza_iesample.pass"
  ANSIBLE_FORCE_COLOR: 'true'
  PY_COLORS: '1'

test-job:
  stage: test
  tags:
    - "shell"
  script:
    # make sure that Ansible Vaults are present and can be decrypted
    - echo "${VAULT_IESAMPLE}" > ${ANSIBLE_VAULT_PASSWORD_FILE}
    - export ANSIBLE_VAULT_PASSWORD_FILE=${ANSIBLE_VAULT_PASSWORD_FILE}
    - rm -rf ../ansible_vaults/
    - git clone https://gitlab+deploy-token-25:${VAULT_ACCESS_TOKEN}@git.slub-dresden.de/slub-referat-2-3/ansible_vaults.git ../ansible_vaults/; \
    # run Molecule tests
    - molecule syntax --scenario-name ${SCENARIO}
    # We cannot use `molecule lint` anymore because:
    # - https://github.com/ansible-community/molecule/pull/3802 "Remove lint command"
    # - https://github.com/ansible-community/molecule/discussions/3825#discussioncomment-4908366
    - yamllint --strict --format colored ./
    - ansible-lint --format full --profile production --strict --force-color ./
    - molecule create --scenario-name ${SCENARIO}
    - molecule converge --scenario-name ${SCENARIO}
    - molecule idempotence --scenario-name ${SCENARIO}
    # - molecule verify --scenario-name ${SCENARIO}
