2017-07-10 44 views
5

Chcę wykonać moje automatyczne testy, napisane w Nightwatch-Cucumber przez CI CI Jenkins w kontenerze Docker. Mam obraz Docker, który chcę dla niego użyć.Najprostszy sposób uruchamiania testów Selenium w kontenerze Docker nad Jenkins CI

To jest to, co chcę zrobić bardziej szczegółowo.

  1. testy Start Over Jenkins CI pracy
  2. na tej samej maszynie obraz Docker jest załadowany i powiązany pojemnik Docker rozpocznie. Ten kontener oparty na systemie Unix OS. Ponadto zostanie wykonana pewna konfiguracja w kontenerze Docker.
  3. Testy zostaną wykonane (z lokalnego lub zdalnego) w trybie bezgłowym przez xvfb, a raport zostanie zapisany na maszynie Jenkins.

Over GitLab CI Uświadomiłem sobie ją na .gitlab-ci.yml pliku konfiguracyjnym i działa bardzo dobrze:

image: "my-docker-image" 

stages: 
    - "chrome-tests" 

before_script: 
    - "apt-get update" 
    - "apt-get install -y wget bzip2" 
    - "npm install" 

cache: 
    paths: 
    - node_modules/ 
run-tests-on-chrome: 
    stage: "chrome-tests" 
    script: 
    - "whereis xvfb-run" 
    - "xvfb-run --server-args='-screen 0 1600x1200x24' npm run test-chrome" 

Ale chcę, aby zrealizować tę samą procedurę z Jenkins CI. Jaki jest najłatwiejszy sposób na zrobienie tego i uruchomić automatyczne testy w obrazie Docker, który jest nazywany przez Jenkinsa? Czy mogę napisać plik Dockerfile, czy nie, lub lub lub?

Odpowiedz

0

Aktualnie używam skryptów testowych Selenium napisanych w PHP i uruchamianych przez Jenkinsa przy użyciu Docker Compose. Możesz zrobić to samo, bez problemów związanych z Xvfb.

Aby uruchomić testy Selenium za pomocą przeglądarek bezgłowych w kontenerze dokowania i połączyć go z aplikacją za pomocą funkcji dokowania, można po prostu użyć predefiniowanego serwera autonomicznego.

https://github.com/SeleniumHQ/docker-selenium

obecnie używam obrazu Chrome autonomicznym.

Oto co Twój doker-komponować powinna wyglądać następująco:

version: '3' 
services: 
    your-app: 
    build: 
     context: . 
     dockerfile: Dockerfile 
    your_selenium_application: 
    build: 
     context: . 
     dockerfile: Dockerfile.selenium.test 
    depends_on: 
     - chrome-server 
     - your-app 
    chrome-server: 
    image: selenium/standalone-chrome:3.4.0-einsteinium 

Uruchamiając Döcker-komponować, będzie kręcić się aplikacji, środowisko selenu, które będą interakcji z aplikacją, a serwer autonomiczny że zapewni Ci przeglądarkę bez głowy. Ponieważ są one połączone, wewnątrz kodu selenu możesz przesłać żądanie testu do gospodarza za pośrednictwem aplikacji: 80 na przykład. Twoja przeglądarka bez nagłówków będzie serwerem chrome: 4444/wd/hub, który jest adresem domyślnym.

Można to zrobić wewnątrz Jenkinsa, używając tylko jednego polecenia w swojej powłoce Execute wewnątrz swojej pracy z Jenkinsem. Funkcja docker-compose umożliwia również łatwe uruchamianie testów na komputerze lokalnym, a wyniki powinny być identyczne.

+0

Czy możesz podać przykład, jak wyglądają twoje pliki Jenkins. – NewWorld

+0

@NewWorld Użyłem darmowego potoku Jenkinsa z Docker Compose, aby uruchomić testy. To tylko seria skryptów powłoki – Serey