如果Dockerized R CMD检查返回错误,Gitlab会停止CI

时间:2017-10-31 14:52:46

标签: r docker gitlab-ci testthat

如果测试阶段返回错误,如何使CI管道失败?

这是我的测试阶段:

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

这是我的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()"

这是输出:

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

1 个答案:

答案 0 :(得分:0)

GitLab和Docker正在按预期工作,这是关于你正在运行的命令的退出代码的更多问题,你的问题是它甚至在报告测试错误时都是0。 / p>

您可以在Dockerfile CMD节处理此问题,并按照建议here将测试运行R命令更改为R CMD check

或者您可以使用GitLab管道规范和grep处理非零退出代码,如下所示:

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