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

如果testing阶段返回错误,如何使我的CIpipe道失败?

这是我的testing阶段:

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 

GitLab和Docker正在按预期工作,它更像是一个关于正在运行的命令的退出代码的问题,即使它报告了testing错误,问题仍然是0。

您可以在Dockerfile CMD节中解决这个问题,并将testing运行R命令更改为R CMD check ,如此处所示 。

或者你可以在GitLabpipe道规范中解决这个问题,并用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