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