2017-10-31 6 views
0

Wie kann ich meine CI-Pipeline ausfallen lassen, wenn die Teststufe Fehler zurückgibt?Gitlab stop CI wenn Dockerized R CMD überprüfen Fehler zurückgeben

Hier ist meine Testphase:

Test: 
    stage: Test 
    script: 
    - docker build -t r-docker-ci-test -f test.Dockerfile . 
    - docker run r-docker-ci-test 

Hier ist meine test.Dockerfile:

FROM r-base 

RUN apt-get update && apt-get install -y libcurl4-openssl-dev libssl-dev libxml2-dev 

RUN R -e "install.packages(c('devtools', 'testthat'), dependencies=TRUE)" 

COPY . /usr/local/src/test 
WORKDIR /usr/local/src/test 

CMD R -e "devtools::check()" 

Und die Ausgabe hier:

R CMD check results 
1 error | 2 warnings | 2 notes 
. 
. 
. 
Job succeeded 

Antwort

0

Gitlab und Docker arbeiten als erwartet, es ist eher eine Frage über den Exit-Code des Befehls, den Sie ausführen, Ihr Problem ist, dass es 0 ev ist de wenn es Testfehler meldet.

Sie können dies auf der DockerfileCMD Strophe angehen und den Test Befehl R CMD check als here vorgeschlagen läuft R ändern.

Oder Sie können in der Gitlab Pipeline spec und grep den Weg zu einem Nicht-Null-Exit-Code wie folgt angehen:

Test: 
    stage: Test 
    script: 
    - docker build -t r-docker-ci-test -f test.Dockerfile . 
    - docker run r-docker-ci-test | | grep '^0\serror' > /dev/null 
+0

Danke, ich konnte es mit einem Docker Läufer für Gitlab laufen zu lassen, ziehen das R-Base-Bild und mit "R CMD-Check". ! –