add template for role testing
Opis
Wg tego issue z dyskusją o testowaniu ról, możliwe jest wyróżnienie części CI, która mogłaby zostać wyniesiona do templejtów:
.test-base:
variables:
ANSIBLE_CONFIG: "ansible.cfg"
before_script:
- "cd tests"
.test-functional:
extends: ".test-base"
stage: "test-functional"
tags:
- "vm"
services:
- name: "containers.projects.task.gda.pl/citask/teamwork/containers/openstack-vm"
command: ["create"]
image:
name: "containers.projects.task.gda.pl/containers/ansible:21.04-ansible-2.9.19-python2"
entrypoint: [""]
script:
- "ansible-galaxy install --force --role-file galaxy_requirements.yml"
- "ansible-playbook --inventory-file inventory.yml functional/${TEST_ACTION}.yml"
.test-non-functional:
extends: ".test-base"
stage: "test-non-functional"
tags:
- "docker"
image: "containers.projects.task.gda.pl/containers/linters/ansible:21.04-ansible-2.9.19"
.test-syntax:
extends: ".test-non-functional"
script:
- "ansible-playbook --syntax-check --inventory-file inventory.yml functional/${TEST_ACTION}.yml"
.test-style:
extends: ".test-non-functional"
script:
- "ansible-lint functional/${TEST_ACTION}.yml"
Oczywiście w powyższym kodzie należy zmienić parę rzeczy:
- nazwy jobów
- pozwolić na definicję wersji lintera i ansibla spoza template'u
- dodać cleanup VMek (o ten)
Ponadto w opisie należy zwrócić szczególną uwagę na:
- konieczność zdefiniowania odpowiednich faz (
stages
) - opis oczekiwanych informacji wejściowych:
- wersji lintera/ansibla
- nazwy obrazu z systemem
- listę test-case'ów
- konieczność "ręcznej" definicji jobów - do tej pory definicja jobów, które podlegały uruchomieniu, była już zawarta w templejcie, tutaj tak naprawdę dostarczamy tylko szablony