abessifi.fitnesse
Ansible FitNesse
Opis
To jest rola Ansible do instalacji ramy testowej FitNesse do testów akceptacyjnych na serwerach GNU/Linux.
Wymagania
Wymagania programowe
- Python 2.7 lub wyższy (dostępny na serwerach docelowych)
- Ansible 2.0 lub wyższy (można łatwo zainstalować za pomocą
pip
. Przykład:sudo pip install ansible==2.0.0.2
) - Vagrant 1.8 lub wyższy (do celów testowych)
- Virtualbox (do testowania z Vagrant)
- Oh-my-box, narzędzie opcjonalne, jeśli chcesz szybko przygotować i zapakować podstawowy box Vagrant z zainstalowanym Ansible i Rubi (zalecane do pisania i uruchamiania testów akceptacyjnych z test-kitchen przeciwko roli Ansible).
Obsługiwane systemy
- Ubuntu
- Debian
- CentOS
Więcej informacji w pliku metadanych roli.
Zależności
abessifi.java
- Do instalacji Oracle JDK (wersja >= 7).abessifi.docker
- Do instalacji silnika Docker.
Zmienne roli
fitnesse_firefox_version
- Instalacja określonej wersji Firefoksa (domyślnie:41.0
).fitnesse_firefox_set_default
- Jeśli ustawione natrue
, obecna wersja Firefoksafitnesse_firefox_version
zostanie ustawiona jako domyślna (domyślnie:false
).fitnesse_version
- Wersja samodzielnego JAR FitNesse (domyślnie:20151230
).fitnesse_get_xebium
- Jeśli ustawione na true, Ansible pobierze i zainstaluje bibliotekę Xebium w katalogu/usr/local/lib/fitnesse
(domyślnie:false
).fitnesse_xebium_download_url
- URL do pobrania biblioteki Xebium (domyślnie: brak).fitnesse_get_project
- Jeśli ustawione na true, Ansible automatycznie pobierze i zainstaluje Twój projekt FitNesse, który powinien być zarchiwizowanym folderemFitNesseRoot
(domyślnie:false
).fitnesse_project_download_url
- URL do pobrania pakietu testów FitNesse (domyślnie: brak).fitnesse_clean_install
- Ustaw to natrue
, jeśli chcesz zastąpić istniejący folder FitNesseRoot nowymi skryptami testowymi (domyślnie:false
).fitnesse_service_port
- Domyślny numer portu, do którego jest przypisana usługa FitNesse. Numer portu powinien być >=1024 (domyślnie:8080
).fitnesse_java_options
- Możesz przekazać niektóre opcje java do komendy, która uruchamia FitNesse. Przykład:-Xmx2000M -Xms1000M -Duser.country=FR -Duser.language=fr -Dfile.encoding=UTF-8
(domyślnie: brak).fitnesse_provision_mode
- Ten parametr wskazuje sposób, w jaki zostanie zainstalowana rama fitnesse. Usługa fitnesse może być zainstalowana i skonfigurowana bezpośrednio na docelowym hoście, jeśli ustawisz ten parametr naon-host
. Jeśli parametr jest ustawiony nadocker
, Ansible zainstaluje platformę w kontenerze Docker. Obsługiwane wartości to ['on-host', 'docker'] (domyślnie:on-host
).fitnesse_docker_ctn_name
- Nazwa kontenera Docker fitnesse (domyślnie:fitnesse
).fitnesse_docker_img_name
- Nazwa obrazu Docker fitnesse (domyślnie:abessifi/fitnesse:latest
).fitnesse_docker_ctn_port
- Otwarty port kontenera fitnesse (domyślnie:8080
).fitnesse_docker_host_port
- Port hosta, który ma być powiązany z otwartym portem kontenera fitnesse. To jest przydatne, jeśli chcesz uzyskać dostęp do fitnesse przez IP hosta (domyślnie:8080
).
Dostępne tagi
fitnesse-setup
- Ten tag służy do przeprowadzenia pełnej konfiguracji ramy FitNesse.fitnesse-start-service
- Uruchamia usługę FitNesse.fitnesse-stop-service
- Zatrzymuje usługę FitNesse.fitnesse-restart-service
- Restartuje usługę FitNesse.fitnesse-build-docker-image
- Użyj tego tagu, jeśli chcesz przygotować obraz Docker dla FitNesse.fitnesse-setup-container
- Jeśli ustawiony, ten tag uruchamia kontener Docker dla FitNesse.fitnesse-remove-container
- Użyj tego tagu, jeśli chcesz usunąć kontener FitNesse. Można go połączyć zfitnesse-setup-container
, aby ponownie zainstalować kontener FitNesse.fitnesse-install-firefox
- Użyj tego tagu, jeśli chcesz zainstalować niestandardową wersję Firefoksa.
Użycie
FitNesse na hoście
Aby zainstalować ramę FitNesse w trybie on-host
, najpierw sprawdź rolę z Ansible galaxy:
ansible-galaxy install abessifi.fitnesse
Oto przykład konfiguracji FitNesse na hoście od zera:
---
- hosts: all
roles:
# Zainstaluj Oracle JDK 7, jeśli tryb instalacji to 'on-host'
- role: abessifi.java
java_jdk_type: 'oracle'
become: yes
when: fitnesse_provision_mode == 'on-host'
# Zainstaluj FitNesse
- role: ansible-fitnesse
fitnesse_firefox_version: '42.0'
fitnesse_firefox_set_default: true
Uwaga: Tagi Ansible install-java
i fitnesse-setup
powinny być określone dla tego typu instalacji.
FitNesse z Dockerem
Z drugiej strony, możesz uruchomić FitNesse w kontenerze Docker. Przygotowaliśmy obraz dla Ciebie i możesz zbudować swój :)
Budowanie obrazu FitNesse
Jeśli interesujesz się DevOps, możesz użyć magicznego narzędzia Packer
oraz jego wtyczki packer-post-processor-docker-dockerfile
do przygotowania, zbudowania, oznaczenia i przesłania obrazu Docker. Wszystkie akcje są opisane w jednym prostym szablonie json zwanym szablonem Packer.
Przykładowy szablon test/packer/build_image.json
już istnieje, aby zbudować obraz foobar/fitnesse:latest
i przesłać go do publicznego rejestru Docker Hub. Nie krępuj się dostosować ten plik szablonu, aby zbudować i przesłać swój własny obraz Docker do publicznego/prywatnego rejestru.
Po zainstalowaniu Packer i wtyczki dockerfile możesz zbudować obraz w następujący sposób:
cd ./test/packer/
packer build build_image.json
Oto przykład playbooka Ansible, który może być użyty do zainstalowania obrazu z FitNesse i biblioteką Xebium:
---
- hosts: localhost
roles:
- role: ansible-fitnesse
fitnesse_provision_mode: 'docker'
fitnesse_get_xebium: true
fitnesse_xebium_download_url: 'http://url/to/the/xebium/jar/archive'
Uwaga: Upewnij się, że tag Ansible fitnesse-build-docker-image
jest uznawany w pliku szablonu Packer:
...
"extra_arguments": [
"--tags=fitnesse-build-docker-image"
]
...
Uruchomienie kontenera FitNesse
Wracając do naszej roli fitnesse! Tym razem chcemy przygotować platformę w wersji "dockerized". W tym celu najpierw sprawdź rolę Docker z Ansible galaxy:
ansible-galaxy install abessifi.fitnesse
Następnie utwórz playbook, który wymienia różne role i parametry do przygotowania platformy. Załóżmy w poniższym przykładzie, że chcemy:
- Zainstalować silnik Docker, aby uruchomić kontener FitNesse
- Skonfigurować FitNesse i zainstalować Firefoksa
v42
oraz ustawić go jako domyślną wersję (po stronie hosta) - Pobierz istniejący projekt FitNesse (projekt fitnesse to zestaw skryptów UAT napisanych w stylu kodu FitNesse)
- Uruchom kontener FitNesse
- Powiąż port kontenera z portem hosta (8080 => 9090)
---
- hosts: all
vars:
fitnesse_provision_mode: 'docker'
roles:
# Zainstaluj silnik Docker, jeśli tryb instalacji to 'docker'
- role: abessifi.docker
when: fitnesse_provision_mode == 'docker'
# Zainstaluj FitNesse
- role: ansible-fitnesse
fitnesse_docker_host_port: 9090
fitnesse_firefox_version: '42.0'
fitnesse_firefox_set_default: true
fitnesse_get_project: true
fitnesse_project_download_url: 'http://url/to/existing/fitnesse/project/tarball'
Uwaga: Upewnij się, że wywołujesz Ansible z następującymi tagami: docker-setup
, docker-install-dockerpy
, fitnesse-install-firefox
i fitnesse-setup-container
.
Twój kontener jest uruchomiony z fitnesse!
Serwer fitnesse powinien być teraz dostępny pod adresem http://
Rozwój i testowanie
Testowanie z Vagrant
Do szybkich testów możesz uruchomić maszynę wirtualną Ubuntu za pomocą Vagrant. W katalogu projektu test/vagrant/
możesz dostosować plik Vagrantfile opisujący Twoją maszynę wirtualną i dostosować zestaw plików inwentarza Ansible odpowiednich dla Twojego środowiska (adresy IP, dane logowania SSH itp.).
Uwaga: Rola
ansible.fitnesse
musi być uruchamiana z kontemsudo
. W tym przykładzie użytkownikvagrant
ma już skonfigurowane uprawnienia sudo.
Zaczynasz od pobrania projektu z GitHub lub Ansible Galaxy, a następnie wchodzisz do katalogu test/vagrant/
.
Teraz uruchom i skonfiguruj maszynę wirtualną:
vagrant up
Twoja maszyna wirtualna testowa jest uruchomiona z ramą FitNesse!
Uruchamianie testów akceptacyjnych
Jeszcze nie zaimplementowane.
Informacje o autorze
Ta rola została stworzona przez Ahmed Bessifi, entuzjastę DevOps.
Install FitNesse acceptance testing framework on GNU/Linux servers.
ansible-galaxy install abessifi.fitnesse