2016-05-16 20 views
3

Ich entwickle gerade eine Web-App mit Flask und benötige PhantomJS in einem der Tests. Ich benutze GitLab für das Remote-Git-Repository und verwende GitLab CI als CI-Tool.GitLab CI Kann PhantomJS nicht installieren/verwenden

Leider scheint es, als ob ich den gemeinsamen Runner von GitLab CI nicht dazu bringen kann, PhantomJS zu installieren und auszuführen. Es ist Ausgang:

Failed PhantomJS Run Screenshot

Ein Ausschnitt aus meinem .gitlab-ci.yml:

image: python:2.7.11 

before_script: 
    - ... 
    - mkdir ~/tmp 
    - pushd ~/tmp 
    - wget https://bitbucket.org/ariya/phantomjs/downloads/$PHANTOM_JS.tar.bz2 
    - tar xf $PHANTOM_JS.tar.bz2 
    - mv $PHANTOM_JS phantomjs 
    - ln -s ~/tmp/phantomjs/bin/phantomjs /usr/bin/phantomjs 
    - phantomjs --version 
    - popd 
    - ... 

$Phantom_JS auf eine bestimmte Version von PhantomJS bezieht.

Kennt jemand die Lösung? Oder gibt es eine andere Methode, PhantomJS zu installieren und auszuführen?

Vielen Dank.

Antwort

2

Scheint der Fehler auf mich selbst. Ich habe vorher nicht herausgefunden, dass Gitlab CI auf 64-Bit-Maschine gebaut ist. Ich habe die 32-Bit-Version heruntergeladen, die irgendwie nicht auf dem Runner funktioniert.

+0

sudo npm install -g phantomjs-prebuilt <- lädt und installiert die neueste Binärdatei für das richtige System. – larsemil

1

Ich mache etwas ähnliches in einem Ruby-Bild Dockerfile und kann bestätigen, dass es manchmal nicht die erwartete Zip-Datei herunterladen.

RUN cd /tmp && \ 
    curl -OL https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.8-linux-x86_64.tar.bz2 && \ 
    tar xjf phantomjs-1.9.8-linux-x86_64.tar.bz2 phantomjs-1.9.8-linux-x86_64/bin/phantomjs && \ 
    mv phantomjs-1.9.8-linux-x86_64/bin/phantomjs /usr/local/bin && \ 
    rm -r phantomjs-1.9.8-linux-x86_64* 

Soweit ich sagen kann, leitet die bitbucket URL zu einer URL authentifiziert S3, die manchmal 404s.

Ich habe mit docker run -it IMAGE /bin/bash zu laufen, das Bild lokal zurückgegriffen und diese PhantomJS Überprüfung wird jeder Build mit which phantomjs und phantomjs --version nach installiert. Wenn die Installation nicht funktioniert hat, baue ich den Container erneut.

Ich habe festgestellt, dass das Drücken der Download-URL in einem Browser (der die Datei lokal herunterladen wird) VOR dem Ausführen des Container-Build erhöht die Wahrscheinlichkeit des Erfolgs. Ich würde gerne eine "bessere" Lösung sehen.

+1

Sie sollten das Bild sehen: Der Läufer hat erfolgreich die TAR-Datei heruntergeladen und entpackt, aber dann konnte die PhantomJS-Binärdatei nicht gefunden werden ... Ich habe noch nie einen Fehler beim Herunterladen der TAR-Datei von Bitbucket erfahren. – sokokaleb

+0

Meiner Erfahrung nach scheint die Datei korrekt heruntergeladen und dekomprimiert zu werden, aber die Datei '/ usr/local/bin/phantomjs' ist nicht ausführbar, daher verursacht 'phantomjs --version' einen Fehler. Durch das manuelle Ausführen des Skripts habe ich herausgefunden, dass der Download in diesen Fällen tatsächlich nicht erfolgreich war. – BM5k