2016-07-25 38 views
0

Das Szenario ab:Gitlab Läufer: Es ist möglich, ein Docker Bild ausgeführt, dass es die folgenden von einem anderen

Ich brauche grunt serve ausführen, die meine app in localhost dienen: 9000 in meinem Prozess der kontinuierlichen Integration Behälter mit einem Docker, ich laufe dann brauche einen anderen Container, der die Anwendung unter Verwendung der in den lokalen Host bedient: 9000, führt eine Integrationstest:

Meine gitlab.yml Datei

unit-testing: 
    image: karma-testing 
    script: 
    - npm install && bower install && karma start && grunt serve 
    cache: 
    paths: 
    - node_modules/ 
    - bower_components/ 

behavior-testing: 
    image: protractor-ci 
    script: 
    - npm install protractor-cucumber-framework cucumber && xvfb-run --server-args='-screen 0 1280x1024x24' protractor protractor.conf.js 
    cache: 
    paths: 
    - node_modules/ 
    - bower_components/ 

Das erste Bild führen Sie die grunt serve Aufgabe, die meine App in Localhost: 9000 dienen und ich möchte, dass das zweite Bild verwendet diese laufende App für die Ausführung des anderen Skripts.

Antwort

1

Nein, das geht nicht. Jobs können auf verschiedenen Läufern laufen, und Sie können nicht mit Sicherheit sagen, ob sie in paralleler oder serieller Reihenfolge ausgeführt werden.

Sie können und sollten den Grunt-Server in derselben Task ausführen, in der er verwendet wird. Ein vorbereitetes Docker-Image oder special YAML features könnte hier nützlich sein.

+0

Danke, mit Ihrer Antwort verstehe ich endlich, dass ich einen falschen Weg zum Testen meiner App mit Winkelmesser und Selen-Treiber gemacht habe. Die e2e-Tests erfordern, dass meine App zuvor bereitgestellt wurde! Ich habe versucht, meine App zuvor mit dem Winkelmesser-Framework auszuführen. Noob Fehler :(. Danke! –

+0

Das ist nicht ganz richtig - Sie könnten einen der Container als [Service] definieren (http://docs.gitlab.com/ce/ci/docker/using_docker_images.html#define-image- Und-services-from-.gitlab-ci.yml) Also theoretisch könnte man einen Prepare-Job haben, der den "grunt serve" -Container erstellt und ihn später als Service benutzt. Das nicht zu sagen, wäre eine gute Idee ;) – Martin